繁体   English   中英

如何实现Hough变换?

[英]How to implement the Hough Transform?

如何在文本图像上实现Hough变换 我正在寻找伪代码(最终将在java中)。

以下是一些背景信息:

给定图像,确定线y = mx + b的等式。 通常,霍夫变换以极坐标表示,使得Rho = y*sin(theta) + x*cos(theta) (我不确定XY值对应于图像)。

我们只对Rhotheta值感兴趣并绘制它们。 累加器中有多个点的位置(我知道一些实现,而不是执行)被认为是一条线。

我不明白的问题是如何找到你用更新累加器的rhotheta

霍夫变换的最简单情况是用于检测直线的线性变换。 在图像空间中,直线可以描述为y = mx + b,并且可以对每对图像点(x,y)进行图形绘制

因此,这会告诉您xy对应于图像中的背面。

在霍夫变换中,主要思想是将直线的特征视为图像点(x1,y1),(x2,y2)......,而是根据其参数,例如斜率参数m和截距参数b。

基于该事实,直线y = mx + b可以表示为参数空间中的点(b,m)。 然而,人们面临的问题是垂直线产生参数m和b的无界值。 出于计算原因,因此最好对霍夫变换中的线使用表示为(θ)的不同参数对。

参数rho表示线与原点之间的距离,而θ是从原点到该最近点的矢量角。

这告诉你rhotheta对应的是:它们是斜率的极坐标中的表示,以及你试图在图像中描述的线的截距。


SourceForge上,您可以找到hough变换的C++实现。

您应该能够解释我在上一个链接中指出的代码的描述可能如下:

霍夫变换算法使用称为累加器的数组来检测线y = mx + b的存在。

例如,线性Hough变换问题有两个未知参数:m和b。

对于每个像素及其邻域,霍夫变换算法确定在该像素处是否存在足够的边缘证据。 如果是这样,它将计算该行的参数,然后查找参数所属的累加器的bin,并增加该bin的值。

通过查找具有最高值的区间,通常通过在累加器空间中查找局部最大值,可以提取最可能的线条

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM