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));
效果:
原图
结果图