版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 目錄</b></p><p><b> 第一章 緒論3</b></p><p> 第二章 研究內(nèi)容和意義4</p><p> 第三章 預(yù)期達(dá)到的技術(shù)目標(biāo)和擬解決的技術(shù)問題5</p><p> 第四章 研究、試驗方法和技術(shù)路線7</p>&
2、lt;p> 第五章 實現(xiàn)過程7</p><p><b> 5.1硬件7</b></p><p><b> 5.2軟件9</b></p><p> 5.3作品成型21</p><p> 第六章 課題總結(jié)22</p><p><b> 第一章
3、 緒論</b></p><p> 視頻采集技術(shù)目前最大的應(yīng)用領(lǐng)域還是安防監(jiān)控,隨著國內(nèi)經(jīng)濟(jì)的發(fā)展和與國際經(jīng)濟(jì)的接軌,工業(yè)檢測和醫(yī)療領(lǐng)域?qū)Χ嗦凡杉男枨笠苍诓粩嗟脑黾印T诮煌?、機(jī)器視覺、多媒體等領(lǐng)域也有重要的應(yīng)用。在交通領(lǐng)域的應(yīng)用主要是路面監(jiān)控、違章抓拍、停車場收費(fèi)、高速路收費(fèi);機(jī)器視覺領(lǐng)域的應(yīng)用主要是生產(chǎn)過程監(jiān)控、產(chǎn)品篩選等;多媒體領(lǐng)域的應(yīng)用主要是多路視頻采集后大屏顯示、電視節(jié)目監(jiān)播等。最后,視頻采
4、集應(yīng)用的領(lǐng)域還包括紡織、印刷、印鈔等大幅面圖像檢測應(yīng)用。</p><p> 基于圖像的視覺跟蹤伺服控制系統(tǒng),視覺伺服誤差直接定義在圖像特征空間,攝像機(jī)觀察到的特征信息直接用于反饋,不用對三維姿態(tài)進(jìn)行估計。基于圖像的視覺伺服控制系統(tǒng)中,二維圖像特征通過雅可比矩陣與三維笛卡爾坐標(biāo)系中的三維場景相聯(lián)系,所以這種控制系統(tǒng)中雅可比矩陣的求解是關(guān)鍵。確定雅可基于圖像的視覺伺服控比矩陣可以通過經(jīng)驗法、在線估計法、學(xué)習(xí)法等。經(jīng)
5、驗法主要是通過攝像機(jī)標(biāo)定或先驗?zāi)P椭R得到比較準(zhǔn)確的雅可比矩陣;在線估計的方法可以事先不用進(jìn)行攝像機(jī)標(biāo)定,但存在雅可比矩陣的初值選擇問題;學(xué)習(xí)方法主要是通過離線示教、自我學(xué)習(xí)、自我決策的人工神經(jīng)網(wǎng)絡(luò)的方法,這種方法需要大量樣本才能計算準(zhǔn)確?;趫D像的視覺伺服控制系統(tǒng)可以不用3D重建,直接用圖像特征控制執(zhí)行機(jī)構(gòu)運(yùn)動。與基于位置的方法相比,基于圖像的方法受傳感器模型、運(yùn)動學(xué)方程、攝像機(jī)標(biāo)定所到來的誤差的影響較小,靜態(tài)定位的精度也比較高,但動
6、態(tài)估計雅可比矩陣時,需要不斷進(jìn)行更新和求逆,計算時間上需要進(jìn)一步優(yōu)化;另外,由于系統(tǒng)是的且具有非線性解,因此不能保證在整個任務(wù)空間中都是收斂的。</p><p> 第二章 研究內(nèi)容和意義</p><p> 視覺跟蹤系統(tǒng)可分為基于位置和基于圖像兩種工作方式。</p><p> 基于位置的視覺跟蹤伺服控制系統(tǒng),視覺伺服誤差定義在三維笛卡爾坐標(biāo)空間,視覺特征信息用來
7、估計執(zhí)行機(jī)構(gòu)末端與目標(biāo)的相對位姿。這種方法的主要優(yōu)點是直接在三維空間控制執(zhí)行機(jī)構(gòu)運(yùn)動,另外它把視覺重構(gòu)問題從執(zhí)行機(jī)構(gòu)控制中分離出來,這樣可以分別對二者進(jìn)行研究,但這種方法一般需要對視覺系統(tǒng)和執(zhí)行機(jī)構(gòu)進(jìn)行標(biāo)定,而且由于要對圖像進(jìn)行解釋,因而增加了計算量,另外,這種方法受傳感器模型、運(yùn)動學(xué)方程、攝像機(jī)標(biāo)定所帶來的誤差影響較大。</p><p> 基于圖像的視覺跟蹤伺服控制系統(tǒng),視覺伺服誤差直接定義在圖像特征空間,攝
8、像機(jī)觀察到的特征信息直接用于反饋,不用對三維姿態(tài)進(jìn)行估計?;趫D像的視覺伺服控制系統(tǒng)中,二維圖像特征通過雅可比矩陣與三維笛卡爾坐標(biāo)系中的三維場景相聯(lián)系,所以這種控制系統(tǒng)中雅可比矩陣的求解是關(guān)鍵。確定雅可基于圖像的視覺伺服控比矩陣可以通過經(jīng)驗法、在線估計法、學(xué)習(xí)法等。經(jīng)驗法主要是通過攝像機(jī)標(biāo)定或先驗?zāi)P椭R得到比較準(zhǔn)確的雅可比矩陣;在線估計的方法可以事先不用進(jìn)行攝像機(jī)標(biāo)定,但存在雅可比矩陣的初值選擇問題;學(xué)習(xí)方法主要是通過離線示教、自我學(xué)
9、習(xí)、自我決策的人工神經(jīng)網(wǎng)絡(luò)的方法,這種方法需要大量樣本才能計算準(zhǔn)確?;趫D像的視覺伺服控制系統(tǒng)可以不用3D重建,直接用圖像特征控制執(zhí)行機(jī)構(gòu)運(yùn)動。與基于位置的方法相比,基于圖像的方法受傳感器模型、運(yùn)動學(xué)方程、攝像機(jī)標(biāo)定所到來的誤差的影響較小,靜態(tài)定位的精度也比較高,但動態(tài)估計雅可比矩陣時,需要不斷進(jìn)行更新和求逆,計算時間上需要進(jìn)一步優(yōu)化;另外,由于系統(tǒng)是的且具有非線性解,因此不能保證在整個任務(wù)空間中都是收斂的。</p>&l
10、t;p> 本課題的工作主要基于uclinux操作系統(tǒng),實現(xiàn)對特定障礙的監(jiān)測,以及壁障預(yù)警工作。</p><p> 本立項實現(xiàn)的目標(biāo)包括如下幾個方面:</p><p> ◇研究相關(guān)計算機(jī)視頻圖像采集的理論和方法</p><p><b> ◇研究壁障技術(shù)</b></p><p> ◇從復(fù)雜場景中提取特征障礙信
11、息</p><p> ◇對障礙信息做出判斷,預(yù)警</p><p> 第三章 預(yù)期達(dá)到的技術(shù)目標(biāo) 和擬解決的技術(shù)問題</p><p> 一、計算機(jī)視覺圖像處理技術(shù)主要有以下凡項內(nèi)容:</p><p> 1、圖像數(shù)字化和壓縮編碼</p><p> 圖像數(shù)字化技術(shù)是把連續(xù)圖像信號變?yōu)殡x
12、散的數(shù)字信號,適應(yīng)數(shù)字計算機(jī)或其它數(shù)字設(shè)備的運(yùn)算處理。壓縮編碼技術(shù)是減少描述圖像的數(shù)據(jù)量即比特率,以便節(jié)省傳輸、處理時間和存儲器容量。</p><p><b> 2、圖像增強(qiáng)和復(fù)原</b></p><p> 圖像增強(qiáng)是突出圖像中感興趣的部分,圖像復(fù)原是使失真圖像盡可能恢復(fù)本來面貌。</p><p><b> 3、圖像分割<
13、/b></p><p> 圖像中包含的物體,按其灰度、色彩或幾何特性分割,并進(jìn)行分析處理,從中提取數(shù)據(jù)等有效分量。這是進(jìn)一步進(jìn)行圖像處理、模式識別和機(jī)器視覺等技術(shù)的基礎(chǔ)。</p><p><b> 4、圖像分類</b></p><p> 圖像分類是圖像處理技術(shù)的深入和發(fā)展,也可以認(rèn)為是模式識別的一個分支。其主要內(nèi)容是在圖像經(jīng)過某些預(yù)
14、處理(壓縮、增強(qiáng)、復(fù)原)后,將圖像中有用物體的特征進(jìn)行特征分割、特征選擇,進(jìn)而進(jìn)行判決分類。</p><p><b> 5、圖像重建</b></p><p> 圖像重建是對一些三維物體,應(yīng)用X射線、超聲波等物理方法獲取物體內(nèi)部結(jié)構(gòu)的數(shù)據(jù)。再將此數(shù)據(jù)進(jìn)行運(yùn)算處理構(gòu)成物體內(nèi)部某些部位的圖像。</p><p> 第四章 研究、試驗方法和技術(shù)路線
15、</p><p> 圖1:初期整個系統(tǒng)簡要分析。</p><p> 圖2:修改后整個系統(tǒng)簡要分析(即技術(shù)線路)。</p><p><b> 第五章 實現(xiàn)過程</b></p><p><b> 5.1 硬件</b></p><p><b> 1、應(yīng)用器件&l
16、t;/b></p><p> ARM7開發(fā)板,L298 ,DS18B20, ST188,電容,電阻等</p><p><b> 2、電路原理圖</b></p><p><b> 圖3</b></p><p><b> 3、成型電路</b></p>&
17、lt;p><b> 圖4</b></p><p><b> 5.2 軟件</b></p><p><b> 1、軟件結(jié)構(gòu)圖</b></p><p><b> 圖5</b></p><p><b> 2、主要程序</b>
18、</p><p> #include "stdafx.h"</p><p> #include "cv.h"</p><p> #include "highgui.h"</p><p> #include <stdio.h></p><p>
19、; #include <ctype.h></p><p> IplImage *image = 0, *hsv = 0, *hue = 0, *mask = 0, *backproject = 0, *histimg = 0;</p><p> //用HSV中的Hue分量進(jìn)行跟蹤</p><p> CvHistogram *hist = 0;//
20、直方圖類</p><p> int backproject_mode = 0;</p><p> int select_object = 0;</p><p> int track_object = 0;</p><p> int show_hist = 1;</p><p> CvPoint origin;
21、</p><p> CvRect selection;</p><p> CvRect track_window;</p><p> CvBox2D track_box;//Meanshift跟蹤算法返回的Box類</p><p> CvConnectedComp track_comp;</p><p> i
22、nt hdims = 16;// 劃分直方圖bins的個數(shù),越多越精確</p><p> float hranges_arr[] = {0,180};//像素值的范圍</p><p> float* hranges = hranges_arr;//用于初始化CvHistogram類</p><p> int vmin = 90, vmax = 256, smi
23、n = 90;</p><p> CvScalar hsv2rgb( float hue );//用于將Hue量轉(zhuǎn)換成RGB量 這里沒寫</p><p> void loadTemplateImage()</p><p><b> {</b></p><p> IplImage *tempimage = c
24、vLoadImage("red.jpg",1);</p><p> cvCvtColor( tempimage, hsv, CV_BGR2HSV );</p><p> int _vmin = vmin, _vmax = vmax;</p><p> cvInRangeS( hsv, cvScalar(0,smin,MIN(_vmin,
25、_vmax),0),</p><p> cvScalar(180,256,MAX(_vmin,_vmax),0), mask );</p><p> cvSplit( hsv, hue, 0, 0, 0 );</p><p> selection.x = 1;</p><p> selection.y = 1;</p>
26、;<p> selection.width = 640-1;</p><p> selection.height= 480-1;</p><p> cvSetImageROI( hue, selection );</p><p> cvSetImageROI( mask, selection );</p><p>
27、 cvCalcHist( &hue, hist, 0, mask );</p><p> float max_val = 0.f;</p><p> cvGetMinMaxHistValue( hist, 0, &max_val, 0, 0 );</p><p> cvConvertScale( hist->bins, his
28、t->bins, max_val ? 255. / max_val : 0., 0 );</p><p> cvResetImageROI( hue );</p><p> cvResetImageROI( mask );</p><p> track_window = selection;</p><p> track
29、_object = 1;</p><p> cvZero( histimg );</p><p> int bin_w = histimg->width / hdims;</p><p> for(int i = 0; i < hdims; i++ )</p><p><b> {</b>&l
30、t;/p><p> int val = cvRound( cvGetReal1D(hist->bins,i)*histimg->height/255 );</p><p> CvScalar color = hsv2rgb(i*180.f/hdims);</p><p> cvRectangle( histimg, cvPoint(i*bin_
31、w,histimg->height),</p><p> cvPoint((i+1)*bin_w,histimg->height - val),</p><p> color, -1, 8, 0 );</p><p><b> }</b></p><p> cvReleaseImage(&t
32、empimage);</p><p><b> }</b></p><p> void on_mouse( int event, int x, int y, int flags, void* param )//該函數(shù)用于選擇跟蹤目標(biāo)</p><p><b> { </b></p><p>
33、 if( !image ) </p><p><b> return; </b></p><p> if( image->origin ) </p><p> y = image->height - y; </p><p> if( select_object )//如
34、果處于選擇跟蹤物體階段,則對selection用當(dāng)前的鼠標(biāo)位置進(jìn)行設(shè)置 </p><p><b> { </b></p><p> selection.x = MIN(x,origin.x); </p><p> selection.y = MIN(y,origin.y); </p><p> se
35、lection.width = selection.x + CV_IABS(x - origin.x); </p><p> selection.height = selection.y + CV_IABS(y - origin.y); </p><p> selection.x = MAX( selection.x, 0 ); </p><p> se
36、lection.y = MAX( selection.y, 0 ); </p><p> selection.width = MIN( selection.width, image->width ); </p><p> selection.height = MIN( selection.height, image->height ); </p
37、><p> selection.width -= selection.x; </p><p> selection.height -= selection.y;</p><p><b> } </b></p><p> switch( event ) </p><p><b>
38、{</b></p><p> case CV_EVENT_LBUTTONDOWN://開始點擊選擇跟蹤物體</p><p> origin = cvPoint(x,y);</p><p> selection = cvRect(x,y,0,0);//坐標(biāo)</p><p> select_object = 1;//表明開始進(jìn)
39、行選取</p><p><b> break;</b></p><p> case CV_EVENT_LBUTTONUP:</p><p> select_object = 0;//選取完成 </p><p> if( selection.width > 0 && selection.hei
40、ght > 0 )</p><p> track_object = -1;//如果選擇物體有效,則打開跟蹤功能</p><p><b> break;</b></p><p><b> }</b></p><p> CvScalar hsv2rgb( float hue )//用于將H
41、ue量轉(zhuǎn)換成RGB量</p><p><b> {</b></p><p> int rgb[3] , p, sector;</p><p> static const int sector_data[][3]=</p><p> {{0,2,1}, {1,2,0}, {1,0,2}, {2,0,1}, {2
42、,1,0}, {0,1,2}};</p><p> hue *= 0.033333333333333333333333333333333f;</p><p> sector = cvFloor(hue);</p><p> p = cvRound(255*(hue - sector));</p><p> p ^= sector &a
43、mp; 1 ? 255 : 0;</p><p> rgb[sector_data[sector][0]] = 255;</p><p> rgb[sector_data[sector][1]] = 0;</p><p> rgb[sector_data[sector][2]] = p;</p><p> return cvScala
44、r(rgb[2], rgb[1], rgb[0],0);//返回對應(yīng)的顏色值</p><p><b> }</b></p><p> int main( int argc, char** argv )</p><p><b> {</b></p><p> CvCapture* captur
45、e = 0;</p><p> if( argc == 1 || (argc == 2 && strlen(argv[1]) == 1 && isdigit(argv[1][0])))</p><p> capture = cvCaptureFromCAM( argc == 2 ? argv[1][0] - '0' : 0 );//打開攝
46、像頭</p><p> else if( argc == 2 )</p><p> capture = cvCaptureFromAVI( argv[1] );//打開AVI文件 </p><p> if( !capture )</p><p><b> {</b></p><p> f
47、printf(stderr,"Could not initialize capturing...\n");//打開視頻流失敗處理</p><p> return -1;</p><p><b> }</b></p><p> printf( "Hot keys: \n"</p><
48、;p> "\tESC - quit the program\n"</p><p> "\tc - stop the tracking\n"</p><p> "\tb - switch to/from backprojection view\n"</p><p> "\th - sh
49、ow/hide object histogram\n"</p><p> "To initialize tracking, select the object with mouse\n" );////打印出程序功能列表</p><p> cvNamedWindow( "Histogram", 0 );</p><p&
50、gt; cvNamedWindow( "CamShiftDemo", 0 );//建立視頻窗口</p><p> cvSetMouseCallback( "CamShiftDemo", on_mouse, 0 );// 設(shè)置鼠標(biāo)回調(diào)函數(shù)</p><p> cvCreateTrackbar( "Vmin", "Cam
51、ShiftDemo", &vmin, 256, 0 );//建立滑動條</p><p> cvCreateTrackbar( "Vmax", "CamShiftDemo", &vmax, 256, 0 );</p><p> cvCreateTrackbar( "Smin", "CamShi
52、ftDemo", &smin, 256, 0 );</p><p> for(;;)//進(jìn)入視頻幀處理主循環(huán)</p><p><b> { </b></p><p> IplImage* frame = 0;</p><p> int i, bin_w, c;</p><p&
53、gt; frame = cvQueryFrame( capture );</p><p> if( !frame )</p><p><b> break;</b></p><p> cvAnd( backproject, mask, backproject, 0 );//得到反向投影圖mask內(nèi)的內(nèi)容</p><p
54、> cvCamShift( backproject, track_window,</p><p> cvTermCriteria( CV_TERMCRIT_EPS | CV_TERMCRIT_ITER, 10, 1 ),</p><p> &track_comp, &track_box );//使用MeanShift算法對backproject中的內(nèi)容進(jìn)行搜索,
55、返回跟蹤結(jié)果</p><p> track_window = track_comp.rect;//得到跟蹤結(jié)果的矩形框</p><p><b> }</b></p><p> if( select_object && selection.width > 0 && selection.height &g
56、t; 0 )//如果正處于物體選擇,畫出選擇框</p><p><b> {</b></p><p> cvSetImageROI( image, selection );</p><p> cvXorS( image, cvScalarAll(255), image, 0 );</p><p> cvReset
57、ImageROI( image );</p><p><b> }</b></p><p> cvShowImage( "CamShiftDemo", image );//顯示視頻和直方圖</p><p> cvShowImage( "Histogram", histimg );</p>
58、<p> c = cvWaitKey(10);</p><p> if( c == 27 )break;</p><p> switch( c )</p><p><b> {</b></p><p><b> case 'b':</b></p&g
59、t;<p> backproject_mode ^= 1;break;</p><p><b> case 'c':</b></p><p> track_object = 0;cvZero( histimg );break;</p><p> case 'h':show_hist ^= 1
60、;</p><p> if( !show_hist )</p><p> cvDestroyWindow( "Histogram" );</p><p> default: ;</p><p><b> }</b></p><p><b>
61、; }</b></p><p> cvReleaseCapture( &capture ); </p><p> cvDestroyWindow("CamShiftDemo"); </p><p><b> return 0;</b></p><p><b
62、> }</b></p><p> #ifdef _EiC</p><p> main(1,"camshiftdemo.c");</p><p><b> #endif</b></p><p><b> 5.3 作品成型</b></p>&
63、lt;p> 作品成型后如圖所示:</p><p><b> 圖6</b></p><p><b> 第六章 課題總結(jié)</b></p><p> 將近三個月的課題研究,我們基本上完成了題為小車的制作,作品基本能完成要求的功能。在此期間經(jīng)過不斷地學(xué)習(xí)與探索,使我們了解了ARM的工作原理及其應(yīng)用。在電路原理圖到電路
64、成型的整個過程中,使我們深刻的了解到各種電子器件的電氣特性以及工作環(huán)境,尤其是要參考現(xiàn)場環(huán)境因素。實現(xiàn)了小車通過紅外傳感器的準(zhǔn)確巡線,驅(qū)動模塊正常工作。還有通過軟件的調(diào)試使四位共陰數(shù)碼管實現(xiàn)精確計時。</p><p> 指導(dǎo)老師把設(shè)計和制作的任務(wù)完全交給了我們,我們得自選方案,畫好設(shè)計所需的電路圖,還要從硬件和軟件兩個方面著手開展我們的設(shè)計與制作。這和我們以前做的課程設(shè)計有很大的不同,一是沒有現(xiàn)成的方案供選擇,
65、二是沒有現(xiàn)成的電路圖供參考,三是沒有類似的算法和程序供使用。我們初期復(fù)習(xí)了單片機(jī)的基礎(chǔ)知識,因為智能小車控制的核心部件是單片機(jī),然后我們從小車需要完成的不同任務(wù)著手查閱了大量的資料,確定小車制作需要的控制模塊。確定好控制模塊后,我們開始動手制作各個相關(guān)的模塊,同時還要把控制各個模塊的程序?qū)懞貌⑼瓿上嚓P(guān)的硬件和軟件的調(diào)試。 </p><p> 此次設(shè)計涉及到電氣專業(yè)的許多主干課程:模電(放大器和光電隔離)、數(shù)電(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 智能自動避障小車開題報告
- 智能避障小車設(shè)計
- 紅外避障小車課程設(shè)計報告
- 紅外避障小車課程設(shè)計報告
- 智能避障小車設(shè)計
- 基于單片機(jī)的自動避障小車設(shè)計及實現(xiàn)報告
- 基于stm32的智能尋跡避障小車
- 基于單片機(jī)的智能循跡避障小車設(shè)計
- 基于pic單片機(jī)智能遙控避障安全小車報告
- 避障小車課程設(shè)計
- 基于dsp2407的自動避障小車系統(tǒng)設(shè)計
- 基于環(huán)境探測的AGV小車的模糊避障研究.pdf
- 小車設(shè)計論文-智能尋光避障小車
- 尋光循跡避障智能小車實驗報告
- 基于51單片機(jī)的小車避障電路實現(xiàn)
- 尋光循跡避障智能小車實驗報告
- 智能小車的避障及路徑規(guī)劃.pdf
- 附1小車避障.rar
- 超聲波避障小車設(shè)計
- 超聲波避障小車的設(shè)計書
評論
0/150
提交評論