基于FPGA的全景相机系统的软件设计
来源:用户上传
作者:王玥 付强 姚江云
摘 要:本文主要讨论全景相机系统的实现算法。简单介绍如下,可以利用Matlab计算出摄像头的内部参数,利用双线性插值算法在(FPGA)上对摄像头采集的畸变图像进行校正,还可以用SIFT算法和BRIEF 算法来提取特征点和匹配特征点,利用最小二乘法计算变换矩阵。最后将所得参数与校正后的图像数据传送到电脑端整合出坐标变换后的图像,实现图像配准与融合。
关键词:全景相机系统 特征点 畸变图像配准 图像配准与融合
中图分类号:TP39 文献标识码:A 文章编号:1674-098X(2020)04(c)-0051-02
1 相机的标定与图像畸变校正
因为不同的摄像头之间存在镜头畸变系数不同这个固有的因素,并且摄像头的畸变系数要用标定获取,通过USB2.0传输每个摄像头采集到的图像数据到上位机,用Matlab 计算得到摄像头内部参数矩阵和镜头畸变系数矩阵,依次对每个摄像头进行畸变校正。缓存在片外存储器中的图像数据是畸变校正模块的输入数据,图像数据经过畸变校正之后通过并行的6路输出,使6个16位的图像数据在每个时钟周期同时输出,像素在图像中的位置信息和片上存储信息同时输入并用分时复用的方法保存到DDR中。双线性插值算法具有噪声小、消耗小等优点,运用此算法在FPGA上进行实时畸变校正并求出图像的变换矩阵,将求得的图像变换参数和畸变校正等图像数据传送到电脑端,进行图像融合和显示。全景相机具有多个不同的摄像头,而每个摄像头所处的位置也有所不同,当进行图像采集的时候,同一个物体依据摄像头拍摄的位置不同所得到的数据肯定不同。另外,只有相邻的摄像头采集的图像才会有重叠区,所以只要求得相邻的摄像头拍摄到的图像的变换矩阵,然后两幅图像的变换矩阵的乘积就是全景图像成像的关键。即利用相邻摄像头采集的相似图像计算变换矩阵。
2 图像特征点的检测与匹配
图像特征点的检测和匹配主要需要三个模块来实现,包括:特征点的提取模块和特征点的匹配模块以及特征点的生成模块。依据图像间灰度值及纹理等信息的相似程度进行图像配准,同一个图像的信息都在同一标系,要完成图像的拼接就要把各个摄像头拍到的图像变换到同一个标系。这样我们可以知道,要实现全景相机的功能,必须要图像配准。而且图像配准又是最消耗时间的过程,而这个过程就是本设计所要研究的重点内容之一。本设计是用SIFT算法来实现图像的特征点配准,通过不同图像间匹配的特征点对来获取图像间的变换矩阵。SIFT 算法由以下幾部分构成:高斯差分尺度空间、检测特征点、计算特征点梯度、特征描述子的生成等。高斯差分尺度空间模块的构建,要实行高斯卷积、图像降采样、图像相减运算;特征点的模块检测,就是找出差分尺度空间里面的极值,并且要利用剔除低对比度和边缘点的方法,来比较准确的获取特征点的坐标和尺度;计算特征点的梯度,就是要计算出特征点附近的梯度幅值和幅角,然后利用梯度直方图计算出特征点的梯度,最后就可以得到特征描述子了。高斯差分尺度空间模块从DDR中获得各个摄像头采集到的图像数据,并且将处理过的数据传送至特征点的检测模块中去,其用意就是获得特征点的位置数据,然后把得到的信息进行存储;而特征点的描述模块获得这些信息和特征点周围的数据即可以生成特征描述向量,之后把这个向量在存储模块的DDR中进行储存;特征点匹配模块从DDR中读取特征点描述向量,进行特征点匹配,再将匹配得出的特征点对存入存储模块中。SIFT利用高斯差分尺度空间来检测图像的坐标,即可以提取到尺度不变的特征点信息。BRIEF 算法是利用二进制的字符串来求出特征点的描述数据的,此计算方法求出的特征描述子与其他特征描述子相比提取速度快,节约内存,匹配快。不仅具有旋转不变性而且便于利用 FPGA 实现。特征提取和特征描述选用SIFT和BRIEF实现,最终目的是实现特征匹配。以查找表为基础的 BRIEF特征点描述模块,由四个部分组成:分别是图像块缓存、特征点缓存、查找表和二进制字符串。图像块缓存模块将高斯尺度空间中的图片缓存在片上双端口RAM中,二进制字符串模块用来计算图像块缓存中相关点对的地址,并从缓存中获取其灰度值。特征点缓存模块将特征点信息检测模块中的输出结果缓存在FIFO中,并通过高斯分布取得点对,通过Matlab软件生成满足条件的点对信息,将其存在片上ROM中形成查找表,进行点对比较,构成二进制字符串,即特征描述。图像特征匹配实际上就是在匹配相近的二进制字符串,方法是利用汉明距离,即将等长的两个字符按位相减之后获得的结果不是零的数字总数。取得图像的特征点后,再使用BRIEF算法求出特征描述符,然后就可以使用特征描述符之间的汉明距离来求出匹配点对。
3 图像变换矩阵求解
为了得到最优匹配点对,我们要对特征点进行提纯,之后再利用拟合匹配点对来求出变换矩阵。各个摄像头由于角度位置的不同,拍出的图像之间会存在倾角,本设计利用投影变化的方法来求出图像的变换矩阵,投影矩阵参数的解可以采用最小二乘法取得。在FPGA上用RANSAC算法剔除离群点,对特征点对进行提纯,并利用最小二乘法在FPGA上求得变换矩阵,运用FPGA上的丰富DSP模块进行求解。这部分主要工作为设定RANSAC算法参数,包括:迭代次数、最小粗匹配点数、确定内点的阈值、内点与总匹配点对的比例阈值;首先从特征点对里面随机选出四个建立方程组求解,得到投影矩阵;接下来求出其余的特征点对经过投影矩阵得到的对应点,再求出对应点和所有的候选特征点之间的距离,并且需要根据内点阈值判断是不是属于一致集;最后再计算出一致集里面的元素的个数占比总匹配点对,以及要迭代的次数,如果这两个数据中的任何一个大于或者等于之前设置好的阈值,那么就可以说明当前的一致集是最优的,否则跳出继续迭代,直至选出最优一致集。在这个过程中首先要得到n个估计模型,每个模型由任意获取的4个匹配点对构成;其次在所有匹配点对集中,陆续选取一个点对在多个不同的模型中进行检验,为了提高正确率,选取点对的时候按照汉明距离从小到大的顺序选取,因为汉明距离越小匹配正确率越高;然后求得这个点对制定的模型的总数n,如果n大于之前设定好的阈值,那么此点对就是内点;最后再计算出内点的数目,直到总数大于设定的阈值的时候就结束计算,把点对进行存储。矩阵参数的求解方法是利用提纯之后得到的点对进行计算。在FPGA中实现逻辑控制模块,通过FPGA中自带的DSP 模块实现计算模块。最后将变换矩阵参数和预处理后的图像数据传送到电脑上,在PC端经过图像坐标变换计算、图像剪切得到一副匹配后的全景图像。
4 结语
本文通过在FPGA上对全景相机的图像畸变校正、图像特征点提取、图像特征点描述符生成、图像特征点匹配和图像间变换矩阵求出来,大大提高了全景相机中图像配准的速度。实现了不失真的全景图像的实时显示。
参考文献
[1] 李佳,盛业华,张卡,等.基于未标定普通相机的全景图像拼接方法[J].系统仿真学报,2013,25(9):2070-2074.
[2] 崔汉国,陈军,王大宇.鱼眼图像校正及拼接的研究与实现[J].计算机工程,2007(10):190-192.
[3] 朱铮涛,黎绍发.镜头畸变及其校正技术[J].光学技术, 2005,31(1):136-138.
转载注明来源:https://www.xzbu.com/1/view-15255249.htm