Hallo, ich möchte mit Hilfe des Sobeloperators eine Kantendetektion durchführen. Außerdem möchte ich nachher für eine Klassifizierung mit den Richtungen der Gradienten weiterarbeiten. Hier mal der Matlab-Code:
for i = 2: (imagesize(1)-1) %rows
for j = 2:(imagesize(2)-1) %columns
% calculate sx and sy
SX = threshold*( Image(i-1,j+1) + 2* Image(i,j+1) + Image(i+1,j+1) - Image(i-1,j-1) - 2*Image(i,j-1) - Image(i+1,j-1) );
SY = threshold*( Image(i+1,j+1) + 2* Image(i+1,j) + Image(i+1,j-1) - Image(i-1,j+1) - 2*Image(i-1,j) - Image(i-1,j-1) );
% SX = (-1)*threshold*( Image(i-1,j+1) + 2* Image(i,j+1) + Image(i+1,j+1) - Image(i-1,j-1) - 2*Image(i,j-1) - Image(i+1,j-1) );
% SY = (-1)*threshold*( Image(i+1,j+1) + 2* Image(i+1,j) + Image(i+1,j-1) - Image(i-1,j+1) - 2*Image(i-1,j) - Image(i-1,j-1) );
edge_x(i,j)=SX;
edge_y(i,j)=SY;
%calculate Magnitude
GMAG = sqrt( double(SY*SY) + double(SX*SX));
%calculate direction array GDIR
GDIR(i,j) = 360/(2*pi)*(atan2 ( double(SY) , double(SX) )) ;
EDGE(i,j)=GMAG;
end;
end;
Alles anzeigen
Leider erhalte ich nun in x-Richtung die jeweilige Richtungsangabe von Dunkel nach Hell und in Y-Richtung die Angabe für Hell nach Dunkel. Hat einer eine Idee woran das liegen könnte?
Danke
Nabla