当前位置:  开发笔记 > 编程语言 > 正文

(rho/theta)参数化中定义的两条线的交点

如何解决《(rho/theta)参数化中定义的两条线的交点》经验,为你挑选了2个好方法。

已经创建了Hough变换的c ++实现来检测图像中的线条.使用rho,theta表示找到的行,如维基百科所述:

"参数r表示直线与原点之间的距离,而θ是从原点到该最近点的矢量角度"

如何使用r,θ描述两条线的x,y空间中的交点?

这里参考我目前用于转换进出霍夫空间的函数:

//get 'r' (length of a line from pole (corner, 0,0, distance from center) perpendicular to a line intersecting point x,y at a given angle) given the point and the angle (in radians)
inline float point2Hough(int x, int y, float theta) {
    return((((float)x)*cosf(theta))+((float)y)*sinf(theta));
}

//get point y for a line at angle theta with a distance from the pole of r intersecting x? bad explanation! >_<
inline float hough2Point(int x, int r, float theta) {
    float y;
    if(theta!=0) {
            y=(-cosf(theta)/sinf(theta))*x+((float)r/sinf(theta));
    } else {
            y=(float)r; //wth theta may == 0?!
    }
    return(y);
}

如果这是明显的事情,请提前抱歉..



1> Federico A. ..:

看一下维基百科页面,我看到对应于给定r,θ对的直线方程是

r = x cos? + y sin? 

因此,如果我理解,给定两对r1,θ1和r2,θ2,找到交点,你必须求解未知数x,y以下线性2x2系统:

x cos ?1 + y sin ?1 = r1
x cos ?2 + y sin ?2 = r2

那是AX = b,其中

A = [cos ?1  sin ?1]   b = |r1|   X = |x|
    [cos ?2  sin ?2]       |r2|       |y|



2> erisu..:

之前从未遇到过矩阵数学,因此需要进行一些研究和实验来确定Fredrico答案的进展情况.谢谢,无论如何都需要了解矩阵.^^

函数找到两个参数化线相交的位置:

//Find point (x,y) where two parameterized lines intersect :p Returns 0 if lines are parallel 
int parametricIntersect(float r1, float t1, float r2, float t2, int *x, int *y) {
    float ct1=cosf(t1);     //matrix element a
    float st1=sinf(t1);     //b
    float ct2=cosf(t2);     //c
    float st2=sinf(t2);     //d
    float d=ct1*st2-st1*ct2;        //determinative (rearranged matrix for inverse)
    if(d!=0.0f) {   
            *x=(int)((st2*r1-st1*r2)/d);
            *y=(int)((-ct2*r1+ct1*r2)/d);
            return(1);
    } else { //lines are parallel and will NEVER intersect!
            return(0);
    }
}

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有