2012-04-22 200 views
1

嗨,我想從圖像梯度或Canny邊緣檢測圖像的邊界方向中的http://www.cs.swan.ac.uk/~csjason/papers/xxmm-pami2008.pdf邊緣方向

式11我目前有:

clear all 
Img = imread('littlecircle.png'); 
Img = Img(:,:,1); 
Img = double(Img); 
w = size(Img,1);    % width size 
h = size(Img,2);    % height size 
[Ix,Iy] = gradient(Img);  %gradient of image 

i=1;  %iteration for magnetic field loop 
b=0;  %initialize b to zero 

% Magnetic Field 
for pxRow = 1:h % fixed pixel row 
for pxCol = 1:w % fixed pixel column 

for r = 1:h % row of distant pixel 
for c = 1:w % column of distant pixel 

O(c,r) = [-Iy(c,r),Ix(c,r)];  % O(x) = (-1).^lambda(-Iy(x),Ix(x)) --ERROR HERE 

end 
end 
B(i) = {O}; % filling a cell array with results. read below 
i = i+1; 
end 
end 

但是我得到當存儲到O(c,r)時,下標索引不匹配。爲什麼是這樣?而且如果有人認爲有更好的方法來從文件中做到這一點,那麼我很樂意在這裏。謝謝。

回答

1

您可以通過修改matlab的Canny邊緣檢測代碼或修改替代方法(如this)來一步完成Canny +方向檢測。 Canny通過確定每個步驟的方向來工作,因此您可以修改canny代碼以返回每個像素的方向圖。

+0

感謝您指出方向可以從canny算法獲得。我會研究這一點。這是否容易做,而不僅僅是簡單地考慮梯度和計算方向,就像我在這個問題中引入的論文的方程式11一樣? – brucezepplin 2012-04-22 14:59:29

+0

可能...對不起,我目前沒有安裝matlab來幫助你調試你的代碼。 – sivann 2012-04-22 15:03:19