【角点检测】 基于各向异性高斯方向导数滤波器实现图像角点检测附matlab代码

news2025/7/20 9:49:48

1 内容介绍

为了改进噪声鲁棒性和定位准确性,利用各向异性高斯方向导数滤波器,提出多方向角点检测算法.该算法利用一组各向异性高斯方向导数滤波器对输入图像进行卷积处理得到各个方向的滤波器响应.对于每个像素点,利用它与周围邻近像素点的滤波器响应的相关信息构造局部自相关矩阵,然后根据自相关矩阵归一化特征值及像素点处各方向滤波器响应,作阈值处理和非极大值抑制处理判定像素点是否为角点.实验结果表明,在无噪声和噪声的条件下,提出的检测方法与各向同性高斯核函数的Harris算法相比,配准角点数均提高6.0%左右,具有更好的检测性能.

2 部分代码

function varargout = ch3(varargin)

% CH3 M-file for ch3.fig

%      CH3, by itself, creates a new CH3 or raises the existing

%      singleton*.

%

%      H = CH3 returns the handle to a new CH3 or the handle to

%      the existing singleton*.

%

%      CH3('CALLBACK',hObject,eventData,handles,...) calls the local

%      function named CALLBACK in CH3.M with the given input arguments.

%

%      CH3('Property','Value',...) creates a new CH3 or raises the

%      existing singleton*.  Starting from the left, property value pairs are

%      applied to the GUI before ch3_OpeningFunction gets called.  An

%      unrecognized property name or invalid value makes property application

%      stop.  All inputs are passed to ch3_OpeningFcn via varargin.

%

%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one

%      instance to run (singleton)".

%

% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help ch3

% Last Modified by GUIDE v2.5 10-Oct-2021 08:46:09

% Begin initialization code - DO NOT EDIT

gui_Singleton = 1;

gui_State = struct('gui_Name',       mfilename, ...

                   'gui_Singleton',  gui_Singleton, ...

                   'gui_OpeningFcn', @ch3_OpeningFcn, ...

                   'gui_OutputFcn',  @ch3_OutputFcn, ...

                   'gui_LayoutFcn',  [] , ...

                   'gui_Callback',   []);

if nargin & isstr(varargin{1})

    gui_State.gui_Callback = str2func(varargin{1});

end

if nargout

    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

    gui_mainfcn(gui_State, varargin{:});

end

% End initialization code - DO NOT EDIT

% --- Executes just before ch3 is made visible.

function ch3_OpeningFcn(hObject, eventdata, handles, varargin)

% This function has no output args, see OutputFcn.

% hObject    handle to figure

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

% varargin   command line arguments to ch3 (see VARARGIN)

% Choose default command line output for ch3

handles.output = hObject;

% Update handles structure

guidata(hObject, handles);

% UIWAIT makes ch3 wait for user response (see UIRESUME)

% uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line.

function varargout = ch3_OutputFcn(hObject, eventdata, handles)

% varargout  cell array for returning output args (see VARARGOUT);

% hObject    handle to figure

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure

varargout{1} = handles.output;

% --------------------------------------------------------------------

function Files_Callback(hObject, eventdata, handles)

