SUSAN角点检测算法实现(详细版)

这篇具有很好参考价值的文章主要介绍了SUSAN角点检测算法实现(详细版)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言


一、SUSAN算子是什么?

        SUSAN ( Small univalue segment assimilating nucleus) 算子是一种基于灰度的特征点获取方法, 适用于图像中边缘和角点的检测, 可以去除图像中的噪声, 它具有简单、有效、抗噪声能力强、计算速度快的特点。

1.USAN(核值相似区)

        对于图像中非纹理区域的任一点,在以它为中心的模板窗中存在一 块亮度与其相同的区域,这块区域即为 USAN 区域。


        当一个像素点与圆模板的中心点的灰度值满足相似比较函数时,即判定属于 USAN 区域。图像不同位置处的 USAN 区域是不同的。

①.内部区域的 USAN 面 积大于圆模板的一半;

②.边缘的 USAN 区域面积等于圆模板面积的一半;

③.角点的 USAN 区域面积小于圆 模板面积的一半。


SUSAN角点检测算法实现(详细版)

其中SUSAN 角点检测的相似比较函数为:

SUSAN角点检测算法实现(详细版)

其函数的表达的意思:在属于圆模板中的任何一点的灰度值与圆心的灰度值的灰度差值小于等于某个常数 t ,则说明该点属于 usan 区域。其中 t 称为门限阈值

当圆模板的每个点进行相似比较后统计即可得到 r0 为圆心的USAN面积,其数学表达式为:

SUSAN角点检测算法实现(详细版)

n(r0) 越大,即usan区域越大,表示在圆模板内的点 与 圆心的像素值差值很小的点比较多,故可以看出其圆心的特征点属于内部区域。

反之当n(r0)越小,则表示在圆模板内的点 与 圆心的像素值差值很小的点比较少,其特征可能是边缘区域或者角点区域。


2.特征提取响应函数R(r0)

当计算完图像的每个点的 USAN 面积之后,通过响应函数R(r0)进行特征提取,其函数表达式为

SUSAN角点检测算法实现(详细版)

        其中 g 称为几何门限,它决定了输出角点的 USAN 区域的最大值。即圆模板中相似点数的最大值。

由于 n(r0)值大小在 ( 0,圆模板面积 ] , 故 几何门限 g 取值属于其之间,g的取值会影响到提取 特征信息量的大小,一般来说,提取边缘特征信息时,g的取值要大一些,而提取角点特征信息时,需要抑制边缘特征,则g的取值固然要偏小,但过小会存在角点被剔除的情况。


二、SUSAN核心算法的实现

//模版 x 和 y的坐标的偏移量
	int OffSetX[37] =
	{
			-3, -3, -3,
		-2, -2, -2, -2, -2,
	-1, -1, -1, -1, -1, -1, -1,
	 0,  0,  0,  0,  0,  0,  0,
	 1,  1,  1,  1,  1,  1,  1,
		 2,  2,  2,  2,  2,
			 3,  3,  3
	};

	int OffSetY[37] =
	{
			-1, 0, 1,
		-2, -1, 0, 1, 2,
	-3, -2, -1, 0, 1, 2, 3,
	-3, -2, -1, 0, 1, 2, 3,
	-3, -2, -1, 0, 1, 2, 3,
		-2, -1, 0, 1, 2,
			-1, 0, 1
	};

//定义USAN中近似像素数量的阈值,g越小,角点挑选越苛刻,角点数量越少
	int t = 4;//门限阈值 即非核心点的灰度值与核心点的灰度值的灰度差值小于门限阈值才是属于USAN区域
	int g = 18;//几何阈值 即决定不同类型的特征点的门槛
	Mat grayImg_padded;
	//对灰度图像进行填充
	copyMakeBorder(grayImg, grayImg_padded, 3, 3, 3, 3, BORDER_REFLECT);
	int same; 
	for (int i = 3; i < grayImg_padded.rows - 3; i++)
	{
		for (int j = 3; j < grayImg_padded.cols - 3; j++)
		{
			//same表示近似像素的数量
			same = 0;
			for (int k = 0; k < 37; k++)
			{
				//			  1 (条件:|I(r) - I(r0)| <= t)
				// c(r,r0) =  
				//			  0 (条件:|I(r) - I(r0)|  > t)
				if (abs(grayImg_padded.at<uchar>(i + OffSetX[k], j + OffSetY[k]) - grayImg_padded.at<uchar>(i, j)) <= t)
					same++;
				// n(r0) = Σc(r,r0)
			}
			//初始角点响应函数
			//			g - n(r0) 条件:g > n(r0) 
			//	R(r0) = 
			//			0		  条件:g <= n(r0) 
			if (same < g)
			{
				grayImg_padded.at<uchar>(i, j) = g - same;
			}
			else
			{
				grayImg_padded.at<uchar>(i, j) = 0;
			}
		}
	}


