从Hough-Transform opencvsharp获取Rho和Theta?

时间:2016-01-18 18:15:25

标签: opencv image-processing computer-vision hough-transform opencvsharp

我使用Opencvsharp(opencv)实现Hough-Transform,并在控制台应用程序/ windows-from-application中获取我的图像上检测到的行:

lines = edgeImg.HoughLines2(storage, HoughLinesMethod.Probabilistic, 1, Math.PI / 180, 60, 100, 100);

for (int i = 0; i < lines.Total; i++)
{
    CvLineSegmentPoint segP= lines.GetSeqElem<CvLineSegmentPoint>(i).Value;
    double angle = Math.Atan2((segP.P2.Y) - (segP.P1.Y), (segP.P2.X) - (segP.P1.X)) * 180 / Math.PI;

    if (Math.Abs(angle) <= 60)
        continue;

    if (segP.P1.Y > segP.P2.Y + 20 || segP.P1.Y < segP.P2.Y - 20)
        src.Line(segP.P1, segP.P2, CvColor.blue, 2, LineType.AntiAlias, 0);
}

我尝试了不同的方法来显示rho-theta空间。自&#34; HoughLinesMethod&#34;在内部完成所有转换,我试图以相反的方式从x,y获取这些值:

double angle = Math.Atan2(dy, dx) * 180 / Math.PI;
double theta = 90 - angle; 
var thetaRad = theta*Math.PI/180;
double rho = (x1 * Math.Cos(thetaRad) + y1 * Math.Sin(thetaRad));
  • 我的第一个问题是我是否需要获得rho / theta的两个值,包括x1,y1和x2,y2;或仅计算一个&#34; rho / theta&#34;是正确的交叉? 谢谢!

  • 第二,如何以正确的格式显示它们? (我目前在我的外出图片上看到的是我输出左上角的一些随机白点)

  • 第三,以这种方式获得rho,theta值是否合理还是建议你自己进行霍夫变换并降低复杂度? (我使用opencvsharp函数获得更好和更高效的性能!)

0 个答案:

没有答案