Harris角点检测原理及实现
2024-09-30 08:46:12
一、原理
二、实现
close all;
clear all;
I=imread('test.tif');
[posX,posY]=harris(I);
figure;imshow(I);
hold on; plot(posX, posY, 'g*');
function [posX,posY]=harris(I)
%Harris角点检测
%I:输入图像
%posX:角点X坐标
%posY:角点Y坐标
I=double(I);
[m,n]=size(I);
hx=[-,,;-,,;-,,];
Ix=imfilter(I,hx,'replicate','same');%X方向差分图像
Iy=imfilter(I,hx','replicate','same');%Y方向差分图像
Ix2=Ix.^;
Iy2=Iy.^;
Ixy=Ix.*Iy;
h=fspecial('gaussian',,);
Ix2=imfilter(Ix2,h,'replicate','same');%高斯滤波
Iy2=imfilter(Iy2,h,'replicate','same');
Ixy=imfilter(Ixy,h,'replicate','same');
R=zeros(m,n);
k=0.04;%建议值(0.04--0.06)
for i=:m
for j=:n
R(i,j)=(Ix2(i,j)*Iy2(i,j)-Ixy(i,j)*Ixy(i,j))-k*((Ix2(i,j)+Iy2(i,j))^);%角点响应值
end
end
T=0.1*max(R(:));% 阈值,可控制返回的角点个数
result=zeros(m,n);
%非极大值抑制(*3窗口中大于阈值T的局部极大值点被认为是角点)
for i=:m-
for j=:n-
tmp=R(i-:i+,j-:j+);
tmp(,)=;
if(R(i,j)>T&&R(i,j)>max(tmp(:)))
result(i,j)=;
end
end
end
[posY,posX]=find(result);
结果:
最新文章
- 【React】dva-cli建立脚手架后发现页面样式不对的问题
- iOS 怎么设置 UITabBarController 的第n个item为第一响应者?
- php json_decode
- Jetty与tomcat的比较
- 去除行内(inline/inline-block)元素之间的间距
- 转载:第四弹!全球首个微信小程序(应用号)开发教程!通宵吐血赶稿,每日更新!
- css三角形的实现
- GreenDao官方文档翻译(下)
- uvalive4327(单调队列优化)
- RPM安装包-Spec文件參数具体解释与演示样例分析
- UVALive 2324	Human Gene Functions(动态规划)
- fuel健康检查Heat失败的原因
- swfit - 实现类似今日头条顶部标签和底部内容的动态解决方案
- 基于SwiperJs的H5/移动端下拉刷新上拉加载更多的效果
- mongoose一看就会的基本操作
- ARTS打卡计划第一周-Review
- 通用triggerEvent方法
- jquery ---->; How to Create a Basic Plugin (翻译)
- Java中数据类型相互转化
- 如何HACK无线家用警报器?