环视360全景拼接原理分析

参考链接:https://blog.youkuaiyun.com/weixin_43873379/article/details/130297422

引言

“ 汽车360影像是一项比较先进的技术,它通过多个高清摄像头将车辆的外部环境进行拍摄,并将这些影像进行处理和融合,以生成一张完整的全景图像。这种技术已经被广泛应用于汽车行业,为驾驶员提供了更加全面、直观的视觉体验,同时也大大提高了汽车的安全性能。今天,我们将参考github开源项目介绍汽车360影像的原理及其工作方式,理解其背后的原理与奥秘。(原github链接见文章末尾)”

汽车360影像介绍

汽车360影像是一种先进的汽车影像技术,它可以让车主在驾驶汽车时,获得全方位的视角,从而更加清晰地了解车辆周围的环境。该技术通过安装摄像头和传感器在汽车周围不同位置,将所得到的图像和数据集成在一起,形成全景影像,让车主可以通过车载显示屏或智能手机APP观看。

一般汽车360影像主要由四个鱼眼相机和四个超声波探头组成,分别安装在汽车前、后、左、右四个方向。每个摄像头都可以拍摄一个特定角度的视野,四个摄像头的图像通过一个中央控制器集成在一起,形成一个完整的360度全景图像。这些图像可以用于检测并显示汽车周围的障碍物和其他车辆,让车主更加容易地掌握车辆周围的情况。典型的安装位置如下所示:
在这里插入图片描述

另外,一些装配了L2辅助驾驶系统的汽车还配备了如毫米波雷达以及超声波雷达等传感器,这些传感器可以感知汽车周围的环境,包括车辆距离、车速、方向等信息。通过这些传感器提供的数据,搭配汽车360影像系统可以实现自动泊车、避免碰撞等功能,大大提高了驾驶的安全性。

最后,汽车360影像技术的应用也在不断拓展。例如,在电动汽车领域,汽车360影像技术可以帮助驾驶员更好地了解电动汽车周围的充电设施、充电状态等信息,从而更好地规划充电路线。此外,汽车360影像技术还可以应用于自动驾驶领域,通过全方位影像和数据提供更全面、准确的感知信息,实现更加智能、高效的自动驾驶。

基本原理

透视变换

由于汽车环视相机安装一般是斜向下的角度,因此原始相机输出的图像并不是俯视图(这里我们假定相机输入环视拼接模块的图像是已经经过去畸变矫正的图像)。因此要达到鸟瞰图的效果,相机输出的图像必须需要经过投影到新的俯视视角,如下图所示:
在这里插入图片描述
这个视角变换的过程叫透视变换,这里可以用矩阵变化来表示图像中某一个点的变化,其表达式如下所示:

在这里插入图片描述
在生活中一个典型的例子就是在使用iPhone手机扫描身份证时,即使我们有时是从不同角度不规则拍摄,但最后iPhone依然会给我们修正成正常形状的身份证,这个过程就是透视变换的典型应用,以方块演示身份证透视变换如下所示:
在这里插入图片描述
透视变换重要的一点是找出原坐标系与新坐标系的转换矩阵,还是以上图为demo,我们知道原图的四个顶点坐标以及转换后的顶点坐标,然后带入转换方程求解便可以求解出转换矩阵。矩阵求解这里不再细讲,后面我们会出一篇专栏使用OpenCV来演示透视变换的过程。

透视变换标定

经过2.1部分我们知道了,单个相机可以通过透视变换完成视角的转换,但是有两个问题随之浮出:

  • 如何确定转换后的坐标呢?
  • 如何将四个相机投影到一个坐标系呢?
    上述两个问题的答案就是标定。一般情况下标定需要在车的四角放置标定chart,需要注意的是,标定chart的摆放位置需要保证相邻的两个chart都可以看到斜对角,典型的摆放位置如下图所示:
    在这里插入图片描述
    我们已知要输出拼接后鸟瞰图大小,并且已经预设好标定板对应(Xm, Ym)在鸟瞰图中的位置,那么对应的四个环视相机看到的两个chart投影后的位置便已经知道了,然后又知道原始坐标在图像中的位置,我们就可以求出投影矩阵。以前环视为例,其标定示例如下图所示,上面是相机输出的去畸变图像,下图是预设好的的鸟瞰图坐标系:

在这里插入图片描述
同理,其余三个相机的投影矩阵也可以这样求出。然后再将变换后的图像投影到鸟瞰图中即可。

图像拼接问题

在四个环视投影矩阵求解完毕之后,我们便可以将四个环视相机的图像进行投影输出,但在不同相机投影到同一个平面时就会出现两个问题:

  • 问题1:
    由于四个相机分布于车的不同的部位,虽然相机白平衡、AE策略等可能相同,但是由于亮度、色温、灯光等环境差异,四个环视相机还是会出现亮度以及颜色的差异。如下图所示:
    在这里插入图片描述

  • 问题2:
    另外就是不同相机在拼接处拼接时,由于标定后的图像在拼接处不可能完美重合,因此在拼接处如果不做处理会有明显的重影断代现象,因此这些需要在拼接时进行优化处理。如下图所示:
    在这里插入图片描述

  • 针对问题1:
    各个相机白平衡需要再做一次白平衡,可以使用灰度世界法等。另外,在做白平衡R、G、B分量统计时需要算每个相机图像和整体R、G、B分量平均亮度的的一个增益系数,这样亮度就可以达到四个相机统一。

  • 针对问题2:
    每两个相机之间的overlap区域我们将其提取出来,如下:
    在这里插入图片描述
    然后白色mask之外区域使用各自相机的原始数据,白色mask之内的数据采用距离计算的方法计算权重值,离中心越近,比值越高、离中心越远,权重越低这样我们就可以得到下面的一个权重图
    在这里插入图片描述
    最后,有重叠区域的两个图进行叠加的时候根据权重值来叠加即可。

