本程序能够对灰度图像先进行二值化,再进行腐蚀操作




                   
from:  http://hi.baidu.com/archiless/blog/item/97a97cd9a12e25e939012fc7.html
 
 

%function erode0207all(Input,thresh,element)
Input=imread('c:/boat.png');
thresh=128;
%element=ones(5,5);
element=5;
% 本程序能够对灰度图像先进行二值化,再进行腐蚀操作
% 格式介绍:Input为欲处理的灰度图像;thresh为自选的阈值参数进行二值化,可输入0到255之间任意整数
%           element为进行腐蚀操作的结构单元,本程序可提供3×3、5×5、7×7等奇数方阵的结构单元,
%                  原点都在中心位置,建议用三阶或五阶方阵

%----------------------------Begin Code------------------------------
% 一,图像二值化处理
[m,n]=size(Input);              % 确定原图像的长、宽
Two=zeros(m,n);                 % 定义二值化矩阵
Two(find(Input>=thresh))=1;     % 对原图像进行二值化处理

% 二,腐蚀操作前的预处理
Temp=zeros(element);            % 定义3×3或5×5的结构单元
Output=zeros(m,n);              % 定义输出矩阵
s=m+1-element;                  % s、t为循环长度
t=n+1-element;
Length=element-1;               % Length和Radius的含义在循环中介绍
Radius=Length/2;
square=element*element;         % 两个结构单元中元素的总和,即 9 、25 、49 …………

% 三,进行腐蚀操作
for i=1:s
    for j=1:t
        Temp=Two(i:i+Length,j:j+Length);    % 从二值化图像中依次取出三阶或五阶方阵
        if sum(Temp(:))==square             % 判断方阵中元素总和为 9 或 25 时
            Output(i+Radius,j+Radius)=1;    %方阵中心元素在输出矩阵中相应位置上的值为 1
        end
    end
end

% 四,输出处理前后的图像
figure,subplot(2,2,1),imshow(Input),title('原图像');
subplot(2,2,2),imshow(Two),title('二值化后的图像');
subplot(2,2,3),imshow(Output),title('腐蚀后的图像');
[qq,pp]=size(Input)
[ww,mm]=size(Two)
%--------------------------------End Code--------------------------------

你可能感兴趣的:(实验心得)