2012-03-28 9 views
0

Ich versuche, einen Gradienten eines Bildes mit dem Prewitt-Filter zu nehmen. Können Sie mir sagen, ob dieser Ansatz richtig ist?Prewitt-Filter in Matlab

I = gelesen ('image.jpg') Gx = [-1 0 1; -1 0 1; -1 0 1]; Gy = [1 1 1; 0 0 0; 1 1 1]; D = conv2 (conv2 (I, Gx), Gy) imshow (D)

Ist das korrekt? Gibt es einen saubereren Weg, es zu tun (Sie müssen conv2 nicht zweimal anrufen)? Ist conv2 (I, Gx) dasselbe wie conv2 (Gx, I)? (d. h. kommutativ?)

Danke.

Antwort

0

nach zu urteilen meine wikipedia-ing sieht es aus wie das, was Sie tun sollten, ist:

I = imread('image.jpg') 
Gx = [-1 0 1; -1 0 1; -1 0 1]; 
Gy = [1 1 1; 0 0 0; -1 -1 -1]; 

A = sqrt(conv2(I,Gx).^2 + conv2(I,Gy).^2); 
imshow(A); 

Link to Wikipedia Article