ADAS摄像头图像环视拼接算法

输入输出接口

Input:

(1)4个摄像头采集的图像视频分辨率 (整型int)

(2)4个摄像头采集的图像视频格式 (RGB,YUV,MP4等)

(3)摄像头标定参数(中心位置(x,y)和5个畸变

系数(2径向,2切向,1棱向),浮点型float)

(4)摄像头初始化参数(摄像头初始位置和三个坐标方向

的旋转角度,车辆宽度高度车速等等,浮点型float)

Output:

(1)图像融合和拼接的image/video的坐标位置(浮点型float)

(2)图像融合和拼接的图像视频分辨率(整型int)

(3)图像融合和拼接的图像视频格式 (RGB,YUV,MP4等)

(4)车辆周围障碍物报警   (字符型char)

22.1  功能定义

1)计算图像融合和拼接的image/video的坐标位置。

2)算出图像融合和拼接的图像视频分辨率。

3)确定图像融合和拼接的图像视频格式。

4)检测车辆周围障碍物并报警。

22.2  技术路线方案

在360°全景视图泊车辅助系统中,通过安装在车辆前、后、左、右 4 个方位的广角摄像头采集车辆四周的视频影像,利用图像融合和拼接技术合成一幅车身周围的全景视图,最后在中控台的屏幕上显示,以扩大驾驶员视野。借助360°全景视图泊车辅助系统,驾驶员坐在车中即可直观地看到车辆周围是否存在障碍物以及障碍物的相对方位与距离,以便在狭窄拥堵的停车场从容操控车辆泊车入位或通过复杂的路面,可有效防止刮蹭、碰撞、陷落等事故的发生。同时,全景视图也可以为自动驾驶系统中识别、检测、跟踪等算法提供支持。

富士通(Fujitsu)开发的视频成像技术, 可实时实现车辆的完整360°环绕视图。四个相机安装在车辆前后左右周边,车辆周围环境的视频图像通过富士通的3D虚拟投影/视点转换技术进行合成。先进的三维算法可以比较流畅地结合四个独立相机的图像,提供一个无缝和清晰的360°视图。具体来说,四个摄像头的图像被发送到视频处理LSI,包括视频捕捉和3D功能,然后相机图像合成为单个实时3D图像并投影到三维碗形网格,生成虚拟3D环绕视频,可以任意转换车辆周围环境视图视角。

图1. 富士通环视方案流程图

为了满足视频拼接的实时性要求,同时考虑到摄像头安装的位置、角度以及不同摄像头之间相互位置相对固定,在本项目中可以使用基于特定图像拼接与查表法相结合的多视点视频拼接方法。在初始化阶段,首先采集预先放置于车辆前、后、左、右 4个方位的带有棋盘格的标定图像,利用标定图像分别对4个摄像头进行参数标定,求出并保存每个摄像头图像畸变矫正参数,对标定图像进行畸变矫正,消除摄像头成像失真; 然后对畸变矫正后的标定图像进行射影变换,求出并保存射影变换参数; 接着采集预先放置于车辆前、后、左、右4个方位的带有丰富特征点的特定图像,并通过查找摄像头图像畸变矫正参数进行畸变矫正,通过查找射影变换参数将矫正后的特定图像变换成俯瞰图; 最后对4个俯瞰图提取 ORB( Oriented FAST and Rotated BRIEF) 特征并进行粗匹配,利用 RANSAC( Random Sample Consensus,随机抽样一致) 算法剔除误匹配点,并拟合出单应性矩阵的初始值,再使用 Levenberg-Marquardt 非线性迭代最小逼近法进行求精,经图像配准、融合和拼接后,生成360°俯瞰全景视图。在泊车辅助系统启用期间,通过查找已保存的摄像头图像畸变矫正参数、射影变换参数以及单应性矩阵参数,将4个摄像头的视频图像进行拼接,生成虚拟的俯瞰全景视图。

由于摄像头内外参数校正准确性对图像投影效果影响大;需要结合摄像头安装具体情况进行算法的调整;为满足嵌入式系统实时性需求,需要不断优化算法;尽量进行流程简化或者流程自动化。

图2. 算法流程

图3. 摄像头成像及其坐标系

主要数学原理,世界坐标系中某点投影到图像平面上的像素点( u,v).该过程要经过齐次坐标转换:

其中,s为任意的非零比例因子; αu=f/dx,f是摄像头的焦距,dx代表x轴方向一个像素的宽度是图像在 u 轴上的尺度因子,或称为u轴上的归一化焦距;

,其中dy代表y轴方向一个像素的高度,αv是图像在v轴上的尺度因子,或称为v轴上的归一化焦距;,它们是摄像头坐标系相对于世界坐标系的旋转向量; 是摄像头坐标系相对于世界坐标系的平移向量; M1 由决定,只与摄像头内部参数有关,称为摄像头内部参数矩阵; M2 由摄像头相对于世界坐标系的方位决定,称为摄像头外部参数矩阵; M 是一个3×4矩阵,称作投影矩阵,用于计算从世界坐标系到图像坐标系的转换。可见,若已知摄像头的内、外参数,就能够知道投影矩阵 M,对空间内任何一点,如果已知它的空间坐标,就可以求出对应的像素点坐标(u,v) 。

张正友标定法,采用棋盘格平面靶标作为标定物,可以把世界坐标系构造在 Zw = 0的平面上。

其中,是径向畸变系数。将式(3)化成矩阵形式为

以上是畸变矫正公式。

以上是射影变换。

以上是畸变矫正及射影变换所对应的坐标像素计算公式。

以上是图像拼接单应性矩阵求解公式。

