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

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

五、原始图像

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

相关推荐
用户712122751263 天前
MATLAB 自动化 Excel 转 SLDD 数据字典完整方案(适配自定义 THBPackage 存储类)
matlab
ZhengEnCi4 天前
P2M-Matplotlib折线图完全指南-从数据可视化到趋势分析的Python绘图利器
python·matlab·数据可视化
ZhengEnCi4 天前
P2L-Matplotlib饼图完全指南-从数据可视化到图表定制的Python绘图利器
python·matlab
韩师傅5 天前
海天线算法的前世今生
python·计算机视觉
韩师傅5 天前
当你的甲方设备过烂,要如何快速出效果?
python·计算机视觉
韩师傅5 天前
当你的甲方吐槽天空不够蓝,你应该如何应对
python·计算机视觉
兵慌码乱12 天前
基于 MediaPipe 与 PySide2 的手势交互音乐控制系统实现:轻量化视觉交互全流程解析
python·opencv·计算机视觉·人机交互·手势识别·mediapipe·pyside2
小小杨树14 天前
读懂色彩:拍照调色不再难
算法·计算机视觉·配色
LDR00616 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言