IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> KLT光流跟踪特征点对 -> 正文阅读

[人工智能]KLT光流跟踪特征点对

前言

本篇所述为KLT光流跟踪两个视频中匹配特征点对的具体实现。=> 源码见Github openCV版本:4.5.5

函数详解

1. 特征提取

(1) SIFT特征提取调用方式

sift=cv2.SIFT_create()   # ORB_create()
kp,d=sift.detectAndCompute(frame_gray, None)

OpenCV-Python Tutorials-Feature Detection and Description

关于匹配后的下标决定说明 kp1的索引由DMatch对象属性为queryIdx决定

(2) 角点检测

角点:某一点在任意方向的一个微小变动都会引起灰度很大的变化。
在这里插入图片描述
角点检测算法分类:

  • 基于灰度图像的角点检测
    基于梯度、基于模板、基于模板梯度组合
  • 基于二值图像的角点检测
  • 基于轮廓曲线的角点检测

基于模板的方法主要考虑像素邻域点的灰度变化 ,即图像亮度的变化。将与邻点亮度对比足够大的点定义为角点。常见的基于模板的角点检测算法有 Kitchen-Rosenfeld角点检测算法Harris角点检测算法KLT角点检测算法SUSAN角点检测算法

Harris角点检测

cv2.cornerHarris()

Shi-Tomasi角点检测

(Harris角点检测的进阶版)

cv2.goodFeaturesToTrack()

void cv::goodFeaturesToTrack(
		cv::InputArray image,    // 输入图像(CV_8UC1 CV_32FC1)
		cv::OutputArray corners, // 输出角点vector
		int maxCorners,          // 最大角点数目
		double qualityLevel,     // 质量水平系数(小于1.0的正数,一般在0.01-0.1之间)
		double minDistance,      // 最小距离,小于此距离的点忽略
		// 以下为可选参数
		cv::InputArray mask = noArray(), //指定感兴趣区域。 mask=0的点忽略
		int blockSize = 3,       // 使用的邻域数:计算协方差矩阵时的窗口大小
		bool useHarrisDetector = false,   // false ='Shi Tomasi metric'
		double k = 0.04         // Harris角点检测时使用
	);

// 常用如下参数:
void cv::goodFeaturesToTrack(image,corner,
                     		500,     // 最多检测到的角点数
                     		0.01,    // 阈值系数
                     		10);     // 角点间的最小距离

在这里插入图片描述
角点特征检测之一(cornerHarris、Shi-Tomasi、FAST)

注意:角点无法直接用来做特征匹配,做特征匹配都是需要描述子的

参考:
cv2.GFTTDetector_create将角点作为特征点进行特征匹配

【Shi-Tomasi角点检测+SIFT特征匹配】返回值需要进行一个转换

(3) 棋盘内角点检测

# size是内格点数,输出有序,按行展开
st1,corner1=cv2.findChessboardCorners(frame1gray,(9,6),None) # <class 'numpy.ndarray'>

当检测到了给定size的角点,st才会返回非0值

更详细的函数说明:角点检测与FindChessboardCorners函数

2. 特征匹配

python 3+opencv3.4 – 特征匹配

Python OpenCV 特征点检测与匹配

关于不是很熟的只适用于SIFT/SURF的FLANN匹配 & 一个很好的学习openCV的博客

(1) Harris角点匹配

基于PCV库

角点特征匹配

从0计算响应值并进行匹配

函数说明&完整实现(删除静止点)

KLT-Tracking

lk_params=dict(winSize=(15,15),
                maxLevel=2,
                criteria=(cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, 10, 0.03))

tk2,st,err=cv2.calcOpticalFlowPyrLK(frame2gray,frame_nxgray2,track_points2,None,**lk_params)

python-openCV官方文档对于该函数的详解

KLT视频匹配跟踪几个要点

1. 判断静止点 ?前后两帧特征点位置微小?

知乎链- 静止点&回溯判断

类的写法&直接写法

2. 判断被遮挡点 ?st==0

3. 判断是否跟踪正确 ?环回检测?

4. 判断匹配是否正确 ?RANSAC?

Sift KLT

注意提取特征点的 类型和数据转换-Github

C++版本实现

遇到的BUG

  1. 特征点检测方法换成sift的过程中,注意特征点形式的转换过程中的数据形式dtype转换
    error: (-215:Assertion failed) (npoints = prevPtsMat.checkVector(2, CV_32F, true)) >= 0 in function

  2. YOLOv3载入权重报错 ?(opencv版本不同引起的输出格式不同)
    output_layers=[layer_names[i[0]-1] for i in net.getUnconnectedOutLayers()] IndexError: invalid index to scalar variable.

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-04-22 18:36:57  更:2022-04-22 18:39:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 10:50:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码