一种改进Harris算子的角点特征检测研究-含Matlab代码

news2024/9/23 9:31:35

⭕⭕⭕⭕ 目 录 ⭕⭕⭕⭕

  • ✅ 一、引言
  • ✅二、Harris角点检测算法
  • ✅三、角点检测实验验证
  • ✅四、参考文献
  • ✅五、Matlab代码获取

✅ 一、引言

将图像中灰度变化剧烈或者在图像边界上曲率变化较大的点称为角点。角点检测对于工件图像的特征点定位有着重要作用,在进行工件的特征提取时,角点检测能够精确定位特征点,提高工件图像的特征提取精度。

角点是图像中的一个重要的局部特征,决定了图像中关键区域的形状,体现了图像中重要的特征信号,所以在目标识别、图像匹配、图像重构等方面都具有十分重要的意义。

在进行角点检测过程中,可能会受到噪声干扰以及图像灰度变化的影响,从而导致角点检测结果不准确。而Harris角点检测算法不仅可以有效地克服这些问题,而且计算量较少,实现简单,使得检测结果更加准确。

✅二、Harris角点检测算法

在Harris算法检测过程中,将图像I(x,y)在点(u,v)平移(x,y)产生的灰度变化函数表示为

在这里插入图片描述
式中:ω高斯函数。

函数E(x,y)值在高斯窗口内进行任意方向的移动时,若未产生任何变化或者有微小变化,则为非角点;当函数E(x,y)产生特别大或者特别小的变化时,则将该点定义为角点。

在点(u,v)处对函数E(x,y)进行一阶泰勒展开,则函数E(x,y)可改写成下式

在这里插入图片描述

其中,A,B,C 是二阶方向微分的近似,定义如下

在这里插入图片描述

其中,X,Y 分别表示在x和y两个方向上的一阶梯度值:

在这里插入图片描述

式中:h(x,y)高斯滤波。

将式(3)代入式(2),可得到下式

在这里插入图片描述

其中,M 为自相关矩阵,表示如下

在这里插入图片描述

计算自相关矩阵M特征值过程过于繁复,所以Harris算法使用角点响应函数进行角点质量判断,如

在这里插入图片描述

式中:Det(M)矩阵M行列式的值,Det(M)=AB-C^2;

k 常数系数;

Tr(M)矩阵M的迹,Tr(M)=A+B。

若提前设置的阈值小于等于某点的 R(x,y)值,该点则为角点。

Harris角点检测流程如图1所示。

在这里插入图片描述

图1 Harris角点检测流程图

1)获取齿轮工件原图的灰度图像,计算其在x 和y 方向上的梯度值X 和Y;

2)用高斯函数对工件灰度图进行滤波处理,并计算出自相关矩阵 M ;

3)将设定的阈值与计算得到的每个像素点的响应值进行比较,并判定该点是否为候选角点;

4)利用非极大值抑制对3)中所获得的候选角点进行处理,以确定最终的角点。

✅三、角点检测实验验证

在 MATLAB图像处理工具箱中提供的corner函数可以直接用来检测图像的Harris角点特征。下面对使用改进Harris函数和corner函数计算的结果进行对比,对比效果如图2所示。

在这里插入图片描述

图2 改进Harris算法与corner函数的角点检测对比

✅四、参考文献

[1]权威,黄华.多特征方向偏好轮廓提取算法[J].计算机辅助设计与图形学学报,2018,30(1):100-106.
[2]陈琛.刀具图像轮廓特征检测[D].西安:西安工业大学,2013.

✅五、Matlab代码获取

上述Matlab,可私信博主获取。


博主简介:研究方向涉及智能图像处理、深度学习等领域,先后发表过多篇SCI论文,在科研方面经验丰富。任何与算法程序科研方面的问题,均可私信交流讨论


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

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

相关文章

MySQL高级学习笔记(一)

文章目录MySQL高级学习笔记(一)1.索引1.1索引概述1.2索引优势劣势1.3索引结构1.3.1BTREE 结构1.3.2BTREE 结构1.3.3MySQL中的BTree1.4索引分类1.5索引语法1.5.1 创建索引1.5.2 查看索引1.5.3 删除索引1.5.4 ALTER命令1.6 索引设计原则2.视图概述2.1创建或者修改视图2.2查看视图…

【python3】5.正则表达式

本学习内容总结于莫烦python:5.正则表达式 https://mofanpy.com/tutorials/python-basic/interactive-python/regex5.正则表达式 本章较为重要,单独拿出来成章了 正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。 …

【数据结构】栈和队列的实现(C语言)

前言 栈和队列都是重要的线性结构,即在使用层面上收到限制而发挥特殊作用的线性表。掌握这两种结构在不同情景下亦会发挥重要作用。 栈 定义 栈保持着后进先出的原则,正因如此在插入数据的时候要求只能从一段插入,称为栈顶;相反另…

Arduino与Proteus仿真实例-电子相册仿真

电子相册仿真 本次实例将仿真如何从SD卡读取BMP格式图像并在ILI9341驱动器的LCD显示屏上显示。 1、仿真电路原理图 在仿真电路原理图中,SD卡通过SPI方式连接,ILI9341 LCD显示屏也是通过SPI方式连接。SD卡的CS引脚连接Arduino Mega2560的SS引脚(Pin10),显示屏的CS引脚连接…

竞赛——【蓝桥杯】2022年11月第十四届蓝桥杯模拟赛第一期Java