以上是平均值法对拼接重叠区域进行融合。

以上是3-D ship模型视角转换矩阵。

 

图4. alpha fusion

22.3  关键技术参数和性能指标

一种基于自适应特征点配准的环视系统拼接效果评估和自动微调方法,其特征在于:包括以下步骤:

步骤A、获得拼接前图像,并截取根据拼接参数算出的拍摄的相同位置的图像;

步骤B、采用自适应特征点配准算法来获得拼接前相同位置的图像的旋转平移矩阵;

步骤C、将旋转平移矩阵或者对其进行计算得到的角度信息和位移信息作为环视系统拼接效果的评估指标,并用此矩阵对拼接效果进行微调。

ADAS摄像头图像环视拼接算法的更多相关文章

  1. Opencv Sift和Surf特征实现图像无缝拼接生成全景图像

    Sift和Surf算法实现两幅图像拼接的过程是一样的,主要分为4大部分: 1. 特征点提取和描述 2. 特征点配对,找到两幅图像中匹配点的位置 3. 通过配对点,生成变换矩阵,并对图像1应用变换矩阵生 ...

  2. 夜晚场景图像ISP增强算法

    夜晚场景图像ISP增强算法 输入输出接口 Input: (1)图像视频分辨率(整型int) (2)图像视频格式(RGB,YUV,MP4等) (3)摄像头标定参数(中心位置(x,y)和5个畸变 系数(2 ...

  3. 平滑过渡的战争迷雾(一) 原理:Warcraft3地形拼接算法

    本系列文章由七十一雾央编写,转载请注明出处.  http://blog.csdn.net/u011371356/article/details/9611887 作者:七十一雾央 新浪微博:http:/ ...

  4. 《C++游戏开发》笔记十三 平滑过渡的战争迷雾(一) 原理:Warcraft3地形拼接算法

    本系列文章由七十一雾央编写,转载请注明出处.  http://blog.csdn.net/u011371356/article/details/9611887 作者:七十一雾央 新浪微博:http:/ ...

  5. 使用JavaCV/OpenCV抓取并存储摄像头图像

    http://blog.csdn.net/ljsspace/article/details/6702178  分类: 图形图像(3)  版权声明:本文为博主原创文章,未经博主允许不得转载. 本程序通过 ...

  6. Python实现图像直方图均衡化算法

    title: "Python实现图像直方图均衡化算法" date: 2018-06-12T17:10:48+08:00 tags: [""] categorie ...

  7. 在python3下使用OpenCV 抓取摄像头图像提取蓝色

    工作中需要对摄像头进行调试, Python平台大大提高调试效率. 从网找到段代码, 可以从摄像头图像中抠出蓝色. import cv2 import numpy as np cap  = cv2.Vi ...

  8. python+opencv中最近出现的一些变化( OpenCV 官方的 Python tutorial目前好像还没有改过来?) 记一次全景图像的拼接

    最近在学习过程中发现opencv有了很多变动, OpenCV 官方的 Python tutorial目前好像还没有改过来,导致大家在学习上面都出现了一些问题,现在做一个小小的罗列,希望对大家有用 做的 ...

  9. 图像超分辨率算法:CVPR2020

    图像超分辨率算法:CVPR2020 Unpaired Image Super-Resolution using Pseudo-Supervision 论文地址: http://openaccess.t ...

随机推荐

  1. D - The Frog's Games (二分)

    The annual Games in frogs' kingdom started again. The most famous game is the Ironfrog Triathlon. On ...

  2. 功能:Java8新特性steam流

    Java8新特性steam流 一.包装数据类型 @Test public void main22() { List<Integer> list = new ArrayList<Int ...

  3. 【Java集合】为什么HashMap的长度是2的N次幂?

    这个问题应该倒过来思考,HashMap的长度是2的N次幂,有什么优势? 在HashMap的putVal()方法中,为了确定插入元素在table[]数组中的下标位置,使用的与(&)运算来计算 如 ...

  4. 【SpringBoot】Springboot2.x整合Redis(一)

    备注: springboto整合redis依赖于spring-boot-starter-data-redis这个jar 一,项目环境和依赖 1.POM.xml配置 <parent> < ...

  5. Android Hook框架adbi的分析(2)--- inline Hook的实现

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/74452308 一. Android Hook框架adbi源码中inline Hoo ...

  6. HackingLab脚本关

    目录 1:key又又找不到了 2:快速口算 3:这个题目是空的 5:逗比验证码第一期 6:逗比验证码第二期 7:逗比的验证码第三期(SESSION) 8:微笑一下就能过关了 9:逗比的手机验证码 10 ...

  7. Intel汇编程序设计-整数算术指令(下)

    7.5  扩展加法和减法 扩展精度的假发和减法是指任意尺寸大小数字的加法和减法.例如要求你写一个C++程序,把两个1024位的整数相加,解决方案可不是那么简单!但在汇编语言中,ADC(带进位加)指令和 ...

  8. web.xml 基本配置(SSM maven项目)

    <web-app> <display-name>Archetype Created Web Application</display-name> <!--we ...

  9. Android学习之TTS踩坑笔记

    •前言 最近在做一款英文词典的 APP,做到语音模块的时候,我裂开,从网上搜索了各种博客,各种瞎捣鼓,模拟器就是不发音: 辗转反侧数日,终于让我找到解决之法,接下来就本次测试列出一些需要(必须)解决的 ...

  10. XCTF.MISC 新手篇

    目录 泪目 1.this_is_flag 2.pdf 3.如来十三掌 4.give_you_flag 5.坚持60s 6.gif 7.掀桌子 8.ext3 9.stegano 10.SimpleRAR ...