⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imagedilate.m

📁 上个形态学的基本方法的程序的
💻 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 + -