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. poj2175费用流消圈算法

    题意:      有n个建筑,每个建筑有ai个人,有m个避难所,每个避难所的容量是bi,ai到bi的费用是|x1-x2|+|y1-y2|+1,然后给你一个n*m的矩阵,表示当前方案,问当前避难方案是否 ...

  2. POJ1151基本的扫描线求面积

    题意:      给定n个矩形的对角坐标,分别是左下和右上,浮点型,求矩形覆盖的面积. 思路:       基本的线段树扫描线求面积,没有坑点,不解释了,提示一点,有的题尤其是线段树扫描线的题需要离散 ...

  3. Windows核心编程笔记之作业

    创建作业,并加以限制 HANDLE WINAPI CreateJob() { BOOL IsInJob = FALSE; DWORD ErrorCode = NULL; // 不能将已经在作业中的进程 ...

  4. composer update -- memory_limit

    compsoer update取消memory_limit限制.取消扩展对于版本的限制 php -d memory_limit=-1 ./composer.phar update --ignore-p ...

  5. Mac FTP 安装与使用

    安装ftp brew install telnet brew install inetutils brew link --overwrite inetutils 使用ftp 1. 登录 #方式一 $ ...

  6. 一、Github+Pycharm基础

    GitHub为版本管理工具 常用的版本管理工具:本地化版本管理系统.集中式版本管理系统SVN.分布式版本管理系统 一.安装git(自行百度) 二.文件操作与分支管理基础 1.版本控制系统分类 集中化版 ...

  7. 关于HTTP的一些概念

    各种概念 HTTP HTTP(HyperText Transfer Protocol) -- 超文本传输协议 它可以拆成三个部分:"超文本"."传输".&quo ...

  8. 精选Hive高频面试题11道,附答案详细解析(好文收藏)

    1. hive内部表和外部表的区别 未被external修饰的是内部表,被external修饰的为外部表. 区别: 内部表数据由Hive自身管理,外部表数据由HDFS管理: 内部表数据存储的位置是hi ...

  9. JS求一个字符串在另一个字符串中出现的次数

    参数说明: subString子字符串 originString母字符串 isIgnoreCap是否忽略大小写,默认忽略 function stringFre(subString, originStr ...

  10. Asp.NetCore 自定义中间件

    这节演示一下自定义中间件,第一节我们讲到,中间件的处理流程就像一个俄罗斯套娃,那这种俄罗斯套娃型的流程内部是如何实现的呢,下面请看代码​. ​第一种写法是直接写在Configure方法中的,使用app ...