harris角点检测matlab代码
时间: 2023-04-22 19:01:38 浏览: 81
以下是Harris角点检测的MATLAB代码:
%% Harris角点检测
clear all; close all; clc;
% 读取图像
img = imread('lena.jpg');
img = rgb2gray(img);
% 定义参数
sigma = 1.5; % 高斯滤波器的标准差
threshold = .01; % 阈值
% 计算x和y方向的梯度
dx = [-1 1; -1 1; -1 1];
dy = dx';
Ix = conv2(double(img), dx, 'same');
Iy = conv2(double(img), dy, 'same');
% 计算Ix和Iy的平方和以及乘积
Ix2 = Ix.^2;
Iy2 = Iy.^2;
Ixy = Ix.*Iy;
% 对Ix2、Iy2和Ixy进行高斯滤波
g = fspecial('gaussian', round(6*sigma), sigma);
Ix2 = conv2(Ix2, g, 'same');
Iy2 = conv2(Iy2, g, 'same');
Ixy = conv2(Ixy, g, 'same');
% 计算Harris响应函数
R = (Ix2.*Iy2 - Ixy.^2) ./ (Ix2 + Iy2 + eps);
% 非极大值抑制
Rmax = imregionalmax(R);
Rmax = Rmax & (R > threshold);
% 显示结果
figure;
imshow(img);
hold on;
[y, x] = find(Rmax);
plot(x, y, 'r*');
title('Harris角点检测结果');