フィルターのクリア

Calculate the image gradient

5 ビュー (過去 30 日間)
Donghui  Sun
Donghui Sun 2013 年 9 月 23 日
コメント済み: Matt J 2017 年 3 月 1 日
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 件のコメント
naser telesi
naser telesi 2017 年 3 月 1 日
if Gx is zero then let Gx = 1 to avoid divide by zero problem
Matt J
Matt J 2017 年 3 月 1 日
if Gx is zero then let Gx = 1 to avoid divide by zero problem
But theta will be wrong...

サインインしてコメントする。

採用された回答

Matt J
Matt J 2013 年 9 月 23 日
Use atan2 instead
theta=atan2(Gy,Gx);
  2 件のコメント
Donghui  Sun
Donghui Sun 2013 年 9 月 23 日
A big thanks.
Image Analyst
Image Analyst 2013 年 9 月 23 日
Like I said, imgradient() already gives that to you as Gdir - see the help. No need to do it yourself with atan2.

サインインしてコメントする。

その他の回答 (1 件)

Image Analyst
Image Analyst 2013 年 9 月 23 日
Why do it yourself? Why not just use imgradient()?
  1 件のコメント
Donghui  Sun
Donghui Sun 2013 年 9 月 23 日
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.

サインインしてコメントする。

Community Treasure Hunt

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

Start Hunting!

Translated by