C++ 当使用hough变换进行直线检测时,为什么θ的范围为0~179?
我正在尝试使用hough变换进行直线检测。 我大致了解它的工作原理,但有一件事我不太清楚 在霍夫变换中,线性方程变为r=xcos(θ)+ysin(θ) 图像中的每一行都用r和θ来区分 这就是我想知道的。当它在C++中实现时,(在书和许多因特网页面中) 他们改变了θ0~359->0~179的范围,使r有2*对角线来存储180~359θ线 有必要吗?θ范围减小2倍,r增大2倍。。。 数组[r][θ]在更改前后具有相同的空间 还有一个问题 在我的图片中,第一个象限是显示屏,而红线(第三个象限)从未显示在显示屏上。(显示屏上可以显示第二或第四象限线。)C++ 当使用hough变换进行直线检测时,为什么θ的范围为0~179?,c++,image-processing,hough-transform,C++,Image Processing,Hough Transform,我正在尝试使用hough变换进行直线检测。 我大致了解它的工作原理,但有一件事我不太清楚 在霍夫变换中,线性方程变为r=xcos(θ)+ysin(θ) 图像中的每一行都用r和θ来区分 这就是我想知道的。当它在C++中实现时,(在书和许多因特网页面中) 他们改变了θ0~359->0~179的范围,使r有2*对角线来存储180~359θ线 有必要吗?θ范围减小2倍,r增大2倍。。。 数组[r][θ]在更改前后具有相同的空间 还有一个问题 在我的图片中,第一个象限是显示屏,而红线(第三个象限)从未显
所以,θ范围只有-90~180或r只有3/2*对角线而不是2是有效的吗?要达到最大涂层密度,你应该围绕图像/屏幕的中心(而不是角落)旋转线条 所以,你应该把θ从0变为360,把r从0变为(对角线/2) 或者,您可以将θ从0变为180,将r从(-diagonal/2)变为(diagonal/2),因为θ=45且r=-50的直线与θ=135且r=50的直线相同
我认为在书中,他们并不在意图像中心(这是不好的),只是绕着角落旋转直线(屏幕坐标为0,0),所以它使图像变大了2倍。当θ从0到180时,它们应该从对角线到对角线变化,这使得IntalValx 2×对角线< /P>这是一个C++问题吗?我没有看到任何C++相关的东西,实际上,它不仅仅是C++问题。你说得对……谢谢你的回答。当θ从0到360时,r是从0到对角线/2??您的意思是案例图像的中心是原点(0,0)?我想案例图像的左下方是原点。这取决于你如何实现你的坐标系。想象一下,您的图像在世界坐标系中是从(-Width/2,-Height/2)到(Width/2,Height/2),当您需要(x,y)(在世界坐标系中)像素时,只需从图像(在图像坐标系中)中获取像素(x+Width/2,y+Height/2)。