《北京航空航天大學(xué)目標(biāo)檢測與跟蹤實(shí)驗(yàn)報(bào)告》由會(huì)員分享,可在線閱讀,更多相關(guān)《北京航空航天大學(xué)目標(biāo)檢測與跟蹤實(shí)驗(yàn)報(bào)告(11頁珍藏版)》請?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)康?3
二、實(shí)驗(yàn)要求 3
三、實(shí)驗(yàn)步驟 3
四、實(shí)驗(yàn)結(jié)果 4
1、使用自適應(yīng)閾值進(jìn)行閾值化以及定位跟蹤結(jié)果 4
1.1閾值結(jié)果及坐標(biāo) 4
1.2二值化圖樣及定位、跟蹤結(jié)果 4
2、使用固定閾值進(jìn)行閾值化以及定位跟蹤結(jié)果 5
2.1.1閾值為150的結(jié)果及坐標(biāo) 5
2.1.2二值化圖樣及定位、跟蹤結(jié)果 5
2.2.1閾值為250的結(jié)果及坐標(biāo) 6
2、2.2.2二值化圖樣及定位、跟蹤結(jié)果 6
五、實(shí)驗(yàn)感想 7
附實(shí)驗(yàn)程序: 7
實(shí)驗(yàn)一 基于形心的目標(biāo)檢測方法
一、實(shí)驗(yàn)?zāi)康?
1. 學(xué)習(xí)常用的圖像閾值分割方法以及不同方法對目標(biāo)的不同分割效果;
2. 學(xué)習(xí)如何利用形心方法將目標(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,對圖像二值化。
2.在VC6.0平臺(tái)下編
3、寫閾值計(jì)算函數(shù),形心計(jì)算函數(shù);
3. 觀察不同閾值方法對目標(biāo)的分割效果以及對目標(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閾值為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é)果和最終的檢
4、測追蹤結(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)中我們嘗試了使用大津法求得的閾值和固定閾值對同一幅圖片進(jìn)行二值化,從結(jié)果來看,大津法得到的閾值的準(zhǔn)確程度明顯比人為選擇的閾值要準(zhǔn)確地多,這是因?yàn)榇蠼蜷撝捣▽?-255灰度進(jìn)行遍歷,當(dāng)前景和背景錯(cuò)分最少時(shí)的灰度作為最終灰度,因
5、而二值化的準(zhǔn)確程度要高很多。除了閾值化之外,我們還計(jì)算了目標(biāo)的型心,并加入了跟蹤框,以對目標(biāo)進(jìn)行跟蹤。實(shí)驗(yàn)總體雖然簡單,但是讓我們了解了一種,目標(biāo)檢測跟蹤的方法,另外還提高了我們的編程能力。總體上來說,這次試驗(yàn)收獲很多。
附實(shí)驗(yàn)程序:
#include
#include "StdAfx.h"
#include
#include
#include
#include
using std::cout;
using std::endl;
int otsuThreshold(
6、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
7、 N1 = 0;/
double u0 = 0;/度
double u1 = 0;//度
double w0 = 0;/ 0
double w1 = 0;/
double u = 0;/
double tempg = -1;/
double g = -1;
double Histogram[256]={0};
double N = width*height;/
for(int i=0;i
8、 {
double temp =data[i*step + j] ;/
temp = temp<0? 0:temp;
temp = temp>255? 255:temp;
Histogram[(int)temp]++;
}
}
for (int i = 0;i<256;i++)
{
gSum0 = 0;
gSum1 = 0;
N0 +
9、= Histogram[i];
N1 = N-N0;
if(0==N1)break;
w0 = N0/N;
w1 = 1-w0;
for (int j = 0;j<=i;j++)
{
gSum0 += j*Histogram[j];
}
u0 = gSum0/N0;
for(int k = i+1;k<256;k++)
{
10、 gSum1 += k*Histogram[k];
}
u1 = gSum1/N1;
u = w0*u0 + w1*u1;
g = w0*w1*(u0-u1)*(u0-u1);
if (tempg
11、 pImg;
pImg = cvLoadImage("plane1.bmp",0);
int T=250;
cout<<"設(shè)定/大津法求得?的?閾D值為a:o"<height;
int ymin=pImg->width;
int xmax=0;
int ymax=0;
IplImage* pImg1=pImg;
for(int i=0;iheight;i++)
{
12、 uchar* ptr=(uchar*)(pImg1->imageData+i*pImg1->widthStep);
for(int j=0;jwidth;j++)
{
double temp =ptr[j];
if(temp>T)
{
ptr[j]=255;
count++;
xsumx+=j;
ysumy+=i;
if(i>=ymax)
ymax=i;
if(j>=xmax)
xmax=j;
if(i<=y
13、min)
ymin=i;
if(j<=xmin)
xmin=j;
}
else
ptr[j]=0;
}
}
int xzuobiao=(int)xsumx/count;
int yzuobiao=(int)ysumy/count;
cout<<"中D心?坐?標(biāo)X為a:o"<
14、////////
IplImage* pImg3=cvLoadImage("plane1.bmp",0);;
CvPoint2D32f point[4];
int jukuandu=80;
int jugaodu=45;
point[0].x=xmin-10;
point[1].x=xmin-10;
point[2].x=xmax+10;
point[3].x=xmax+10;
point[0].y=ymin-10;
point[1].y=ymax+10;
point[2].y=ymax+10;
point[3].y=ymin-10;
CvPoint pt[4];
15、
for (int i=0; i<4; i++)
{
pt[i].x = (int)point[i].x;
pt[i].y = (int)point[i].y;
}
cvLine( pImg3, pt[0], pt[1],CV_RGB(255,255,255), 1, 1, 0 );
cvLine( pImg3, pt[1], pt[2],CV_RGB(255,255,255), 1, 1, 0 );
cvLine( pImg3, pt[2], pt[3],CV_RGB(255,255,255), 1, 1, 0
16、 );
cvLine( pImg3, pt[3], pt[0],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;
}