Harris角點檢測原理及實現

2021-07-13 22:16:51 字數 1504 閱讀 1595

一、原理

二、實現

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=[-1,0,1;-1,0,1;-1,0,1];

ix=imfilter(i,hx,'replicate','same');%x方向差分影象

iy=imfilter(i,hx','replicate','same');%y方向差分影象

ix2=ix.^2;

iy2=iy.^2;

ixy=ix.*iy;

h=fspecial('gaussian',3,2);

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=1:m

for j=1:n

r(i,j)=(ix2(i,j)*iy2(i,j)-ixy(i,j)*ixy(i,j))-k*((ix2(i,j)+iy2(i,j))^2);%角點響應值

endendt=0.1*max(r(:));% 閾值,可控制返回的角點個數

result=zeros(m,n);

%非極大值抑制(3*3視窗中大於閾值t的區域性極大值點被認為是角點)

for i=2:m-1

for j=2:n-1

tmp=r(i-1:i+1,j-1:j+1);

tmp(2,2)=0;

if(r(i,j)>t&&r(i,j)>max(tmp(:)))

result(i,j)=1;

endend

end[posy,posx]=find(result);

結果:

Harris角點檢測原理及實現

一 原理 二 實現 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 輸...

Harris角點檢測原理

本文 理論 如果某一點在任意方向的乙個微小變動都會引起灰度很大的變化,那麼我們就把它稱之為角點 由上面定義,我們可以想到演算法思路 去檢測影象畫素的灰度變化情況,即求解 對於上式,我們希望找到使e的值盡量大的點,則,將上式右邊泰勒展開得 整理可得 進而可以表示為下式 這裡考慮進去窗函式,設 於是,h...

Harris角點檢測

貼一下 計算機視覺課的作業 有時候 需要用下 function f detectcorner i,threshold,sigma harris corner detect by lifeiteng version1.0 灰度影象 2013 5 08 version1.1 彩色影象 2013 5 13...