我處於MATLAB編程的第一步,當我閱讀一篇關於圖像處理的文章時,我發現其中大部分文章都寫道第一和/或第二個衍生物應該是估計。如何測量圖像的二階導數
如何測量梯度上的二階導數(Gxx,Gxy,Gyy)?
我處於MATLAB編程的第一步,當我閱讀一篇關於圖像處理的文章時,我發現其中大部分文章都寫道第一和/或第二個衍生物應該是估計。如何測量圖像的二階導數
如何測量梯度上的二階導數(Gxx,Gxy,Gyy)?
您可以使用diff(a,2,1)
或diff(a,2,2)
實現沿維度1二階導數和2分別
代替將連續的差異,你可以申請的二階導數內核在每個維度:
Gx = [1 -2 1]; Gy = Gx'; %' y kernel is column vector
img = double(imread('cameraman.tif'));
Dxx = conv2(img,Gx,'same');
Dyy = conv2(img,Gy,'same');
如果你是在一個無方向的二階導數之後,你應該使用拉普拉斯算子。一個常見的內核是:
L = [0 1 0;
1 -4 1;
0 1 0;] % fspecial('laplacian',alpha=0)
D2 = conv2(img,L,'same');
如上評論,你可以使用fspecial
獲得的內核捕獲通過alpha
參數對角線的差異變化。或者您可以使用del2
:
D2 = del2(img);
從圖像處理工具箱中查看imgradient。這兩個應用程序應該給你你想要的。
像這樣:
im = imread('cameraman.tif');
[Gx,Gy] = imgradientxy(im);
[Gxx,Gxy] = imgradientxy(Gx);
[Gyy,Gyx] = imgradientxy(Gy);
這使用Sobel濾波器來計算的衍生物。您也可以使用Prewitt,中心差異或中間差異,將它作爲字符串傳遞給imgradientxy。
希望有所幫助。
舉個例子,你應該在Google中輸入「圖像處理介紹」或類似的東西。 –
這個問題似乎是脫離主題,因爲它不是編程 –
感謝瘋狂物理學家我現在發現它。 – user3269865