一种朴素的消失点计算方法

这篇博客介绍了一种利用RANSAC算法来计算图像中不平行直线交点作为消失点的方法。通过组合两条直线,找出它们的交点并计算其与所有直线的总误差,最终确定最接近消失点的位置。文章还给出了详细的代码实现和实例分析。

一种比较厉害的加计算方法:https://blog.csdn.net/ydy1107/article/details/121355836

1. 核心思想:俩个不平行的直线的交点就是消失点

代码地址:https://github.com/KEDIARAHUL135/VanishingPoint

2.算法流程

我们将计算和发现使用之前发现的线条的图像的消失点。
这一节涉及与线(它们的交点和它们的距离)有关的基本数学从一个点)和一个小的逻辑。
// 我们在这里要做的是,我们将使用两个线的组合,然后找到它们交点。这个交点可以是消失点,因为它期望线在消失点附近收敛。但这里有一个问题,就是有很多lines (我们的最大值是15),所以两条线的这种交点的数量可以导致许多不同的
点。那么我们如何在这些点中找到最接近实际的消失点?
为此,我们在逻辑中引入了一个“误差”因素。误差基本上是这个点到每条直线距离的平方和的平方根 。相对应的点最小误差值可能是最接近消失点的值,因此我们计算出了消失点。
下面展示了两线相交后的计算点错误值。这里我们仅以3条lines为例。
我们取直线L1和L2它们的交点是(x0, y0),直线方程L1是y = m1x + c1直线L2的方程是y = m2x +c2。
计算L1和L2的交点(x0,y0):
计算

我们现在会找到这一点到直线L的距离,直线L的方程是y = m*x + c,为此,我们设直线L_ (L破折号)(方程:y = m_*x + c_)垂直于L,并通过这个点 (x0, y0)。直线L_与直线L的交点为(x_, y_),即点的距离(x0, y0)到直线L的距离是 d= (x0, y0)到(x_, y_)的距离。这些点在直线L处的误差值是这些点的平方和的根如图所示。
计算L1和L2的交点(x0,y0)到直线L的距离:

在这里插入图片描述

int* GetVanishingPoint(std::vector<std::vector<double>> Lines)
{
   
   
	// We will apply RANSAC inspired algorithm for this.We will take combination
	// of 2 lines one by one, find their intersection point, and calculate the
	// total error(loss) of that point.Error of the point means root of sum of
	// squares of distance of that point from each line.
	int* VanishingPoint = new int[<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值