1、 % 建立Y方向的模板I = im2double(A); % 将图像数据转化为双精度dx = imfilter(I, x_mask); % 计算X方向的梯度分量dy = imfilter(I, y_mask); % 计算Y方向的梯度分量grad = sqrt(dx.*dx + dy.*dy); % 计算梯度grad = mat2gray(grad); % 将梯度矩阵转换为灰度图像level = graythresh(grad); % 计算灰度阈值BW = im2bw(grad,level); % 用阈值分割梯度图像subplot(2,4,2);imshow(BW); % 显示分割后的图像即边缘
2、图像Robertsy_mask = -1 -2 -1;0 0 0;1 2 1; x_mask = y_mask;subplot(2,4,3);Sobely_mask = -1 -1 -1;1 1 1;subplot(2,4,4);Prewittmask=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); % 显示分割后的图像,即梯度图像Laplacianmask=0,0,-1,0,
3、0;0,-1,-2,-1,0;-1,-2,16,-2,-1;0,0,-1,0,0;subplot(2,4,6);logBW1 = edge(I,canny % 调用canny函数subplot(2,4,7);imshow(BW1);Cannymask1=-1 -2 -1; % 建立方向模板mask2=-2 -1 0;-1 0 1;0 1 2;mask3=-1 0 1;-2 0 2;-1 0 1;mask4=0 1 2;-2 -1 0;mask5=1 2 1;-1 -2 -1;mask6=2 1 0;1 0 -1;0 -1 -2;mask7=1 0 -1;2 0 -2;1 0 -1;mask8=
4、0 -1 -2;2 1 0;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(d1),abs(d2); % 取差值变化最大的元素组成灰度变化矩阵dd = max(dd,abs(d3);dd = max(dd,ab
5、s(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.6745;B = BB.*BB;B = sum(B(:);FX= sqrt(B/2562);FS=sqrt(max(FX2-FW2,0);T=sqrt(2)*FW2/FS; % 计算最佳阈值grad = mat2gray(BB);BW2=im2bw(grad,T); % 用最佳阈值分割梯度图像su
6、bplot(2,4,8);imshow(BW2); % 显示分割后的图像,即边缘图像sobel改进算子Part2加入高斯噪声后的cameraman仿真程序:V=0.009;X=imnoise(A,gaussian,0,V);imshow(X);%添加均值为0、方差0.09的高斯噪声 % 创建X方向的模板 % 创建Y方向的模板I = im2double(X); % 图像数据双精度转化 % X方向的梯度分量的计算 % Y方向的梯度分量的计算 % 梯度计算 % 梯度矩阵转换成灰度图像 % 使用阈值分割梯度图像 % 梯度矩阵转为灰度图像加入椒盐噪声的边缘检测程序:function jingdianI=
7、imread(lenna.bmpI1=imnoise(I,salt & pepper%添加椒盐噪声,默认值为0.02figure,imshow(I1);%添加均值为0、方差0.002的高斯噪声添加椒盐噪声后原图)B1=edge(I1,robertsB2=edge(I1,sobelB3=edge(I1,prewittB4=edge(I1,B5=edge(I1,subplot(2,3,1);imshow(B1);roberts算子检测subplot(2,3,2);imshow(B2);sobel算子检测subplot(2,3,3);imshow(B3);prewitt算子检测subplot(2,3,4);imshow(B4);canny算子检测subplot(2,3,5)imshow(B5);log算子检测%调用roberts算子检测图像%调用soble算子进行边缘检测%调用prewitt算子进行边缘检测%调用canny算子对图像进行边缘检测%调用log算子对图像进行边缘检测%设置图像布局%现实图像并命名为roberts算子检测I = im2double(I1); % 将数据图像转化为双精度subplot(2,3,6);加入椒盐噪声的sobel改进算子
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1