matlab练习程序(SUSAN检测)
2024-10-15 07:02:07
matlab练习程序(SUSAN检测)
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))<t %判断灰度是否相近,t是自己设置的
c=c+1;
end
end
end
end
usan=[usan c];
end
end g=2*max(usan)/3; %确定角点提取的数量,值比较高时会提取出边缘,自己设置
for i=1:length(usan)
if usan(i)<g
usan(i)=g-usan(i);
else
usan(i)=0;
end
end
imgn=reshape(usan,[n-6,m-6])';
figure;
imshow(imgn) %非极大抑制
[m n]=size(imgn);
re=zeros(m,n);
for i=2:m-1
for j=2:n-1
if imgn(i,j)>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
end
end figure;
imshow(re==1);
后两幅比第一幅小,我没进行边缘扩展。
原图
未进行非极大抑制,似乎就是边缘了
最后结果
最新文章
- T2 Func<;in T1,out T2>;(T1 arg)
- Android Fragment学习笔记(二)----Fragment界面添加和管理
- SSH使用教程( Bitvise Tunnelier+Chrome+Proxy Switchy)
- 【pyQuery分析实例】分析体育网冠军联盟比赛成绩
- java-pfx文件转换成16进制内容
- 慕课网-安卓工程师初养成-3-8 Java中的条件运算符
- struts2在web.xml中配置详情
- python turtle,random,math
- LogMaster4Net
- c++(hash表)
- Linux exec与文件描述符
- Vim配置及使用技巧
- jdk 动态代理源码分析
- (暴力求解)Encoding HDU1020
- 自动化测试系列:自动化测试KPI考评的一种方法
- 063 日志分析(pv uv 登录人数 游客人数 平均访问时间 二跳率 独立IP)
- idea上将项目上传到github
- JAVA中的CountDownLatch、CyclicBarrier、Semaphore的简单测试
- 制作MacOS 系统启动盘
- NLTK和Stanford NLP两个工具的安装配置
热门文章
- hdu2476 String painter(区间dp)
- hdu1159 最长公共子序列
- DSP using MATLAB示例 Example3.5
- IComparer 指定排序。
- ASCIL码和字符的转换
- Codeforces Round #345 (Div. 2)
- BFS(判断状态) HDOJ 3533 Escape
- LIS(n^2) POJ 2533 Longest Ordered Subsequence
- js点击a链接弹出alert对话框
- regex: add quote for words in Notepad++