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

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

五、原始图像

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

相关推荐
快乐飒男17 分钟前
c#基础01(.Net介绍)
开发语言·c#·.net
AI technophile37 分钟前
OpenCV计算机视觉实战(6)——经典计算机视觉算法
opencv·算法·计算机视觉
qq_5845989239 分钟前
day30python打卡
开发语言·人工智能·python·算法·机器学习
zhangpeng45554794041 分钟前
C++--综合应用-演讲比赛项目
开发语言·c++·算法
鸢想睡觉1 小时前
【OpenCV基础2】图像运算、水印、加密、摄像头
人工智能·opencv·计算机视觉
火兮明兮1 小时前
Python训练第三十天
开发语言·python
啊我不会诶1 小时前
CF每日4题(1300-1400)
开发语言·c++·算法
学编程的小白狼1 小时前
C#:多线程
开发语言·c#
island13141 小时前
JAVA Web 期末速成
java·开发语言·前端
珊瑚里的鱼1 小时前
【滑动窗口】LeetCode 1004题解 | 最大连续1的个数 Ⅲ
开发语言·c++·笔记·算法·leetcode