点特征提取及影像相关系数法匹配
一、ReadMe
1. 实习任务
2. 实验数据
3. 编程环境
4. 文件组织结构
二、原理及算法
1. 点特征提取
1.1Moravec算法
1.2Forstner算法
2. 相关系数法匹配
三、编程思路及流程图
1. 点特征提取
1.1Moravec算法
1.2Forstner算法
1.3点特征提取主程序
2. 相关系数法匹配
四、试验结果及分析
1. 点特征提取
1.1结果分析
1.2阈值分析
1.3随机/均匀提取实施
2. 相关系数法匹配
2.1特征点随机分布
2.2特征点均匀分布
!
一、ReadMe
1.实习任务
本次实习的任务主要包含两大模块:点特征提取、相关系数法匹配。
关键点特征提取:通过Moravec或Forstner算法来实现影像中的关键点检测,并将这些关键点进行可视化呈现。同时深入探讨不同兴趣阈值设置对结果的影响,并分别考察不同抑制窗口作用下的表现情况;进一步分析随机抽取与均匀抽取方法的具体实现过程。
基于相关系数法的影像配准:采用相关系数匹配算法对两张影像实施配准操作,在获得同名点的基础上完成可视化展示。同时进一步探讨配准窗口大小与相关系数阈值设置对其配准效果的影响。
2.实验数据
本次实习当中所用到的数据均存放于data文件夹中。包含三张图片:
·panLeft.bmp:灰度影像,942x1023
·panRight.bmp:灰度影像,887x805
·chess.bmp:彩色影像,467x638,主要用于检测点特征提取算法的效果
3.编程环境
本次实习当中编程环境如下:
·编程语言:Python
·环境:Python 3.9.7
·第三方库:属于外部库的是OpenCV、NumPy和Math模块(其余如Moravec算法、Forstner算法及匹配算法等均为本人原创)
4.文件组织结构
·点特征提取及相关系数匹配:项目总文件夹
·data:实验数据文件夹
·PointFeatureExtraction:点特征提取文件夹
·Moravec(py):Moravec算法
·Forstner(py):Forstner算法
·main(py):点特征提取主程序
·CorrelationCoefficientMatching:相关系数匹配文件夹
·Moravec(py):匹配算法中所用到的Moravec特征提取算法
·main(py):相关系数法匹配的主程序
·Result:实验结果文件夹
·PointFeatureExtraction:点特征提取结果文件夹
·Moravec:Moravec算法结果文件夹
·chess:棋盘数据结果文件夹
·tenniscourt:网球场数据结果文件夹
·Forstner:Forstner算法结果文件夹
·chess:棋盘数据结果文件夹
·tenniscourt:网球场数据结果文件夹
·CorrelationCoefficientMatching:相关系数匹配结果文件夹
·实验报告(docx):实验报告
·ReadMe(txt):项目概述
·illustration:流程图文件夹
二、原理及算法
******1.******点特征提取
该方法被称为从影像中提取感兴趣或具实用价值特定位置的过程;其中所指的是包括明显位置以及具有特定属性的位置(如基于亮度变化的位置);该方法所采用的运算工具被称为兴趣运算器或有利运算器;三种常用算法包括Moravec运算器、Forstner运算器和Harris运算器等;具体细节将在下文中详细阐述
1.1Moravec算法
(1)概述
(2)算法步骤 :
以像素(c, r)为中心选取W×W大小的空间邻域,在该邻域内分别沿着垂直方向、水平方向以及两条对角线方向计算各相邻像素之间的灰度差平方之和,并取这四个方向中的最小总和作为该像元(c, r)处的兴趣值IV

