论文转载请注明出处:http://blog.csdn.net/kezunhai

1977年,Moravec提出了兴趣点(Points of Interests)的概念,并应用于解决Stanford Cart的导航问题。1981年, Moravec在International Joint Conference on Artificial Intelligence发表了篇题为:Obstacle Avoidance and Navigation in the Real World by a Seeing Robot Rover的文章,并将其应用与立体匹配。本文将主要介绍Moravec算子的点特征提取的原理和过程。

Moravec的原理如果有一句话来说就是:通过滑动二值矩形窗口寻找灰度变化的局部最大值。具体来说主要包括四个过程:

1)滑动窗口计算灰度变化(Calculate intensity variantion from shifting windows)

滑动窗口在现有的技术中已经有了很多应用,如模板匹配、目标检测(hog特征的行人检测)等。在Moravec算子中,一般窗口的大小取3×3、5×5、7×7等等,但是随着窗口的增大,计算量也就越大。Moravec算子通过对窗口的水平、垂直和对角八个方向进行移动(Horizontally、Vertically and four diagonals),计算原窗口与滑动窗口差的平方和来得到灰度的变化。我们进一步通过下图一个3×3的滑窗来进行说明:

上图中,红色框表示的是原始框,而蓝色框表示向右上的滑动框,白色框表示前景255,黑色框表示背景0。那么原始框和滑动框的灰度变化通过对应位置差的平方和来表示,也即通过下式来计算:

同样,根据上式计算另外七个方向滑动框的灰度变化(水平向左、水平向右、垂直向上、垂直向下以及四个对角)。至此,我们就计算完成了8个方向的灰度变化,我们称此操作位Moravec operator(Moravec算子)。

2)构造角点性映射图(Construct the cornerness map)

在构造角点映射图之前,我们先来分析下,通过上式的我们可以得到角点吗?或者凭什么通过计算两个框对应位置的差的平方和就可以检测到角点?问题问得好,我们来看下面的图:

上面四张图上的四个红色的框表示我们正在处理的窗,第一幅图中的窗在表示在目标内部或者是背景上,该区域灰度分布均与,通过对其在8个方向上灰度,灰度变化很小;第二幅图中的窗跨在图像的边缘处,当垂直于边缘方向滑动窗口时将会导致灰度的很大变化,而沿着边缘滑动窗时,灰度变化较小;第三幅图中的窗在角点处,不管往哪个方向滑动窗口,都会导致灰度的很大变化;而第四幅图中的框内是一个离散点,滑动窗向任意方向滑动也会导致灰度的很大变化。

因此,通过上面的描述和分析,我们可以知道,Moravec算子可以作为一种角点性的度量,这种度量是通过求8个方向的滑窗来的最小值来表示。用公式表示如下:

我们通过下图来描述角点映射图的构造:

上图中的是通过Moravec算子计算得到的,其中1表示1*255^2,2表示2*255^2。通过上图可以知道:

(1)角点位于局部最大值处,我们可以应用非极大值抑制找到局部最大值(non-maximal suppression)。

(2)离散点(噪声点)与角点有相同的角点性(cornerness),因此Moravec算子对噪声敏感,但是通过增大滑窗的大小可以对噪声起到一定的抑制作用,可同时增加了计算量。另一方面,可以通过设定一个阈值T来对cornerness map进行二值化,小于阈值T的cornerness map设置为0,从而对离散点的局部最大值进行抑制。阈值的选择引用原文的话:Choosing this threshold is difficult as it must be set high enough to avoid these false corners(isolated pixel), but low enough to retain as many true corners as possible.

(3)Moravec算子不能应用与图像边界的一定区域(标记为X的区域),对于这部分区域,一般直接忽略,在cornerness map中这些区域对应的值置0。

下面对Moravec算子的基本步骤进行简单的总结,其主要包括包括:

我们再上两张效果图:

     

从上图也可以看到,Moravec算子对角点的检测效果还不错,但是对于对角线上的角点容易出现误检。

总结:Moravec算子作为第一个广泛应用的角点检测算法,开创了角点检测的新纪念,后续的很多角点检测算子都是在其基础上通过扩展得到的。但是Moravec算子也存在诸如方向各异性、噪声敏感、对旋转不具备不变形(角点不具备repeatability)、滑动窗内的各个像素权重同质性(中心像素权重大,离中心越远,权重越小)。在下一篇中,我将介绍一种对Moravec算子进行改进、在很多领域取得非常广泛应用的另一种算子-----Harris算子。

另外可以参考:

http://code.google.com/p/jfeaturelib/wiki/Moravec(可以现在Moravec算子的库和源代码)

http://kiwi.cs.dal.ca/~dparks/CornerDetection/moravec.htm (Moravec算子的更细节内容)

