Opencv-cvHoughLines2
我正在阅读Opencv-cvHoughLines2,opencv,hough-transform,Opencv,Hough Transform,我正在阅读Learning openCV,在这本书中我看到了cvHoughLines2的描述。但有一件事我不明白 我读过Hough变换,我想我理解它,所以参数rho和theta让我有点困惑。当我们有方程时,rho=xcos(θ)+ycos(θ)当我们决定theta的一些离散值时,rho的值应该是自动已知的 在这本书中,据说opencv创建了rhoxthetaaccumlator数组 opencv是否只是将角度离散为360/θ的倍数?但是rho参数如何匹配?rho的值是如何离散的?你的问题不清楚,
Learning openCV
,在这本书中我看到了cvHoughLines2
的描述。但有一件事我不明白
我读过Hough变换,我想我理解它,所以参数rho
和theta
让我有点困惑。当我们有方程时,rho=xcos(θ)+ycos(θ)
当我们决定theta
的一些离散值时,rho
的值应该是自动已知的
在这本书中,据说opencv
创建了rho
xtheta
accumlator数组
opencv是否只是将角度离散为
360/θ的倍数?但是rho
参数如何匹配?rho
的值是如何离散的?你的问题不清楚,似乎你很困惑。看一看。给定一组属于一条直线的点(x和y),你可以用两个参数r和θ来描述同一条直线。这是我们想要找到的两个独立参数,它们最好地描述了点所在的直线。在开始时,你决定θ的向量,比如说10个数字,你需要将结果四舍五入到矩阵的像素中,其中行表示半径,列表示角度
因此,如果某条直线的角度和半径相同,它将向累加器添加一个值。
[0 36 .. 360]
还有半径向量[1 2 3..10]
然后创建图像M*N全零,例如
[ 0 0 0
0 0 0
0 0 0]
然后你们在一定的半径和角度上执行你们写的公式,你们的矩阵变成
[ 1 0 0
0 0 0
0]
然后
[ 1 0 0
0 0 1
0 0 0]
然后
[20
0 0 1
0 1 0]
等等
然后,您可以设置阈值,只找到一些直线或某些角度。是的,为了在计算机内存中表示累加器阵列,我们需要选择角度值(θ),当我们选择有限个θ时,我们可以计算r
。我不明白为什么opencv要我把角度和ar
的值都传给他。单是角度就足以创建accumlator阵列。好吧,现在我确定你的算法错了,看看我文章中的页面,先把你认为算法工作的方式放在一边。opencv的两个参数是这两个维度中的分辨率。或者看看Hough transform上的wikipedia页面。嘿,这个链接是关于,一旦你浏览了它,我相信它会让你清楚这个主题。