单视图几何Vanish Point(消失点/灭点)计算方法——Robert_T_Collins(罗伯特·柯林斯)算法

本文详细介绍了在三维空间中计算多条直线交点的过程,特别是如何找到最佳拟合的消失点。首先,通过齐次坐标表示直线端点,然后利用叉乘表示直线方向向量。接着,通过计算‘二阶矩’矩阵并进行特征值分解,找出与最小特征值相关的特征向量作为消失点。最后,提供了一段C++代码实现这一过程,但指出可能存在精度问题,需要进一步测试和完善。

算法基本思想如下:

1)将每条直线的端点e1,e2,写成齐次坐标的形式e1=(x1_i,y1_i,w),e2=(x1_i,y1_i,w);则点的欧式坐标为(x1_i/w,y1_i/w),(x2_i/w,y2_i/w);常数w通常取1,当取0时,即代表该点处于无穷远处,这在欧式坐标里表示需要无穷远的符号。

2)将直线表示为其两个端点的叉乘的齐次坐标向量(说明白点就是,两个点齐次坐标的叉乘为过这两个点直线的齐次坐标方向向量),即一条直线可由两个点的叉乘表示。即直线

L1=(a_i,b_i,c_i)=e1 X e2;结果向量只是通过两个端点的平面直线的方程a_i x + b_i y + c_i = 0的参数

3)如果只有两条直线,L1和L2,两条直线的交点可由直线向量的叉乘表示,即V=L1 X L2

对V进行缩放,使最后一个坐标为1,即(Vx,Vy,1),Vx和Vy作为图像中的消失点。然而,最好将消失点保留为齐次坐标向量,因为消失点可能离图像很远,甚至在无穷远处(在这种情况下,V的第三个分量是0,当您尝试缩放时,会得到除以0的结果)。

4)但如果有n条直线求交点,L1,L2,...,Ln,按照下面的方法,您可以获得“最佳拟合”消失点。

4-1)形成3×3的“二阶矩”矩阵M为

                       [a_i*a_i        a_i*b_i        a_i*c_i]

        M=sum   [a_i*b_i        b_i*b_i        c_i*b_i]

      &nbs

评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

beyond951

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值