1、二进制位数 问题描述 十进制整数 2 在十进制中是 1 位数,在二进制中对应 10 ,是 2 位数。 十进制整数 22 在十进制中是 2 位数,在二进制中对应 10110 ,是 5 位数。 请问十进制整数 2022 在二进制中是几位数? 答案…

数据管理技术的发展经历了哪三个阶段

数据管理技术是指对数据进行分类、组织、编码、查询和维护,它是数据处理的中心问题; 随着计算机技术的不断发展,在应用需求的推动下,在计算机硬件、软件发展的基础上数据管理技术经历了人工管理、文件管理、数据库管理3个阶段。每…

CircRNA+代谢组如何冲击22分高分文章?

发表期刊:Cell Metabolism 影响因子:22.415 发表时间:2019年5月30日 合作单位:中国科学技术大学 Biotree协助客户中国科学技术大学吴缅教授和安徽医科大学胡汪来教授及其研究团队在国际顶尖期刊《Cell Metabolism》上发表名为…

跑通yolox-s官方源码(可与yolov5s做对比试验)

目录(一)一些参考链接(二)YOLOX训练自己的数据集,修改相应代码0. 自己的数据集文件夹排布1. 修改类别标签和数量1.1 修改类别标签 yolox/data/datasets/voc_classes.py1.2 修改类别数量 exps/example/yolox_voc/yolox_…

Quartus 实例应用(2)——创建设计工程

Quartus II 简易教程一、概念回顾二、创建设计工程2.1 创建工程2.2 新建HDL文件三、编译工程四、下载一、概念回顾 什么是综合?什么是设计? 答:综合就是编译,设计就是布局布线。 二、创建设计工程 2.1 创建工程 打开Quartus I…

用vuex对token/refresh_token 进行管理以及处理token过期问题

这里介绍对token的处理 问题1:token数据或者其他数据,存在vuex仓库中,刷新会丢失状态 。 问题2:数据只存在本地,数据变化了,相关的视图并不会更新。 Vuex 容器中的数据只是为了方便在其他任何地方能方便的获…

【EC200U】 基站定位

EC200U 基站定位什么是基站基站定位cellLocator - 基站定位调用获取坐标token 秘钥申请运行测试我们之前玩了GPS了【EC200U】GPS定位 GPS 精度高,但比较费电,首次搜索卫星定位时间比较长,当卫星信号覆盖不好,比如室内,…

gdb-dashboard的简单使用

问题描述 众所周知,随着IDE的普及,越来越多的人不习惯命令行调试,但是Linux开发又绕不开GDB,所以有大佬开发了程序用来显示常见的一些调试参数,gdb-dashboard是比较热门的程序之一。附链接。 使用参考 神仙GDB调试工…

Golang入门笔记(7)—— 函数 func

函数是什么? 函数:为完成某一功能的程序的语句指令的集合。 感觉重头戏逐渐到来了,让我们好好的,认真对待它吧!为什么要使用函数? 为了提高代码的复用,减少代码的冗余,提高代码维护性…

前端框架 React 学习总结

目录 一、React在HTML里的运用 二、React框架的常用操作 1、JSX基础语法规则 2、state数据的使用 3、生命周期 4、数据的双向绑定与Ref 5、PropTypes验证规则 6、React里的插槽 7、错误边界 8、直接操作refs元素 9、高阶组件的运用案例 10、性能优化 11、Hook生命…

Linux中安装mysql8

一、下载MySQL到 /usr/local/src 1、打开官网下载界面 MySQL :: Download MySQL Community Server (Archived Versions) 2、选择某个版本的下载地址 以https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.30-linux-glibc2.12-x86_64.tar.xz这个地址作为例子 …

Kubernetes 系统化学习之 持久存储篇(五)

1. ConfigMap ConfigMap 是一种 API 对象,用来将非机密性的数据保存到键值对中。使用时,Pods 可以将其用作环境变量、命令行参数或者存储卷中的配置文件。ConfigMap 的主要作用就是为了让镜像和配置文件解耦,以便实现镜像的可移植性和可复用性…

day07 Elasticsearch搜索引擎3

day07 Elasticsearch搜索引擎3 1、数据聚合 聚合(aggregations)可以让我们极其方便的实现对文档数据的统计、分析、运算。例如: 什么品牌的手机最受欢迎?这些手机的平均价格、最高价格、最低价格?这些手机每月的销售…

java设计模式之观察者模式

一:观察者模式 1.什么是观察者模式? 观察者模式是一种行为设计模式, 允许你定义一种订阅机制, 可在对象事件发生时通知多个 “观察” 该对象的其他对象。 观察者模式的基本介绍 又被称为发布-订阅(Publish/Subscribe&#xff09…

从阿里云容器攻防矩阵API安全生命周期,看如何构建金融安全云原生平台

【编者按】云原生技术正在助力银行通过差异化业务进行创新,却也带来了由于研发/运维人员对新架构不熟悉所导致的基础设施风险、业务风险及数据暴露风险。如何在飞速更迭的技术环境下保持业务持续发展,同时保证业务整体的安全性,满足不断增强的…

设计模式-装饰器模式

装饰器模式也称为包装模式是指在不改变原有对象的基础上,将功能附加到对象上,提供比继承更有弹性的替代方案(扩展原有对象的功能),属于结构型模式 装饰器模式的核心是功能扩展,使用装饰器模式可以透明且动态的扩展类的功能 装饰器模式通用UML类图 主要角…