matlab练习程序(距离变换)

  主要功能是提取图像的骨架,方法是不断对图像进行腐蚀并且标记每个像素腐蚀到值不再变化的次数。

clear all;
close all;
clc;

img=imread('5.jpg');
[m n]=size(img);
m=double(m);
n=double(n);
Min=double(min(img(:)));    %不断腐蚀的结果是像素全为最小值
%Max=double(max(img(:)));    %不断膨胀的结果是像素全为最大值
w = strel('square',3);
imgn=zeros(m,n);
while sum(img(:))~=m*n*Min  %不断腐蚀再腐蚀图像不会有变化为止
    for i=1:m
        for j=1:n
            if img(i,j)~=Min
                imgn(i,j)=imgn(i,j)+1;      %记录这个点腐蚀多少次才到最小值
            end
        end
    end
    img=imerode(img,w);     %不断腐蚀
  %  img=imdilate(img,w);
    figure(1)
    imshow(img);        
end
figure;
imshow(mat2gray(imgn));

效果:

原图

结果图

posted @ 2013-01-04 21:32  Dsp Tian  阅读(6878)  评论(0编辑  收藏  举报