📄 imagedilate.m
字号:
%--------------------------------------------------------------------------
% image dilation function
%
% result: 膨胀图像中灰度值为黑色的像素
%
% principle:
% 对结构元素为黑色的那些像素点,根据它们各自的坐标值,平移原始图像,
% 把所有平移后得到的图像相加。
% 若(x,y)点在所有平移图像中的灰度都是1,则膨胀后的灰度值为1,否则为0
%
% input parameters:
% imoriginal--原始图像
% s--结构元素
% sorigin--结构元素原点
%--------------------------------------------------------------------------
function imresult = imageerose(imoriginal,s,sorigin);
[imh,imw] = size(imoriginal); % 读取原始图像和结构元素的尺寸
% 求结构元素中灰度值为黑色的像素点坐标
[r,c] = find(s==0);
% 按结构元素为黑色的像素点坐标值,平移原始图像
for i = 1:1:size(r,1)
imtemp(:,:,i) = imoriginal;
dh = r(i)-sorigin(1);
if dh>0 %往上移
imtemp1 = [ones(dh,imw)
imoriginal];
for j = 1:1:dh
imtemp1(imh+1,:) =[];
end
imtemp(:,:,i) = imtemp1;
elseif dh<0
imtemp1 = imoriginal;
for j = 1:1:abs(dh)
imtemp1(1,:) = [];
end
imtemp1 = [imtemp1
ones(abs(dh),imw)];
imtemp(:,:,i) = imtemp1;
end
dw = c(i)-sorigin(2);
if dw>0 %往下移
imtemp1 = [ones(imh,dw) imtemp(:,:,i)];
for j = 1:1:dw
imtemp1(:,imw+1) =[];
end
imtemp(:,:,i) = imtemp1;
elseif dw<0
imtemp1 = imtemp(:,:,i);
for j = 1:1:abs(dw)
imtemp1(:,1) = [];
end
imtemp1 = [imtemp1 ones(imh,abs(dw))];
imtemp(:,:,i) = imtemp1;
end
end
% 膨胀运算的最后一步,需要对所有平移图像作加运算,且对图像中的任意点(x,y)
% 若(x,y)点在所有平移图像中的灰度都是1,则膨胀后的灰度值为1,否则为0
% 由于1+1=0,0+0=0,因此先将平移图像反色,再作加运算,
% 然后再将加运算得到的图像反色
imresult = zeros(imh,imw); % 初始化目标图像
for i = 1:1:size(r,1)
imresult = imresult+(1-imtemp(:,:,i));
end
imresult(find(imresult>=1)) = 1;
imresult = 1-imresult;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -