全景视频拼接关键技术

一、原理介绍

图像拼接(Image Stitching)是一种利用实景图像组成全景空间的技术,它将多幅图像拼接成一幅大尺度图像或360度全景图,图像拼接技术涉及到计算机视觉、计算机图形学、数字图像处理以及一些数学工具等技术。图像拼接其基本步骤主要包括以下几个方面:摄相机的标定、传感器图像畸变校正、图像的投影变换、匹配点选取、全景图像拼接(融合),以及亮度与颜色的均衡处理等,以下对各个步骤进行分析。

摄相机标定

由于安装设计,以及摄相机之间的差异,会造成视频图像之间有缩放(镜头焦距不一致造成)、倾斜(垂直旋转)、方位角差异(水平旋转),因此物理的差异需要预先校准,得到一致性好的图像,便于后续图像拼接。

相机的运动方式与成像结果之间的关系见下图。

图1:相机的运动方式与成像结果之间的关系

图像坐标变换

在实际应用中,全景图像的获得往往需要摄像机以不同的位置排列和不同的倾角拍摄。例如由于机载或车载特性,相机的排列方式不尽相同,不能保证相机在同一面上,如柱面投影不一定在同一个柱面上,平面投影不一定在同一平面上;另外为了避免出现盲区,相机拍摄的时候往往会向下倾斜一定角度。这些情况比较常见,而且容易被忽略,直接投影再拼接效果较差。因而有必要在所有图像投影到某个柱面(或平面)之前,需要根据相机的位置信息和角度信息来获得坐标变换后的图像。

理论上只要满足静止三维图像或者平面场景的两个条件中的任何一个,两幅图像的对应关系就可以用投影变换矩阵表示,换句话说只要满足这其中任何一个条件,一个相机拍摄的图像可以通过坐标变换表示为另一个虚拟相机拍摄的图像。

一般情况下8参数的透视投影变换最适合描述图像之间的坐标关系,其中8参数的矩阵为[m0,m1,m2;m3,m4,m5; m6,m7,1];各参数对应的相机运动表示如下:

如图2显示的是相机向下倾斜一定角度拍摄图像,这个角度与m6和m7具有对应关系,如果要获得校正图像,只需要对8参数矩阵求逆后进行坐标变换。

(a) 原始图像

图2:(a) 原始图像;(b)x方向形变效果;(c)倾斜校正后效果

图像畸变校正

由于制造、安装、工艺等原因,镜头存在着各种畸变。为了提高摄像机拼接的精度,在进行图像拼接的时候必须考虑成像镜头的畸变。一般畸变分为内部畸变和外部畸变,内部畸变是由于摄影本身的构造为起因的畸变,外部畸变为投影方式的几何因素起因的畸变。镜头畸变属于内部畸变,由镜头产生的畸变一般可分为径向畸变和切向畸变两类。径向畸变就是集合光学中的畸变像差,主要是由于镜头的径向曲率不同而造成的,有桶形畸变和枕型畸变两种。切向畸变通常被人为是由于镜头透镜组的光学中心不共线引起的,包括有各种生成误差和装配误差等。一般人为,光学系统成像过程当中,径向畸变是导致图像畸变的主要因素。径向畸变导致图像内直线成弯曲的像,且越靠近边缘这种效果越明显。根据径向畸变产生的机理,对视频图像进行校正。效果如图3(b)所示,经过校正的图像,其有效像素区域缩小,一般可通过电子放大的方式进行校正,如图3(c)所示。

(b)(c)

图3:(a)为原始采集图像;(b)为经过径向失真校正的图像;(c)为经过放大的图像

图像投影变换

由于每幅图像是相机在不同角度下拍摄得到的,所以他们并不在同一投影平面上,如果对重叠的图像直接进行无缝拼接,会破坏实际景物的视觉一致性。所以需要先对图像进行投影变换,再进行拼接。一般有平面投影、柱面投影、立方体投影和球面投影等。

平面投影就是以序列图像中的一幅图像的坐标系为基准,将其图像都投影变换到这个基准坐标系中,使相邻图像的重叠区对齐,称由此形成的拼接为平面投影拼接;柱面投影是指采集到的图像数据重投影到一个以相机焦距为半径的柱面,在柱面上进行全景图的投影拼接;球面投影是模拟人眼观察的特性,将图像信息通过透视变换投影到眼球部分,构造成一个观察的球面;立方体投影是为了解决球面影射中存在的数据不宜存储的缺点,而发展出来的一种投影拼接方式,它适合于计算机生成图像,但对实景拍摄的图像则比较困难。如下图4所示,图像拼接处理流程示意图。

图4:图像拼接处理流程示意图

匹配点选取与标定

由于特征点的方法较容易处理图像之间旋转、仿射、透视等变换关系,因而经常被使用,特征点包括图像的角点以及相对于其领域表现出某种奇异性的兴趣点。Harris等提出了一种角点检测算法,该算法是公认的比较好的角点检测算法,具有刚性变换不变性,并在一定程度上具有仿射变换不变性,但该算法不具有缩放变换不变性。针对这样的缺点,Lowe提出了具有缩放不变性的SIFT特征点。

图5 两幅图像中标定的匹配特征点

如上图5所示,图像的拼接需要在图像序列中找到有效的特征匹配点。图像的特征点寻找直接影响图像拼接的精度和效率。对于图像序列,如果特征点个数≥4个,则很容易自动标定图像匹配点;如果特征点很少,图像拼接往往不能取得较为理想的效果。

图像拼接融合

图像拼接的关键两步是:配准(registration)和融合(blending)。配准的目的是根据几何运动模型,将图像注册到同一个坐标系中;融合则是将配准后的图像合成为一张大的拼接图像。

在多幅图像配准的过程中,采用的几何运动模型主要有:平移模型、相似性模型、仿射模型和透视模型。

图像的平移模型是指图像仅在两维空间发生了 方向和 方向的位移,如果摄像机仅仅发生了平移运动,则可以采用平移模型。图像的相似性模型是指摄像机本身除了平移运动外还可能发生旋转运动,同时,在存在场景的缩放时,还可以利用缩放因子 多缩放运动进行描述,因此,当图像可能发生平移、旋转、缩放运动时,可以采用相似性模型。图像的仿射模型是一个6参数的变换模型,即具有平行线变换成平行线,有限点映射到有限点的一般特性,具体表现可以是各个方向尺度变换系数一致的均匀尺度变换或变换系数不一致的非均与尺度变换及剪切变换等,可以描述平移运动、旋转运动以及小范围的缩放和变形。图像的透视模型是具有8个参数的变换模型,可以完美地表述各种表换,是一种最为精确变换模型。

图像融合技术一般可分为非多分辨率技术和多分辨率技术两类。在非多分辨率技术中主要有平均值法、帽子函数法、加权平均法和中值滤波法等。多分辨率技术主要有高斯金字塔、拉普拉斯金字塔、对比度金字塔,梯度金字塔和小波等。

(e)

图6 柱面全景图像拼接

(a)-(d)为四幅不同视角的图像,(e)为最终拼接得到的柱面全景图像

亮度与颜色的均衡处理

因为相机和光照强度的差异,会造成一幅图像内部,以及图像之间亮度的不均匀,拼接后的图像会出现明暗交替,这样给观察造成极大的不便。

亮度与颜色均衡处理,通常的处理方式是通过相机的光照模型,校正一幅图像内部的光照不均匀性,然后通过相邻两幅图像重叠区域之间的关系,建立相邻两幅图像之间直方图映射表,通过映射表对两幅图像做整体的映射变换,最终达到整体的亮度和颜色的一致性。

二、国内外现状

