文章目录一、基础语法参数详解二、完整可运行示例代码三、实操流程四、常见报错与踩坑五、工程调参经验六、扩展导出角点坐标到csvcorner()是Matlab图像处理工具箱Image Processing Toolbox内置函数可选择Harris算法或最小特征值Shi-Tomasi算法提取角点输出角点坐标矩阵适合棋盘格标定、工件拐角检测等固定焦距场景。注意corner()只输出角点坐标没有特征描述子不能直接做两幅图像之间的特征匹配图像缩放后检测结果不稳定不具备尺度不变性。依赖Image Processing Toolbox输入必须是灰度图像。一、基础语法%最简调用cornerscorner(I);%带参数指定Harris算法cornerscorner(I,Method,Harris,QualityLevel,0.02,Sensitivity,0.04,MinDistance,8);输入I灰度二维图像uint8/doubleRGB图必须先转灰度输出cornersN×2矩阵第一列x列号第二列y行号参数详解MethodHarris或MinimumEigenvalueShi-Tomasi默认HarrisQualityLevel角点质量阈值01。数值越大只保留响应更强的角点常用0.010.05。图像噪声大时调高纹理少时调低。SensitivityHarris公式中的k系数范围00.25经典取值**0.040.06**k越大越不容易检出弱角点。MinDistance两个角点之间最小像素距离用来避免角点扎堆推荐5~12。二、完整可运行示例代码clear;clc;close all;%读取图像imgimread(checkerboard.png);%转为灰度图像corner函数不支持RGB三维图ifsize(img,3)3img_grayrgb2gray(img);elseimg_grayimg;end%高斯滤波预处理抑制噪声减少伪角点img_smoothimgaussfilt(img_gray,1.2);%Harris角点检测cornerscorner(img_smooth,...Method,Harris,...QualityLevel,0.02,...Sensitivity,0.04,...MinDistance,8);fprintf(检测到Harris角点数量%d\n,size(corners,1));%绘制原图角点figure(Name,corner Harris角点检测);imshow(img_gray);hold on;%红色加号标记角点plot(corners(:,1),corners(:,2),r,MarkerSize,10,LineWidth,1.5);title(Harris角点检测结果 corner());hold off;三、实操流程图像预处理彩色图像转灰度噪声大的图像一定要加高斯平滑imgaussfilt否则会出现大量虚假角点。调用corner函数指定Method,Harris按需调整QualityLevel和MinDistance。可视化plot绘制坐标注意x是列y是行不要写反。提取坐标使用corners(:,1)全部角点x坐标corners(:,2)全部角点y坐标可导出用于相机标定。四、常见报错与踩坑输入RGB图像直接运行报错corner仅接受二维灰度图必须rgb2gray转换。角点数量过多密密麻麻一堆伪点调高QualityLevel增大MinDistance增加高斯滤波sigma。检测不到角点降低QualityLevel检查图像是否过暗/过曝适当增强对比度。Harris角点不能做图像匹配corner()只返回坐标没有描述子。如果需要两张图片匹配使用detectSIFTFeatures/detectSURFFeatures。和detectHarrisFeatures区分detectHarrisFeatures属于Computer Vision Toolbox返回的是角点对象cornerPoints而corner()属于Image Processing Toolbox直接返回坐标矩阵二者不是同一个函数。五、工程调参经验棋盘格标定场景QualityLevel0.01~0.02MinDistance6~10Sensitivity0.04工业工件纹理图像QualityLevel0.02~0.04降噪sigma适当加大高噪声图像优先提高QualityLevel减少误检六、扩展导出角点坐标到csv%把检测到的角点保存为csv文件writematrix(corners,harris_corner_points.csv);