Filter löschen
Filter löschen

Calculate the image gradient

6 Ansichten (letzte 30 Tage)
Donghui  Sun
Donghui Sun am 23 Sep. 2013
Kommentiert: Matt J am 1 Mär. 2017
I use the function imgradientxy to get the Gx and Gy firstly. Then obtain the direction of the gradient.
some codes like:
% code
b = zeros(100);
b(1:4:end,:) = 1;
[Gx, Gy] = imgradientxy(b);
theta = atan(Gy./Gx);
The image only has some horizontal lines. So The Gx is all zeros and the theta have a lot NAN. What should I do to get the gradient for this image and for other?
  2 Kommentare
naser telesi
naser telesi am 1 Mär. 2017
if Gx is zero then let Gx = 1 to avoid divide by zero problem
Matt J
Matt J am 1 Mär. 2017
if Gx is zero then let Gx = 1 to avoid divide by zero problem
But theta will be wrong...

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Matt J
Matt J am 23 Sep. 2013
Use atan2 instead
theta=atan2(Gy,Gx);
  2 Kommentare
Donghui  Sun
Donghui Sun am 23 Sep. 2013
A big thanks.
Image Analyst
Image Analyst am 23 Sep. 2013
Like I said, imgradient() already gives that to you as Gdir - see the help. No need to do it yourself with atan2.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Image Analyst
Image Analyst am 23 Sep. 2013
Why do it yourself? Why not just use imgradient()?
  1 Kommentar
Donghui  Sun
Donghui Sun am 23 Sep. 2013
Haha, I just want to try another method. In addition, the gradient direction in imgradient() contains angles in degrees within the range [-180 180]. I need the angle in radians.

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