全景拼接侦察系统在国外已经有了较早的研究,早在1992年,剑桥大学的L.G.Brown就对图像拼接的核心技术进行总结,1996年微软研究院的Richard Szeliski提出基于运动的全景拼接模型。Szeliski后来又相继发表了若干这方面论文,2000年Shmuel Peleg提出改进方法,根据相机的运动方式自适应选择拼接模型,2003年M.Brown发表了SIFT特征进行图像拼接的方法,但计算量很大,2007年Seong Jong Ha提出移动相机系统的全景拼接方法,不仅保证效果,而且运算速度也不错。

在国内方面,也有不少高校科研机构对视频拼接技术及应用进行研究,其中,上海凯视力成信息科技有限公司研发的“全景视觉态势感知系统” 最具代表性,该系统功能完善、技术先进、性能可靠,并已成功应用于多种车型。

上海凯视力成信息科技有限公司全景视觉态势感知系统——PVS9112型是实时的全固态无机械运动的高清360度凝视视频系统,系统提供实时的连续覆盖整个战场的全运动视频,人机交互界面直观快捷。系统适应于恶劣环境,支持彩色和红外传感器,可以黑天和白天全天候工作,实时地图像处理和高清视频的显示,显示界面同时提供360度全景窗口和感兴趣区域的高清画面。系统提供开发式结构,便于同其它系统如雷达等集成到一起,以获得一个完整的态势理解。

传感头:

图8 几种传感头

图形界面:

图9 PVS9112图形界面

特点:

  • 实时的360度视频全景显示,便于对态势的感知理解、安全监视、目标探测。从而提高平台的攻击能力和安全防护性。

  • 支持高清彩色和红外传感器。日夜均可工作。

  • 显示全局拼接画面、局部感兴趣。

  • 图形交互界面。并支持多种人机交互接口,支持触摸屏、鼠标、键盘、自定义按键、操纵摇杆等,可无缝接入已有系统。

  • 无运动部件,高可靠性。

  • 适应车船飞机等恶劣的工作环境。

可选特征:

  • 目标检测与告警

  • 自动多目标跟踪

  • 视频记录和回放

  • 可选支持PTZ长距离光电探测系统,在全景视频上可以通过触摸的方式控制PTZ的快速转动到指定的位置,克服了传统操控PTZ方式的缺陷,使得PTZ摄像机的功效大大提高。

  • 图像透雾增强算法

  • 电子稳像算法

开放式体形架构:

二、应用

从图像拼接的实际应用来看,主要有大型航空照片,卫星图像拼接,车载系统监控,虚拟场景实现,视频压缩;很多资料上都提及车载系统的拼接,这种拼接侦查系统可以用于不同车辆,如反恐、安全监视、侦察、巡逻和警车等;系统给操作者提供车辆周围的实时全景图像,使之能够感知全面而丰富的态势,操纵车辆的同时还可以有效将自己保护在车内,不用通过车辆的挡风玻璃就可以实时操控。全景图像极大地增强了用户的视觉感知系统,使其在特种车辆、军用以及民用方面都拥有广阔的市场前景。与传统的多画面监控相比,全景拼接画面更符合人眼观察,极大地提高了侦察的准确性。但很少提及机载系统,因此,机载方面只要设计合理,应用前景是巨大的。

应用实例:

方式一:基本模式

摄像机组 + 一或两个终端,支持记录或不记录,每个终端所显示内容可以不同。

方式二:增强模式

摄像机组 + 2以上终端,可通过GigE网络来扩展连接其他设备,如视频记录仪等。 采集和预处理模块,实现对视频信号的捕获,并对摄像机组进行管理,如PTZ控制等。在这一层,实现对不同路数、不同接口形式的摄像机的支持。并作必要的预处理功能,如图像的缩放平移投影变换、数据压缩等,为后续处理器准备好数据。模块还通过多个GigE网络,将视频数据分发给多个不同的处理器或其它设备,如视频记录仪等。这种组成结构,可适应不同应用需求:如不同的摄像机种类和数量,终端处理功能要求不同等等。

