边缘方向

时间:2012-04-22 14:28:13

标签: image matlab

您好我正试图从图像渐变或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 个答案:

答案 0 :(得分:1)

您可以通过修改matlab的canny边缘检测代码或修改this之类的替代方法,一步完成canny +方向检测。 Canny通过确定每个步骤的方向来工作,因此您可以修改canny代码以返回每个像素的方向图。