1. 程式人生 > >MATLAB梯度運算元處理影象

MATLAB梯度運算元處理影象

 下面簡要介紹一下不同的梯度運算元對於影象處理的區別:

其中Roberts運算元,又稱羅伯茨運算元,是一種最簡單的運算元,是一種利用區域性差分運算元尋找邊緣的運算元。他採用對角線方向相鄰兩象素之差近似梯度幅值檢測邊緣。檢測垂直邊緣的效果好於斜向邊緣,定位精度高,對噪聲敏感,無法抑制噪聲的影響。

而Prewitt運算元是一種一階微分運算元邊緣檢測,利用畫素點上下、左右鄰點的灰度差,在邊緣處達到極值檢測邊緣,去掉部分偽邊緣,對噪聲具有平滑作用 。其原理是在影象空間利用兩個方向模板與影象進行鄰域卷積來完成的,這兩個方向模板一個檢測水平邊緣,一個檢測垂直邊緣。

1、首先開啟MATLAB軟體,在主介面的編輯器中寫入下列程式碼:

I=imread('G:\MATLAB\bm.bmp');         %讀取當前路徑下的圖片
subplot(3,2,1);
imshow(I);
title('原始影象');
axis([50,250,50,200]);
grid on;                  %顯示網格線
axis on;                  %顯示座標系
I1=im2bw(I);
subplot(3,2,2);
imshow(I1);
title('二值影象');
axis([50,250,50,200]);
grid on;                  %顯示網格線
axis on;                  %顯示座標系
I2=edge(I1,'roberts');
figure;
subplot(3,2,3);
imshow(I2);
title('roberts運算元分割結果');
axis([50,250,50,200]);
grid on;                  %顯示網格線
axis on;                  %顯示座標系
I3=edge(I1,'sobel');
subplot(3,2,4);
imshow(I3);
title('sobel運算元分割結果');
axis([50,250,50,200]);
grid on;                  %顯示網格線
axis on;                  %顯示座標系
I4=edge(I1,'Prewitt');
subplot(3,2,5);
imshow(I4);
title('Prewitt運算元分割結果 ');
axis([50,250,50,200]);
grid on;                  %顯示網格線
axis on;                  %顯示座標系

2、命名儲存好之後,點選執行按鈕,出現如下所示結果:

至此,關於roberts運算元、和prewitt運算元的影象處理效果就介紹完畢了,請大家繼續關注!!