在OpenCV中可以执行级联Hough变换吗?我理解它只是一个HT,然后是另一个。我面临的问题是,返回的值始终是rho和theta,绝不会以y截距的形式出现。在OpenCV中级联Hough变换
是否可以将这些值转换回y截距并将它们拆分成子空间,以便我可以检测到消失点?
还是只是更好地编程一个HT自己的实现,例如,Python?
在OpenCV中可以执行级联Hough变换吗?我理解它只是一个HT,然后是另一个。我面临的问题是,返回的值始终是rho和theta,绝不会以y截距的形式出现。在OpenCV中级联Hough变换
是否可以将这些值转换回y截距并将它们拆分成子空间,以便我可以检测到消失点?
还是只是更好地编程一个HT自己的实现,例如,Python?
你可以尝试填充M和C参数霍夫域代替,使表达式y = mx + C可以重新写为C = Y - MX所以不是通常rho = x cos(theta)+ y sin(theta),你有c = y - mx
通常,你会通过theta并计算rho,然后你增加accumulator的值一对rho和theta。在这里,你将通过m的值并计算c的值,然后在累加器中累加m,c元素。得票最多的集装箱会是正确的M,C
// going through the image looking for edge pixels
for (i = 0;i<numrows;i++)
{
for (j = 0;j<numcols;j++)
{
if (img[i*numcols + j] > 1)
{
for (n = first_m;n<last_m;n++)
{
index = i - n * j;
accum[n][index]++;
}
}
}
}
我想这个地方变得无效是,它难以定义的步长要通过兼并,因为他们应该从技术上负无穷大到无穷大,从而你会遇到麻烦。对于Hough变换来说,m,c很重要。大声笑
我想你可以走另一条路,并隔离m,所以它会是m =(yc)/ x,所以现在,你循环了一堆有意义的y值,尽管它仍然是可管理的很难定义你的累加器矩阵,因为m仍然没有限制。我想你可以限制你有兴趣寻找的m的值。
是的,用rho和theta去把它们转换成y = mx + c,然后制作一个全新的图像并重新运行hough变换就更有意义了。
我不认为OpenCV可以执行级联hough变换。你应该把它们自己转换成xy空间。这篇文章可以帮助你:
http://aishack.in/tutorials/converting-lines-from-normal-to-slopeintercept-form/
谢谢。但我认为我需要直接解析y截距形式的HT,而不是转换。你知道把Hough空间分成3个子空间是什么意思,就像他们为Cascaded Hough变换做的那样? – saad 2010-11-03 20:56:25