网站大量收购独家精品文档,联系QQ:2885784924

Harris角点检测经典教程.docxVIP

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Harris角点检测经典教程

Harris角点检测算法编程步骤及示例演示简单将Harris角点检测算法的思想说下,就是拿一个小窗在图像中移动,通过考察这个小窗口内图像灰度的平均变换值来确定角点。(1)如果窗口内区域图像的灰度值恒定,那么所有不同方向的偏移几乎不发生变化;(2)如果窗口跨越一条边,那么沿着这条边的偏移几乎不发生变化,但是与边垂直的偏移会发生很大的变化;(3)如果窗口包含一个孤立的点或者角点,那么所有不同方向的偏移会发生很大的变化。下面给出具体数学推导:设图像窗口平移量为(u,v),产生的灰度变化为E(u,v),有E(u,v)=sum[w(x,y)[I(x+u,y+v)-I(x,y)]^2],其中w(x,y)为窗口函数,I(x+u,y+v)为平移后的灰度值,I(x,y)为平移前的灰度值。有泰勒公式展开可得:I(x+u,y+v)=I(x,y)+Ix*u+Iy*v+O(u^2,v^2);Ix,Iy分别为偏微分,在图像中为图像的方向导数.因此E(u,v)=sum[w(x,y)[Ix*u+Iy*v+O(u^2,v^2)]^2],可以近似得到E(u,v)=sum[w(x,y)[Ix*u+Iy*v]^2],即E(u,v)=[u,v][Ix^2,Ix*Iy;Ix*Iy,Iy^2][u,v]T令M=[Ix^2,Ix*Iy;Ix*Iy,Iy^2],因此最后对角点的检测成了对矩阵M的特征值的分析了,令M其特征值为x1,x2;当x1x2或者x2x1,则检测到的是边缘部分;当x1,x2都很小,图像窗口在所有移动的方向上移动灰度级都无明显变化.当X1,X2都很大时且相当,检测到的是角点。编程时用x1,x2不方便,因此定义角点响应函数;R=det(M)-k(trace(M))^2;其中det(M)为矩阵M的行列式,trace(M)为矩阵M的迹。下面给出更具数学公式实际编程的步骤:1.利用水平,竖直差分算子对图像的每个像素进行滤波以求得Ix,Iy,进而求得M中的四个元素的值。M=[Ix^2,Ix*Iy;Ix*Iy,Iy^2]2.对M的四个元素进行高斯平滑滤波,为的是消除一些不必要的孤立点和凸起,得到新的矩阵M。3.接下来利用M计算对应每个像素的角点响应函数R,即:R=det(M)-k(trace(M))^2;也可以使用改进的R:R=[Ix^2*Iy^2-(Ix*Iy)^2]/(Ix^2+Iy^2);里面没有随意给定的参数k,取值应当比第一个令人满意。4.在矩阵R中,同时满足R(i,j)大于一定阈值threshold和R(i,j)是某领域内的局部极大值,则被认为是角点。下面给出程序代码:还不错,自己一步步查资料写的,还算详细。function mainclc;clear;close all;%The coner points extractions using Harris methods;frame=imread(*.jpg);figure(1);imshow(frame);%调用harris角点检测子函数;%输入参数解释:frame为输入图像,7为高斯滤波窗口大小,2为均方差sigma的值,%0,04为推荐的k值,winsize为极大抑制窗口的大小且给参数时为奇数;%输出参数解释:posX为检测到角点X坐标,posY为检测到角点Y坐标,%cnt为检测到角点的个数,Out_Image为输出图像;[posX,posY,cnt,Out_Image]=conerdetection(frame,7,2,0.04,7); %输出的图像已经是2值化的figure(2);imshow(Out_Image);hold on;plot(posX,posY,ro,MarkerSize,15);disp(cnt);endfunction [posX,posY,cnt,Out_Image]=conerdetection(frame,GaussWindow,sigma,k,winsize)%ImageData: gracyscale image of input%GaussWindow: The sizes of Gauss window%sigma:The variance%default value%winsize为极大抑制窗口大小Out_Image=frame;ImageData=frame;ImageData= double(ImageData(:,:,2)); %ImageData数据矩阵式一个三通道的,我们角点标记只需选择一个可以;%ImageData=im2bw(ImageData,0.5); %或者将3通道的的图像转换成2值化的图像,完成提取;%算法解释:%1:利用水平,竖直差分算子对图像的每个像素进行滤波以求得Ix,Iy,进而求得M矩阵中四个元素的值;

文档评论(0)

qiwqpu54 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档