角点检测及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('检测到的角点和坐标')

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

五、原始图像

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

相关推荐
点心的游戏开发世界1 分钟前
GDScript 入门笔记(十三):字符串操作
开发语言·笔记·游戏引擎·godot
matlab代码6 分钟前
matlab车牌出入库识别系统停车场演示【源码61期】
人工智能·计算机视觉
少司府11 分钟前
C++进阶:智能指针
开发语言·数据结构·c++·b树·算法·c·智能指针
matlab代码14 分钟前
基于matlab的红绿灯图像检测识别系统【源码60期】
开发语言·matlab
向哆哆15 分钟前
鸡行为目标检测数据集:3类别 | 目标检测
人工智能·目标检测·计算机视觉
博界IT精灵30 分钟前
C语言中的数据类型及其转换
c语言·开发语言
软件黑马王子33 分钟前
13.缓存池优化:对象上限配置
开发语言·前端框架·c#
李迟1 小时前
Golang实践录:工程框架实践:搭建工程模板
开发语言·后端·golang
纪伊路上盛名在1 小时前
Kabsch算法的Julia实现
开发语言·算法·julia·序列分析·蛋白质·rmsd
玖玥拾1 小时前
Lua 基础语法(三) 元表 metatable、元方法、模拟面向对象
开发语言·unity·lua