关于视频拼接产品的介绍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/252631.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Part8 多态性 8.1运算符重载

1运算符重载的规则C 几乎可以重载全部的运算符,而且只能够重载C中已经有的。不能重载的运算符:“.”、“.*”、“::”、“?:”重载之后运算符的优先级和结合性都不会改变。 重载的两种形式:   1 重载为类的非静态成员函数;   …

H面试程序(29):求最大递增数

要求&#xff1a;求最大递增数 如&#xff1a;1231123451 输出12345 #include<stdio.h> #include<assert.h> void find(char *s) {int maxleng 0;int length 1;int pos 0;int i 0;while(s[i] !\0){ if((s[i])<0||(s[i]>9)){assert(0);}if((s[i1]-0) &g…

reorder-list

/*** Definition for singly-linked list.* class ListNode {* int val;* ListNode next;* ListNode(int x) {* val x;* next null;* }* }*///思路:通过不同的首结点获取到不同的尾结点,然后拼接public class Solution {public ListNode get…

四大主流芯片架构(X86、ARM、RISC-V和MIPS)

目前市场上主流的芯片架构有 X86、ARM、RISC-V和MIPS四种&#xff1a; 序号架构特点代表性的厂商运营机构发明时间1X86性能高&#xff0c;速度快&#xff0c;兼容性好英特尔&#xff0c;AMD英特尔1978年2ARM成本低&#xff0c;低功耗苹果&#xff0c;谷歌&#xff0c;IBM&…

微博预计要火一阵的SleepSort之Shell及C实现

今日在微博看到如此奇妙的代码。竟然还有新的sort算法&#xff0c;对于我这样的渣渣必须研究一下&#xff0c;代码例如以下&#xff1a; #!/bin.bash function f() {sleep "$1" //sleep 这么多secho "$1" }while [ -n "$1" ] //第一个參数不为空…

相关类以及常用方法

1、system&#xff1a;(系统相关类&#xff09; 常用方法&#xff1a; a) : system.arraycopy(制定数组&#xff0c;开始复制的位置&#xff0c;目标数组&#xff0c;开始粘贴的位置&#xff0c;需要复制的长度) 。 将指定源数组中的数组从指定位置复制到目标数组的指定位…

2021-11-15

本文将重点围绕国产CPU的发展历程与当前产业链各领军企业的布局情况作详尽解读&#xff08;并包含特大号独家整理的最新进展&#xff09;&#xff0c;具体如下&#xff1a; 1、国产CPU发展历程回溯 2、飞腾&#xff1a;PK生态的主导者 3、鲲鹏&#xff1a;快速崛起的领导者 …

关于在ubuntu下配置AMD显卡驱动的总结

同样先卸载先前版本 代码:sudo sh /usr/share/ati/fglrx-uninstall.sh代码:sudo apt-get remove --purge fglrx fglrx_* fglrx-amdcccle* fglrx-dev*重启 代码:sudo reboot下载驱动&#xff0c;右边直接有ubuntu32位和64位驱动链接&#xff1a;http://support.amd.com/en-us/do…

Python3中的hasattr()

Python3已经将此内置函数移除了。查阅Python v3.0 documentation发现可以使用 hasattr(object, name)内置函数来完成callable的功能&#xff0c;方式如下&#xff1a; 3.0之前&#xff1a;callable(func) 3.0之后&#xff1a;hasattr(func, __call__) 这两者结果是相同的。 转载…

计算机结构简图

北桥,南桥是主板上芯片组中最重要的两块了.它们都是总线控制器.他们是总线控制芯片.相对的来讲,北桥要比南桥更加重要.北桥连接系统总线,担负着cpu访问内存的重任.同时连接这AGP插口,控制PCI总线,割断了系统总线和局部总线,在这一段上速度是最快的.南桥不和CPU连接通常用来作I/…

