您好我正试图从图像渐变或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)时,我得到的是下标索引不匹配。为什么是这样?如果有人认为有更好的方法从纸上做到这一点,那么我很乐意在这里。感谢。
答案 0 :(得分:1)
您可以通过修改matlab的canny边缘检测代码或修改this之类的替代方法,一步完成canny +方向检测。 Canny通过确定每个步骤的方向来工作,因此您可以修改canny代码以返回每个像素的方向图。