总结

文章来源地址https://www.toymoban.com/news/detail-470354.html

到了这里,关于SUSAN角点检测算法实现(详细版)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • python数字图像处理基础(八)——harris角点检测、图像尺度空间、SIFT算法

    原理 Harris 角点检测是一种用于在图像中检测角点的算法。角点是图像中局部区域的交叉点或者突出的特征点。Harris 角点检测算法旨在寻找图像中对于平移、旋转和尺度变化具有不变性的角点。 该算法通过计算图像中每个像素点的灰度值的变化,来识别角点。具体来说,Ha

    2024年01月19日
    浏览(45)
  • 基于Python手动实现Harris角点检测

    最近在上数字图像处理课程,需要使用Python手动编写Harris角点检测算法,但是网上几乎没有找到手动编写的,只能手敲。 同时作为自己的第一篇博客,在这里记录一下。 原理(略) 可以参考博主 拾牙慧者 的博客 角点检测(Harris角点检测法)_拾牙慧者的博客-CSDN博客_harri

    2023年04月14日
    浏览(46)
  • Harris角点检测

    图像特征的分类:边缘、角点、纹理。 角点检测(准确来说角点不是特征,但检测出来的角点可以用来提取和表示总结为特征)也被称为特征点检测,Harris是基于角点的特征描述子,主要用于图像特征点的匹配,属于图像的局部特征。 在局部小范围里,如果在各个方向上移

    2024年02月08日
    浏览(55)
  • opencv_角点检测

    文章内容 一个opencv检测角点的程序 运行效果

    2024年01月17日
    浏览(45)
  • 计算机视觉-角点检测

    Harris角点检测 运行结果 SIFT特征提取 运行结果 Harris角点检测和SIFT特征提取都是计算机视觉领域中常用的特征检测与描述算法。它们的主要区别在于:Harris角点检测是一种基于 角点 的检测方法,而SIFT特征提取是一种基于 局部特征 的描述方法。Harris角点检测适用于 具有明显

    2024年02月01日
    浏览(35)
  • OpenCV实战(16)——角点检测详解

    在计算机视觉中,兴趣点 ( interest points ) 也称为关键点 ( keypoints ) 或特征点 ( feature points ),广泛用于解决对象识别、图像匹配、视觉跟踪、 3D 重建等领域的问题。与其将图像作为一个整体进行评估,不如选择可以用于局部分析的点,以获得将该点应用于局部或全局的信息。

    2023年04月18日
    浏览(60)
  • OpenCV(四十二):Harris角点检测

    1.Harris角点介绍 什么是角点? 角点指的是两条边的交点,图中红色圈起来的点就是角点。 Harris角点检测原理:首先定义一个矩形区域,然后将这个矩形区域放置在我的图像中,求取这个区域内所有的像素值之和,之后沿着多个方向移动我这个区域,再次计算新区域的像素值

    2024年02月07日
    浏览(53)
  • opencv学习-几种角点检测方法

    角点通常被定义为两条边的交点,或者说,角点的局部邻域应该具有两个不同区域的不同方向的边界。角点检测(Corner Detection)是计算机视觉系统中获取图像特征的一种方法,广泛应用于运动检测、图像匹配、视频跟踪、三维重建和目标识别等,也可称为特征点检测。 目前,角

    2024年02月12日
    浏览(37)
  • 【opencv】教程代码 —TrackingMotion 角点检测

    角点检测 执行角点检测并在可能的角点周围画一个圆 对图像中的角点位置进行检测和细化 Shi-Tomasi方法检测图像角点 1. cornerDetector_Demo.cpp 角点检测 这段代码是一个用于检测图像中角点的完整示例程序,使用了OpenCV库。它实现了两种角点检测方法:Harris角点检测和Shi-Tomasi角点

    2024年04月17日
    浏览(42)
  • Python Opencv实践 - Harris角点检测

    参考资料:https://blog.csdn.net/wsp_1138886114/article/details/90415190  

    2024年02月09日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包