1、遥感提取特征点遥感影像特征点提取基于Moravec算子的特征点提取1. Moravec算子的原理及算法公式该算子是通过逐像元量测与其邻元的灰度差, 搜索相邻像元之间具有高反差的点, 具体方法有以下几种。(1)计算各像元的有利值, 如图所示,在5X 5的窗口内沿着图示四个方向分别计算相 邻像元间灰度差之平方和 Vi, V2, V3,及V4,取其中最小值作为该像元的有利值:IVmin 二 miVi = (Gi,j -Gi i,j)iV2 八(Gi,j Gi,j i)2i2V3 八(Gi,j - Gi .i,j 1)iV4 =為(Gi,j -Gi .i,j-i)2ii = m -k, ,m k i;
2、j =n -k, , n k -i; k =W / 2。Gi,j代表像元R,j的灰度值,W为以像元计的窗口大小,如图所示, W = 5, m, n为像元在整块影像中位置序号。(2)给定一个阈值,确定待定点的有利点。如果有利值大于给定的阈值,则将该像元 作为候选点。阈值一般为经验值。(3)抑制局部非最大。在一定大小窗口内(例如 5X 5, 7X 7, ,9X 9像元等),将上一步所选的候选点与其周围的候选点比较, 若该像元的有利非窗口中最大值, 则去掉;否则,该像元被确定为特征点, 这一步的目的在于避免纹理丰富的区域产生束点, 用于抑制局部非最大的窗口大小取决于所需的有利点密度。综上所述,Mor
3、avec算子是在四个主要方向上选择具有最大一最小灰度方差的点作为特 征点。2.基于MATLAB的算法编程clear all;close all;clcimg=double(imread(1001.jpg);h w=size(img); imshow(img,) img n=zeros(h,w);n=4;for y=1+ n:h-nfor x=1+ n:w-nsq=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,门+1)人2;V(2)=V
4、(2)+(sq( n+1,i)-sq( n+1,i-1)A2;W3)=V(3)+(sq(i,i)-sq(i-1,i-1)A2;V(4)=V(4)+(sq(i,(2* n+1)-(i-1)-sq(i-1,(2* n+1)-(i-2)A2;endpix=mi n(V); %四个方向中选最小值img n(y,x)=pix;endendT=mea n( img n(:); %设阈值,小于均值置零in d=fi nd(img nlmage(i,j)-t & lmage(i_1,j_1)Image(i,j)-t & Image(i_1,j)Image(i,j)-t & Image(i-1,j+1)Imag
5、e(i,j)-t & Image(i,j_1)Image(i,j)-t & Image(i,j+1)Image(i,j)-t & Image(i+1,j-1)Image(i,j)-t & Image(i+1,j)Image(i,j)-t & Image(i+1,j+1)=2 & nlike CRFmaxCRFmax = CRF(i,j);en d;enden d;en d;%CRFmaxcount = 0; %用来记录角点的个数t=0.01;%下面通过一个3*3的窗口来判断当前位置是否为角点for i = boun dary:n row-bo un dary+1for j = boun dar
6、y:n col-bo un dary+1if Corner(i,j)=1 %只关注候选点的八邻域if CRF(i,j) t*CRFmax & CRF(i,j) CRF(i-1,j-1)& CRF(i,j) CRF(i-1,j) & CRF(i,j) CRF(i-1,j+1)& CRF(i,j) CRF(i,j-1) & CRF(i,j) CRF(i,j+1)& CRF(i,j) CRF(i+1,j-1) & CRF(i,j) CRF(i+1,j)& CRF(i,j) CRF(i+1,j+1)count=count+1;% 这个是角点,count 力口 1else %如果当前位置(i,j )不是
7、角点,则在 Corner(i,j)中删除对该候选角 点的记录Corner(i,j) = 0;en d;en d;en d;en d;% disp(角点个数);% disp(co unt)figure,imshow(lmage); % display In te nsity Imagehold on;% toc(t1)for i=bo un dary:n row-bo un dary+1for j=bo un dary:n col-bo un dary+1colu mn _ave=0;row_ave=0;k=0;if Corn er(i,j)=1for x=i-3:i+3 %7*7 邻域for y=j-3:j+3if Corn er(x,y)=1%用算数平均数作为角点坐标,如果改用几何平均数求点的平均坐标,对角点的提取意义不大row_ave=row_ave+x;colu mn _ave=colu mn _ave+y; k=k+1;endendendendif k0 %周围不止一个角点plot( colu mn _ave/k,row_ave/k ,g.); endend;end;三运行结果1001特征点1002特征点
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1