I need help on gradient mask. Thanks a lot.

%I have following script trying to produce the Gaussian mask Hx and Hy and get the gradient x (Gx) and gradient Y(GY) of image by convolving the mask to the image. Gx = conv2(Image,Hx), Gy = conv2(Image,Hy). but the result looks not correct. Gx looks like gradient y and Gy looks like gradient y. Is anybody familiar with gradient mask and give me any suggestion? thank you very much.
Hx = zeros(13);
Hy = zeros(13);
sigmasqrd = 1/9;
S = (-6:6);
for i = 1:13
for j = 1:13
xpo = 2.0*exp(-(S(i).^2+S(j).^2)*sigmasqrd)*sigmasqrd;
Hx(i,j)= S(i)*xpo;
Hy(i,j)= S(j)*xpo;
end
end

 Akzeptierte Antwort

Image Analyst
Image Analyst am 31 Mär. 2013

0 Stimmen

Add this code to the end of your code:
Hx
Hy
subplot(1,2,1);
imshow(Hx, []);
subplot(1,2,2);
imshow(Hy, []);
The code does produce kernels that should provide a gradient-like operation. Does that answer your question? There is also imgradient() in the Image Processing Toolbox if you want to use one of the standard gradient methods.

Weitere Antworten (1)

Zhongkui
Zhongkui am 31 Mär. 2013

0 Stimmen

thank you for your answer. You answered part of my question. my second question is if I reversed the X and Y gradient, i.e. Hx produce the Y gradient while Hy makes X gradient. Thank you again for your answer.
Zhongkui

2 Kommentare

Image Analyst
Image Analyst am 31 Mär. 2013
Yes, it would. What you call the variable does not affect what it does.
Zhongkui
Zhongkui am 1 Apr. 2013
thank you.

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by