Harris角点检测

来源:互联网 发布:最新金山画王软件 编辑:程序博客网 时间:2024/05/02 00:23


贴一下 计算机视觉课的作业

有时候 需要用下 

function F = DetectCorner(I, threshold, sigma)%Harris Corner Detect%by:LiFeiteng %Version1.0  灰度图像  2013/5/08%Version1.1  彩色图像  2013/5/13%存在问题:没有实现跟 corner 相似的接口,对噪声也不能很好的处理<checkerboard(50,2,2)>。if nargin < 3    sigma = 0.01;endif nargin < 2    threshold = 0.6; %实验表明 对此参数不敏感    sigma = 0.01; %对此参数敏感endif size(I,3)==3    I = rgb2gray(I);endW = fspecial('gaussian', [5 5], 2);I = double(I);I = imfilter(I, W, 'same');Ix = imfilter(I,[-1 0 1], 'same');Iy = imfilter(I,[-1 0 1]', 'same');A = Ix.^2;B = Ix.*Iy;C = Iy.^2;A = imfilter(A, W, 'same');B = imfilter(B, W, 'same');C = imfilter(C, W, 'same');%F = (A.*C-B.*B)./(A+C+eps); F = (A.*C-B.*B)-threshold*(A+C); F = F/max(F(:));F = F.*(F>sigma); %F = F.*(F>0.01);cor = 10;F(1:cor,1:cor)=0; F(1:cor,end-cor:end)=0;F(end-cor:end,1:cor)=0;F(end-cor:end,end-cor:end)=0;F = imregionalmax(F, 8);[row, col] = find(F==1);F = [col, row];end

测试用例:

img = imread('lena_gray.tif');img = imread('corner.jpg');%img = checkerboard(50,2,2);% img = rgb2gray(img);img = imnoise(img,'gaussian');figure(1),imshow(img, [])F = DetectCorner(img,0.6);figure(1),hold on, plot(F(:,1), F(:,2), 'y.')



原创粉丝点击