基于BRISK和改进RANSAC算法的图像拼接
图像拼接是图像处理的一个重要领域,指的是将两张或多张有重叠像素的图像经过一系列操作组成一张广角图像[
常用的特征点提取方法有SIFT (Scale Invariant Feature Transform)[
为了解决这些问题,本文提出了一种基于BRISK和改进RANSAC算法的方法来实现图像拼接。首先,针对特征点的检测速度问题,本文使用BRISK(Binary Robust Invariant Scalable Keypoints)[
2 实验原理
图像拼接的原理为找到两幅图像中相对应的位置,然后经过对待拼接图像的投影变换,将两幅图像置于同一图像坐标系中,从而完成图像拼接。本文中寻找对应位置使用到BRISK算法;投影变换关系需使用单应性矩阵表示。
2.1 特征检测算法BRISK
BRISK算法是由Stefan等人提出的,该方法和SURF算法、SIFT算法一样,具有尺度不变性和旋转不变性,但运行速度优于SURF算法、SIFT算法。该方法在运行速度上的优势,主要归结于采用基于FAST方法进行特征点检测和使用类似于BRIEF方法的二值位字符串描述符。
BRISK方法构建了由 n 个组层和 n 个组间层组成的尺度空间金字塔(n值一般为4),这样保证了BRISK方法的尺度不变性。若用表示图像的尺度,则各层的尺度公式可由
(1) |
式中: 表示第个组层, 为第个组间层, = {0,1,…,n-1}。
BRISK方法先使用FAST9-16[
BRISK方法的特征点描述符创建是以特征点为中心,围绕特征点有4个同心圆,每个同心圆的圆周上分布着数量不同的采样像素,从内而外分别为10,14,15,20,加上特征点一共是60个采样点,将这60个采样点两两进行组合,可得到1 770个组合。所对应的数学表示形式见
(2) |
式中,R2代表二元组,为60个采样点中的一个。在BRISK中,根据采样点间的距离长短,从A中取出集合S和L。S和L的定义见
(3) |
式中,的坐标为,的坐标为,, ,表示尺度。
集合L用于构建特征点的角度属性。设,则这两个采样像素的局部梯度可由
(4) |
式中:的坐标为,的坐标为,为采样像素高斯平滑后的灰度值,为采样像素高斯平滑后的灰度值,、为高斯平滑时使用的标准差。令
(5) |
(6) |
集合S用于构建特征点的描述符,BRISK算法的描述符是基于二值位字符串形成的,字符串的每一位b见
(7) |
式中,和为经过旋转以后的采样模板中集合S中的一对采样点,这样保证了旋转不变性。
2.2 单应性矩阵的求解
单应性矩阵 为一个3×3的矩阵[
(8) |
则有
(9) |
(10) |
(11) |
令
(12) |
则
(13) |
在单应性矩阵H中, 是尺度,且恒为1,故共有8个未知数。由上述式(
在计算单应性矩阵H时,如果已知的映射点对只有4对时,可通过上述公式直接求解出H的值;但当对应点超过4对时,可使用最小二乘法,使得反向投影错误率的值最小,来拟合求解单应性矩阵H,反向投影错误率的求解过程见
(14) |
式中:为对应的单应性矩阵H的9个值,为变换后的特征点坐标值,为横坐标,为纵坐标。为变换前的特征点坐标值,为横坐标,为纵坐标。
3 基于RANSAC算法的改进
3.1 传统的RANSAC算法
RANSAC算法的主要作用是剔除掉特征点错误匹配对,算法所对应的流程图如
图1 改进前后的RANSAC算法
Fig. 1 RANSAC algorithm before and after improvement
(1)从粗匹配结果中,随机的选取4对非线性特征点匹配对组成集合M;
(2)使用集合M计算出单应性矩阵H;
(3)使用H对粗匹配结果中的所有匹配对进行验证,统计内点个数(内点为小于预设阈值的匹配对);
(4)若当前内点数大于当前最优单应性矩阵的内点数,则对当前最优单应性矩阵进行更新,反之,不更新;
(5)根据当前最优单应性矩阵的内点数更新迭代总次数,若当前迭代次数小于总迭代次数,返回执行步骤(1),反之,则当前最优单应性矩阵为最终结果。
3.2 改进的RANSAC算法
根据上述的RANSAC算法可知,在粗匹配的结果中匹配到的内点数越多,则认为当前模型越好,所以可以通过循环增大集合M,使其可以拟合更多的匹配点对,从而使得最终结果可以计算到更多的匹配对,故将算法做以下改进, 算法所对应的流程图如
(1)从粗匹配结果中,随机的选取4对非线性特征点匹配对组成集合M;
(2)使用集合M计算出单应性矩阵H;
(3)使用H对粗匹配结果中的所有匹配对进行验证,将内点加入到集合M中;
(4)若集合M的点对数增加,则返回步骤(2)继续执行;若集合M保持不变,则执行步骤(5);
(5)若集合M的点对数大于当前最优单应性矩阵的点对数,则对当前最优单应性矩阵进行更新,反之,不更新;
(6)根据当前最优单应性矩阵的内点数更新迭代总次数,若当前迭代次数小于总迭代次数,返回执行步骤(1),反之,则当前最优单应性矩阵为最终结果。
3.3 RANSAC算法中阈值的选择
在RANSAC算法中,判断一个匹配对是否为内点(正确匹配对)的依据是:像素点(X,Y)经过单应性矩阵H投影变换得到的值与实际值的差应小于等于阈值。
当阈值取到足够大,接近无穷,那么此时任意选择的4个初值所求出来的结果都将使匹配对满足情况,均被置成内点,无法达到将错误匹配对剔除的目的,从而导致最终拼接效果不佳。
当阈值取到足够小,甚至是等于0时,则此时将会使绝大部分匹配对都不满足情况,满足情况的匹配对将会变得寥寥无几,并且将大部分正确匹配对剔除,使得最终内点结果占实际正确匹配对的比例太低,得到的内点将无法代表整体正确匹配对,使得结果的偶然性增大,导致拼接效果不佳。
当阈值取到合适值时,此时错误匹配对将会被剔除,正确匹配对被置成内点保留,且内点结果占实际正确匹配对的比例较高,可用得到的内点代表整体正确匹配对,使得最终效果更佳。
为了提高单应性矩阵的准确度,必须选择合适的阈值。由于在特征点检测BRISK算法中得到的特征点的像数值是近似值而非精确值,所以此时就必须允许误差的存在。虽然得到的像数值是近似值,但由BRISK算法可知,该近似值与精确值的差距在一个像素之内,故将阈值设置为1,且需将原内点判定方法由欧式距离改为面积判断,即将
(16) |
(17) |
其中: 为实际值与计算值的横坐标差, 为实际值与计算值的纵坐标差。
4 实验方案与分析
实验在Python3.7 和 Opencv3.4.5 下完成,硬件环境为:Windows10操作系统,主频 2.20 GHz 的 Core i7-8750H 处理器、 内存为 8 GB 的笔记本电脑。本文共设计了3组实验:实验一用于验证BRISK算法相对于SURF算法、SIFT算法以及ORB算法在特征点检测时间以及特征点匹配准确率上的优势;实验二用于验证本文改进的RANSAC算法相对于传统RANSAC算法以及PROSAC算法在特征点匹配对和平均反向投影误差上的优势;实验三用于验证本文所使用的算法相对于其他常用算法的整体执行时间优势。
4.1 实验数据
本文的实验数据来源包括两部分:自主拍摄和网上收集。实验数据共有18幅图像,分为9组,内容包括人物、楼宇、道路、自然风景等。
4.2 实验流程
首先读入一组图像,对图像使用BRISK算法进行特征点提取,对得到的特征点使用KNNmatch进行初始匹配,由于粗匹配的结果中依然含有错误匹配对,无法直接使用最小二乘法来计算单应性矩阵H,因此还需将匹配结果通过RANSAC算法进行错误匹配对剔除,再将精匹配结果使用最小二乘法求得单应性矩阵H,最后根据求得的矩阵H对图像 进行转换拼接融合。流程图如
图2 实验流程
Fig. 2 Experimental process
4.3 匹配精度评价指标
4.3.1 特征点的正确匹配对的数量
使用RANSAC算法进行特征点错误匹配对剔除时,不仅会剔除掉错误的匹配对,同时也会将部分正确的匹配对进行剔除,尤其是在阈值要求严格的情况下,更容易将正确的匹配对进行误剔除。即在计算单应性矩阵H时,使用到的正确匹配对是整体的一部分,这一部分正确匹配对的数量越大,越可以代表整体正确匹配对,所以相对保留的正确匹配对越多越好。所以在阈值要求严格的情况下,特征点的正确匹配对数量越多,得到的单应性矩阵H越准确。
4.4 实验结果分析
4.4.1 实验一
该实验的设计目的为验证BRISK算法相对于SURF算法、SIFT算法以及ORB算法的优势。实验结果如
图3 各算法提取特征点的时间对比
Fig. 3 Time comparison of feature points extracted by each algorithm
图4 各算法的特征点匹配准确率
Fig. 4 Matching accuracy of each keypoint detection algorithm
由
4.4.2 实验二
该实验的设计目的为验证本文改进的RANSAC算法相对于传统RANSAC算法以及PROSAC算法的优势,实验结果如
图5 特征点的正确匹配对数目的比较结果
Fig. 5 Comparison of the number of correct matching pairs of keypoints
组数 | 传统的RANSAC算法 | 改进后的RANSAC算法 | PROSAC算法 |
---|---|---|---|
1 | 0.604 | 0.527 | 0.566 |
2 | 0.476 | 0.428 | 0.458 |
3 | 0.530 | 0.493 | 0.511 |
4 | 0.333 | 0.333 | 0.333 |
5 | 0.491 | 0.459 | 0.493 |
6 | 0.553 | 0.510 | 0.625 |
7 | 0.584 | 0.536 | 1.023 |
8 | 0.534 | 0.526 | 0.565 |
9 | 0.725 | 0.590 | 0.940 |
如
图6 图像拼接比较
Fig. 6 Image mosaicing comparison
由
4.4.3 实验三
为了验证本文算法在时间方面的有效性,本实验将本文所用方法与较为常用的SIFT+RANSAC方法、SIFT+PROSAC方法、SURF+RANSAC方法、SURF+PROSAC方法进行图像拼接的整体时间比较,整体时间主要包括特征点检测时间、特征点粗匹配时间、精匹配时间以及图像投影变换时间。实验结果如
组数 | 本文 方法 | SIFT + RANSAC | SIFT + PROSAC | SURF + RANSAC | SURF + PROSAC |
---|---|---|---|---|---|
1 | 42.08 | 85.72 | 82.97 | 129.45 | 110.34 |
2 | 306.09 | 468.84 | 445.00 | 515.83 | 486.62 |
3 | 31.01 | 110.63 | 97.34 | 141.62 | 112.58 |
4 | 42.98 | 98.83 | 95.54 | 105.91 | 97.54 |
5 | 141.72 | 239.16 | 237.07 | 297.00 | 293.41 |
6 | 51.77 | 90.75 | 89.26 | 84.87 | 81.88 |
7 | 38.30 | 116.88 | 69.21 | 126.86 | 78.09 |
8 | 88.67 | 167.95 | 167.49 | 146.11 | 140.32 |
9 | 55.46 | 114.11 | 112.93 | 144.51 | 138.83 |
从
5 结论
针对图像拼接的特征点检测时间优化和最终匹配对优化问题,本文提出了一种图像拼接方法。该方法先使用BRISK算法进行特征点检测,有效缩短了特征点检测的运算时间;然后改进了RANSAC错误匹配对剔除方法,使得在相同的条件下,可以得到的内点数大于原RANSAC算法,从而提高图像拼接的准确度。实验结果表明,BRISK算法相对于SURF算法、SIFT算法以及ORB算法在特征点检测时间以及特征点匹配准确率上具有优势;本文改进的RANSAC算法使得内点个数增加,平均反向投影错误率相对于原算法减小了10%左右;本文提出的拼接方法的执行耗时约为常用的SIFT+RANSAC方法、SIFT+PROSAC方法、SURF+RANSAC方法、SURF+PROSAC方法的50%。本文提出的方法能够实时、准确地进行图像拼接。
本文提出的算法主要针对于两幅图像的拼接,对于多幅图像拼接问题还需要更多深入的研究,如多幅图像拼接的图像曝光补偿等问题。
- 我用了一个很复杂的图,帮你们解释下“23版最新北大核心目录有效期问题”。
- 重磅!CSSCI来源期刊(2023-2024版)最新期刊目录看点分析!全网首发!
- CSSCI官方早就公布了最新南核目录,有心的人已经拿到并且投入使用!附南核目录新增期刊!
- 北大核心期刊目录换届,我们应该熟知的10个知识点。
- 注意,最新期刊论文格式标准已发布,论文写作规则发生重大变化!文字版GB/T 7713.2—2022 学术论文编写规则
- 盘点那些评职称超管用的资源,1,3和5已经“绝种”了
- 职称话题| 为什么党校更认可省市级党报?是否有什么说据?还有哪些机构认可党报?
- 《农业经济》论文投稿解析,难度指数四颗星,附好发选题!
- 期刊知识:学位论文完成后是否可以拆分成期刊论文发表?
- 号外!出书的人注意啦:近期专著书号有空缺!!