% hObject    handle to Files (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

% --------------------------------------------------------------------

function Open_Callback(hObject, eventdata, handles)

% hObject    handle to Open (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

[filename,pathname]=uigetfile({'*.bmp'},'选择图片');

global str;

if isequal(filename,0)

    disp('Users Selected Canceled');

else

str=[pathname filename];

handles.str=str;

guidata(hObject,handles);

im = imread(str);

axes(handles.OImageDisplay);

imshow(im);

end;

% --------------------------------------------------------------------

function det_Callback(hObject, eventdata, handles)

% hObject    handle to det (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

% --------------------------------------------------------------------

function Hardet_Callback(hObject, eventdata, handles)

% hObject    handle to Untitled_2 (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

%清屏,所以变量置零

%记录检测的角点数

count=0;

for i1=2:height-1;

  for j1=2:width-1

  % 在3*3窗口范围内寻找局部最大值点作为检测出的角点

  a=[R(i1-1,j1-1) R(i1-1,j1) R(i1-1,j1+1) R(i1,j1-1) R(i1,j1+1) R(i1+1,j1-1) R(i1+1,j1) R(i1+1,j1+1)];

  if R(i1,j1)>0.01*Rmax && R(i1,j1)>max(a)

  Result(i1,j1)=1;

  count=count+1;

  end

  end

end

% 纪录角点位置

[posr,posc]=find(Result==1);

 % 输出角点个数  

%fprintf('检测到的角点数count=%d\n',count);

set(handles.text3,'String',num2str(count));

axes(handles.DetImage);

imshow(image);   

hold on;

%角点处画+

plot(posc,posr,'r+');

3 运行结果

4 参考文献

[1]周文天 李军民 唐慧娟 李科. 基于高斯差分滤波和形态学滤波的Harris角点检测算法[J]. 西华大学学报:自然科学版, 2014, 33(6):4.

[2]章为川, 张智, 赵强,等. 基于各向异性高斯方向导数滤波器的角点检测[J]. 西安工程大学学报, 2014, 28(4):5.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机、雷达通信、无线传感器等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/7980.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Revit导入Cad图元丢失不正确解决和链接CAD功能

一、导入Cad图元丢失或者图元不正确解决: 导入Cad的时候我们会遇到导入图元丢失或者图元不正确等情况,具体解决如下 01.天正画图时一定要导出t3格式,因为Revit只识别t3版本 02.Cad画图时,最后一定要将图元炸开,然后在框…

NVIDIA NCCL 源码学习(五)- 路径计算

上节NCCL完成了对机器PCI系统拓扑的建图,其中建好的图如下所示,其中GPU之间是通过NVLink连接起来的 为了方便之后的搜索channel,接下来NCCL会先计算GPU和NIC节点到其他任意节点之间的最优路径,以及对应的带宽,即最优路…

Vue3基础——Composition API初体验、合成API详解、setup、Provide 和 inject

文章目录p19 组合式 API (Composition API)初体验p20 Vue3合成API详解p21 setup中使用生命周期函数p22 Provide 和 injectp19 组合式 API (Composition API)初体验 <template><h1 click"add">计数count: {{ count }}</h1><h1 click"incre…

51单片机笔记:定时器/计数器

单片机笔记 定时器/计数器 定时器/计数器的结构 AT89S51内部两个16位定时器/计数器&#xff1a;T0(P3.4)&#xff0c;T1(P3.5)&#xff0c;定时器/计数器T0由特殊寄存器TH0,TL0构成&#xff0c;T1由特殊功能寄存器TH1&#xff0c;TL1构成 T0,T1都有定时器和计数器两种工作模…

DuckDB学习-初识tpcds

DuckDB学习-1 文章目录DuckDB学习-1跑TPC-DS编译DuckDB支持TPC-DS扩展执行数据生成及查询TPC-DS简单分析&#xff08;v3.2.0&#xff09;事实表维度表跑TPC-DS 编译DuckDB支持TPC-DS扩展 下载代码&#xff0c;然后进源码目录&#xff0c;执行下面两个步骤。 export BUILD_TPC…

Word控件Spire.Doc 【文本】教程(19) ;如何在 C#、VB.NET 中通过 Word 中的正则表达式查找和替换文本

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下&#xff0c;轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具&#xff0c;专注于创建、编辑、转…

【附源码】计算机毕业设计JAVA车辆调度管理系统

【附源码】计算机毕业设计JAVA车辆调度管理系统 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; JAVA my…

计算机毕业设计ssm+vue基本微信小程序的健康食谱交流共享平台

项目介绍 当今社会健康食谱交流共享买卖是必不可少的,人们不管走到哪里都需要有一个健康的身体,有一个强迫的体质,所以健康食谱交流共享市场也是非常火爆&#xff01;不管是健康食谱交流共享公司或者是个人都需要一套完整的管理系统来掌握整个市场信息。针对这一需求,本文设计并…

一步一步教你安装部署 Jenkins,不信你安不上

1、可以去官网 Jenkins 下载jenkins.war包 这里有个坑&#xff1a;jenkins下载的版本需要和jdk版本匹配 我的jdk是1.8,这里选择jenkins版本为2.332.4&#xff0c;下面的链接是jenkins.war安装包直接用 链接&#xff1a;百度网盘 请输入提取码 提取码&#xff1a;8bxy 2、使…

【C++】模板template

前言&#xff1a;本教程使用到的工具是vs2010&#xff1b; 目录 为什么要使用模板&#xff1f; template模板 函数模板 类的模板 template模板的本质 总结 为什么要使用模板&#xff1f; 我们先来大概了解一下模板的概念&#xff0c;下面是菜鸟教程对于模板给出的解释&am…

每天5分钟快速玩转机器学习算法:带有核函数的支持向量机模型

本文重点 硬间隔和软间隔都是在说样本的完全线性可分或者大部分样本点的线性可分。但我们可能会碰到的一种情况是样本点不是线性可分的,比如: 那么这个时候支持向量机软硬不吃,此时要想解决这个问题,我们可以使用一种魔法,我们将他们映射到一个高维空间中,然后再高维空…

链表相关OJ及方法总结

目录​​​​​​​ 第一类&#xff1a;改变链接关系 第二类&#xff1a;快慢指针 第一类&#xff1a;改变链接关系 1. 删除链表中等于给定值 val 的所有结点。 (1)原地删除 struct ListNode* removeElements(struct ListNode* head, int val){if(headNULL){return head…

一般人我劝你还是要不自学软件测试.....

软件测试基础真的很简单&#xff0c;是个人稍微认真点都能懂&#xff0c;这就是好多人说软件测试简单、易懂、好学&#xff0c;然后就是一顿浮夸的言论&#xff0c;误导那些小白&#xff0c;这里我就给那些轻浮的人泼一桶冷水&#xff0c;懂和学会是一码事吗&#xff1f; 这里…

如何高效填写软件测试缺陷报告?

软件缺陷的描述是软件缺陷报告的基础部分&#xff0c;需要使用简单、准确、专业的术语来描述缺陷。否则&#xff0c;它就会含糊不清&#xff0c;可能会误导开发人员&#xff0c;影响开发人员的效率&#xff0c;也会影响测试人员自身的声誉&#xff0c;准确报告缺陷是非常重要的…

[附源码]java毕业设计基于SSM的酒店管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

高新技术企业的认定条件(三)

十、企业创新能力评价 企业创新能力主要从知识产权、科技成果转化能力、研究开发组织管理水平、企业成长性等四项指标进行评价。各级指标均按整数打分&#xff0c;满分为100分&#xff0c;综合得分达到70分以上&#xff08;不含70分&#xff09;为符合认定要求。具体分值如下&…

opencv4.5.5安装的坑

opencv4.5.5安装的坑 Package opencv was not found in the pkg-config search path. Perhaps you should add the directory containing opencv.pc’ to the PKG_CONFIG_PATH environment variable No package ‘opencv’ found 我把对应目录的opencv4.pc修改成了opencv.pc,运…

记录<一个多SDK中引入ffmpeg出现的top1的crash问题>解决方案

文章目录一. 背景二. 分析、定位crash源代码三. 分析汇编四. 分析源码五. 思考一. 背景 App从某个版本开始突然收到一例高频crash&#xff0c;&#xff0c;crash信息如下 crash栈如下&#xff1a; crash栈信息很少&#xff0c;只能看出是线程刚启动就crash了&#xff0c;内存…

Java【类和对象】,你还没对象?我教你new一个!

文章目录前言一、初识面向对象1.什么是面向对象2.面向对象过程二、类的定义与使用1.什么是类2.如何定义类3.示例三、类的实例化1.什么是类的实例化2.类和对象的说明四、this引用1.为什么要有this引用第一种情况第二种情况2.什么是this引用3.this引用的特征五、对象的构造及初始…

ubuntu上运行make menuconfig两种报错

1&#xff09; 如果如上报错&#xff0c;没有target&#xff0c;这是因为运行这个make的时候没在对应的目录下运行&#xff0c;通常是有make的目录&#xff0c;这种系统性的编译的&#xff0c;则是应该在代码的根目录。在根目录下用根目录下的make。 2&#xff09;然后我来到根…