【问题标题】:Which method should I use to find gradient direction of pixels in an image?我应该使用哪种方法来查找图像中像素的梯度方向?
【发布时间】:2015-08-19 23:53:59
【问题描述】:

我遇到了两种查找梯度大小和方向的方法

1:

I=imread('12.jpg');
I1=rgb2gray(I);
ed=edge(I1,'canny',0.4);
[gx gy]=gradient(double(ed),0.5);
figure;
imshow(I);
gm=sqrt(gx.^2+gy.^2);
gdp=atan2(gy,gx);
figure;
imshow(gm);
figure; imshow(gdp);

gm 将存储梯度大小并 gdir 方向

2:一个内置的matlab函数

[gm gdp]=imgradient(ed);

两种输出完全不同。我应该使用哪一个来实现 Stroke Width Transform?

【问题讨论】:

  • 我不使用 Matlab,所以我可能是错的,但是:canny 过滤器会扭曲你的渐变,所以结果是边缘的方向和大小而不是图像本身你可以通过 x,y 导出图像(我我猜那是gradient,所以只需尝试删除精明过滤器)。 sqrtatan2 部分保持原样。不知道imgradient 的结果是什么你也应该发布输入图像和 2 个输出

标签: image matlab image-processing pattern-recognition


【解决方案1】:

虽然原始论文没有说明应该使用哪种方法,但我发现在两种流行的 SWT 实现中:DetectTextCCV 使用了 Sobel 运算符。

您得到不同的输出,因为您计算了 Canny 方法输出的梯度(不是输入图像上的 Sobel,因为它应该这样做)。同样imgradient 以度为单位返回梯度方向,atan2 结果以弧度为单位。如果您想自己计算方向,您应该使用imgradient 来获取幅度和方向,或者使用imgradientxy 来获取方向梯度。

线索可以参考这个file或者他们的technical report

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-27
    相关资源
    最近更新 更多