【图像检测】基于 Harris算法实现角点特征检测matlab代码

📅 2026/8/3 17:20:54
【图像检测】基于 Harris算法实现角点特征检测matlab代码
1 简介Harris 算子是一种计算简单、应用广泛的角点检测算子只使用灰度的一阶差分和滤波可以定量地提取特征角点并且提取的角点特征均匀。由于计算过程用到图像的一阶导数故对存在灰度变化、图像旋转、视点变换和噪声干扰的图像也能稳定地提取角点。因此本文提出的算法采用 Harris 角点作为兴趣点并提取每个兴趣点为中心的邻域内空域的五个均值特征形成特征向量通过位置转移向量的频率统计连接标志匹配点。2 完整代码clc; clear all; close all; I checkerboard(50,3,3); Irgb2gray(imread(1.png)); h fspecial(gaussian,[5 5],2); % harris(I,0.05,0.01,h); cpcorner(I); imshow(I) hold on plot(cp(1,1),cp(1,2),ro);hold on plot(cp(2,1),cp(2,2),ro);hold on plot(cp(3,1),cp(3,2),ro);hold on plot(cp(4,1),cp(4,2),ro);hold on plot(cp(5,1),cp(5,2),ro);hold on plot(cp(10,1),cp(10,2),ro); % title(MATLAB自带CORNER函数)function varargoutharris(I,k,q,h) narginchk(0,4); nargoutchk(0,2); if nargin1 Icheckerboard(50,2,2); end if nargin2 k0.04; end if nargin3 q0.01; end if nargin3 hfspecial(gaussian,[5 5],1.5); end fx[-2,-1,0,1,2]; Ixfilter2(fx,I); fy[-2,-1,0,1,2]; Iyfilter2(fy,I); Ix2filter2(h,Ix.^2); Iy2filter2(h,Iy.^2); Ixyfilter2(h,Ix.*Iy); rfcn(a,b,c)(a*b-c^2)-k*(ab)^2; Rarrayfun(rfcn,Ix2,Iy2,Ixy); R(R q*max(R(:)))0; [xp,yp]find(imregionalmax(R,8)); if nargout0 subplot(121) imshow(I); hold on; plot(xp,yp,ro); title(自己编写HARRIS算法) subplot(122) cpcorner(I); imshow(I) hold on plot(cp(:,1),cp(:,2),ro); title(MATLAB自带CORNER函数) elseif nargout1 varargout{[xp,yp]}; elseif nargout2 varargout{xp,yp}; end3 仿真结果4 参考文献[1]滕书娟, 李琳琳, 唐春鸽. (2011). 基于harris角点的视频图像检测算法的研究. 辽宁大学学报自然科学版(3), 4.部分理论引用网络文献若有侵权联系博主删除。​