图像特征之SUSAN角点检测
原文站点:https://senitco.github.io/2017/07/01/image-feature-susan/
SUSAN(Small univalue segment assimilating nucleus)是一种基于灰度图像以及窗口模板的特征点获取方法,适用于图像中边缘和角点的检测,对噪声鲁棒,而且具有简单、有效、计算速度快等特点。
原理概述
SUSAN算子采用一种近似圆形的滑动窗口模板,邻域窗口内的每个像素点的灰度值和中心像素作比较,若两者的灰度差值小于一定阈值,则认为该像素点与中心像素(核)具有相似的灰度值,满足这一条件的像素组成的区域称为吸收核同值区(Univalue Segment Assimilating Nucleus, USAN)。
如上图所示,当圆形模板处于灰度均匀区域(背景或目标内),USAN区域面积最大;当模板移向图像边缘时,USAN面积逐渐变小,模板中心处于边缘位置时,USAN面积为最大值的1/2;当模板中心位于角点处时,USAN面积最小,约为最大值的1/4。因此,USAN面积越小,其中心像素为角点的概率就越大。通过计算每个像素的USAN值,并与给定阈值作比较,如果该像素的USAN值小于给定阈值,则认为是一个角点。USAN的三维显示如下图所示:
算法步骤
- 定义一个半径为r(r=3)的圆形滑动模板,比较模板内像素与中心像素的灰度值差异,构成USAN区域。公式定义如下:
c(r→,r0→)=⎧⎩⎨1,|I(r→)−I(r0→)|≤t 0,|I(r→)−I(r0→)|>t
c(\overrightarrow{r}, \overrightarrow{r_0}) = \begin{cases} 1,|I(\overrightarrow{r}) - I(\overrightarrow{r_0})| \leq t \\\ 0,|I(\overrightarrow{r}) - I(\overrightarrow{r_0})| > t\end{cases}
式中,r_0r\_0表示模板核(中心像素)在图像中位置,rr则是模板内其他像素的位置,I(r)I(r)表示图像灰度值。为了得到更稳定的结果,避免相似度函数在阈值边界处发生突变,亦可采用下式计算:c(r,r0)=e−(I(r)−I(r0)t)6c(r,r_0)=e^{-(\dfrac{I(r)-I(r_0)}{t})^6}
- 计算USAN区域的面积
n(r0)=Σrc(r,r0)
n(r_0) = \Sigma_r c(r, r_0)
- 计算角点响应值
R(r0)={g−n(r0),n(r0)<g 0,n(r0)≥g
R(r_0) = \begin{cases} g - n(r_0),n(r_0)
阈值可取g=nmax/2g=n_{max}/2,USAN面积达到最小时,角点响应值达到最大。 - 在邻域内对角点响应值做非极大值抑制
参数分析
SUSAN算子采用的是圆形模板,窗口半径为r=3,窗口内包含37个像素,如下图所示:
在进行角点检测时,需要确定两个重要的参数——g值和t值。阈值g决定了USAN区域面积的最大值,以及所检测角点的尖锐程度,g值越小,检测到的角点越尖锐。阈值t表示所能检测角点的最小对比度,决定了角点提取的数量,t值越小,可提取的角点数量越多。对于不同对比度和噪声的图像,应取不同的阈值。
算法特点
- 在对边缘和角点进行检测时,不涉及微分操作,因此对噪声的鲁棒性较好
- SUSAN算子比较的是邻域像素的灰度相似性,具有光强不变性、旋转不变性;而且检测算子不依赖模板尺寸,在一定程度具备尺度不变性
- 参数较少,计算较快,抗干扰能力强
reference
- Paper: SUSAN — A New Approach to Low Level Image Processing
- http://www.cnblogs.com/luo-peng/p/5615359.html
- http://blog.csdn.net/tostq/article/details/49305615
- http://xandl.cn/2017/03/23/extraction/
图像特征之SUSAN角点检测相关推荐
- 图像局部特征学习(笔记1之SUSAN角点检测)
SUSAN(smallest univalue segment assimilating nucleus最小核值相似区) SUSAN是角点检测的一种,其原理跟Harris很相像,Harris是利用一个 ...
- SUSAN角点检测与匹配算法代码(OpenCV)
SUSAN角点检测与匹配算法 测试环境Ubuntu+OpenCV2.4.3 SUSAN角点检测代码 SUSAN(Small univalue segment assimilating nucleus) ...
- susan角点检测算法
SUSAN算法是1997年牛津大学的Smith等人提出的一种处理灰度图像的方法,它主要是用来计算图像中的角点特征.SUSAN算法选用圆形模板(如图1所示).将位于圆形窗口模板中心等待检测的像素点称为核 ...
- SUSAN角点检测算法实现(详细版)
前言 无 一.SUSAN算子是什么? SUSAN ( Small univalue segment assimilating nucleus) 算子是一种基于灰度的特征点获取方法, 适用于图像中边缘和 ...
- SUSAN角点检测算法,及其Matlab实现
1.SUSAN角点检测算法步骤 (1)在图像上放置一个37个像素的圆形模板,模板在图像上滑动,依次比较模板内各个像素点的灰度与模板核的灰度,判断是否属于USAN区域.判别函数如下: 其中,r⃗0{{\ ...
- 基于光强的角点检测(SUSAN角点检测、FAST角点检测、FAST-ER角点检测)
Corner Feature Detector(Intensity-Based) 基于光强比较的角点检测,直接比较光强(像素灰度值),而不计算梯度.所以实时性更好,所需的存储空间更小. SUSAN 角 ...
- SUSAN角点检测实现
参考:Susan角点检测python实现 (边缘检测.角点检测.重心计算.非极大值抑制) void susan(cv::Mat& src, cv::Mat& dst, float t) ...
- Susan角点检测python实现 (边缘检测、角点检测、重心计算、非极大值抑制)
Susan角点检测(边缘检测.角点检测.重心计算.非极大值抑制) 写在前面 黄宁然--看过你看过的算法,觉得好难. 参考文献镇楼 [1]https://blog.csdn.net/tostq/arti ...
- Opencv开发笔记(三):使用形态学滤波对图像进行边缘及角点检测
形态学滤波可以用于检测图像中指定的特征点,接下来这篇文章我们运用Opencv中的形态学函数来检测灰度图中的直角和角点. 首先我们为了方便使用先封装一个名称为MorphoFeatures的类,然后就可以 ...
最新文章
- ccf Markdown
- LightOJ - 1038 Race to 1 Again 基础期望概率 dp
- mybatis configuration的内容必须匹配问题
- usb网络linux系统安装教程,Linux系统入门学习:如何在树莓派上安装USB网络摄像头...
- HDU2102 A计划
- DTS开发记录(序)
- 基于CUDA的三维VTI介质逆时偏移与ADCIGs提取
- 【jmeter安装】jmeter下载安装超详细简单步骤
- GPS广播星历和精密星历的下载
- 绿米开关如何重置_绿米智能开关评测
- 智能POS删除文件和数据库操作步骤
- python 群发邮件数量限制_用邮件群发平台群发邮件的数量有限制吗?一般可以发多少?...
- 多目标人工秃鹫优化算法(MATLAB源码分享,智能优化算法) 提出了一种多目标版本的人工秃鹫优化算法(AVOA)
- 《2022中国RPA采购指南》报告正式发布
- cross_val_score的 scoring参数值解析
- html元素的overflow属性详解
- 收银系统可以管理童装店衣服不同的尺码吗?
- 重装系统后故障(报错:reboot and select proper boot deviceor insert boot media in selected boot device)
- 建筑工程质量竣工资料软件
- 基本知识:block/sleep/hang/宕机/hook/stub/offload/overhead/watermark
热门文章
- 旅游科技公司常用的运维管理服务器工具
- 智能汽车大爆发,车企创新为何首选华为云?
- SWT(Detecting Text in Natural Scenes with Stroke Width Transform)算法详解
- 原生CANVAS语法实现的封装折线图和饼图
- 第55课:60分钟内从零起步驾驭Hive实战学习笔记
- 【转】掌握5个职场沟通技巧,让你成为会说话的人!
- php股票预警,超强的盘中预警公式
- cad中lisp文件给恶作剧_[软件心得]我用的CAD,LISP加载文件
- Nacos(第一篇)_Springboot2.x+Nacos配置管理中心
- scala列表-List.tabulate方法