Computer Vision -- 特征点提取
来源:互联网 发布:php上传文件 身份 编辑:程序博客网 时间:2024/05/09 00:14
Why
- 运动目标跟踪
- 物体识别
- 图像配准
- 全景图像拼接
- 三维重建
都需要用到图像的特征点
Corner Points:角点
- 局部窗口沿各方向移动,均产生明显变化的点
- 图像局部曲线曲率突变的点
角点检测算法
- Harris
- 平坦区域:窗口沿着任意方向移动,均无灰度变化
- 边缘区域:窗口沿着边缘方向移动,无灰度变化
- 角点:窗口沿着任意方向移动,均有灰度变化
- 特点
- 由于旋转不变性
- 对灰度平移具有不变性
- 对灰度缩放不具有不变性
- 对图像几何缩放不具有不变性
角点参考
- 角点检测网站
- Harris 角点 [C.Harris “A Combined Corner and Edge Detector” 1988]
SIFT 特征
- 不变性
- 对图像的旋转和尺度变化具有不变性
- 局部特征
- 对三维视角变化和光照变化具有很强的适应性
- 特征之间相互区分的能力强,有利于匹配
- 特征数量较多
- 扩展性强
流程
- 多尺度空间极值点检测
- 图像
I(x,y) 的尺度空间定义为:L(x,y,σ=G(x,y,σ)∗I(x,y) - 其中
G(x,y,σ)=12πσ2e−(x2+y2)/2σ2 - 当
σ 连续变化时,G(x,y,σ) 构成图像的尺度空间 - 高斯差分DoG(Difference of Gaussian):
D(x,y,σ)=(G(x,y,kσ)−G(x,y,σ))∗I(x,y)=L(x,y,kσ)−L(x,y,σ) - 这样,通过构建高斯金字塔,再从三维空间中选择26邻域极值点作为关键点。
- 图像
- 关键点的精确定位
- 由于上述离散采样过程中得到的极值点不一定是真实空间中的极值点,因此通过对尺度空间函数DoG进行曲线拟合,计算极值点,得到关键点的精确定位。再通过去除对比度低的点及位于边缘上的点,得到最终的关键点。
- 关键点的主方向计算
- 对于关键点,在其领域中对梯度进行直方图统计,选择主方向并进行二次插值,得到精确定位的主方向。
- 构造描述子
- 将关键点的领域分成4x4的子区域,在八个方向上进行梯度幅值的插值,从而得到4x4x8=128维的向量。
总结
- 尺度不变:高斯金字塔有多层(多尺度),根据关键点的尺度选取高斯图像和领域大小。
- 旋转不变:根据主方向进行校正
- 适应复杂几何变形:4x4分块直方图统计,高斯加权等细节处理
- 适应复杂光照变化:
- 线性光照:归一化128维向量
- 非线性光照:将128维向量中所有大于0.2的元素赋值为0.2
匹配
- NNDR: Nearest Neighbor Distance Ratio , 通过比较与目标特征向量X最近的向量Y1和Y2.
NNDR=distance(X,Y1)distance(X,Y2) - 参考:结合NNDR与霍夫变换的匹配方法
0 0
- Computer Vision -- 特征点提取
- Computer Vision -- 边缘提取
- 【computer vision】目标检测的图像特征提取之——LBP特征
- 【computer vision】目标检测的图像特征提取之——HOG特征
- SURF特征点提取
- SURF特征点提取
- SIFI特征点提取
- ORB特征点提取
- VSLAM 特征点提取
- Computer Vision
- Computer Vision
- Computer Vision
- computer vision
- computer vision
- Computer vision
- Computer Vision
- Computer Vision
- computer vision
- 单实例 Oracle关闭、启动、退出命令
- 棋牌游戏软件选哪家?诺博富棋牌游戏厅
- Lua 的元表怎么理解
- 音效系统实现:事件音效
- 在linux环境下搭建memcached集群(一)
- Computer Vision -- 特征点提取
- [Leetcode]Longest Increasing Path in a Matrix
- lua-协成
- AAPT err(Facade for 1191041091) : No Delegate set : lost message:libpng error: Not a PNG file
- 跟我一起学Microsoft SQL Server 2012 Internals(1.5)
- 一个简单的vector模版,实现了vector的简单功能
- [Android]实现类似微信的延迟加载的Fragment——LazyFragment
- JavaSE入门学习30:Java常用类之包装类
- Java-AbstractQueuedSynchronizer