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