Harris角点检测算法

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Harris角点检测算法一.背景意义:任何一个物体都包含有很多特征,其主要特征有交汇特征、钝度、内角、方向、锐化度、对比度,通过它们能提取该物体的大量有用信息。对物体的图像进行处理时,各种特征的像素点总数要少得多,它们在保留了图像中物体的重要特征信息的同时有效地减少了信息的数据量,使得对图像处理时运算量大大减少。在图像中,角点是二维图像亮度变化剧烈的点或图像边缘曲线上曲率极大值的点,是一个重要的局部特征,它决定了图像中关键区域的形状,体现了图像中重要的特征信息,所以在目标识别、图像匹配、图像重构方面角点具有十分重要的意义。角点具有如此丰富的特征信息,使其在保留图像图形重要特征的同时有效地减少信息的数据量,提高了计算的运算速度,有利于图像的可靠匹配,使得实时处理成为可能。由于角点具有旋转不变性,因此角点几乎不受光照条件的影响,其在三位场景重建、运动估计、目标跟踪、目标识别、图像配准与匹配等计算机视觉领域起着非常重要的作用。二.角点检测方法角点检测的方法多种多样,但大致上可以分为4类:基于边缘特征的角点检测、基于灰度图像的角点检测、基于二值图像的角点检测和数学形态学。其中Harris角点检测算法是基于灰度图像的角点检测方法。三.Harris角点检测算法Harris角点检测算法是由ChrisHarris和MikeStephens在1988年提出,该算法是在Moravec算法的基础上发展起来的。Moravec算法是研究图像中一个局部窗口在不同方向进行少量的偏移后,考察窗口内图像亮度值的平均变化。需要考虑下面三种情况:(1)如果窗口内区域图像的亮度值恒定,那么所有不同方向的偏移几乎不发生变化;(2)如果窗口跨越一条边,那么沿着这条边的偏移几乎不发生变化,但是与边垂直的偏移会发生很大的变化;(3)如果窗口包含一个孤立的点或者角点,那么所有不同方向的偏移会发生很大的变化。Harris等人检测方法考虑的是用一个高斯窗或矩形窗在图像上移动,由模板窗口取得原图像衍生出2×2的局部结构M矩阵:222222)~(yyyyxyxyXyxyxyxxxxBGRBBGGRRBBGGRRBGRGM其中222~2exp)~(yxG它是高斯平滑滤波器,目的是消除图像中的突兀点,以免这些点被选为特征点;若用I表示图像像素的红、绿、蓝3个分量,即I∈{R,G,B},则),(),(yIxIIIYX表示I的一阶倒数。对该模板矩阵求取特征值λ1和λ2,建立度量函数R=detM-k(traceM)2,detM=λ1λ2,traceM=λ1+λ2,其中,Det(M)是矩阵M的行列式值,Trace(M)是矩阵M的迹,k=0.04。根据R是否大于0即可判断该点是否是角点。值得注意的是该方法具有旋转不变性,但检测的角点有较大的冗余,需要根据实际经验来确定R的阈值。三.程序代码functiona=Harris()ori_im=imread('cameraman.tif');%读取图像fx=[-2-1012];%x方向梯度算子(用于Harris角点提取算法)Ix=filter2(fx,ori_im);%x方向滤波fy=[-2;-1;0;1;2];%y方向梯度算子(用于Harris角点提取算法)Iy=filter2(fy,ori_im);%y方向滤波Ix2=Ix.^2;Iy2=Iy.^2;Ixy=Ix.*Iy;h=fspecial('gaussian',[77],2);%fspecial建立滤波算子,7*7的高斯窗函数sigma=2Ix2=filter2(h,Ix2);%filter2是用h滤波器放在Ix2移动进行模板滤波Iy2=filter2(h,Iy2);%消除y方向上的突兀点Ixy=filter2(h,Ixy);height=size(ori_im,1);%返回图像矩阵的行数给高width=size(ori_im,2);%返回图像矩阵的列数给宽result=zeros(height,width);%纪录角点位置,角点处值为1R=zeros(height,width);%创建与图像矩阵大小相同的零矩阵。Rmax=0;%图像中最大的R值fori=1:heightforj=1:widthM=[Ix2(i,j)Ixy(i,j);Ixy(i,j)Iy2(i,j)];%自相关矩阵R(i,j)=det(M)-0.04*(trace(M))^2;%计算R值ifR(i,j)RmaxRmax=R(i,j);end;end;end;cnt=0;fori=2:height-1forj=2:width-1%进行非极大抑制,窗口大小3*3ifR(i,j)0.01*Rmax&&R(i,j)R(i-1,j-1)&&R(i,j)R(i-1,j)&&R(i,j)R(i-1,j+1)&&R(i,j)R(i,j-1)&&R(i,j)R(i,j+1)&&R(i,j)R(i+1,j-1)&&R(i,j)R(i+1,j)&&R(i,j)R(i+1,j+1)result(i,j)=1;cnt=cnt+1;end;end;end;[posc,posr]=find(result==1);%确定角点的位置cnt%角点个数imshow(ori_im);%显示原图holdon;%新画图像不覆盖原图像时要加此句plot(posr,posc,'r.');%r代表红色,点代表角点是用点表示的。四.角点检测结果Cameraman图rice图五.算法优缺点Harris适用于角点数目较多且光源复杂的情况。在没有图像尺度变化的条件下,Harris角点检测子对图像的旋转变化、视角变化以及图像噪声具有比同类检测子更好的稳定性.然而Harris角点检测子对图像的尺度变化非常敏感,小的尺度变化就会造成Harris角点的复现率快速下降.图像的尺度伸缩将使得由Harris检测子提取的特征不具有可重复性.除了对单幅图像能进行角点检测以外,Harris算法对图像序列的角点检测效果更好。但Harris算法的实现公式中有平滑部分,因此具有较强的鲁棒且对噪声也不太敏感。

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功