本发明属于计算机视觉和图像处理技术领域,特别是一种基于多路摄像头的实时全景成像系统及方法。
背景技术
目前拼接技术主要应用在交通领域的实时监控区域,大型演唱会或会议现场的实时直播,车载辅助驾驶的设备以及虚拟现实中的全景漫游等。目前,对于图像的拼接已经有相对成熟的算法完成,但同时存在着自动化程度不够高,拼接速度较慢,无法满足实时性的要求。在全景成像系统方面,目前,主要有两种实现办法。其一,是利用鱼眼镜头的视角大的特性对周围场景采集,这种方法存在两个问题,首先,鱼眼镜头会产生较大的畸变,增大了后续的处理难度,其次,鱼眼镜头的成本高,推广难度大。其二,是利用fpga+cpu的架构,利用多个摄像头同时采集,再进行拼接,从而形成全景图,这种方法,在开发时难度较大,实时性一般。
技术实现要素:
本发明所解决的技术问题在于提供一种基于多路摄像头的实时全景成像系统及方法,以较低成本得到大视角场景的实时全景视频。
实现本发明目的的技术解决方案为:
一种基于多路摄像头的实时全景成像系统,包括多个摄像头、树莓派、路由器、计算机;
所述多个摄像头用以采集周围区域场景;所述树莓派与多个摄像头相连,用以驱动摄像头模块采集图像,将采集到的多路图像视频流以mjpg编码格式传输到局域网内;所述路由器用以组建局域网,进行数据传输,用以将mjpg编码格式视频传输给计算机;
所述计算机通过程序设有拼接模块,所述拼接模块通过拼接算法,将得到的多路视频流在同一时间各提取一帧图像进行两两拼接,相邻的两幅图像配对成一组得到全景图像。
一种基于多路摄像头的实时全景成像系统的成像方法,包括以下步骤:
步骤1、通过多路摄像头,对场景进行采集;
步骤2、对图像特征点进行提取;
利用sift算法对两幅图像进行特征点的提取并形成描述向量;
步骤3、对图像特征点进行匹配:
先利用bruteforce搜索算法,遍历搜索出满足最近邻距离比率的匹配点;
最近邻距离比率nndr为:
其中,d1和d2是最近邻和次近邻距离,da是目标描述向量,db和dc是da的距离最近的两个目标描述向量;
再通过ransac算法对满足比率验证的匹配点进行进一步的筛选,找到满足检验的匹配点;
步骤4、将右侧图像的像素坐标乘以单应变换矩阵,将其映射到相邻的左侧图像上;
步骤5、对重叠区域通过加权平均融合法进行图像融合,改善拼接后的图像。
本发明与现有技术相比,其显著优点:
(1)本方案中,在视频的传输中利用网线传输、拼接算法中的算法计算量较小,所需的拼接时间较短,在实例1中,四路摄像头的全景成像系统中,最后的全景视频可以达到12帧每秒,提高了实时性。
(2)本方案中,在拼接算法中,加入了图像融合的步骤,可以消除两幅图之间的拼接缝,提高了成像的效果。
(3)本方案中,通过建立局域网进行数据传输,可以通过无线传输简化系统,同时,可以使得完成拼接模块的计算机不用一定安放在采集的场景附近。
下面结合附图对本发明作进一步详细描述。
附图说明
图1为一种基于多路摄像头的实时全景成像系统框图。
图2为ransac算法流程图。
图3为图像拼接示意图。
图4为本发明方法流程图。
图5(a-d)分别为四路摄像头同一时间采集的图像。
图6为生成的全景图。
具体实施方式
为了说明本发明的技术方案及技术目的,下面结合附图及具体实施例对本发明做进一步的介绍。
结合图1,本发明的一种基于多路摄像头的实时全景成像系统,包括多个摄像头、树莓派、路由器、计算机;
所述多个摄像头用以采集周围区域场景;所述树莓派与多个摄像头相连,用以驱动摄像头进行采集图像,将采集到的多路图像视频流以mjpg编码格式传输到局域网内;所述路由器用以组建局域网,进行数据传输,用以将mjpg编码格式视频传输给计算机;
所述计算机通过程序设有拼接模块,所述拼接模块通过拼接算法,将得到的多路视频流在同一时间各提取一帧图像进行两两拼接,相邻的两幅图像配对成一组得到全景图像。
进一步的,所述多路摄像头的相邻两个摄像头采集图像的区域有1/3重叠区域,以完成拼接工作,重叠区域过小时,则无法得到足够多的匹配点,拼接效果差,重叠区域过大时,得到的全景图的视角较小,比较浪费。
进一步的,所述多路摄像头采用多棱柱进行固定,每个摄像头安装在多棱柱的侧面上,使得各摄像头的光心位于同一点,并且视角均匀。
所述计算机通过ssh方式登陆树莓派,通过linux指令控制树莓派。
所述拼接模块通过ip地址获取传输到局域网内的多路视频流,对多路多路视频流在同一时间各提取一帧图像进行两两拼接;
所述拼接模块包括特征点提取单元、特征点匹配单元、图像映射单元、图像融合单元;
所述特征点提取单元用以通过sift算法对两幅图像进行特征点的提取并形成描述向量;
所述特征点匹配单元用以先通过bruteforce搜索算法,遍历搜索出满足最近邻距离比率的匹配点;
最近邻距离比率nndr为:
其中,d1和d2是最近邻和次近邻距离,da是目标描述向量,db和dc是da的距离最近的两个目标描述向量。当nndr足够小时(满足设定值),认为是正确匹配。
再通过ransac(随机抽样一致性检验)算法对满足比率验证匹配点进行进一步的筛选,找到满足检验的匹配点;具体过程如下:
首先,在满足“比率验证”的匹配点中,选择4对样点,根据样点的位置坐标计算出变换矩阵;
其次,将没被选择的匹配点进行矩阵变化,可以计算出变化后得到的点与对应匹配点的欧式距离,保留小于阈值的“内点”,去除大于阈值的“外点”;
最后,如果“内点”数大于设定值,则保留“内点”,该“内点”就是满足检验的匹配点。否则,重新选择4对样点,并重新计算,直至找到满足检验的匹配点。
所述图像映射单元用以将右侧图像的像素坐标乘以单应变换矩阵,将其映射到相邻的左侧图像上;
即
其中,h是3×3的单应变换矩阵;
x为右侧图像的横坐标,y为右侧图像的纵坐标,x′为右侧图像映射到左侧图像后的横坐标,y′为右侧图像映射到左侧图像后的纵坐标,h00~h21为通过四对匹配点,解出的单应变换矩阵的8个内参数值;
所述图像融合单元用以对重叠区域通过加权平均融合法进行图像融合,改善拼接后的图像;具体过程如下:
设需要融合的两幅图像分别为i1,i2,融合图像if由下式计算可得到:if(x,y)=ω1i1(x,y)+ω2i2(x,y),式中,i1(x,y)是坐标为(x,y)的像素点在左图中对应点的像素值,i2(x,y)是坐标为(x,y)的像素点在右图中对应点的像素值,if(x,y)是坐标为(x,y)的像素点融合后的像素值,ω1,ω2分别为图像i1,i2对应的权值函数,且ω1+ω2=1。这里选择计算量最小的线性权值计算,设图像过渡区域的宽度为width,d是该像素点到过渡区域左侧边界的距离,则左侧和右侧图像的权值函数为:ω1=d/width,ω2=1-ω1。
通过上述特征点提取、特征点匹配、图像映射、图像融合等处理,就可以等到全景图。
基于上述的多路摄像头的实时全景成像系统,本发明还提出了一种基于多路摄像头的实时全景成像方法,包括以下步骤:
步骤1、通过多路摄像头,对场景进行采集;
步骤2、对图像特征点进行提取;
利用sift算法对两幅图像进行特征点的提取并形成描述向量;
步骤3、对图像特征点进行匹配:
先利用bruteforce搜索算法,遍历搜索出满足比率验证的匹配点。即满足最近邻距离比率的匹配点;
最近邻距离比率nndr为:
其中,d1和d2是最近邻和次近邻距离,da是目标描述向量,db和dc是da的距离最近的两个目标描述向量。当nndr足够小时(满足设定值),认为是正确匹配。
再通过ransac(随机抽样一致性检验)算法对满足比率验证匹配点进行进一步的筛选,找到满足检验的匹配点;具体包括以下步骤:
3.1、在满足“比率验证”的匹配点中,选择4对样点,根据样点的位置坐标计算出变换矩阵;
3.2、将没被选择的匹配点进行矩阵变化,计算出变化后得到的点与对应匹配点的欧式距离,保留小于阈值的“内点”,去除大于阈值的“外点”;
3.3、如果“内点”数大于设定值,则保留“内点”,该“内点”就是满足检验的匹配点。否则,重新选择4对样点,并重新计算,直至找到满足检验的匹配点。
步骤4、将右侧图像的像素坐标乘以单应变换矩阵,将其映射到相邻的左侧图像上;
在满足检验的匹配点中选择4组匹配点,计算出单应变换矩阵h,将右边的图像的像素坐标乘以单应变换矩阵将其映射到左边的图像上,即
其中,h是3×3的单应变换矩阵;
x为右侧图像的横坐标,y为右侧图像的纵坐标,x′为右侧图像映射到左侧图像后的横坐标,y′为右侧图像映射到左侧图像后的纵坐标,h00~h21为通过四对匹配点,解出的单应变换矩阵的8个内参数值;
步骤5、对重叠区域通过加权平均融合法进行图像融合,改善拼接后的图像:
设需要融合的两幅图像分别为i1,i2,融合图像if由下式计算可得到:if(x,y)=ω1i1(x,y)+ω2i2(x,y),式中,i1(x,y)是坐标为(x,y)的像素点在左图中对应点的像素值,i2(x,y)是坐标为(x,y)的像素点在右图中对应点的像素值,if(x,y)是坐标为(x,y)的像素点融合后的像素值,ω1,ω2分别为图像i1,i2对应的权值函数,且ω1+ω2=1。这里选择计算量最小的线性权值计算,设图像过渡区域的宽度为width,d是该像素点到过渡区域左侧边界的距离,则左侧和右侧图像的权值函数为:ω1=d/width,ω2=1-ω1。
通过上述特征点提取、特征点匹配、图像映射、图像融合等处理步骤,就可以等到全景图。
实施例1
一种基于四路摄像头的实时全景成像系统,搭建基于四路摄像头的实时全景成像系统。首先,将四路摄像头模块固定在正十二棱柱的边缘,对场景进行采集。其次,通过计算机和路由器设置局域网,并将计算机和树莓派连接上设置好的局域网,登录树莓派,在linux环境下,对树莓派进行操作,驱动摄像头模块,并将采集的视频流传入到局域网内。在连接上局域网的计算机上获取四路视频流,获取的四路视频流截图如图5(a-d)所示,然后进行拼接,最后形成全景视频。首先,将通过ip地址获取传输到局域网内的四路视频流。对四路视频流的同一时间分别提取四帧图像,记为img1,img2,img3,img4。将这四帧图像相邻的两幅图像配对成一组,即img1和img2,img2和img3,img3和img4为一组进行拼接。首先,通过shift算法提取体征,并形成描述子,之后的特征匹配主要通过“比率验证”和ransac算法(随机抽样一致性检验)得到匹配的特征点,之后计算得到单应变换矩阵,并通过单应变换矩阵,使图像进行扭曲,将右侧的图像映射到左侧上。最后,对过渡区域进行图像融合,使用线性加权平均融合算法,消除拼接缝,改善拼接效果。得到的全景视频的截图如图6所示。