第一部分 设计概述
图像拼接技术是计算机视觉与图像处理领域的一个研究重点,广泛应用于各个领域。它能够很好地实现图像的延伸和连续,保留多组图像的共有信息,去除杂冗,提高信息存储量,能够更加客观形象和有效地展现真实世界[1]。图像拼接技术通常在计算机软件上完成,这就意味着程序的编译和运行需要耗费大量时间。而当前集成电路发展迅猛,对数据的处理能力提高迅速,能更好的完成图像拼接工作。
图像拼接技术广泛应用于虚拟现实[2]、军用全景作战平台、遥感图像处理[3]、安防监控[4]、X 射线医疗影像[5]、全景路况[6]和汽车泊车辅助系统[7]等。由此可见,全景拼接技术应用广、市场大
现如今,各种摄影摄像产品已然成为日常生活中的必需品,传统的拍摄图片分辨率低且视野小,图像缺乏代入感,因此人们更加青睐超宽视角的全景图[8]。可见图像拼接技术具有广阔的工程应用前景,因此对于该技术的研究具有重要意义。
图像拼接技术主要由SIFT算法找到匹配点,RANSAC算法进行筛选和拼接。SIFT算法包含空间极值点检测、关键点定位、关键点主方向确定、关键点描述子生成和SIFT特征匹配五部分,其中极值点检测需要构建高斯金字塔,本设计构建了一组四层的简易金字塔。RASAC算法从所有匹配点中随机选取4组匹配点,求解单应性矩阵,由单应性矩阵计算所有匹配点距此的欧式距离;迭代多次,选出内点个数最多的解,此为单应性矩阵的最优解,用这个解过滤匹配点,减少误匹配。
最后将单应性矩阵系数和筛选后的匹配点通过以太网传至计算机,在MATLAB的GUI界面显示匹配连线及拼接图。
硬件加速关键在于速度的提升,性能指标主要有资源占比、吞吐量、匹配点数量、匹配时间、误匹配率等。
(1)通过硬件实现拼接系统,提高运行速度。
(2)简化设计,将描述子的梯度方向由64个减少到32个,将特征点领域的划分由正方形变为八边形,省略旋转过程。
(3)图像的选定由GUI界面完成,实现人机交互。
第二部分 系统组成及功能说明
设计在pl端分为以太网传输模块、SIFT算法和RASAC算法三大部分,pc端为GUI界面设计部分。其中,SIFT算法又分为空间极值点检测、关键点定位、关键点主方向确定、关键点描述子生成和SIFT特征匹配五个部分。
Figure 1 系统框图
1. ZYNQ7021
AC7021B(核心板型号,下同)核心板, ZYNQ 芯片是基于 XILINX 公司的 ZYNQ7000 系列的 XC7Z020-2CLG484I。 ZYNQ 芯片的 PS 系统集成了两个 ARM Cortex™-A9 处理器,AMBA®互连,内部存储器,外部存储器接口和外设。 ZYNQ 芯片的 FPGA 内部含有丰富的可编程逻辑单元, DSP 和内部 RAM。
Figure 2 芯片正面图
2. 以太网传输
Figure 3 千兆以太网
以太网芯片采用 Micrel 公司的 KSZ9031RNX 以太网 PHY 芯片为用户提供网络通信服务。项目使用的PL 端以太网PHY芯片是连接到BANK33和BANK34 的IO上。KSZ9031RNX芯片支持10/100/1000Mbps 网络传输速率,通过 RGMII 接口跟 Zynq7000 系统的 MAC 层进行数据通信;支持MDI/MDX 自适应,各种速度自适应, Master/Slave 自适应,支持 MDIO
总线进行 PHY 的寄存器管理。
3. SIFT算法
SIFT 算法是一种基于图像局部不变性特征的提取、描述以及匹配方法,其特征具有平移、旋转和尺度的不变性。SIFT算法在众多匹配算法中,综合性能上具有很好的表现。SIFT 算法首先根据目标图像建立尺度空间,并通过尺度空间搜寻极值点作为 SIFT 特征点。在特征点检测完毕之后,利用特征点对应尺度的高斯图像生成邻域梯度直方图,用以描述该特征点局部特性。最终,将得到的描述子与其他图像的描述子进行欧式距离匹配,生成描述子匹配对,得到几何映射关系。
Figure 4算法流程
a.尺度空间生成
对于图像而言,不同尺度得到的特征不同,而不同尺度的特征都有可能包含了图像的重要信息。利用计算机对图像进行多尺度处理的实质即是高斯滤波。已经证明[9],高斯滤波是唯一能得到尺度变换结果的方法,其标准差即为尺度空间的参数。即图像(, )与多尺度高斯核(, , )的卷积结果(, , )即为图像(, )的尺度空间。
构建高斯尺度空间的步骤为:1、模糊图像,分别使用标准差为,、2、3至的高斯滤波核与图像卷积。2、下采样,将原图像隔行、列采取像素点,再分别使用标准差为2 、2、22、23至2的高斯滤波核与图像卷积。3、以此类推,获取多组多层图像数据。
Figure 5高斯金字塔
b. 特征点检测
SIFT 特征点检测的基本思路是:在图像中的某个特定的区域内,通过检测该区域多尺度图像局部的极值,并将检测到的极值点经过筛选后作为特征点。
为了减少计算量,SIFT 算法采用了高斯差分进行特征检测,DOG 是高斯-拉普拉斯运算的近似,与LOG相比,DOG 省略了梯度计算,代之以差分运算[6]。DOG算法的实现是将高斯金字塔同组内邻近两幅图相减,过滤出高频信号。DOG尺度空间中的每层 DOG 都包含了尺度σ信息,因此在 DOG 中的特征检结果也与对应尺度相关。
Figure 6 DOG金字塔
图像的特征点需要DOG结果中的极值点。算法将每个像素点与其相邻像素点进行比较,比较方式如图四所示。参与比较的点分布在三层,共有 26个。同一平面内有 8 个点,除此之外还包括两个相邻尺度的对应点。因此每个极值点都是 3 个差分结果的极值点,包含 4 个不同尺度。
Figure 7极值点搜索
c. 特征点方向生成
经过以上步骤之后,就得到了具有尺度不变性、稳定的特征点坐标,之后再将其处理为对旋转不敏感的特征点。在实际计算中,极值点的梯度计算可以分为两步:
1). 在尺度空间中搜索,选取尺度与特征点尺度最接近的图像。
2). 计算该层图像中,特征点的以R为半径的圆形邻域内每个像素点的梯度模和梯度角(R为该层尺度的 4.5 倍)。
得到邻域内的梯度模和梯度角之后,SIFT 算法将梯度值按梯度角的大小分为8个方向组,每个方向组跨度为45°。统计每个方向组的模值之和,得到方向组模值分布直方图,将得到的模值分布直方图进行高斯加权运算,值最大的方向组即为特征点方向。
d. 特征点描述符生成
在得到特征点方向之后,SIFT 对每一个特征点生成特征向量,具体步骤:
1). 在特征点周围选直径为3××16大小的邻域,然后用上一步生成的主方向将邻域进行整体旋。旋转可以通过极坐标变换实现,若某点坐标为(, ),旋转后坐标为(’, ’)。
x’ = y cosα-xsinα
y’ = xsinα+ycosα
2). 在得到梯度模和梯度角的结果之后,进行高斯加权运算,高斯核标准差大小为0.5,高斯核半径与邻域半径相同。
3). 将邻域以特征点为中心,分为 16 个直径为3大小的小区域,统计每个小区域内的梯度模和梯度角并按梯度角分组。将每个方向组大小45°,对应将梯度角的0° − 360°等分为8个方向组。
这样SIFT 算法就得到一个128维向量的描述符。
e. 描述符匹配
描述符匹配是对两幅输入图像的特征点描述符进行匹配。使用穷举法对两幅图的描述符一一匹配。计算出欧式距离,记录最近距离和次近邻距离,若次近邻距离大于最近距离的2倍,则两者匹配成功。
4. RANSAC算法
RANSAC是在一组含有“外点”的数据中,不断迭代,最终正确估计出最优参数模型的算法。它在样本中随机选取四个点,由此求解单应性矩阵;多次迭代求解多个矩阵,从中选择最优解。计算欧氏距离筛选匹配点,再由矩阵旋转图像,进行图像融合。
Figure 8单应性矩阵
5.GUI界面
图形用户界面是指采用图形方式显示的计算机操作用户界面,是一种人与计算机通信的界面显示格式,允许用户使用鼠标等输入设备操纵屏幕上的图标或菜单选项,以选择命令、调用文件、启动程序或执行其它一些日常任务。
第三部分 完成情况及性能参数
本文先采用MATLAB进行仿真,再移植到FPGA上进行硬件加速,MATLAB中显示匹配点连线与拼接后的图像。
1. 尺度空间生成
由于时间资源有限,本文只生成一组四层的高斯金字塔,相减后形成一组三层的DOG金字塔。根据文献显示,使用标准差为1.6的高斯核最合适。所以本文选取R为7的高斯核。拆分成一维,分别对行、列进行滤波。
高斯核: [ 6,15,27,32,27,15,6]
[3,15,39,55,39,15,3]
[6,15,28,35,28,15,6]
[7,13,19,22,19,13,7]
得到四层过滤后的高斯图像:
Figure 8高斯图像
上图从上到下、从左到右依次是标准差为,、2、3的高斯核过滤得到的图像。
2. 检测特征点
高斯滤波图像两两相减得到DOG金字塔,共三层。
得到三层DOG图像:
Figure 9 DOG图像
选取尺度最近的高斯图像,与上下两层图像共26个相邻点比较,若其值最大,则为预特征点。因后续最次近邻匹配可以有效过滤不必要的特征点,所以这里取得的预特征点,就作为特征点进行后续运算。
项目取得特征点图一(左)共388个,图二(右)共374个。特征点的显示如下图所示。
Figure 10特征点
3. 特征点方向生成
特征点检测完成后,根据特征点位置选取领域,在领域内按方向计算梯度值之和,生成直方图。梯度值之和最大的方向,即为特征点主方向。依次计算所有特征点的主方向,然后在做极坐标旋转,实现旋转不变性。
Figure 11特征点主方向
4. 描述符生成
将旋转过后,16个子区域、8个方向的梯度值之和,做高斯加权处理,得到128位的描述符。
5. 描述符匹配
分别计算出两幅图的描述符之间的欧式距离,记录最小距离和次近邻距离,若次近邻距离大于最近距离的2倍,则两者匹配成功。因FPGA流水限制,本项目在最近邻和次近邻距离的数据中加入了图一特征点的位置信息,36位数据中前16位为位置信息,后20位为距离值。128维描述符因占用资源过多,削减到了64维,占512位储存。
Figure 12最小和次近邻距离
最后得到匹配图:
Figure 13匹配图
6. RANSAC筛选匹配点
通过以太网将筛选过的匹配点和单应性矩阵系数传到MATLAB中,由MATLAB显示匹配点对,并做图像拼接。
Figure 14 RANSAC匹配图
Figure 15 RANSAC拼接图
7. GUI界面设计
8. 吞吐量和资源占比
最差负余量WNS5.95,吞吐量246.9hps。使用LUTs32303,占比60.7%;FF37515,占比35.3%。100对特征点检测耗时不超过10ms。检测到的匹配点不少于20对时,匹配效果良好,少于20对时,有出错的可能。
第四部分 总结
此工程能较好的显示两幅图的匹配点连接和拼接,但仍有不足之处:处理图像较小,输入数据仅为256x256的数据,不足以显示硬件的加速作用。我们对ARM端的操作不够熟练,项目几乎都在PL端完成,而ZYNQ的优势就在于ARM的操作。同时,因为FPGA对浮点操作困难,所以工程中很多系数精度不够,导致最后拼接的图像没有完全融合,过渡也很生硬。
之后我们会在此工程的基础上加入PS端的操作,更好的计算大型图像的匹配与拼接。
第五部分 参考文献
[1]王瑞霞. 基于SIFT配准算法的全景图像拼接系统的FPGA实现[D].南京理工大学,2015.
[2] 张克敏. 基于虚拟现实的机器人仿真研究[D]. 重庆大学, 2012.
[3] 陈锦伟. 敏捷卫星遥感图像配准和拼接技术研究[D]. 浙江大学, 2014.
[4] 桂辉. 安防监控中多相机图像拼接相关问题的研究
[D]. 浙江工业大学, 2015.[5] 王 曼 , 李 涛 . 视 频 拼 接 系 统 与 我 院 手 术 示 教 系 统 的 结 合 应 用 .[J]. 中 国 医 疗 设 备 ,2018,33(11):168-171.
[6] 张宝龙, 李洪蕊, 李丹, 等. 一种针对车载全景系统的图像拼接算法的仿真[J]. 电子 与信息学报, 2015,37(05):1149-1153.
[7] 白瑞广. 全景视频系统若干关键技术研究[D]. 湘潭大学, 2014.
[8] 陶清. 实时全景视频拼接系统的FPGA设计研究[D].华侨大学,2019.
[5] Lindeberg T. Detecting salient blob-like image structures and their scales with a scale-space primal sketch: A method for focus-of-attention[J]. International Journal of Computer Vision, 1993, 11(3):283-318.