图像目标检测方法有多种,由简到难,如下:
- 第一阶段:
使用传统cv方法进行目标检测、匹配
样本量:1张标准图 - 第二阶段:
使用机器学习HOG特征检测/SVM分类器
样本量:每个模型100张图片 - 第三阶段:
使用深度学习训练模型。
样本量:每个模型500张图片
——————————————————————————————
传统方法:
理论基础:
1. 物体轮廓上关键点可代表物体特征
OpenCV的匹配方法:
1)Sift角点检测
2)Surf角点检测
3) Orb角点检测
2. 尺度不变特征:亮度,清晰度,旋转,缩放,颜色发生什么改变,轮廓特征都是明显的
例1:拼图
具体方法:
1. 二值化处理(黑白图),凸显出轮廓
2. 找到轮廓上的特征点
20200519.jpg
3. 特征点按照特征描述符进行匹配(对应连线)
OpenCV匹配方法:
1)BF_match:暴力匹配,一一对应
2)Knn_match: 返回k个可能与原点最匹配的点集,自行筛选,
3)Flann_match:适合大型数据集
例1:
20200519.jpg
例2: 联合丽华comp.png
———————————————————————————————
仿射/透视变换,是同一个物体,但是特征不一样
仿射变换:
截屏2020-05-19 上午11.31.14.png
透视变换:
截屏2020-05-19 上午11.31.53.png
———————————————————————————————
4. 标准图关键点集kp1 -> 匹配图关键点集kp2,中间经历了一堆变化,用矩阵M来代替这所有的变换,M是可以通过数理方程求解出的
截屏2020-05-19 上午12.46.49.png
OpenCV:
步骤1)Ransac去除坏点
在匹配过程可能会有一些错误,而这些错误会影响最终结果
Ransac原理:
a. 随机从数据集中随机抽出4个样本数据 (此4个样本之间不能共线),计算出单应矩阵H,记为模型M;
b.计算数据集中所有数据与模型M的投影误差,若误差小于阈值,加入内点集 I ;
c.如果当前内点集 I 元素个数大于最优内点集 I_best , 则更新 I_best = I,同时更新迭代次数k ;
d.如果迭代次数大于k,则退出 ; 否则迭代次数加1,并重复上述步骤;
截屏2020-05-19 上午1.27.18.png
截屏2020-05-19 上午1.27.28.png
步骤2)求解单应性矩阵M
**5. 将标准图通过M变换到标准图’ **
6.标准图’的位置 = 标准图在测试图中的位置
image.png
缺点
1. 曲面无法检测
例子
2. 同一张图内 有多个目标 无法分开检测
解决方法:HOG/SVM行人检测
(如白色或纯色背景,可以分割图片分别检测;复杂背景无法分割)
3.角点检测,需要角点特征明显
如图形中出现大量圆形 or 简单图片,反而难以检测。(目标越复杂,越精准)
例1: 截屏2020-05-19 上午12.32.45.png
例2: 截屏2020-05-19 上午12.35.02.png
例3: pepsi_cn_s.png
网友评论