Moravec算子特征提取

Moravec算子特征提取
Moravec算子特征提取

点特征提取编程实习报告

实习简介

本次实习利用VC++6.0编程实现了对8位BMP灰度图像的读取、显示,并用Moravec 算子对图像进行点特征的提取。

程序设计

1.用MFC创建一个多文档程序框架,用来显示BMP图像:

0 073 - [ZM.BMP] 一= “ 一=. I亘災

2.为该程序框架添加菜单: 特征提取窗口帶助[

3.创建一个对话框输入参数:

4.最后提取结果可以显示在视图中:

程序框图及核心代码

Value〉阈

在该像素处画上十字丝

提取特征点:

BOOL CDib::llorauec(int size,int limit)

if(ll_pBHI= = NULL) "屮向位图指针是否为空,若为空,说明役有谄数据,程序返回return FALSE:

UORD wBitCnunt =m_pBMI->bniHeader.biBitCount; "得到影像的莓个像素所占比特数if(wBitCount?=8)

< AFxlle SSageB ox(-该分类方袪只能处理目位图橡!”);

return FALSE:

}

int nWidth=n_pBM[->bniHeader,biMidtn:

int nlleight-ri」RH[-〉bniHE3dE?r .biUEight; "我得愚像的宽厅和高度

±nt Wi(lthej|tes=WIDTH8VTES(nWidth>24);"快耳丿爭槪厨亍的买际程悔融

LPBVTE IpD.ta-iijaits; 义宇符扌謝菱量,用来慄存範图窮四彎芬起始地址int k=size/2;

(W BitCount-=8)"如果是P位桩图,则开始握取特征点

< int i f j:

nu(n=0;

int ul T V2,u3,u4,uaiue;

for (i=k;i

< fort j-k;j

“计茸第i行第j列橡素的夹趣值

Ul-U1(k }lpData-tnUidth?i*j );

v2=U2(k ,lpData+nWidth*i+j …nUidth);

u3-U3(k ^lpData*nlJidth*i*j ^nUidth);

v4HI4(k (lpData+RNldthKl+j …nVldth);

ualue^nin(nin(u1 ,u2) f nin(u3f u>i));

value-=Rin(iid.n(v1 B v2) B nd.n(v9 t v4});

if (ualue>limit)

{"若兴趣值大于阈值将点的坐标存入数组“和

ual[nLin] ?x=j;

ual[niin] .i|=i;

nun++;

return 0;

实验结果分析

1、下图中阈值为8000,窗口大小从上到下从左到右分别为 9*9、7*7、5*5、3*3。可

以看出随着窗口的增大,提取到的特征点个数越来越少,但是精度提高,可以防止 将噪声提取出来。

2、下图中窗口大小为 9,阈值从左到右从上到下分别为 20000、15000、10000、5000。

可以看出,随着阈值的增大,能投提取到的特征点越来越少,只有灰度变化十分剧 烈的点才能被提取出

来,如下图中左上角是阈值为 20000时的提取结果,可以发现 没有提取出任何特征点。。 □i

x

D 话制 F 白¥

实习总结

Moravec算子是点特征提取算子中的经典算子之一,它具有计算量小,不丢

失灰度信息等优点。用该算子提取特征点时阈值的选取直接影响着提取结果。如

本次实习过程中所用的图像是武汉地区的TM影像,这幅影像的灰度范围很小,所以阈值不宜取得过大,否则会丢失很多特征点,如:当阈值选为20000时,没

有提取出任何特征点。为了验证对比度对特征点提取的影响,我用Photoshop对

图像做了一个对比度的增强,之后用5*5的窗口和10000的阈值对其进行特征点的提取并与原图像的提取结果做了对比,发现增强了对比度的图像中提取出的特征点确实比原图像中的特征点多,如下图:

E3 F.bmp

所以,虽然Moravec算子是点特征提取的经典算子,但是提取效果还是很大程度上受参数设置的影响,不同灰度范围的图像需要不同的阈值以及不同的窗口大小,这需要长久的实验来积累经验确定参数。或者可以通过计算整幅图像的灰度均值的方法是程序自动确定阈值,但没有再本次实习中进行实验。

相关主题
相关文档
最新文档