2>确定候选区域:设定基于经验的阈值标准后,在兴趣值高于该标准的所有单元格中筛选出具备代表性的特征单元格(应确保所选的阈值能够包含必要的特征单元格而不引入过多非特征单元格)
3>非极大值抑制:在特定的抑制区域内,在候选区域中选择具有最高兴趣值的特征点,并移除其余候选点。
(3)算法特点:
1>简单快速
2>对强边缘比较敏感,这是由于响应值是自相关的最小值而不是差值
3>不是旋转不变的,当图像发生旋转时,检测出的特征点具有较低的重复率
4>对噪声也比较敏感,可以考虑用比较平滑的滤波来消除噪声
1.2Forstner算法
(1)概述
(2)算法步骤:
1>计算个像素的Robert’s梯度

2>计算IxI窗口中的灰度协方差矩阵

3>计算兴趣值q、w

4>确定候选点:当q>Tq同时w>Tw时,该像元为候选点

5>非极大值抑制:在一个窗口内,选取权值w最大的候选点作为特征点
(3)算法特点:
1>精度高
2>计算量大
2.相关系数法匹配
(1)概述: 基于相关系数来判断搜寻两张影像上的同名点
(2)算法步骤:
1>读取左右影像
2>定位目标关键点的位置:通过Moravec或Forstner等运算符从左图中提取特征关键点,并将这些特征关键点定位为需要关注的目标(详细说明请参考上文)
3>确定右影像的搜索区域:借助PS等软件先估算左右影像的大致视差距离;随后依据选定的搜索窗口大小来确定具体范围(建议避免选择过小的窗口以免遗漏匹配点)
对每个窗口进行计算并存储:对每个窗口内的左影像与右影像的灰度值进行相关性计算,并存储其结果值。公式如下:

计算给定搜索窗口内的相关系数;若该最大值高于设定的相关性阈值,则该对应的最大相似度的像点即为该目标点在右影像中的同名点
三、编程思路及流程图
******************1.******点特征提取
1.1Moravec算法
(1)流程图

(2)编程思路
整体架构基于:开发moravec类,并将其包括了getInterestValue、getCondidatePoint、getFeaturePoint以及execute等方法的功能模块进行整合设计以完成特征点提取的过程
*代码讲解见完整报告
1.2Forstner算法
(1)流程图

(2)编程思路
该编程架构主要涉及实现Forstner类,在其中包含有计算原始关键点函数、计算灰度协方差矩阵过程以及确定Q和W参数步骤的基础上,通过一系列步骤完成特征点的提取过程。
*代码讲解见完整报告
1.3点特征提取主程序
本程序主要是实现用于提取图像关键点的算法核心模块,在具体操作中完成以下功能:首先对输入图像进行数据采集;其次根据需求条件筛选合适的算法;接着完成关键点位置的精确标记;最后将计算结果以标准格式输出存储。
2.相关系数法匹配
(1)流程图

(2)编程思路
该系统采用相关系数匹配方法实现了两个核心模块的功能:其中第一个模块主要由基于Moravec类的点特征提取算法负责核心计算工作;而这一功能则与另一系列辅助操作(包括图片读取、特征匹配以及结果输出管理等功能)共同整合并存放在了main.py文件内
*代码讲解见完整报告
四、试验结果及分析
1.点特征提取
1.1结果分析
在点特征提取过程中,我采用了棋盘.bmp图像和panLeft.bmp图像进行了实验分析,并获得了具体结果
(1)Moravec算法
1>chess图像结果:
经过试验,最终结果参数如下:
·阈值:6000
·兴趣窗口大小:5x5
·抑制窗口大小:5x5
从结果图可以看出,在实现大部分关键点检测的同时仍存在少数关键点未能被检测到的情况出现。值得注意的是这些未被检测到的关键点大多位于图像边缘区域。在运行速度方面该算法运行速度很快这与其较低的计算复杂度有关总体而言在小计算量的前提下该算法比较有效地完成了特征点的检测任务
本项目存储了Moravec算法运行过程中所涉及的兴趣图、候选点图以及特征点图等数据信息,并且这些图像均位于Result->PointFeatureExtraction->Moravec文件夹内可供访问。

