使用嵌入式相机计算道路平面法线

Posted

技术标签:

【中文标题】使用嵌入式相机计算道路平面法线【英文标题】:Compute road plane normal with an embedded camera 【发布时间】:2018-06-27 18:03:27 【问题描述】:

我正在为车辆应用开发一些计算机视觉算法。 我遇到了问题,我们将不胜感激。

假设我们在车辆上安装了一个校准过的摄像头,它可以捕捉到车辆前方道路的画面: Initial frame

我们应用第一个过滤器以仅保留道路标记并返回二值图像: Filtered image

一旦道路车道被分开,我们可以用线性表达式来近似车道并检测消失点: Objective

但我要恢复的是图像中的法线 n 方程,而没有任何关于旋转矩阵和平移向量的先验知识。不过,我假设 L1、L2 和 L3 位于同一平面上。

在 3D 空间中,问题非常简单。在 2D 图像平面中,由于相机投影变换不会保持角度属性更复杂。我无法找到计算法线方程的方法。

你知道如何计算法线吗?

谢谢, 下午

【问题讨论】:

【参考方案1】:

不行,您至少需要两个独立的消失点(即,消失点代表两条不同平行线铅笔在无穷远处的点的图像)。

如果你有它们,答案很简单:用齐次坐标表示所述消失点的图像位置。然后它们的叉积等于(按比例缩放)铅笔定义的 3D 平面的法线向量,在相机坐标中分解。

【讨论】:

【参考方案2】:

正如其他人所说,您的信息不充分。如果您的数据来自视频,获取道路地平面的常用方法是拍摄两个或更多图像,计算相关的单应性矩阵,然后将单应性矩阵分解为表面法线和相对相机运动。您可以使用 OpenCV 的 decomposeHomographyMatmethod 进行分解。您可以通过使用 OpenCV 的 findHomography 方法关联四个或更多点对应来计算单应性。如果很难确定这些对应关系,也可以通过点和线对应关系paper 的组合来确定,但这在 OpenCV 中没有实现。

【讨论】:

【参考方案3】:

您提供的示例中没有足够的信息。

如果您想知道“哪条路向上”,您可以做的一件事是检测地平线上的线。如果 K 是校准矩阵,则 K^Tl 将为您提供相对于相机的 3D 平面法线。 (将图像中的直线 l 通过投影中心反向投影到平面 E 的一般方程为 E=P^Tl,具有 3x4 投影矩阵 P)

一个更好的选择可能是建立一个单应性来纠正接地平面。但是,要做到这一点,您至少需要四个具有已知坐标的非共线点 - 或四条线,其中三条线不得平行。

【讨论】:

以上是关于使用嵌入式相机计算道路平面法线的主要内容,如果未能解决你的问题,请参考以下文章

嵌入式新人必知的程序设计道路有哪些?

计算机图形学(OPENGL):法线贴图

基于pylon嵌入式目标应用(Basler相机)

基于pylon嵌入式目标应用(Basler相机)

文本字段内的嵌入式平面按钮

计算不同面上的平滑法线