原始Ajax

var $ { request:function(obj){ //1. 获得xmlhttprequest对象兼容性处理 var xhr; //undefined未定义 try{ //主流浏览器里面的ajax对象 xhr new XMLHttpRequest(); }catch(e){ //IE低版本的浏览器 xhr new ActiveXObject("Microsoft.XMLHTTP"); } //2. 建立和…

Servlet 与 Ajax 交互一直报status=parsererror

Servlet 与 Ajax 交互一直报statusparsererror 原因&#xff1a;servlet 返回的数据不是 Json 格式 1、JS代码为&#xff1a; 1 var jsonStr {clusterNum:2,iterationNum:3,runTimes:4};2 $.ajax({3 type: "post",4 //http://172.2…

25LINQ拾遗及实例

投影 □ 遍历数组索引&#xff0c;Select获取 int[] indexes {0, 2}; string[] strs {"a", "b", "c", "d"}; var result from i in indexes select strs[i]; foreach (string str in result) { Console.Write(str " &quo…

国产CPU的6大品牌,3大路线对比

这些年来&#xff0c;中国最想发展的科技产品是什么&#xff1f;那必须是芯片&#xff0c;特别是2018年中兴事件、2019年华为事件之后&#xff0c;国内的芯片产业就彻底地火爆了起来。 按照数据显示&#xff0c;截止至2020年10月份&#xff0c;国内已经有27万家芯片企业&#…

BluePrint和ORM

一、蓝图创建 1 #引入库文件2 from flask import Blueprint,request,jsonify3 4 user Blueprint(5 "site",6 __name__,7 template_floder"templates_folder_path",8 static_floder"static" 9 ) #创建蓝图 10 1…

【js实例】Array类型的9个数组方法,Date类型的41个日期方法,Function类型

前文提要:【js实例】js中的5种基本数据类型和9种操作符 Array类型的9个数组方法 Array中有9个数组方法: 1.检测数组 2.转换方法 3.栈方法 4.队列方法 5.冲排序方法6.操作方法 7.位置方法 8.迭代方法 9.归并方法 在实例中介绍,实例如下 /* Array类型 js数组中的每一项可以用来保…

调用咏南中间件插件演示

function GetSvrData(const accountNo, defineId: WideString; inParams: OleVariant): OleVariant; virtual; abstract; // accountNo&#xff0c;帐套编号 // defineId3位插件编号2位自定义编号&#xff0c;defineId必须是唯一的 // inParams&#xff0c;TDataSet.Params的OL…

龙芯与飞腾roadmap

飞腾roadmap 龙芯roadmap 龙芯系列处理器芯片是龙芯中科技术有限公司研发的具有自主知识产权的处理器芯片&#xff0c;产品以32位和64位单核及多核CPU/SOC为主&#xff0c;主要面向国家安全、高端嵌入式、个人电脑、服务器和高性能机等应用。产品线包括龙芯1号小CPU、龙芯2号中…

vim 多窗口操作

1、打开多个窗口打开多个窗口的命令以下几个&#xff1a;横向切割窗口:new窗口名(保存后就是文件名) :split窗口名&#xff0c;也可以简写为:sp窗口名纵向切割窗口名:vsplit窗口名&#xff0c;也可以简写为&#xff1a;vsp窗口名2、关闭多窗口可以用&#xff1a;q!&#xff0c;…

BZOJ 2440 完全平方数(莫比乌斯-容斥原理)

题目链接&#xff1a;http://61.187.179.132/JudgeOnline/problem.php?id2440 题意&#xff1a;给定K。求不是完全平方数&#xff08;这里1不算完全平方数&#xff09;的倍数的数字组成的数字集合S中第K小的数字是多少&#xff1f; 思路&#xff1a;首先&#xff0c;答案不超过…