博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
matlab练习程序(SUSAN检测)
阅读量:5773 次
发布时间:2019-06-18

本文共 1075 字,大约阅读时间需要 3 分钟。

  SUSAN算子既可以检测角点也可以检测边缘,不过角点似乎比不过harris,边缘似乎比不过Canny。不过思想还是有点意思的。

  主要思想就是:首先做一个和原图像等大的目标图像。然后用一个圆形的模板,用模板去遍历原图像每个像素,把模板内的每个像素都和模板中心像素比较,如果灰度小于一个阈值,那么就对目标图像当前和原图像相同位置的像素加一,直到结束。目标图像中在原图像是角点的位置就会取局部极小,所以做一个反向的相减。img=max(img)-img,if img<g,这里的g也是自己给定的阈值,我这里取了2*max(img)/3这样的阈值,g越大,得到的点就越多。这步之后角点的值就成为局部极大了。最后进行非极大抑制,去除一些杂点就行了。

代码如下:

clear all;close all;clc;img=imread('i.jpg');img=rgb2gray(img);imshow(img);[m n]=size(img);img=double(img);t=45;   %模板中心像素灰度和周围灰度差别的阈值,自己设置usan=[]; %当前像素和周围在像素差别在t以下的个数%这里用了37个像素的模板for i=4:m-3         %没有在外围扩展图像,最终图像会缩小   for j=4:n-3         tmp=img(i-3:i+3,j-3:j+3);   %先构造7*7的模板,49个像素        c=0;        for p=1:7           for q=1:7                if (p-4)^2+(q-4)^2<=12  %在其中筛选,最终模板类似一个圆形                   %   usan(k)=usan(k)+exp(-(((img(i,j)-tmp(p,q))/t)^6));                     if abs(img(i,j)-tmp(p,q))
max([max(imgn(i-1,j-1:j+1)) imgn(i,j-1) imgn(i,j+1) max(imgn(i+1,j-1:j+1))]); re(i,j)=1; else re(i,j)=0; end endendfigure;imshow(re==1);

后两幅比第一幅小,我没进行边缘扩展。

原图

未进行非极大抑制,似乎就是边缘了

最后结果

转载地址:http://sjaux.baihongyu.com/

你可能感兴趣的文章
单例模式
查看>>
使用Nginx反向代理 让IIS和Tomcat等多个站点一起飞
查看>>
老旧的金融机构,是时候赶赶云计算的时髦了
查看>>
晶澳向埃及11MW混合发电项目供应光伏组件
查看>>
国产x86 CPU性能达Intel的80%?
查看>>
用友网络陈强兵:企业互联网需解决五大问题
查看>>
SMA推出Powerwall兼容Sunny Boy Storage逆变器
查看>>
云路由 vyatta 体验(二)NAT
查看>>
C++、Java、JavaScript中迭代器的用法
查看>>
jackson not marked as ignorable异常
查看>>
Python version 2.7 required, which was not foun...
查看>>
android 模拟器 横竖屏切换
查看>>
centos7.3 下安装 composer,解决Failed to decode zlib stream错误
查看>>
Git 常用命令
查看>>
在Postgres 数据库中生成36位的UUID代码
查看>>
小黑小波比.功能测试登录用户
查看>>
Java enum用法详解
查看>>
去云端的多条途径
查看>>
Docker容器从一知半解到入门
查看>>
关于“方法参数”
查看>>