图像处理特征不变算子系列之Moravec算子(一)相关推荐

  1. 图像处理特征不变算子系列之DoG算子(五)

    图像处理特征不变算子系列之DoG算子(五) kezunhai@gmail.com http://blog.csdn.net/kezunhai 在前面分别介绍了:图像处理特征不变算子系列之Moravec ...

  2. 图像处理特征不变算子系列之KLT算子

    正在前面的系列博文中,介绍了多种特征算子,在本文中将介绍由Kanade-Lucas两人在上世纪80年代在其论文: An Iterative Image Registration Technique w ...

  3. sobel算子_OpenCV图像处理专栏十八 | 手动构造Sobel算子完成边缘检测

    1. 前言 众所周知,在传统的图像边缘检测算法中,最常用的一种算法是利用Sobel算子完成的.Sobel算子一共有 个,一个是检测水平边缘的算子,另一个是检测垂直边缘的算子. 2. Sobel算子优缺 ...

  4. dog log 算子_DoG和LoG算子

    DoG(Difference of Gaussian)算子和LoG(Laplacian of Gaussian)算子是常用的极值点检测(Blob Detection)两种方法,高斯卷积是为了进行尺度变 ...

  5. CANN训练营第三季_昇腾CANN算子精讲课_TBE算子Sinh开发笔记_UT测试(三)

    UT测试: UT测试是为了测试算子代码的正确性和不同场景下的覆盖率的测试,UT测试在硬件CPU上执行,MindStudio提供了gtest框架方便进行UT测试. 参考:https://www.hias ...

  6. 数字图像处理第三章边缘检测(Sobel算子、Laplace算子)

    边缘 边缘(edge)是指图像局部强度变化最显著的部分.主要存在于目标与目标.目标与背景.区域与区域(包括不同色彩)之间,是图像分割.纹理特征和形状特征等图像分析的重要基础. 边缘检测概念 1.边缘检 ...

  7. CS131专题-6:图像特征(Blob检测、LoG算子、Harris-Laplacian)

    本专题介绍的技术应用已不广,但是这些有利于理解SIFT算法的原理,也有助于感悟CV传统技术的发展变迁,以及解决问题的思路. 速记要点: blob是什么:blob是描述图像中局部区域的平均像素强度的特征 ...

  8. 数字图像处理 拉普拉斯(Laplace)变换 边缘检测算子(二阶导 sobel)变换 锐化(反锐化模板锐化) 算法实现及效果

    程序代码: clear %拉普拉斯变换 A = imread("Moon.jpg"); Laplace1(A);%Soble变换 B = imread("lens.jpg ...

  9. opencv roberts算子_边缘检测 Roberts算子

    Roberts算子是一种最简单的算子,利用局部差分算子寻找边缘的算子.采用对角线相邻两像素之差近似梯度幅值检测边缘..检测垂直边缘的效果比斜向边缘要好,定位精度高,对噪声比较敏感,无法抑制噪声的影响. ...

最新文章

  1. 2017年6月16号课堂笔记
  2. 解决MySQL自动断开连接的问题
  3. 彻底理解宽带信号在频域分解为窄带信号
  4. sysbench mysql oltp_用sysbench进行数据库OLTP基准测试
  5. java8实战怎么样_Java8中你可能不知道的一些地方之Stream实战
  6. nginx限速方法以及报错处理
  7. python循环怎么跳过开始循环,如果循环内部调用的函数执行时间太长,你怎么能跳过python中的循环迭代?...
  8. 关于SQL语句中分号的问题
  9. 六安:在线监测 精准调控 构建智慧城市节水管理平台
  10. WINDOWS上OpenCV需要有MediaPlayer才能正确运行?
  11. 初中毕业能学习软件测试吗,我只是初中毕业而且23岁了会不会太晚我想学 – 手机爱问...
  12. android 编辑txt,.txt到可修改的android数据库
  13. java quartz 每月1号执行_Quartz 每月1号 执行规则表达式
  14. android的充电线,充电线和数据线的区别
  15. 一文梳理2021年常见消息中间件MQ与RabbitMQ面试题
  16. 张小娴说男人不如一条狗,现在连市场分析师也说男人不如一条狗
  17. 【自动驾驶-感知-红绿灯】红绿灯识别知识点
  18. Qt 5入门指南之Qt Quick编程示例
  19. imatest测试分辨率使用教程
  20. 互联网大会蓝皮书_世界互联网大会蓝皮书

热门文章

  1. oracle rac多实例dg,ORACLE RAC+DG(单实例)
  2. Android studio实现个人体重指数计算
  3. 用python画股票分时图 github_GitHub - DogeWatch/stock: stock,股票系统。使用python进行开发。...
  4. 文正·高等数学每日一题(2)·一道“小学生”面积题
  5. railgun游戏服务端架构
  6. 阿里巴巴十周年庆典流水账
  7. 网易云音乐 推荐算法
  8. Convolutional Radio ModulationRecognition Networks阅读2016
  9. 特征选择:概述与方法
  10. 计算机网络---DHCP和自动配置