资源描述:
《边缘提取和边缘检测matlab程序代码大全》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、附录Part1:对cameraman原始图像处理的仿真程序:clcclearallcloseallA=imread('cameraman.bmp');%读入图像subplot(2,4,1);imshow(A);title('原图');x_mask=[10;0-1];%建立X方向的模板y_mask=rot90(x_mask);%建立Y方向的模板I=im2double(A);%将图像数据转化为双精度dx=imfilter(I,x_mask);%计算X方向的梯度分量dy=imfilter(I,y_mask);%计算Y方向的梯度分量grad=sqrt(dx.*dx+dy.*dy);%计算梯度grad
2、=mat2gray(grad);%将梯度矩阵转换为灰度图像level=graythresh(grad);%计算灰度阈值BW=im2bw(grad,level);%用阈值分割梯度图像subplot(2,4,2);imshow(BW);%显示分割后的图像即边缘图像title('Roberts');y_mask=[-1-2-1;000;121];x_mask=y_mask';I=im2double(A);dx=imfilter(I,x_mask);dy=imfilter(I,y_mask);grad=sqrt(dx.*dx+dy.*dy);%计算梯度grad=mat2gray(grad);leve
3、l=graythresh(grad);BW=im2bw(grad,level);subplot(2,4,3);imshow(BW);%显示分割后的图像即边缘图像title('Sobel');y_mask=[-1-1-1;000;111];x_mask=y_mask';dx=imfilter(I,x_mask);dy=imfilter(I,y_mask);grad=sqrt(dx.*dx+dy.*dy);%计算梯度grad=mat2gray(grad);level=graythresh(grad);BW=im2bw(grad,level);%用阈值分割梯度图像subplot(2,4,4);im
4、show(BW);%显示分割后的图像即边缘图像title('Prewitt');mask=[0,-1,0;-1,4,-1;0,-1,0];%建立模板dx=imfilter(I,mask);%计算梯度矩阵grad=mat2gray(dx);%将梯度矩阵转化为灰度图像BW=im2bw(grad,0.58);%用阈值分割梯度图像subplot(2,4,5);imshow(BW);%显示分割后的图像,即梯度图像title('Laplacian');mask=[0,0,-1,0,0;0,-1,-2,-1,0;-1,-2,16,-2,-1;0,-1,-2,-1,0;0,0,-1,0,0];%建立模板dx
5、=imfilter(I,mask);%计算梯度矩阵grad=mat2gray(dx);%将梯度矩阵转化为灰度图像BW=im2bw(grad,0.58);subplot(2,4,6);imshow(BW);%显示分割后的图像,即梯度图像title('log');BW1=edge(I,'canny');%调用canny函数subplot(2,4,7);imshow(BW1);%显示分割后的图像,即梯度图像title('Canny');mask1=[-1-2-1;000;121];%建立方向模板mask2=[-2-10;-101;012];mask3=[-101;-202;-101];mask4=
6、[012;-101;-2-10];mask5=[121;000;-1-2-1];mask6=[210;10-1;0-1-2];mask7=[10-1;20-2;10-1];mask8=[0-1-2;10-1;210];d1=imfilter(I,mask1);%计算8个领域的灰度变化d2=imfilter(I,mask2);d3=imfilter(I,mask3);d4=imfilter(I,mask4);d5=imfilter(I,mask5);d6=imfilter(I,mask6);d7=imfilter(I,mask7);d8=imfilter(I,mask8);dd=max(abs
7、(d1),abs(d2));%取差值变化最大的元素组成灰度变化矩阵dd=max(dd,abs(d3));dd=max(dd,abs(d4));dd=max(dd,abs(d5));dd=max(dd,abs(d6));dd=max(dd,abs(d7));dd=max(dd,abs(d8));grad=mat2gray(dd);%将灰度变化矩阵转化为灰度图像BB=grad;FW=median(BB(:))/0