主要记录图像特征及在opencv中的使用方法
特征点
1 Harris角点
1.1 目标
- 什么是特征,有什么重要性
- 使用cv::cornerHarris基于Harris-Stephens算法探测角点
1.2 理论
- 计算机视觉中,通常需要找到同一环境下两幅不同图像的匹配点。这样才能提取到他们的信息。
- 说到匹配点是,一般是指场景中容易辨识的典型,称为特征。
- 特征需要具备的特性:具有唯一性
1.3 图像中常见的特征
例如:
- 边
- 拐点(兴趣点)
- 斑点(ROI)
1.4 为什么特征点如此重要
是两条边的角点,表示两条边的方向发生了变化,图像梯度发生较大变化,可以进行识别。
1.5 算法原理
- 因为角点代表图像灰度梯度发生了变化,所有可以查找变化来检测角点。
1.6 关键公式(后续整理)
2 Shi-Tomasi角点
2.1 目标
- 使用cv::goodFeaturesToTrack基于Shi-Tomasi算法检测角点
2.2 原理
对Harris角点就行了小的修改,相比Harris算法有更好的效果,在Harris算法中最终的评分函数是
,而Shi-Tomasi改为了
3 特征探测
3.1 目标
- 使用cv:FeatureDetector 接口查找兴趣点
使用cv::xfeatures2d::SURF和cv::xfeatures2d::SURF::derect 实现探测
使用cv::drawKeypoints 绘制探测点
3.2 SIFT算法
尺度不变特征转换(Scale-invatiant feature transform, SIFT)使用用来探测影像中局部特征,在空间尺度中寻找极值点,提取位置、尺度、旋转不变量的算法,该算法有专利限制。
3.2.1 主要步骤
- 尺度空间极值检测
- 关键点定位
- 方向确定
- 关键点描述
3.2.2 详细过程(待补充)
3.3 SURF算法
4 使用特征进行匹配
4.1 特征描述
4.1.1 目的
使用cv::DescriptorExtractor 进行特征匹配
使用cv::drawMatches 绘制匹配结果
4.2 使用FLANN进行匹配
4.2.1 目的
使用cv::FlannBasedMatcher 实现快速有效的匹配(多维空间的匹配和搜索)
4.2.2 理论
传统的特征描述器通常使用欧式距离(即L2距离)进行描比较和匹配。由于SIFT及SURF使用了直方图对领域空间的方向梯度进行描述,所有欧式距离被替换为了基于直方图的指标(Earth Mover's, EMD )
二进制描述器使用Hamming距离来匹配:
网友评论