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. 【Idea】实用插件列表

    1.Translation : 翻译 2.CodeGlance:代码预览 3.Lombok:优雅编程插件 4.GenerateSerialVersionUID :自动生成序列化ID 5.CamelCa ...

  2. hdu4847 水题

    题意:       你看了上面很长很长的一片英语课文之后,发现根本不用看,直接看输入输出就行了,就是给你一坨字符串,然后问你里面有几个doge(不区分大小写). 思路:       没啥说的,直接写吧 ...

  3. Google Hacking的用法

    目录 Google Hacking 基本搜索 高级搜索 Index of inurl Google Hacking Google Hacking 是利用谷歌搜索的强大,来在浩瀚的互联网中搜索到我们需要 ...

  4. Linux提权之利用 /etc/passwd 文件

    当我们获得了某个Linux服务器的低权限之后,我们想要对该低权限账号进行提权,以执行更多的操作. 接下来我们的提权是利用 /etc/passwd 文件的可写入权限,导致我们写入一个其他用户进去. 首先 ...

  5. DockerFile常用命令

    COPY 复制文件 COPY [--chown=<user>:<group>] <源路径>... <目标路径> COPY [--chown=<us ...

  6. 【vue-09】axios

    [vue-09]axios 文档:Axios中文文档 官网 为什么要使用axios 功能特点: 支持发送ajax异步 支持在NodeJs中发送ajax请求. 支持Promise 支持拦截器请求和响应 ...

  7. vue 2.9.6升级到最新版本

    在看文档https://cli.vuejs.org/zh/guide/installation.html中,按步骤升级vue: 于是就先通过 npm uninstall vue-cli -g卸载vue ...

  8. TortoiseGit生成.PPK拓展名的密钥

    在TortoiseGit 运行目录下找到puttygen.exe 工具 运行puttygen.exe genertate :代表动态生成新的内容 load :导入旧的密钥 save private k ...

  9. 内网渗透-横向移动($IPC&at&schtasks)

    内网渗透-横向移动 #建立ipc连接并将后门添加至计划任务 前置条件:获取到某域主机权限->得到明文或者hash,通过信息收集到的用户列表当做用户名字典->用得到的密码明文当做密码字典 本 ...

  10. SQL Server 查看进程阻塞及处理

    修改或删除数据前先备份,先备份,先备份(重要事情说三遍)! 1.首先,查看线程,分析是否存在阻塞进程,blocked>0都是当前被阻塞的进程  SELECT * FROM sysprocesse ...