OpenCV系列学习之(六)

简介: OpenCV系列学习之(六)

opencv中knnMatch是一种蛮力匹配,基本原理是将待匹配图片的sift等特征与目标图片中的全部sift特征一对n的全量便利,找出相似度最高的前k个。当待匹配的图片增多时,需要的计算量太大,所以考虑是否可以通过降维的方式减少计算过程中的时间花费。

全景图像拼接需要用到特征匹配

一、特征匹配

1、brute—force,蛮力匹配

c40dfd8e5a4b1d8790fb3e40a69b75ba.jpg

2、1对1匹配

把匹配的图像跟原图用线连起来

6cabe0f9f9ada1daa1632603354e307e.jpg

如下图

2441257cdf70260c32f8354a4c8daa63.jpg

3、k对最佳匹配

此处仅对两幅图片的特征做了比较,假设sift特征数分别为sift_nb_1sift_nb_1,sift_nb_2sift_nb_2,则这一次匹配匹配的计算量>sift_nb_1∗sift_nb_2∗128∗n>sift_nb_1∗sift_nb_2∗128∗n, 对于size为(200x100)左右的图片,其特征数已经可以超过100。假如图片更大一下,带检索的目标图片数量增加时,计算量将变得更加庞大。故此处采用SVD的方式实现PCA降维sift特征,从而加快计算。

算法实现

0216a413fc5c2487eabebda9cff69240.jpg

结果展示

03a1e55793c45f340b25894369b67e65.jpg

如上图所示,当特征点不匹配时,需要减小误差,因此用最小二乘法拟合即RANSAC,能使结果更准确。如下:

631f2d6196791788584b5aaf043c66f8.jpg

ec04d02e7fa599867d5558e9464199ed.jpg

abf73c3f3a2d8893a3172bae56a287b2.jpg

上图蓝色表示容忍范围,红色表示干扰的,当选取即爹迭代的次数越多,则拟合的曲线越好。

当要进行图像变换时,即A X H =A ,变换矩阵的求法如下,需要用对应至少四对特征点即八个方程来解矩阵方程H。

5a9a55a3dae9fe345c3924d22d289410.jpg


相关文章
|
2月前
|
机器学习/深度学习 存储 数据库
Python3 OpenCV4 计算机视觉学习手册:6~11(5)
Python3 OpenCV4 计算机视觉学习手册:6~11(5)
63 0
|
2月前
|
存储 资源调度 算法
Opencv(C++)系列学习---SIFT、SURF、ORB算子特征检测
Opencv(C++)系列学习---SIFT、SURF、ORB算子特征检测
114 0
|
2月前
|
机器学习/深度学习 算法 数据可视化
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)-2
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)
126 0
|
2月前
|
机器学习/深度学习 Ubuntu Linux
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)-1
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)
91 1
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
OpenCV与AI深度学习之常用AI名词解释学习
AGI:Artificial General Intelligence (通用人工智能):是指具备与人类同等或超越人类的智能,能够表现出正常人类所具有的所有智能行为。又被称为强人工智能。
22 2
|
23天前
|
机器学习/深度学习 开发框架 TensorFlow
### 如何系统化学习OpenCV4
### 如何系统化学习OpenCV4
13 0
|
2月前
|
算法 计算机视觉 Python
【OpenCV】-算子(Sobel、Canny、Laplacian)学习
【OpenCV】-算子(Sobel、Canny、Laplacian)学习
|
2月前
|
存储 计算机视觉
OpenCV—学习基本绘图
OpenCV—学习基本绘图
|
2月前
|
算法 C++ 计算机视觉
Opencv(C++)学习系列---Laplacian拉普拉斯边缘检测算法
Opencv(C++)学习系列---Laplacian拉普拉斯边缘检测算法
127 0
|
2月前
|
算法 计算机视觉 C++
Opencv(C++)学习系列---Sobel索贝尔算子边缘检测
Opencv(C++)学习系列---Sobel索贝尔算子边缘检测