热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

matlabsusan,matlab练习程序(SUSAN检测)

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

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

主要思想就是:首先做一个和原图像等大的目标图像。然后用一个圆形的模板,用模板去遍历原图像每个像素,把模板内的每个像素都和模板中心像素比较,如果灰度小于一个阈值,那么就对目标图像当前和原图像相同位置的像素加一,直到结束。目标图像中在原图像是角点的位置就会取局部极小,所以做一个反向的相减。img=max(img)-img,if img

代码如下:

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&#43;(q-4)^2<&#61;12  %在其中筛选&#xff0c;最终模板类似一个圆形

%   usan(k)&#61;usan(k)&#43;exp(-(((img(i,j)-tmp(p,q))/t)^6));

if abs(img(i,j)-tmp(p,q))

c&#61;c&#43;1;

end

end

end

end

usan&#61;[usan c];

end

end

g&#61;2*max(usan)/3; %确定角点提取的数量&#xff0c;值比较高时会提取出边缘&#xff0c;自己设置

for i&#61;1:length(usan)

if usan(i)

usan(i)&#61;g-usan(i);

else

usan(i)&#61;0;

end

end

imgn&#61;reshape(usan,[n-6,m-6])&#39;;

figure;

imshow(imgn)

%非极大抑制

[m n]&#61;size(imgn);

re&#61;zeros(m,n);

for i&#61;2:m-1

for j&#61;2:n-1

if imgn(i,j)>max([max(imgn(i-1,j-1:j&#43;1)) imgn(i,j-1) imgn(i,j&#43;1) max(imgn(i&#43;1,j-1:j&#43;1))]);

re(i,j)&#61;1;

else

re(i,j)&#61;0;

end

end

end

figure;

imshow(re&#61;&#61;1);

a27f956e7c6b6aae7fdd9bdd53b349f7.png

原图

91353fbebf3056856016af7b10940b40.png

未进行非极大抑制&#xff0c;似乎就是边缘了

67337ca0dcaa1826d14e097d5a3868ba.png

进行极大值抑制后的最后的结果



推荐阅读
  • 本文将详细介绍如何使用剪映应用中的镜像功能,帮助用户轻松实现视频的镜像效果。通过简单的步骤,您可以快速掌握这一实用技巧。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 尽管某些细分市场如WAN优化表现不佳,但全球运营商路由器和交换机市场持续增长。根据最新研究,该市场预计在2023年达到202亿美元的规模。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 本文探讨了如何在编程中正确处理包含空数组的 JSON 对象,提供了详细的代码示例和解决方案。 ... [详细]
  • Ralph的Kubernetes进阶之旅:集群架构与对象解析
    本文深入探讨了Kubernetes集群的架构和核心对象,详细介绍了Pod、Service、Volume等基本组件,以及更高层次的抽象如Deployment、StatefulSet等,帮助读者全面理解Kubernetes的工作原理。 ... [详细]
  • 本文详细介绍了美国最具影响力的十大财团,包括洛克菲勒、摩根、花旗银行等。这些财团在历史发展过程中逐渐形成,并对美国的经济、政治和社会产生深远影响。 ... [详细]
  • andr ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • Win11扩展卷无法使用?解决扩展卷灰色问题的指南
    本文详细介绍了在Windows 11中遇到扩展卷灰色无法使用时的解决方案,帮助用户快速恢复磁盘扩展功能。 ... [详细]
  • 武汉大学计算机学院研究生入学考试科目及专业方向
    武汉大学计算机学院为考生提供了多个硕士点,涵盖计算机科学与技术、软件工程、信息安全等多个领域。考研科目包括思想政治理论、英语一或二、数学一或二以及专业基础课程。具体的专业方向和考试科目详见正文。 ... [详细]
  • 本文介绍了如何通过扩展 UnityGUI 创建自定义和复合控件,以满足特定的用户界面需求。内容涵盖简单和静态复合控件的实现,并展示了如何创建复杂的 RGB 滑块。 ... [详细]
  • Java编程实践:深入理解方法重载
    本文介绍了Java中方法重载的概念及其应用。通过多个示例,详细讲解了如何在同一类中定义具有相同名称但不同参数列表的方法,以实现更灵活的功能调用。 ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
author-avatar
秋忆道格
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有