Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 关于广义hough变换码_C++_Image Processing_Hough Transform - Fatal编程技术网

C++ 关于广义hough变换码

C++ 关于广义hough变换码,c++,image-processing,hough-transform,C++,Image Processing,Hough Transform,我在寻找广义Hough变换的一个实现,然后我发现,它向我展示了GHT的一个完整实现 我完全理解算法是如何处理的,除了以下几点: Vec2i referenceP = Vec2i(id_max[0]*rangeXY+(rangeXY+1)/2, id_max[1]*rangeXY+(rangeXY+1)/2); 它基于hough空间的最大值计算对象的参考点,然后被rangXY乘以以返回到原始图像的相应位置。(rangeXY是图像被分割的正方形的像素尺寸。) 我将代码编辑为 Vec2i ref

我在寻找广义Hough变换的一个实现,然后我发现,它向我展示了GHT的一个完整实现

我完全理解算法是如何处理的,除了以下几点:

Vec2i referenceP = Vec2i(id_max[0]*rangeXY+(rangeXY+1)/2, id_max[1]*rangeXY+(rangeXY+1)/2);  
它基于hough空间的最大值计算对象的参考点,然后被
rangXY
乘以以返回到原始图像的相应位置。(
rangeXY
是图像被分割的正方形的像素尺寸。)

我将代码编辑为

Vec2i referenceP = Vec2i(id_max[0]*rangeXY, id_max[1]*rangeXY); 
然后我得到了另一个参考点,它显然不符合形状

我就是搞不懂这个系数
(rangeXY+1)/2
是什么意思


是否有人实施过此代码或熟悉GHT的基本原理,可以告诉我系数
rangeXY
的含义?谢谢~

我熟悉经典的Hough变换,但不熟悉广义的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
时,您得到的是左上角的位置,而不是中心像素。

rangeXY/2
看起来确实是一个更好的选择,因为5x5像素块的中心位于位置(2,2)而不是(3,3)。