gpt4 book ai didi

java - 霍夫变换后如何显示清晰的结果?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:14:30 29 4
gpt4 key购买 nike

我在 Canny 边缘检测后获取了以下图像: Canny edge detection result

对它应用霍夫变换后,我得到了这个结果:

enter image description here

这是非常好的结果,但我只需要每个包中的一行,这样我就可以显示第一张图片中的对象类似于三角形。我的第一个决定是为每个包计算某种“平均”线。每条线都由一个角度和一个半径定义。我找到每个束的“平均”线的方法是使用以下公式计算角度的平均值:

avgTheta = arctan(sum of sines of all thetas/sum of cosines of all theta)

我以最简单的方式计算平均半径:

avgRadius = sum of all raduises / number of raduises

但是我得到的线不在他们的包的中心。

有人可以建议更好的解决方案吗?

我正在使用霍夫变换的这个实现:Hough Transform

总是可以选择随机抽取每个包中的一行,但我不喜欢它。

如果我的问题不清楚,请告诉我,以便更好地解释问题。

提前致谢。

最佳答案

你可以试试这个:

在没有任何余弦、正弦或反正切函数的情况下取平均角度。只要确保你处理包裹。根据您链接到的实现,在我看来您以 pi(180 度)包裹。在您的图像中,“岛(?)”右侧的一束几乎垂直的线将是环绕两侧的线的一个很好的例子。

此外,如果您根据 Canny 边缘检测图片中包含的点数对线进行加权,然后在平均计算中使用此权重,则可能会获得最佳结果。也许这已经通过具有相同属性的多行来完成,我无法从您的图像或链接代码中分辨出来。

关于java - 霍夫变换后如何显示清晰的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9081093/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com