2>panLeft图像结果
经过试验,最终结果参数如下:
·阈值:1200
·兴趣窗口大小:5x5
·抑制窗口大小:5x5
通过结果图可以看出Moravec算法成功识别了网球场上的参与者及其关键角点位置。在场边的两棵大树旁可见多个特征点标记这一点很可能是由于该区域灰度变化较为明显所致。

(2)Forstner算法
1>chess图像结果
经过试验,最终结果参数如下:
·兴趣窗口大小:5x5
·抑制窗口大小:7x7
·初选阈值:20
·q阈值:0.5
·f、c:0.5、5
通过观察结果图可以看出,在完成对所有特征点的提取过程后,在效果上优于后者(即Moravec算法)。这是因为其基于灰度协方差矩阵的计算量显著更大,在考虑信息方面更为充分;然而这导致了该算法在运行速度方面相对较低。

2>panLeft图像结果
经过试验,最终结果参数如下:
·兴趣窗口大小:5x5
·抑制窗口大小:7x7
·初选阈值:20
·q阈值:0.5
·f、c:0.5、5
从实验结果图中可以看出,在采用Forstner算法进行特征点提取时所获得的数量相比Moravec算法要少一些。通过进一步分析发现其推测其主要原因在于:针对灰度变化较为细致的图像而言,在初始差分过程中可能会剔除一部分不那么显著的特征点。

1.2阈值分析
在点特征提取过程中,阈值会对特征点数量产生影响.进行了多组实验及其具体结果如表所示.
基于Moravec算法,在兴趣值IV的基础上进行统计分析能够得出一个较合理的阈值范围,在1000附近。随后安排了多组不同大小的实验参数,并获得了具体的特征点数目数据。通过对实验结果图像的深入分析发现,在T=1200的情况下表现最为理想:当设定过高时会导致大量关键点无法被准确提取;而若设定过低则会引入许多非关键点干扰。
| 阈值T | 特征点数目 |
|---|---|
| 1000 | 306 |
| 1100 | 253 |
| 1200 | 215 |
| 1400 | 152 |
1.3随机/均匀提取实施
该系统有两种识别方法:一种是基于随机抽取的技术,在整个图像中采用统一的标准进行筛选;只要达到设定条件就被选作特征点(例如该结果图即为此方法的应用)。然而这种方法可能会导致某些区域出现过多的特征点(例如树叶部位就会有大量被选中的情况),同时也会有某些区域完全没有被选中。
就而言之,在第二种方法中即为一种均匀提取法。具体而言,在每个区域中采用单一的阈值设定即可实现该方法的核心思想——使特征点尽可能均匀地分布于各区域中。但需要注意的是这种做法可能会引入非特征点干扰的情况出现
具体实施方法为:通过将阈值降至最低(如设T=0),扩大抑制区域的范围来进行随机采样操作。当将阈值降至最低时,在整个图像中几乎所有点都可被选为候选点;而随着抑制区域范围的扩大,在每个抑制区域内只能识别出拥有最大兴趣值的那个特征点即可实现均匀采样效果。操作流程如上图所示

******2.******相关系数法匹配
2.1特征点随机分布
下面是随机目标点的匹配效果图,所用参数如下所示:
·Moravec兴趣阈值:1000
·Moravec兴趣窗口:5x5
·Moravec抑制窗口:5x5
·相关系数匹配计算窗口:7x7
·相关系数匹配搜索区域:21x21
·相关系数阈值:0.85
由计算结果可知,左右视差约为-175.94px,上下视差约为-6.19px。


2.2特征点均匀分布
下面是均匀目标点的匹配效果图,所用参数如下所示:
·Moravec兴趣阈值:0
·Moravec兴趣窗口:5x5
·Moravec抑制窗口:100x100
·相关系数匹配计算窗口:7x7
·相关系数匹配搜索区域:21x21
·相关系数阈值:0.85
由计算结果可知,左右视差约为-176.46px,上下视差约为-6.46px。


