《北京航空航天大學(xué)目標(biāo)檢測與跟蹤實(shí)驗(yàn)報(bào)告》由會(huì)員分享,可在線閱讀,更多相關(guān)《北京航空航天大學(xué)目標(biāo)檢測與跟蹤實(shí)驗(yàn)報(bào)告(11頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、圖像探測、跟蹤與識(shí)別技術(shù)實(shí)驗(yàn)報(bào)告(一)專業(yè):探測制導(dǎo)與控制技術(shù) 學(xué)號(hào): 姓名: 目錄一、實(shí)驗(yàn)?zāi)康?二、實(shí)驗(yàn)要求3三、實(shí)驗(yàn)步驟3四、實(shí)驗(yàn)結(jié)果41、使用自適應(yīng)閾值進(jìn)行閾值化以及定位跟蹤結(jié)果41.1閾值結(jié)果及坐標(biāo)41.2二值化圖樣及定位、跟蹤結(jié)果42、使用固定閾值進(jìn)行閾值化以及定位跟蹤結(jié)果52.1.1閾值為150的結(jié)果及坐標(biāo)52.1.2二值化圖樣及定位、跟蹤結(jié)果52.2.1閾值為250的結(jié)果及坐標(biāo)62.2.2二值化圖樣及定位、跟蹤結(jié)果6五、實(shí)驗(yàn)感想7附實(shí)驗(yàn)程序:7實(shí)驗(yàn)一 基于形心的目標(biāo)檢測方法一、實(shí)驗(yàn)?zāi)康?. 學(xué)習(xí)常用的圖像閾值分割方法以及不同方法對(duì)目標(biāo)的不同分割效果;2. 學(xué)習(xí)如何利用形心方法將目
2、標(biāo)定位;3. 了解目標(biāo)檢測方法的本質(zhì)并為課堂教學(xué)提供配套的實(shí)踐機(jī)會(huì)。二、實(shí)驗(yàn)要求要求學(xué)生能夠根據(jù)目標(biāo)圖像特點(diǎn),自行選擇在不同噪聲條件下和背景條件下的目標(biāo)分割算法。完成規(guī)定圖像的目標(biāo)檢測,并利用檢測跟蹤窗來表示檢測到的目標(biāo)位置信息。三、實(shí)驗(yàn)步驟1. 分別利用固定閾值和自適應(yīng)閾值T,對(duì)圖像二值化。2在VC6.0平臺(tái)下編寫閾值計(jì)算函數(shù),形心計(jì)算函數(shù);3. 觀察不同閾值方法對(duì)目標(biāo)的分割效果以及對(duì)目標(biāo)的定位準(zhǔn)確性;4. 打印結(jié)果并進(jìn)行討論。四、實(shí)驗(yàn)結(jié)果1、使用自適應(yīng)閾值進(jìn)行閾值化以及定位跟蹤結(jié)果1.1閾值結(jié)果及坐標(biāo)1.2二值化圖樣及定位、跟蹤結(jié)果2、使用固定閾值進(jìn)行閾值化以及定位跟蹤結(jié)果2.1.1閾值為
3、150的結(jié)果及坐標(biāo)2.1.2二值化圖樣及定位、跟蹤結(jié)果2.2.1閾值為250的結(jié)果及坐標(biāo)2.2.2二值化圖樣及定位、跟蹤結(jié)果從以上實(shí)驗(yàn)結(jié)果中可以看出,大津法得到的閾值使得前景和背景的錯(cuò)分像素點(diǎn)數(shù)最少,因而使得二值化的分類結(jié)果和最終的檢測追蹤結(jié)果都非常地好。而固定閾值因?yàn)橛腥说囊蛩卦诶镞?,隨意性大,因而導(dǎo)致了二值化的結(jié)果較差,并最終使得檢測跟蹤的結(jié)果較差。在閾值設(shè)置為150的時(shí)候無法檢測跟蹤到目標(biāo),在閾值設(shè)置為250的時(shí)候雖然檢測到目標(biāo),但跟蹤框的位置明顯小了,說明在二值化的時(shí)候講過多的飛機(jī)上的像素點(diǎn)當(dāng)成了背景,因而結(jié)果較差。五、實(shí)驗(yàn)感想這是在我們進(jìn)行的第一次圖像探測、跟蹤與識(shí)別技術(shù)的實(shí)驗(yàn),實(shí)驗(yàn)
4、中我們嘗試了使用大津法求得的閾值和固定閾值對(duì)同一幅圖片進(jìn)行二值化,從結(jié)果來看,大津法得到的閾值的準(zhǔn)確程度明顯比人為選擇的閾值要準(zhǔn)確地多,這是因?yàn)榇蠼蜷撝捣▽?duì)0-255灰度進(jìn)行遍歷,當(dāng)前景和背景錯(cuò)分最少時(shí)的灰度作為最終灰度,因而二值化的準(zhǔn)確程度要高很多。除了閾值化之外,我們還計(jì)算了目標(biāo)的型心,并加入了跟蹤框,以對(duì)目標(biāo)進(jìn)行跟蹤。實(shí)驗(yàn)總體雖然簡單,但是讓我們了解了一種,目標(biāo)檢測跟蹤的方法,另外還提高了我們的編程能力??傮w上來說,這次試驗(yàn)收獲很多。附實(shí)驗(yàn)程序:#include #include StdAfx.h#include #include #include #include using std:
5、cout;using std:endl;int otsuThreshold(IplImage* img) int T = 0; int height = img-height; int width = img-width; int step = img-widthStep; int channels = img-nChannels; uchar* data = (uchar*)img-imageData; double gSum0;/ double gSum1; double N0 = 0;/ double N1 = 0;/ double u0 = 0;/度 double u1 = 0;/度
6、double w0 = 0;/ 0 double w1 = 0;/ double u = 0;/ double tempg = -1;/ double g = -1; double Histogram256=0; double N = width*height;/ for(int i=0;iheight;i+) for(int j=0;jwidth;j+) double temp =datai*step + j ;/ temp = temp255? 255:temp; Histogram(int)temp+; for (int i = 0;i256;i+) gSum0 = 0; gSum1 =
7、 0; N0 += Histogrami; N1 = N-N0; if(0=N1)break; w0 = N0/N; w1 = 1-w0; for (int j = 0;j=i;j+) gSum0 += j*Histogramj; u0 = gSum0/N0; for(int k = i+1;k256;k+) gSum1 += k*Histogramk; u1 = gSum1/N1; u = w0*u0 + w1*u1; g = w0*w1*(u0-u1)*(u0-u1); if (tempgg) tempg = g; T = i; return T; int main()IplImage*
8、pImg;pImg = cvLoadImage(plane1.bmp,0);int T=250;cout設(shè)定/大津法求得?的?閾D值為a:oT;coutheight;int ymin=pImg-width;int xmax=0;int ymax=0;IplImage* pImg1=pImg;for(int i=0;iheight;i+) uchar* ptr=(uchar*)(pImg1-imageData+i*pImg1-widthStep);for(int j=0;jwidth;j+) double temp =ptrj; if(tempT)ptrj=255;count+;xsumx+=j
9、;ysumy+=i;if(i=ymax)ymax=i;if(j=xmax)xmax=j;if(i=ymin)ymin=i;if(j=xmin)xmin=j;elseptrj=0; int xzuobiao=(int)xsumx/count;int yzuobiao=(int)ysumy/count;cout中D心?坐?標(biāo)X為a:oxzuobiao;coutendl;cout中D心?坐?標(biāo)Y為a:oyzuobiao;coutendl;/IplImage* pImg3=cvLoadImage(plane1.bmp,0);CvPoint2D32f point4;int jukuandu=80;int
10、 jugaodu=45;point0.x=xmin-10;point1.x=xmin-10;point2.x=xmax+10;point3.x=xmax+10;point0.y=ymin-10;point1.y=ymax+10;point2.y=ymax+10;point3.y=ymin-10;CvPoint pt4; for (int i=0; i4; i+) pti.x = (int)pointi.x; pti.y = (int)pointi.y; cvLine( pImg3, pt0, pt1,CV_RGB(255,255,255), 1, 1, 0 ); cvLine( pImg3,
11、pt1, pt2,CV_RGB(255,255,255), 1, 1, 0 ); cvLine( pImg3, pt2, pt3,CV_RGB(255,255,255), 1, 1, 0 ); cvLine( pImg3, pt3, pt0,CV_RGB(255,255,255), 1, 1, 0 ); cvNamedWindow( Image1,1); cvShowImage( Image1, pImg1 );cvNamedWindow(Image3,1);cvShowImage(Image3,pImg3); cvWaitKey(0); cvDestroyWindow( Image1 );cvDestroyWindow( Image3 ); cvReleaseImage( &pImg ); cvReleaseImage( &pImg1 );cvReleaseImage( &pImg3 );return 0;