Harris角點檢測原理及實現

2022-03-24 01:22:24 字數 1672 閱讀 3643

一、原理

二、實現

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

; end

endend[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...