首页 > 解决方案 > 霍夫变换累加器设置 (rho)

问题描述

我一直在研究card.io的算法,在阅读霍夫变换脚本时遇到了一些困难。

对于霍夫变换,需要设置累加器,一个将投票存储在 (rho, theta) 空间中的网格。

card.io-dmz/cv/hough.cpphttps://github.com/card-io/card.io-dmz/blob/master/cv/hough.cpp#L99)第 99 行,它表示 rho 的数量由numrho下式给出

numrho = cvRound(((width + height) * 2 + 1) / rho);

这里widthheight是 ROI 的维度,rho是距离分辨率。


问题:我不明白为什么分子是(width + height) * 2 + 1

我的猜测是+ 1计算零值,同时* 2计算 +ve rho 和 -ve rho。

但我还是不明白为什么会width + height出现。我认为用 替换它更直观sqrt(width*width + height*height),这是 rho 中可能的最大值。

此设置也用于 OpenCV(请参阅此链接:https ://github.com/opencv/opencv/blob/master/modules/imgproc/src/hough.cpp#L128 )

任何帮助,将不胜感激。谢谢

标签: opencvhough-transformcard.io

解决方案


推荐阅读