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

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

五、原始图像

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

相关推荐
biter down5 小时前
14:pytest-order 插件 顺序控制案例
开发语言·python·pytest
郝学胜-神的一滴5 小时前
Qt 高级开发 009: C++ Lambda 表达式
开发语言·c++·qt·软件构建
星栈独行5 小时前
我在 Rust 全栈项目里用 JWT 做无状态认证
开发语言·后端·rust·前端框架·开源·github·web
石山代码6 小时前
C++ 轻量级日志系统
开发语言·c++
小技与小术6 小时前
玩转Flask
开发语言·python·flask
SilentSamsara7 小时前
Python 性能优化:tracemalloc、profiling 与 C 扩展加速
开发语言·python·青少年编程·性能优化
冰小忆7 小时前
大驼峰命名规范和小驼峰命名规范的区别是什么?
开发语言·python
এ慕ོ冬℘゜8 小时前
JS 前端基础面试题
开发语言·前端·javascript
浩少7028 小时前
【无标题】
java·开发语言
nnsix9 小时前
C# 字符串 根据换行符分割
开发语言·c#