角点检测及MATLAB实现

一、角点简介

       角点通常指的是两条直线构成角时的交点。‌在更广泛的应用中,‌角点这一概念也被扩展到数字图像处理领域,‌其中角点被定义为图像中物体轮廓线的连接点,‌这些点在某方面属性特别突出,‌即在某些属性上强度最大或者最小的孤立点、‌线段的终点。‌从图像分析的角度来看,‌角点可以是两个边缘的点,‌或者是邻域内具有两个主方向的特征点如图一所示。这种定义在图像处理中尤为重要,‌因为它涉及到对图像边缘的边缘提取质量的好坏,‌且对待检测目标的局部变化比较敏感。

                                                             图1     不同类型的角点‌‌

    角点是图像很重要的特征,对图像图形的理解和分析有很重要的作用。角点检测是计算机视觉中的一个重要技术,它用于识别图像中具有明显特征点的位置,这些点在图像中通常代表物体的拐角、边缘或显著特征。

二、常用的角点检测算法

     常用的角点检测算法可归纳为3类:基于灰度图像的角点检测、基于二值图像的角点检测、基于轮廓曲线的角点检测。

     基于灰度图像的角点检测主要依赖于计算边缘的曲率或考虑像素邻域点的灰度变化来判断角点。这种方法包括基于梯度的方法、基于模板的方法以及基于梯度模版组合的方法。

     基于二值图像的角点检测将二值图像作为单独的检测目标,可以使用各种基于灰度图像的角点检测方法。

      基于轮廓曲线的角点检测通过角点强度或曲线曲率提取角点,这种方法算法简单、位置准确,由‌Smith和‌Brady提出。

三、角点检测的MATLAB实现

       MATLAB可以用corner直接调用Harris角点检测算法,也可以使用detectMinEigenFeatures使用最小特征值算法进行角点检测,下面以corner直接调用Harris角点检测算法进行讲解。Harris角点检测算法是基于图像灰度的方法,通过计算图像中的每个像素点的Harris响应值来确定角点。corner角点检测的用法建议可以通过help corner或doc corner进行学习。下面给出角点检测代码:

clear all;%清除所有变量

close all;%关闭所有图形窗口

clc;      %清屏

I=imread('.\Pic1.png');   %读入彩色图像

Igray=rgb2gray(I);        %彩色图像转灰度图像

C = corner(Igray,'harris',10);%Harris角点检测   

figure,

subplot(1,2,1),imshow(I),title('原始坐标');

subplot(1,2,2),imshow(I);

hold on

plot(C(:,1), C(:,2), '*', 'Color', 'b')

title('检测到的角点和坐标')                 

disp('检测到的角点坐标:')          %屏幕显示提示

disp(C)                            %屏幕显示检测的角点坐标

四、部分运行结果

如果想在图像中显示角点坐标,可以在上面程序中加上几行程序即可:

for k=1:length(C)
    text(C(k,1)-35,C(k,2)-35,sprintf('(%4d,%4d)',C(k,1),C(k,2)));  %巧妙利用格式化输出,进行角点的坐标显示
end
title('检测到的角点和坐标')    

修改后的程序运行结果如下:

五、原始图像

      如果大家觉得本文对大家学习研究有帮助,请收藏、点赞和关注,谢谢大家!

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

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

相关文章

为什么不要碰自媒体

要是失业了,搞自媒体,可行吗?毫无希望! 如今的自媒体早卷得不成样子了,很难再有机会,根本原因在于几乎没有增量用户的同时,存量用户也不再有剩余时间,全量用户的时间早已被几个自媒…

空间计算开发:Volu的集成开发工具包

在空间计算技术迅速发展的今天,VR和AR项目的开发需求日益增长。Volu,一个面向空间计算赛道的开发者工具,正致力于简化这一过程。本文将深入探讨Volu如何通过其集成环境,为开发者提供一站式的解决方案。 一、定位:空间计算的得力助手 Volu定位为一个专为空间开发设计的集…

verilog基础语法入门

文章目录 前言一、模块定义1. 模块声明2. 端口定义3. 信号类型声明4. 逻辑功能定义 二、运算符与表达式1. 算术运算符2. 逻辑运算符3. 位运算符4. 关系运算符5. 等式运算符6. 缩减运算符7. 移位运算符8. 条件运算符9. 位拼接运算符 三、语句1. 赋值语句2. 块语句3. 条件语句4. …

HarmonyOS NEXT学习——@Styles、@Extend、stateStyles

Styles装饰器 定义组件重用样式 仅支持通用属性和通用事件不支持参数可以定义全局和组件内使用,全局使用需要加function // 全局 Styles function functionName() { ... }// 在组件内 Component struct FancyUse {Styles fancy() {.height(100)} }组件内Styles的优…

C# 之工控机数据类型 高低位(大小端)、BitConverter、IsLittleEndian、字节数组转换(高低位)

八种基本数据类型:byte、short、int、long、float、double、boolean、char byte 8位、有符号的以二进制补码表示的整数 min : -128(-2^7) max: 127(2^7-1) default: 0 对应包装类:Byte short 16位、有符号的以二进制补码表示…

