我正在寻找广义Hough变换的实现,然后我找到了this website,它向我展示了GHT的完整实现。
我完全可以理解算法如何处理除此之外:
Vec2i referenceP = Vec2i(id_max[0]*rangeXY+(rangeXY+1)/2, id_max[1]*rangeXY+(rangeXY+1)/2);
根据霍夫空间的最大值计算对象的参考点,然后复制rangXY
以返回到原始图像的相应位置。(rangeXY
是维度图像分割的正方形像素。)
我将代码编辑为
Vec2i referenceP = Vec2i(id_max[0]*rangeXY, id_max[1]*rangeXY);
然后我得到了另一个参考点show all edgePoints in the image,这显然不符合形状。
我无法弄清楚因素(rangeXY+1)/2
的含义。
是否有人实施此代码或熟悉GHT的理由可以告诉我rangeXY
因素的含义是什么?感谢〜
答案 0 :(得分:0)
我熟悉经典的Hough变换,但不是广义的变换。但是,我相信你在问题中提供了足够的信息,让我在不熟悉相关算法的情况下回答它。
(rangeXY+1)/2
只是整数除以2并进行舍入。例如(4+1)/2
给出2 {而(5+1)/2
给出3(2.5轮向上)。现在,由于rangeXY
是方块像素的一侧而id_max
是这种块的位置(索引),因此id_max[dim]*rangeXY+(rangeXY+1)/2
给出了该块中的中心像素的位置
另一方面,当你将表达式简化为id_max[dim]*rangeXY
时,你得到的是左上角而不是中心像素的位置。