结束语

采用python开发,后面我们将基于原开源代码修改成c++版本进行实现并开源,请小伙伴们多多关注,开源GitHub链接:

https://github.com/neozhaoliang/surround-view-system-introduction

<think>嗯,用户想了解Excel中的VLOOKUP函数的用法和参数含义。首先,我需要回忆一下VLOOKUP的基本结构。VLOOKUP是垂直查找函数,用于在表格的首列查找指定的值,然后返回该行中指定列的数据。它的四个参数分别是查找值、表格范围、列索引号和匹配模式。 接下来,我得确认每个参数的具体作用。第一个参数是lookup_value,也就是用户要查找的值,比如产品ID或者姓名。第二个参数是table_array,即查找的范围,这里要注意的是,查找值必须位于这个范围的第一列,否则函数无法正确工作。第三个参数是col_index_num,也就是用户想要返回的数据在表格范围中的第几列,这个列数是从表格范围的第一列开始算起的,不是整个工作表的列。第四个参数是range_lookup,决定是精确匹配还是近似匹配,通常用FALSE或0来指定精确匹配,避免错误。 然后,用户可能需要一个具体的例子来理解如何使用。比如,假设有一个产品价格表,用户想根据产品ID查找对应的价格。这时候,VLOOKUP就可以在ID列查找,然后返回价格列的数据。同时,要提醒用户注意表格范围最好使用绝对引用,比如$A$2:$C$100,这样在拖动公式时范围不会变化。 可能遇到的问题也需要考虑。比如,如果查找值不在表格的第一列,或者列索引号超过了表格的列数,函数会返回错误。此外,数据格式不一致也可能导致问题,比如查找值是数字,而表格中是文本格式的数字,这时候需要统一格式。还有,当出现#N/A错误时,可能是查找值不存在,或者匹配模式设置不正确,需要检查参数是否正确。 用户可能还会问到如何避免常见的错误,比如部分数据匹配出错的情况。这时候需要检查是否有多余的空格,或者数据格式不一致,或者表格范围没有锁定导致拖动时偏移。此外,XLOOKUP作为VLOOKUP的升级版,可能在某些情况下更方便,比如可以向左查找或者返回多列数据,这也是可以提及的内容。 最后,整理步骤,从基础语法到参数说明,再到具体案例,逐步引导用户理解如何使用VLOOKUP函数。同时,提供常见错误和解决方法,帮助用户在实际应用中避免问题。如果有必要,还可以比较VLOOKUP和其他查找函数的区别,比如HLOOKUP或XLOOKUP,但根据用户的问题,主要集中在VLOOKUP本身即可。</think>### Excel VLOOKUP函数详解 #### 一、基础语法与参数说明 VLOOKUP函数的语法为: $$=VLOOKUP(lookup\_value, table\_array, col\_index\_num, [range\_lookup])$$ 包含4个参数: 1. **lookup_value**(必填):要查找的值(如单元格引用或具体值) 2. **table_array**(必填):包含数据的表格范围(必须包含查找列和返回列) 3. **col_index_num**(必填):返回值所在列的序号(从table_array第一列开始计数) 4. **range_lookup**(可选):匹配类型 - `TRUE`/`1`:近似匹配(默认值,需数据升序排列) - `FALSE`/`0`:精确匹配(常用选项) [^1][^2] #### 二、使用步骤演示(工资表查询案例) 假设需要根据员工编号查询工资: 1. 建立查询单元格(如`B12`) 2. 输入公式: ```excel =VLOOKUP(A12, $A$2:$D$100, 4, 0) ``` - `A12`:待查询的员工编号 - `$A$2:$D$100`:锁定数据区域(绝对引用) - `4`:返回第4列(工资列) - `0`:精确匹配 [^2][^3] #### 三、常见错误与解决方法 | 错误现象 | 原因 | 解决方案 | |---------|------|---------| | #N/A | 查找值不存在 | 检查数据源或改用`IFERROR`容错 | | #REF! | 列序号超出范围 | 确认col_index_num ≤ 表格列数 | | 部分匹配失败 | 数据格式不一致 | 统一数值/文本格式 | | 结果错位 | 表格未锁定 | 使用`$`符号固定区域引用 | [^3][^4] #### 四、进阶技巧 1. **多条件查询**: 使用辅助列合并多个条件字段 ```excel =VLOOKUP(A2&B2, $D$2:$F$100, 3, 0) ``` 2. **通配符匹配**: `"*"`匹配任意字符,`"?"`匹配单个字符 ```excel =VLOOKUP("张*", $A$2:$C$100, 3, 0) ``` 3. **跨表查询**: 引用其他工作表数据 ```excel =VLOOKUP(A2, Sheet2!$A$2:$D$100, 4, 0) ``` [^1][^4]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值