遥感提取特征点课案.doc

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
遥感提取特征点课案

遥感影像特征点提取 基于Moravec算子的特征点提取 Moravec算子的原理及算法公式 该算子是通过逐像元量测与其邻元的灰度差,搜索相邻像元之间具有高反差的点,具体方法有以下几种。 计算各像元的有利值,如图所示,在5×5的窗口内沿着图示四个方向分别计算相邻像元间灰度差之平方和V1,V2,V3,及V4,取其中最小值作为该像元的有利值: 其中: 式中, 代表像元的灰度值,为以像元计的窗口大小,如图所示,为像元在整块影像中位置序号。 给定一个阈值,确定待定点的有利点。如果有利值大于给定的阈值,则将该像元作为候选点。阈值一般为经验值。 抑制局部非最大。在一定大小窗口内(例如5×5,7×7,,9×9像元等),将上一步所选的候选点与其周围的候选点比较,若该像元的有利非窗口中最大值,则去掉;否则,该像元被确定为特征点,这一步的目的在于避免纹理丰富的区域产生束点,用于抑制局部非最大的窗口大小取决于所需的有利点密度。 综上所述,Moravec算子是在四个主要方向上选择具有最大—最小灰度方差的点作为特征点。 基于MATLAB的算法编程 clear all;close all;clc img=double(imread(1001.jpg)); [h w]=size(img); imshow(img,[]) imgn=zeros(h,w); n=4; for y=1+n:h-n for x=1+n:w-n sq=img(y-n:y+n,x-n:x+n); V=zeros(1,4); for i=2:2*n+1 %垂直,水平,对角,反对角四个方向领域灰度差的平方和 V(1)=V(1)+(sq(i,n+1)-sq(i-1,n+1))^2; V(2)=V(2)+(sq(n+1,i)-sq(n+1,i-1))^2; V(3)=V(3)+(sq(i,i)-sq(i-1,i-1))^2; V(4)=V(4)+(sq(i,(2*n+1)-(i-1))-sq(i-1,(2*n+1)-(i-2)))^2; end pix=min(V); %四个方向中选最小值 imgn(y,x)=pix; end end T=mean(imgn(:)); %设阈值,小于均值置零 ind=find(imgnT); imgn(ind)=0; for y=1+n:h-n %选局部最大且非零值作为特征点 for x=1+n:w-n sq=imgn(y-n:y+n,x-n:x+n); if max(sq(:))==imgn(y,x) imgn(y,x)~=0 img(y,x)=255; end end end figure; imshow(img,[]); 运行结果 1001特征点 1002特征点 二、Harris角点检测算子 1、算法公式 Harris算子用高斯函数代替二值窗口函数,对离中心点越近的像素赋予越大的权重,以减少噪声影响。 Moravec算子只考虑了每隔45度方向,Harris算子用Taylor展开去近似任意方向。将图像窗口平移[u,v]产生灰度变化E(u,v)。 由 得 于是对于局部微小的移动量[u,v],可以近似得到下面的表达: 其中M是2×2的矩阵,可由图像的导数求得: 式中, 为x方向的差分, 为y方向的差分, 为高斯函数。 Harris采用了一种新的角点判断方法。通过M的两个特征值的大小对图像点进行分类。 但是解特征向量需要比较多的计算量,且两个特征值的和等于矩阵M的迹,两个特征值的积等于矩阵M的行列式。所以用下式来判定角点质量。(K常取0.04—0.06) (4)Harris算法总结 1:对每一像素点计算相关矩阵M 2:计算每像素点的Harris角点响应。 3:在w×w范围内寻找极大值点,若Harris角点响应大于阀值,则视为角点。 Harris算子对灰度的平移是不变的,因为只有差分,对旋转也有不变性,但是对尺度很敏感,在一个尺度下是角点,在另一个尺度下可能就不是了。 二 MATLAB代码 clear; Image = imread(1001.jpg); % 读取图像 Image = im2uint8(rgb2gray(Image)); dx = [-1 0 1;-1 0 1;-1 0

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档