视觉图像:SUSAN算子及其实现

 时间:2024-10-29 04:17:39

1、SUSAN算法思想:SUSAN算法采用圆形模板,其目的是使检测达到各向同骂宙逃慈性;在实际应用中,由于图像的数字化,无法实现真正的原型模板,往往采用近似圆代替;圆形模板在图像上使用,模竣淠仝螃板内部每个图像像素点的灰度与模板中心像素的灰度进行比较;若模板内某个像素的灰度与模板中心像素灰度的差值小于一定值,则认为该点与核具有相同或相似的灰度。由满足这样条件的像素组成的区域称为吸收核同值区(Univalue Segment Assimilation Nucleus,USAN);当圆形模板完全在背景或目标中时,USAN区面积最大;当圆形模板向边缘移动时,USAN区面积减少;当圆心处于边缘时,USAN区面积很小;当圆心在角点处时,USAN区面积最小;故将图像每点上的USAN区面积作为该处特征的显著性度量,USAN区面积越小,特征越显著;

视觉图像:SUSAN算子及其实现

2、SUSAN算法原理:①确立模板大小:采用半径为3个像素共计37个像素的类圆形模板;模板中心像素是标号为19的点;

视觉图像:SUSAN算子及其实现

3、②确定USAN区域:用这个圆形模板扫描整个图像,模板内部的每个像素的灰度与模板中心像素的灰度进行比较,并且给定阈值,确定像素是否属于USAN区域;判断方法如下式:式中,为USAN判别函数,r0为模板中心点,r为模板内部点;t为灰度差阈值,一般取25;当然,也可以用平滑的线来代替这种直接的分割方式(如下图b线),这样可以获得更稳定而敏感的结果,虽然计算复杂但是可以通过查找表来获得较快的速度。公式如下:

视觉图像:SUSAN算子及其实现
视觉图像:SUSAN算子及其实现

4、③计算USAN区域大小:USAN区域大小可以由下式求得:其中,n(r0)表示以r0为圆心的USAN面积;

视觉图像:SUSAN算子及其实现

5、④信息提取:USAN特征图像可以通过下式求得:其中,g为几何门限,在进行边缘提取时,g的取值要大一些,一般设为3nmax/4,表示边缘响应,USAN区域的面积越小,则边缘相应就越大;

视觉图像:SUSAN算子及其实现

6、SUSAN检测的优点:最突出的一个优点:对局部噪声不敏感、抗噪能力强;由于USAN特征检测原则不依赖于前期图像分割的结果,避免了梯度计算;

7、SUS钽吟篑瑜AN阈值的分析:在SUSAN检测中,有两种阈值:一种用来约束角点的数量;一种用来约束角点的质量;当然,一个阈值不能完全做到飧肇苡卫只影响质量或数量,只会有一个侧重点;那么,SUSAN中的两个阈值t和g在特征检测中起到一个什么样的作用呢?很明显,阈值g是角点质量,尽管也会影响数量,但是相对来说更侧重于影响质量;例如,g值减小,那么SUSAN会更加侧重于检测到更加“尖锐”的角点;阈值t是角点数量,当t减小时,会检测到更多的角点;所以,阈值t可以在不影响角点质量的情况下,控制检测到的角点的数量;在大多数情况下,设t为25比较合适,如果图像的对比度比较低,可以修改t值以适应变化。

8、SUSAN算子检测步骤:①利用圆形模板遍历图像,计算每点处的USAN值。②设置阈值g,进行阈值化,得到特征信息响应;③使用非极大值抑制来寻找角点;【注】:由上面的方式得到的角点,存在很大伪角点。为了去除伪角点,SUSAN算子可以由以下方法实现:①计算USAN区域的重心,然后计算重心和模板中心的距离,如果距离较小则不是正确的角点;②判断USAN区域的重心和模板中心的连线所经过的像素都是否属于USAN区域的像素,如果属于那么这个模板中心的点就是角点。综上所述,我们基本知道SUSAN角点检测算法。

9、openc箪滹埘麽v:susan边缘检测程序:////susan边缘检测//Mat SusanFun(Mat img){ //susan模板 int OffSetX[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 }; int OffSetY[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 mHeight = img.rows; int mWidth = img.cols; unsigned char *ucDataImg = (unsigned char *)img.data; Mat nImg(img.rows,img.cols,CV_8UC1); unsigned char *ucDatanImg = (unsigned char *)nImg.data; int k,pixelSum,thresh,sameNum; for(int i=3;i<mHeight-3;i++) { for (int j=3;j<mWidth-3;j++) { pixelSum = 0; sameNum = 0; for (k=0;k<37;k++) { pixelSum += ucDataImg[(i+OffSetY[k])*mWidth+(j+OffSetX[k])]; thresh = pixelSum/37;//数量 if (abs(ucDataImg[(i+OffSetY[k])*mWidth+(j+OffSetX[k])]-ucDataImg[i*mWidth+j])<=thresh) { sameNum ++; } } if (sameNum<33)//质量34 { ucDatanImg[i*mWidth+j] = 0; } else { ucDatanImg[i*mWidth+j] = 255; } } } return nImg;}

视觉图像:SUSAN算子及其实现
视觉图像:SUSAN算子及其实现
  • MATLAB图片编辑器输入上标下标
  • 怎么在Word中设置显示加载项用户界面错误
  • NI LabVIEW 2018怎么设置导航按钮为仅显示图标
  • 如何用matlab2014做电力系统仿真
  • 2016武大电气专硕考研二战失败的心路分享
  • 热门搜索
    防溺水手抄报简单 天下国家手抄报 春节手抄报图片大全 绿色校园手抄报 心理健康手抄报图片 消防安全手抄报内容字 初中手抄报 关于六一的手抄报 水的手抄报 关于保护环境的手抄报