keil中GD32 MCU IAP中APP的存储地址如何设置?

前面和大家聊过什么是IAP,那么IAP中APP的存储地址该如何设置呢? 以keil为例,打开工程的option选项卡: 将IROM1中的地址改为你想要保存的位置,比如0x08008000开始的位置: 这样通过keil烧录,程序…

光伏电站设计的关键部分

光伏设计,作为光伏发电项目成功实施的前提与基础,其科学性与合理性直接关乎项目的发电效率、经济性及环境适应性。本文将从选址规划、系统设计、组件选型、电气布局及运维考虑等几个方面,探讨光伏设计的关键部分。 一、选址踏勘 光伏项目踏勘…

钡铼Profinet、EtherCAT、Modbus、MQTT、Ethernet/IP、OPC UA分布式IO系统BL20X系列耦合器

BL20X系列耦合器是钡铼技术开发的一款用于分布式I/O系统的设备,专为工业环境下的高速数据传输和远程设备控制而设计,支持多种工业以太网协议,包括Profinet、EtherCAT、Modbus、MQTT、Ethernet/IP和OPC UA等。如果您正在考虑部署BL20X系列耦合…

c++人脸识别项目,满足工业界对于人脸识别系统的高标准需求!(一)

目录 引言: 环境构建(本文使用cmake,开发环境ubuntu22.04,IDE为clion) 项目文件构造 CMakeLists.txt编写 简单头文件 最初成员函数实现 add函数实现思路 search函数实现思路 main函数简单实现 思路 添加环…

Spring Boot集成qwen:0.5b实现对话功能

1.什么是qwen:0.5b? 模型介绍: Qwen1.5是阿里云推出的一系列大型语言模型。 Qwen是阿里云推出的一系列基于Transformer的大型语言模型,在大量数据(包括网页文本、书籍、代码等)进行了预训练。 硬件要求:…

Spring Web MVC入门(2)(请求2)

目录 1.传递JSON数据 传递JSON对象 2.获取URL中的参数PathVariable 3.上传文件RequestPart 4.获取Cookie/Session (1)获取Cookie 简洁获取Cookie (2)获取Session Sesson读取 简洁获取Session(1) 简洁获取Session(2) 5.获取Header 简洁获取Header 1.传递JSON数据 J…

大模型计算及GPU相关概念记录

浮点运算 算力最基本的计量单位是 FLOPS,英文 Floating-point Operations Per Second,即每秒执行的浮点运算次数。浮点运算其实就是带小数的加减乘除运算。 算力的计量单位,除了 FLOPS,从小到大还有: KFLOPS&#x…

新建一个git仓库并且把已有项目推送到git远程仓库

总贴 1. 创建一个空项目,不会看新建仓库 2. 克隆这个项目到某个文件夹去,比如我想克隆到我的E盘的code下面 3. 我的这个文件夹下面是有东西的,一点都不影响 . 4. 用命令行进入这个文件夹 命令行已经显示了已经在E盘下面code文件夹, 不会…

【TortoiseGitPlink提示输入密码解决方法】

问题:TortoiseGitPlink提示输入密码 解决方案 参考链接:TortoiseGitPlink提示输入密码解决方法 但后半部分和上文不同,点击图中 Load Putty Key 即可。

CrowdStrike更新导致蓝屏事件

1. 事件描述 网络上发现大量企业Windows系统主机出现BSOD(Bluescreen of Death)并循环重启。 观察蓝屏信息,发现造成蓝屏的程序均是csagent.sys,该程序为CrowdStrike终端安全软件组件。 经确认,CrowdStrike是造成本…

第5章 单片机的中断系统

5.1 中断的概念 5.2 中断控制系统 5.3 中断处理过程 5.4 中断的编程及应用举例 5.1 中断的概念 日常生活的中断现象举例 中断是指在突发事件到来时先中止当前正在进行的工作,转而去处理突发事件。待处理完成后,再返回到原先被中止的工作处&#xff…

【STM32】LED闪烁LED流水灯蜂鸣器(江科大)

LED正极:外部长脚、内部较小 LED负极:外部短脚、内部较大 LED电路 限流电阻:保护LED,调节LED亮度(本实验用面包板为了方便,省去了限流电阻,设计电路时要加上) 左上图:低…

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第三十六章 Linux驱动初探

i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

阿尔泰科技工业电脑IPC-8363工控机

概述: IPC-8363是一款支持 LGA 1200 Intel 10th/11th Generation Core™ i9/i7/i5/i3, Celeron and Pentium processor 的工业电脑。配置2组独立 SO-DIMM DDR4 2666/2933MHz内存,最大可扩展至128GB。 主要技术指标: 产品图示: 系…

Codeforces Round 672 (Div. 2) C1. Pokémon Army (easy version) (DP)

不知道能不能用贪心,反正我是没看出来,所以用DP求解。 首先分析一下题意,我们要在一段序列中取出一段子序列,然后让这段子序列按顺序逐个先加后减最终得到的结果最大。 如果要用DP,那么我们首先就要思考怎么表示状态…