2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩36頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  學號 200631200001 _</p><p>  密級 </p><p><b>  畢業(yè)論文</b></p><p>  基于.NET平臺的高速圖像采集</p><p>  院(系)名 稱:電子信息學院</p><p>  專

2、業(yè) 名 稱 :通信工程</p><p>  學 生 姓 名 : </p><p>  指 導 教 師 : </p><p><b>  二○一○年五月</b></p><p>  BACHELOR'S DEGREE THESIS</p><p>  OF WUHAN UNIVERSI

3、TY</p><p>  High-Speed Image Acquisition Based on .Net Platform </p><p><b>  May 2010</b></p><p><b>  摘 要</b></p><p>  本文利用.NET Framework平臺

4、和Visual Studio C#編程技術,基于實際項目公路破損檢測系統(tǒng),實現(xiàn)基于.NET平臺的高速圖像采集。并且在條件允許的情況下,能實現(xiàn)更快的采集速度和處理速度。在開發(fā)過程中,在第一代公路破損系統(tǒng)的基礎上,針對由于硬件問題和軟件包二次開發(fā)的不足問題,采用了行之有效的解決方法,最終實現(xiàn)提高車速和圖像采集卡采集軟件控制。</p><p>  該項目具有單次采集和連續(xù)采集圖像的基本功能,用戶通過控制軟件界面可以方便

5、的在電腦終端上控制采集幀的次數和長度,幀序列可供后續(xù)圖像的合成處理使用,還可以顯示出采集的通道數和數據深度。</p><p>  此外,該軟件模型使用自編API函數,使得采集卡和控制軟件能更好的結合起來,實現(xiàn)在.NET平臺下的數據訪問,體現(xiàn)出Visual Studio.NET編程的優(yōu)勢,具有很好的開發(fā)應用前景。</p><p>  關鍵詞:高速圖像采集;.NET Framework;公路破

6、損檢測;應用程序編程接口;C#編程技術</p><p><b>  ABSTRACT</b></p><p>  This paper developed a program based on Road crack detection system by .NET Framework and Visual Studio C# Programming, which is

7、 used for High-Speed Image Acquisition. And in conditions permitting, it can achieve faster acquisition speed and processing speed. In the development process, due to hardware problems and software packages for the secon

8、dary development of shortage, this paper adopted effective solution based on the first generation of road crack detection system. Ultimately the program</p><p>  The project has basic functions of the single

9、 image acquisition and continuous image acquisition. Users can easily control the number and length of frame collecting at the computer terminal by controlling software interface. The frame sequence is available for the

10、synthesis of image processing which is using in the follow-up step. It can also show the number of channels and the depth of data acquisition.</p><p>  In addition, the software model uses self API function

11、so that the collection card and control software can integrate better and achieved data access based on .NET platform. It demonstrates the advantages of Visual Studio.Net programming, and has good development prospects.&

12、lt;/p><p>  Key words: High-speed Image Acquisition; .NET Framework; API; C# programming</p><p><b>  目 錄</b></p><p><b>  第一章 緒論1</b></p><p>  1.1

13、 研究背景和意義1</p><p>  1.2 國內外現(xiàn)狀與趨勢2</p><p>  1.3 本文的研究內容4</p><p>  1.4 本文的結構安排5</p><p>  第二章 高速圖像采集基礎6</p><p>  2.1 圖像采集卡6</p><p>  2.1.1圖像

14、采集卡基本參數7</p><p>  2.1.2圖像采集基本過程8</p><p>  2.1.3圖像采集卡選取比較原則9</p><p>  2.2 硬件設備最終比較選擇11</p><p>  2.2.1圖像采集卡的選取11</p><p>  2.2.2計算機的選取12</p><

15、p>  第三章 開發(fā)環(huán)境介紹14</p><p>  3.1 Microsoft Visual Studio 200814</p><p>  3.2 Microsoft .NET Framework 3.516</p><p>  第四章 實現(xiàn).NET Framework 環(huán)境下圖像采集功能18</p><p>  4.1用V

16、isual Studio 2008 .NET進行基于圖像采集卡API編程18</p><p>  4.1.1 unsafe和fixed關鍵字18</p><p>  4.1.2 圖像采集卡API編程20</p><p>  4.2 采集軟件控制20</p><p>  4.3 軟件控制兩代程序比較27</p><

17、p>  第五章 總結與展望28</p><p>  5.1 研究工作總結28</p><p>  5.2 工作展望29</p><p><b>  參考文獻30</b></p><p><b>  致謝32</b></p><p><b>  第一章

18、 緒論</b></p><p>  1.1 研究背景和意義</p><p>  在瞬態(tài)信號實時傳輸,圖像處理等一些高速,高精度的測量行業(yè)中,需要進行高速數據圖像采集,而圖像采集卡的出現(xiàn)及應用解決了實時傳輸的問題。</p><p>  圖像處理的發(fā)展與計算機以及硬件技術的發(fā)展是緊密聯(lián)系的。最早發(fā)表有關計算機處理圖像信息文章的時間要追溯到20世紀50年代,隨

19、著硬件技術的高速發(fā)展,性能大幅度提高,無疑推動了圖像處理技術的發(fā)展。</p><p>  數字圖像處理是近20年發(fā)展起來的一門新興學科,是指用數字計算機及其他相關數字技術,對圖像施加某種運算和處理,從而達到某種預想的目的。數字圖像處理的研究內容概括起來包括:圖像增強、圖像恢復、圖像編碼、圖像重建和圖像分析。圖像處理的研究內容在智能機器人視覺系統(tǒng)、計算機視覺、工業(yè)檢測、軍事、公安、醫(yī)療等領域都有著廣泛的應用前景。發(fā)

20、展至今,其理論和方法都已基本成熟。數字圖像處理技術應用到實際中去的主要困難在于:數字圖像的數據量非常巨大,實時處理要求的計算速度極高。例如一幀采樣的數字圖像的數據量為720×576=400K,假設每個象素進行10次操作,每秒處理25幀,需要的速度為100MOPS(Million Operations Per Second),即每秒進行1億次操作。而在實際中,要對圖像的處理,遠遠不止每個象素10次操作,一般認為,數字圖像的實時處

21、理需要500MOPS的處理速度。</p><p>  如圖1.1所示為一個完整的圖像處理系統(tǒng)。有圖像數字化產生的數字圖像先進入一個適當裝置的緩存中,然后根據操作員的指令,計算機調用和執(zhí)行程序庫中的圖像處理程序。在執(zhí)行過程中,輸入圖像被逐行地讀入計算機。對圖像進行處理后,計算機逐行按像素生成一幅輸出圖像,并將其逐行送入緩存[1]。</p><p>  圖1.1 數字圖像處理系統(tǒng)</p&

22、gt;<p>  在本論文中,研究的內容即為數字圖像處理系統(tǒng)的第一步:圖像數字化設備和第二步:輸入圖像存儲。</p><p>  1.2 國內外現(xiàn)狀與趨勢</p><p>  現(xiàn)代化生產和科學研究對圖像采集系統(tǒng)的要求日益提高。傳統(tǒng)的圖像采集卡速度慢、處理功能簡單,不能很好地滿足特殊要求,而目前圖像采集卡也有了長足的發(fā)展。</p><p>  隨著超大規(guī)

23、模集成電路技術的發(fā)展和微機系統(tǒng)的發(fā)展,用于采集卡的技術也得到了不斷地發(fā)展。目前各種常規(guī)微機系統(tǒng)總線速度為:ISA總線的數據傳遞速率為8.33MB/s,EISA總線為33MB/s,MC為40MB/s。即使傳送速率最高的MC總線也無法實時傳送圖像數據,所以總線速率一直是制約提高微機性能的瓶頸。Video Electronics Standard Association(VESA)給出了VL-Bus標準,隨后又發(fā)展了PCI局部總線標準,最高傳

24、送速率達到了132MB/s。這兩種局部總線標準的推出,主要是為解決圖形、圖像中視頻數據的實時傳遞而設計的。尤其是PCI總線,具有高的性能價格比,傳送速率高,和CPU本身的性能無關,可多平臺等優(yōu)點。解決了從攝像機到內存的實時圖像采集、從內存到顯示器的圖形圖像實時顯示的傳輸瓶頸。目前,大多數采集卡都采用了視頻局部總線,可以將圖像數據直接存入內存中,采集卡原則上可不再需要專門的幀存儲體。隨著CPU性能的不斷提高,CPU直接在內存中對圖像做處理

25、,充分發(fā)揮了微機本身越來越高的性能潛力。鑒于以上所述,基于PCI總線的采集卡已經開始占主導地位,也是采集卡近年</p><p>  圖1.2基于VESA、PCI總線的圖像采集卡</p><p>  從圖中可看出,采集卡上不再需要較昂貴的VRAM幀存儲體??删幊虝r序發(fā)生器包括鎖相和時序發(fā)生,根據標準攝像機,各種規(guī)格的非標準攝像機編程,實現(xiàn)不同的時序信號。比例開窗控制實現(xiàn)比例放大、感興趣開窗(

26、ROI)、數據的排列打包、甚至于制式轉換、插值、數據緩沖的控制。圖像處理系統(tǒng)的結構如圖1.3,這種圖像處理系統(tǒng)可以直接使用內存存放圖像,使用主機監(jiān)視器觀察處理后的圖像,包括觀看實時圖像,圖像處理直接由CPU在內存中操作,大大提高了主機的使用效率,降低了系統(tǒng)成本。由于CPU功能的增強,很多圖像處理算法已經達到了準實時處理。這種圖像處理系統(tǒng)結構已經較充分地將圖像的采集和微機的內存、處理器、顯示融為一體。</p><p&g

27、t;  圖1.3 基于VESA、PCI總線采集卡的圖像處理系統(tǒng)</p><p>  由于超大規(guī)模集成電路(VLSI)的發(fā)展,采集卡中的鎖相、時序、比例放大、開窗等控制電路,甚至于視頻制式的轉換、圖像數據的重排列、緩沖都可以在VLSI中高度集成。不但使采集卡的功能和性能大大提高,體積也大大縮小[2]。</p><p>  而關于圖像采集卡未來的發(fā)展趨勢,對于低端的采集卡是否會被標準數字接口取

28、代的問題,似乎存有爭議。有人認為,只要標準的模擬相機存在,低端采集卡就會存在。在國內低端的設備還是大有市場的,除非高端的把價格降下來。而有人認為,對于低端采集卡的市場前景并不是很樂觀。根據數據統(tǒng)計,雖然采集卡的數量一直到2009年都會持續(xù)增長,但是邊際利潤卻再不斷下降。而且,IEEE1394發(fā)展也比較迅猛,千兆網卡的應用時代也很快會到來。當然,數字相機如何應用在工業(yè)領域還是會存在一些問題。同時,采集卡的應用發(fā)展還要受到控制和成本的問題。

29、在特定的領域里,采集卡還是唯一的選擇。相信在相當長的時期內,工業(yè)流水線還是需要大量的模擬卡。而且采集卡在高校和科研機構還是很有市場的,他們不需要工業(yè)環(huán)境。另外,模擬攝像機在監(jiān)控方面用量很大,所以很便宜,在低成本方面模擬像機還是會有優(yōu)勢的。當然,從長遠發(fā)展看,智能像機將會對低端設備產生很大沖擊,因而對采集卡市場是不小的沖擊。</p><p>  從高速圖像采集方面來看,構建高速圖像采集系統(tǒng)是十分必要的。高速圖像采集

30、系統(tǒng)主要用于工業(yè)領域、交通領域、視覺檢測等。對于高速圖像采集,目前研究方法有許多種,例如基于ARM和FPGA的嵌入式高速圖像采集,基于DSPC64X高速圖像采集和識別系統(tǒng)以及基于PCI總線的高速圖像采集系統(tǒng)的設計,這些都是從硬件方面入手。而軟件控制方面,所使用的開發(fā)環(huán)境大部分是VHDL、C語言以及C++語言開發(fā)環(huán)境,并且已經有比較成熟的方法和實際應用的經驗。而在未來,高速圖像采集則會向著采集數據的更準確、實時以及更高效采集的方向發(fā)展。在

31、這種情況下對于硬件的要求也更高,儲存和處理數據的速度要求更快。軟件方面,能夠采用的開發(fā)環(huán)境也不僅限于以上幾種語言,更多元化的開發(fā)和語言優(yōu)勢分析則是主要發(fā)展途徑。</p><p>  1.3 本文的研究內容</p><p>  本文的主要研究內容是,在Visual Studio 2008.Net平臺上,利用C#開發(fā)語言和硬件設施調配,使得在高速圖像采集的要求下,公路破損檢測系統(tǒng)的汽車速度能夠

32、進一步提高,并且實現(xiàn)更實時、精確和快速的處理速度。分析利用C#開發(fā)語言的優(yōu)勢以及為何要用C#開發(fā)語言進行開發(fā)。</p><p>  本文主要的工作目標為分析公路破損檢測系統(tǒng)的要求,根據系統(tǒng)進行硬件分析以及軟件上的配套實現(xiàn)。</p><p>  選取合適的采集卡和計算機,使得其采集速度和處理速度能夠達到要求。</p><p>  對采集卡的API函數重寫,以便于在.N

33、ET環(huán)境下對采集卡進行接口控制。</p><p>  圖像采集總控軟件的實現(xiàn),利用C#編程語言,實現(xiàn)控制圖像采集和采集存儲。</p><p>  根據采集卡的幀率和硬盤處理速度,初步估計采集卡等待數據時間不少于168ms,計算機從接收到存儲數據需要280ms以上。</p><p>  1.4 本文的結構安排</p><p>  第二章介紹了高

34、速圖像采集基礎,包括圖像采集卡的基本信息、選擇標準和硬件設備所需要滿足的處理條件。</p><p>  第三章主要介紹了軟件開發(fā)環(huán)境,分析Microsoft Visual Studio 2008和.NET Framework的特點,以及利用其進行軟件開發(fā)的優(yōu)勢。</p><p>  第四章實現(xiàn)了利用.NET Framework進行高速圖像采集總控軟件開發(fā),給出了實現(xiàn)的方案和部分函數方法以便

35、于分析優(yōu)勢和改進功能。</p><p>  第五章則是總結了本文的主要工作,并分析了設計中值得深入和改進的地方。</p><p>  第二章 高速圖像采集基礎</p><p>  2.1 圖像采集系統(tǒng)</p><p>  一個簡單的圖像采集系統(tǒng)如下圖2.1所示。</p><p>  2.1 簡單的圖像采集系統(tǒng)</

36、p><p>  圖2.1中有三個模塊,由圖像采集設備(攝像機、數碼相機等)采集圖像,送入圖像采集卡進行緩存和初步的處理工作,例如模擬圖像采集卡對數據進行A/D轉換,然后送入計算機硬盤存儲分析。本文中涉及到的圖像采集實際系統(tǒng)如圖2.2所示。</p><p>  圖2.1 檢測車實物圖</p><p>  圖2.2中車頂端即為采集所使用的線掃描相機。</p>

37、<p>  在圖像采集系統(tǒng)中,圖像采集卡是隨著圖像采集設備和計算機的發(fā)展而發(fā)展的,圖像采集設備從模擬到數字,采集卡也經歷著模擬到數字的轉變。計算機總線的不斷發(fā)展,傳輸速度提高很快,采集卡也適應著計算機的發(fā)展,與計算機的傳輸通信速度也發(fā)展很快。因此本文中具體介紹圖像采集卡。</p><p><b>  2.2 圖像采集卡</b></p><p>  圖像采集卡

38、用來采集DV或其他視頻信號到電腦里進行編輯、刻錄的板卡硬件。圖像采集卡是圖像采集部分和圖像處理部分的接口。圖像經過采樣、量化以后轉換為數字圖象并輸入、存儲到幀存儲器的過程,叫做采集。由于圖像信號的傳輸需要很高的傳輸速度,通用的傳輸接口不能滿足要求,因此需要圖像采集卡。圖像采集卡還提供數字I/O的功能。</p><p>  由于通過高速PCI總線可實現(xiàn)直接采集圖像到VGA顯存或主機系統(tǒng)內存,這不僅可以使圖像直接采集

39、到VGA,實現(xiàn)單屏工作方式,而且可以利用PC機內存的可擴展性,實現(xiàn)所需數量的序列圖像逐幀連續(xù)采集[3]。</p><p>  進行序列圖象處理分析。此外,由于圖像可直接采集到主機內存,圖象處理可直接在內存中進行因此圖象處理的速度隨CPU速度的不斷提高而得到提高,因而使得對主機內存的圖像進行并行實時處理成為可能。</p><p>  2.2.1圖像采集卡基本參數</p><

40、;p><b>  1、 圖像傳輸格式</b></p><p>  格式是視頻編輯最重要的一種參數,圖像采集卡需要支持系統(tǒng)中攝像機所采用的輸出信號格式。大多數攝像機采用RS422或EIA644(LVDS)作為輸出信號格式。在數字相機中,IEEE1394,USB2.0和Camera Link幾種圖像傳輸形式則得到了廣泛應用。</p><p>  2、 圖像格式(像素

41、格式)</p><p>  黑白圖像:通常情況下,圖像灰度等級可分為256級,即以8位表示。在對圖像灰度有更精確要求時,可用10位,12位等來表示。</p><p>  彩色圖像:彩色圖像可由RGB(YUV)3種色彩組合而成,根據其亮度級別的不同有8-8-8,10-10-10等格式。</p><p><b>  3、 傳輸通道數</b><

42、/p><p>  當攝像機以較高速率拍攝高分辨率圖像時,會產生很高的輸出速率,這一般需要多路信號同時輸出,圖像采集卡應能支持多路輸入。</p><p>  一般情況下,有1路,2路,4路,8路輸入等。隨著科技的不斷發(fā)展和行業(yè)的不斷需求,路數更多的采集卡也出現(xiàn)在市面上。</p><p><b>  4、 分辨率</b></p><

43、p>  采集卡能支持的最大點陣反映了其分辨率的性能。一般采集卡能支持768*576點陣,而性能優(yōu)異的采集卡其支持的最大點陣可達64K*64K。單行最大點數和單幀最大行數也可反映采集卡的分辨率性能。同三維推出的采集卡能達到1920x1080分辨率。</p><p><b>  5、 采樣頻率</b></p><p>  采樣頻率反映了采集卡處理圖像的速度和能力。在

44、進行高度圖像采集時,需要注意采集卡的采樣頻率是否滿足要求。目前高檔的采集卡其采樣頻率可達65MHZ。</p><p><b>  6、 傳輸速率</b></p><p>  主流圖像采集卡與主板間都采用PCI接口,其理論傳輸速度為132MB/S。</p><p>  2.2.2圖像采集基本過程</p><p>  采集就

45、是視頻或者圖像經過采樣、量化以后轉換為數字圖象并輸入、存儲到幀存儲器的過程。由于圖像信號的傳輸需要很高的傳輸速度,通用的傳輸接口不能滿足要求,因此需要圖像采集卡。</p><p>  當圖像采集卡的信號輸入速率較高時,需要考慮圖像采集卡與圖像處理系統(tǒng)之間的帶寬問題。在使用PC時,圖像采集卡采用PCI接口的理論帶寬峰值為132MB/S。在實際使用中,有可能在傳輸瞬間不能滿足高傳輸率的要求。為了避免與其他PCI設備產

46、生沖突時丟失數據,圖像采集卡上應有數據緩存。一般情況下,2MB的板載存儲器可以滿足大部分的任務要求。</p><p>  圖像采集的過程如下:</p><p>  1、視野(FOV)或現(xiàn)場是相機及光學系統(tǒng)“看”到的真實世界的具體部分。</p><p>  2、CCD芯片將光能轉化為電能。</p><p>  3、相機將此信息以模擬信號的格式輸

47、出至圖像采集卡。</p><p>  4、AD轉換器將模擬信號轉換成8位(或多位)的數字信號。每個象素獨立地把光強以灰度值(Gray level)的形式表達。</p><p>  5、這些光強值從CCD芯片的矩陣中被存儲在內存的矩陣數據結構中。</p><p>  灰度值(Gray Level)—— 象素光強弱信息的表示灰度值為真實世界圖像量化的表現(xiàn)方法。通常灰度值

48、從最黑到最白為0 - 255。光線進入CCD象素,如果光強達到CCD感應的極限,此象素為純白色。對應于內存中該象素灰度值為255。如果完全沒有光線進入CCD象素,此象素為純黑色。對應于內存中該象素灰度值為0。 </p><p>  2.2.3圖像采集卡選取比較原則</p><p>  針對于公路破損檢測這一實用型項目,本文所探討的高速圖像采集在圖像采集卡上的選取上需要符合項目的實際要求,既

49、能滿足基本要求,并且具備很好的二次開發(fā)能力。因此在選取的時候,圖像采集卡的硬件條件和軟件包的對比都很重要[4]。</p><p>  1、硬件功能的對比 </p><p>  目前市場上的視覺板卡,主要可分為三類:一、視覺采集卡。這就是我們最提到的Frame Grabber。它最主要的功能就是將相機中輸出的模擬圖像信號,轉換成數字信號,最終傳至電腦中的內存中去;二、具有顯示功能的視覺卡。這

50、種板卡,在上一種采集卡的基礎之中,又另加入了圖象顯示功能。即,可以將圖像直接顯示到任何顯示器上;三、自帶處理器的板卡。這種板卡本身就帶有處理器,進行圖象處理工作的程序,不必在電腦中而可以直接在板卡上運行。 </p><p>  相機支持:隨著市場上各種新功能相機的出現(xiàn),板卡與相機的匹配問題便更加顯得重要了。一、制式。CCD相機有各種不同制式,如CCIR、RS170等等。確定板卡是否支持所有制式的信號;二、異步信號

51、。異步信號可以節(jié)省拍照時間。不過在選用具有異步信號功能的相機之前,首先要確定板卡也有此功能。這一功能對于運行速度要求極高的系統(tǒng)來說,至關重要。以RS170為例,如果沒有這一功能,系統(tǒng)等待拍照的時間為0~40毫秒;三、逐行掃描。 越來越多的系統(tǒng)會使用到逐行掃描相機,因此要首先知道板卡是否支持這種相機;四、多分辨率支持。不是每張板卡都可以支持所有分辨率的相機;五、多頻道。多數板卡,都可以同時控制二個以上的相機。</p><

52、;p>  燈源激發(fā):相當多的板卡帶有燈源激發(fā)功能。這不僅縮短了系統(tǒng)總體運行的時間,簡化了編程人員的工作。更重要的在于,這一功能可以更加有效地使燈源與相機同步工作。 </p><p>  圖像存儲:大家已經知道,相機拍照的時間最多為40毫秒,而系統(tǒng)對于圖像進行分析、測量的時間則要漫長得多。因此,在實際操作中,常常會出現(xiàn)相機“等待”電腦的情況。因此,一些板卡便另設有一些內存,作為圖像的緩沖區(qū)。即,在前一幅圖像尚

53、未分析完之間,接下來相機所傳來的圖像,暫時存放到緩沖區(qū)中。之后,再以先進先出的方式,逐一送至電腦內存。</p><p>  其他參數:如,信號轉換速度等。 </p><p>  2、板卡軟件包的對比 </p><p>  首先要考慮的問題是:哪一家公司的軟件更加容易使用,即在此軟件包基礎上作二次開發(fā),是否容易上手、能否縮短開發(fā)時間。從以下幾個方面來考慮: </

54、p><p>  開發(fā)硬件環(huán)境:此軟件包在你所選用的電腦硬件系統(tǒng)下是否能正常運行。如,是否支持PCI接口、顯示卡等。 </p><p>  開發(fā)操作系統(tǒng);此軟件包在所選用的操作系統(tǒng)下能否正常運行。如,是否支持WINXP,Linux等等。 </p><p>  開發(fā)語言:此軟件包是否適用于所選用的開發(fā)語言。如,使用VC++,VB、CPB、DELPHI等語言作二次開發(fā),是否簡

55、單易用。 </p><p>  還需要對比不同公司的軟件包,在圖象處理方面的功能的優(yōu)劣。 </p><p>  邊緣尋找功能:邊緣尋找,是圖象處理中最為基本也是最為常用的工具。此功能主要以下幾個參數作對比:一、精度。可以查閱軟件包的產品介紹或是使用說明;二、穩(wěn)定性。可使用不同圖像對軟件進行實際測試,如,進行GR&R測試;三、多樣性。是否能夠應付各種不同的實際情況。如,不同形狀的邊緣

56、尋找,不同明暗情況下的邊緣尋找等等;四、速度??稍诮y(tǒng)一的情況下(如,使用同一圖像)對不同系統(tǒng)進行實際測試。 </p><p>  目標定位功能:目標定位功能,是圖象處理中另一基本且常用的工具。同樣有以下幾個參數作對比:一、精度??梢圆殚嗆浖漠a品介紹或是使用說明;二、穩(wěn)定性??墒褂貌煌瑘D像對軟件進行實際測試;三、速度。對于目標定位功能來說,其運行速度的快慢,可以認為是其軟件水平高低的直接標志之一??稍诮y(tǒng)一的情況

57、下(如,使用同一圖像、同一速度電腦)對不同系統(tǒng)進行實際測試;四、操作復雜程度。由于目標定位功能比邊緣尋找功能在算法上要復雜得多,這就使得此功能參數設置的繁簡程度,會直接影響二次開發(fā)的難易。 </p><p>  圖像預處理功能:圖像預處理功能(如,二值化、邊緣銳化、反差調節(jié)等等),可以提高圖象分析速度、簡化分析工程。 </p><p>  字符讀取功能(OCR):對于那些主要應用于各種字符

58、讀取的視覺系統(tǒng)來說,此功能尤為重要。 </p><p>  數據讀取功能:目前,絕大多數公司的軟件包中,都帶有條形碼、二維碼的讀取功能。要注意的是,不同軟件應付在不良情況的能力。如,光源不足、圖像不清、源碼殘缺等情況。 </p><p>  圖像緩沖功能:與板卡的“圖像存儲”功能相似,這一功能的主要目的,是為了緩解拍照與運算時間上不同步的矛盾。與板卡上硬件緩沖區(qū)所不同的是,這一功能純由軟件

59、來實現(xiàn)。通常的概念是,在內存中開辟一個固定空間,從板卡傳來的圖像信號,在電腦分析完之前都會按序存在這一空間里。每幅圖像地址的指針,存在另一堆棧中。圖像以先進先出的方式清除。 </p><p>  實際應用功能:很多公司,為了適應越來越激烈的市場競爭,在原有的底層軟件基礎上,又開發(fā)出可應用于某一特定領域的軟件包,以方便這一行業(yè)中的視覺二次開發(fā)商。如,半導體行業(yè)中BGA檢測工具;顯示器生產業(yè)中的顯示檢測工具;機器手行

60、業(yè)中的系統(tǒng)定位工具等等。 </p><p>  接口功能:軟件包是否能夠方便地與其他軟件或控件接口,一起運行。</p><p>  2.3 硬件設備最終比較選擇</p><p>  2.3.1圖像采集卡的選取</p><p>  經過比較,一代公路破損檢測系統(tǒng)選取的是國產高速PCI接口數據采集卡。系統(tǒng)水平前后方向(即車前進方向)倍頻后分辨率為

61、d = 1.06mm(根據公式:分辨率=車輪周長/輪轉一周脈沖個數,即d = 2180mm/2048)。根據目前采集卡的極限幀率,汽車速度在倍頻后不超過v1 = 45.41 km/h。</p><p>  根據公式: (2.1)</p><p><b>  即 即</b></p><p> 

62、 實際工作時相機不可能達到最高幀率,在10.5K幀率時,汽車速度應低于40km/h。而根據計算機處理速度,汽車速度應低于v2 = 28.03 km/h</p><p>  根據公式: (2.2)</p><p><b>  即 即</b></p><p>  實際工作時由于采集卡速度可能會有突發(fā)傳輸速率,會導致計

63、算機數據瞬時積壓,因此實際車速應低于28km/h。</p><p>  而在改進的二代公路破損檢測系統(tǒng)中,為了提高汽車速度,避免數據堆積處理不善,由于11.9KHz的國產線相機和采集卡達不到使用要求,加拿大DELTA公司36KHz,2048像素相機可以滿足需要[17]。按照(2. 1)公式計算,使用DELTA相機和采集卡,汽車在最高幀率工作時速度v1 = 137.38km/h。</p><p&

64、gt;  行頻的增加3倍,在相同存儲格式下,單位時間的數據量也增加3倍。按照(2. 2)公式計算,新的采集卡在最大幀率時傳輸速度為288MB/s,采集卡與計算機接口應為PCI-E4X串行接口。</p><p>  2.3.2計算機的選取</p><p>  一代公路破損系統(tǒng)使用的計算機為E5200雙核,主頻為2.5GHz。軟件采用4線程工作,其中2線程在采集過程中不工作,因此雙核處理 2線

65、程,處理時間約為t2 = 230ms;由于兩個相機的采集的數據經過拼接后要分成兩個文件夾存儲,且為交替存儲,SATA2硬盤(7200RPM)平均尋道時間在12ms以上,且存完一幅要給CPU反饋。因此計算機從接收數據到存儲數據至少需要t3 =2 80ms以上。</p><p>  在實際工作中,處理時間為Max(t1,t3),即上述兩個時間的最大時間。因為采集卡要將設定的buffer存滿才會像計算機傳數據,目前要存

66、滿2048行再傳;如果計算機運算速度t2大于t1,即下次2048行數據傳到計算機時,上次傳來的數據仍然沒有處理完,因此會導致計算機內存積壓,可能產生死機現(xiàn)象。</p><p>  因此,二代公路破損系統(tǒng)升級,采用Q9600 四核處理器,主頻3GHz,軟件方面可加為6線程,4線程同時工作,數據處理時間至少降到80ms以下。</p><p>  并使用SCSI接口硬盤,由于SCSI硬盤轉速更高

67、(10000RPM),平均尋道時間小于5ms,且SCSI板卡自帶處理芯片,可以降低CPU使用率,提高處理速度。由于新的采集卡應該為PCI-E4X總線接口,因此計算機應帶有除顯卡額外至少一個PCI-E4X插槽,PCI-E4X總線傳輸帶寬為1GB/s。</p><p>  新的處理器和硬盤可以使從接收數據到存儲數據時間t3降到90ms左右,因此最大速度根據公式(2.1)和(2.2)可得v = 24.22m/s即87.

68、2km/h。因此理論上是可以達到80km/h的。</p><p>  第三章 開發(fā)環(huán)境介紹</p><p>  3.1 開發(fā)方法簡述</p><p>  本文所使用的開發(fā)環(huán)境即是在Visual Studio中,利用Windows 窗體在 .NET Framework 上創(chuàng)建 Microsoft Windows 應用程序,作為本文解決方案中的本地用戶界面,即總控軟件模

69、型。使用C#語言對應用程序編程接口和總控軟件模型進行開發(fā)。</p><p>  3.2 Microsoft Visual Studio 2008</p><p>  Visual Studio 是一套完整的開發(fā)工具集,用于生成 ASP.NET Web 應用程序、XML Web Services、桌面應用程序和移動應用程序。Visual Basic、Visual C++、Visual C#

70、和 Visual J# 全都使用相同的集成開發(fā)環(huán)境 (IDE),利用此 IDE 可以共享工具且有助于創(chuàng)建混合語言解決方案。另外,這些語言利用了 .NET Framework 的功能,通過此框架可使用簡化 ASP Web 應用程序和 XML Web Services 開發(fā)的關鍵技術[5]。</p><p>  Visual Studio主要由公共語言運行庫、統(tǒng)一編程類以及ASP.NET三部分組成。并包含以下內容。&

71、lt;/p><p><b>  應用程序</b></p><p>  Visual Studio 集成環(huán)境包括用于目標設備(如 PDA 和 Smartphone)的工具。改進功能包括 Visual C++ 工具和本機設備運行庫、托管設計器(提供改進的特定于平臺的 WYSIWYG 和多種外觀設置支持)、新的仿真程序、類似于桌面的數據處理工具,以及最終用戶部署項目(消除 .i

72、nf 文件的手動編輯工作)。</p><p><b>  Web 窗體</b></p><p>  Web 窗體是用于創(chuàng)建可編程網頁的 ASP.NET 技術。Web 窗體將自己呈現(xiàn)為瀏覽器兼容的 HTML 和腳本,這使任何平臺上的任何瀏覽器都可以查看 Web 頁。使用 Web 窗體,通過將控件拖放到設計器上然后添加代碼來創(chuàng)建 Web 頁,與創(chuàng)建 Visual Basi

73、c 窗體的方法相似。</p><p>  Windows 窗體</p><p>  Windows 窗體用于在 .NET Framework 上創(chuàng)建 Microsoft Windows 應用程序。此框架提供一個有條理的、面向對象的、可擴展的類集,使您能夠開發(fā)功能豐富的 Windows 應用程序。另外,Windows 窗體可作為多層分布式解決方案中的本地用戶界面。</p>&l

74、t;p>  XML Web services</p><p>  XML Web Services 是可以通過 HTTP 使用 XML 接收請求和數據的應用程序。XML Web Services 并不依賴于特定的組件技術或對象調用約定,因此可以通過任何語言、組件模型或操作系統(tǒng)進行訪問。在 Visual Studio 中,可以使用 Visual Basic、Visual C#、JScript 或 ATL Se

75、rver 快速創(chuàng)建和包含 XML Web Services。</p><p><b>  XML 支持</b></p><p>  可擴展標記語言 (XML) 提供描述結構數據的方法。XML 是為在 Web 上傳送而進行優(yōu)化了的 SGML 的子集。萬維網聯(lián)合會 (W3C) 定義了 XML 標準以使結構化數據保持統(tǒng)一并獨立于應用程序。Visual Studio 完全支持

76、 XML,同時提供了 XML 設計器,使得更容易編輯 XML 和創(chuàng)建 XML 架構。</p><p>  Visual Studio 2008 引入了250多個新特性。提供了高級開發(fā)工具、調試功能、數據庫功能和創(chuàng)新功能,幫助在各種平臺上快速創(chuàng)建當前最先進的應用程序。Visual Studio 2008 包括各種增強功能,例如可視化設計器(使用 .NET Framework 3.5 加速開發(fā))、對 Web 開發(fā)工具

77、的大量改進,以及能夠加速開發(fā)和處理所有類型數據的語言增強功能。Visual Studio 2008 為開發(fā)人員提供了所有相關的工具和框架支持,幫助創(chuàng)建引人注目的、令人印象深刻并支持 AJAX 的 Web 應用程序。</p><p>  開發(fā)人員能夠利用這些豐富的客戶端和服務器端框架輕松構建以客戶為中心的 Web 應用程序,這些應用程序可以集成任何后端數據提供程序、在任何當前瀏覽器內運行并完全訪問 ASP.NET

78、應用程序服務和 Microsoft 平臺。</p><p>  為了幫助開發(fā)人員迅速創(chuàng)建先進的軟件,Visual Studio 2008 提供了改進的語言和數據功能,例如語言集成的查詢 (LINQ),各個編程人員可以利用這些功能更輕松地構建解決方案以分析和處理信息。Visual Studio 2008 還使開發(fā)人員能夠從同一開發(fā)環(huán)境內創(chuàng)建面向多個 .NET Framework 版本的應用程序。開發(fā)人員能夠構建面向

79、 .NET Framework 2.0、3.0 或 3.5 的應用程序,意味他們可以在同一環(huán)境中支持各種各樣的項目[6]。</p><p>  3.3 Microsoft .NET Framework 3.5</p><p>  .NET Framework是用于Windows的新托管代碼編程模型。它強大功能與新技術結合起來,用于構建具有視覺上引人注目的用戶體驗的應用程序,實現(xiàn)跨技術邊界的

80、無縫通信,并且能支持各種業(yè)務流程。.NET Framework 是支持生成和運行下一代應用程序和 Web 服務的內部 Windows 組件。.NET Framework 的關鍵組件為通用語言運行時刻庫 (CLR) 和 .NET Framework 類庫(包括 ADO.NET、ASP.NET、Windows 窗體和 Windows Presentation Foundation (WPF))。.NET Framework 提供了托管執(zhí)行環(huán)

81、境、簡化的開發(fā)和部署以及與各種編程語言的集成[7]。</p><p><b>  公共語言運行時刻庫</b></p><p>  公共語言運行庫是 .NET Framework 的基礎。您可以將公共語言運行庫看作一個在執(zhí)行時管理代碼的代理,它提供內存管理、線程管理和遠程處理等核心服務,并且還強制實施嚴格的類型安全以及可提高安全性和可靠性的其他形式的代碼準確性。這類似于

82、Java的虛擬機。事實上,代碼管理的概念是公共語言運行庫的基本原則。以公共語言運行庫為目標的代碼稱為托管代碼,而不以公共語言運行庫為目標的代碼稱為非托管代碼。</p><p><b>  類庫</b></p><p>  .NET Framework 的另一個主要組件是類庫,它是一個綜合性的面向對象的可重用類型集合,您可以使用它開發(fā)多種應用程序,這些應用程序包括傳統(tǒng)的

83、命令行或圖形用戶界面 (GUI) 應用程序,也包括基于 ASP.NET 所提供的最新創(chuàng)新的應用程序(如 Web 窗體和 XML Web services)。</p><p>  .NET Framework 可由非托管組件承載,這些組件將公共語言運行庫加載到它們的進程中并啟動托管代碼的執(zhí)行,從而創(chuàng)建一個可以同時利用托管和非托管功能的軟件環(huán)境。.NET Framework 不但提供若干個運行庫宿主,而且還支持第三方

84、運行庫宿主的開發(fā)。.NET Framework 提供了用于解決常見編程任務的構建基塊(預制的軟件),從而能夠快速構造具有出色的最終用戶體驗的緊密聯(lián)系的應用程序。在 .NET Framework 模型業(yè)務流程上有效構建的緊密聯(lián)系的應用程序有利于在異類環(huán)境中實現(xiàn)系統(tǒng)集成。</p><p>  Visual Studio 和 .NET Framework 的結合使用減少了對公用管道代碼的需要,從而縮短了開發(fā)時間并使開發(fā)

85、人員能夠集中精力解決業(yè)務問題。</p><p>  .NET Framework 3.5 是在 .NET Framework 3.0 的基礎上構建的更高版本。得到增強的功能領域包括基類庫、Windows workflow foundation、Windows Communication Foundation、Windows Presentation Foundation 和 Windows CardSpace。&

86、lt;/p><p>  圖3.1 .Net Framework環(huán)境</p><p>  第四章 實現(xiàn).NET Framework環(huán)境下圖像采集功能</p><p>  4.1用Visual Studio 2008 .NET進行基于圖像采集卡API編程</p><p>  API(Application Programming Interface,

87、應用程序編程接口)是一些預先定義的函數,目的是提供應用程序與開發(fā)人員基于某軟件或硬件的以訪問一組例程的能力,而又無需訪問源碼,或理解內部工作機制的細節(jié)。</p><p>  4.1.1 unsafe和fixed關鍵字</p><p>  圖像處理是一種運算量比較大的操作,不同于一般的應用程序。因此需要的是一種性能可以同C++程序相媲美的圖像處理程序。C++是靠指針來提高效率的。而.NET也

88、允許使用指針,但只能在非安全代碼塊中使用指針。非安全代碼塊即是以unsafe為關鍵字的代碼塊[8]。</p><p>  代碼分為兩類。一是托管代碼 (managed code),即由公共語言運行庫環(huán)境(而不是直接由操作系統(tǒng))執(zhí)行的代碼。托管代碼應用程序可以獲得公共語言運行庫服務,例如自動垃圾回收、運行庫類型檢查和安全支持等。這些服務幫助提供獨立于平臺和語言的、統(tǒng)一的托管代碼應用程序行為。二是非托管代碼(Unma

89、naged Code),即為在公共語言運行庫環(huán)境的外部,由操作系統(tǒng)直接執(zhí)行的代碼。非托管代碼必須提供自己的垃圾回收、類型檢查、安全支持等服務;它與托管代碼不同,后者從公共語言運行庫中獲得這些服務。而Unsafe的代碼介于這兩者之間,它也是在CLR的環(huán)境中執(zhí)行,但是我們可以直接操作內存。</p><p>  為了保持類型安全,默認情況下,C# 不支持指針運算。不過,通過使用 unsafe 關鍵字,可以定義可使用指針

90、的不安全上下文。在公共語言運行庫 (CLR) 中,不安全代碼是指無法驗證的代碼。C# 中的非安全代碼不一定是危險的,只是其安全性無法由 CLR 進行驗證的代碼。因此,CLR 只對在完全受信任的程序集中的不安全代碼執(zhí)行操作。如果使用非安全代碼,由程序員負責確保自己的代碼不會引起安全風險或指針錯誤。非安全代碼具有下列屬性[9]:</p><p>  方法、類型可被定義為不安全的代碼塊。 </p><

91、;p>  在某些情況下,通過移除數組界限檢查,不安全代碼可提高應用程序的性能。 </p><p>  當調用需要指針的本機函數時,需要使用不安全代碼。 </p><p>  使用不安全代碼將引起安全風險和穩(wěn)定性風險。 </p><p>  在 C# 中,為了編譯不安全代碼,必須用/unsafe 編譯應用程序。</p><p>  無論從

92、開發(fā)人員還是從用戶角度來看,非安全代碼事實上都是一種“安全”功能。不安全代碼必須用修飾符 unsafe 明確地標記,這樣開發(fā)人員就不會誤用不安全功能,而執(zhí)行引擎將確保不會在不受信任的環(huán)境中執(zhí)行非安全代碼。</p><p>  指針可以說是C和C++ 中特有的,出于安全性的考慮,微軟的C# 中取消了指針的運用,但是,在C#中仍有unsafe 關鍵字里可以編寫指針代碼。因為 unsafe 是要以時間和空間消耗為代價的

93、。 所以不經常使用,其主要用途是在處理大量的數組的時候,有大量的地址在變化的時候用 unsafe 關鍵字就有可能贏得更大的效力。</p><p>  而fixed其實是在非安全代碼下用到才會有意義。因為它負責對指針所指向的“動態(tài)分配內存的對象或對象中的成員”簡稱“對象”進行鎖定。之所以要鎖定,是因為即使在非安全代碼模式下,這些對象一樣的使用CLR的代碼托管,這樣的話,很可能造成對象的地址變動。就是因為CLR對資源

94、重新分配的不確定性,假使指針在未完成對對象的操作時,對象地址變動,那么指針指向的地址就會出現(xiàn)混亂,很可能造成內存泄漏甚至系統(tǒng)崩潰。如果使用fixed進行鎖定,那么只有在執(zhí)行完fixed模塊后,指針所指向的對象才能被移動。</p><p>  當在語句或函數之前使用fixed時,程序在告訴.NET平臺的垃圾回收器,在這個語句或函數執(zhí)行完畢前,不得回收其所占的內存空間。fixed關鍵字只能在不安全的代碼中使用。如果不

95、使用fixed關鍵字,那么接下來的這段程序的執(zhí)行的結果是不可預知的,因為垃圾回收器會不斷的回收這些可控制代碼的所占用的內存空間[10]。因此,unsafe和fixed都是為了保證能夠使用指針而設計的。 </p><p>  4.1.2 圖像采集卡API編程</p><p>  圖像采集卡產品自身提供軟件開發(fā)工具包,例如SDK是開發(fā)商為了擴展功能而設計出來給開發(fā)人員使用的工具包。SDK一般以

96、lib或dll的形式給出,里面封裝了相應的API函數,而里面的API函數是進行二次開發(fā)的關鍵。不同采集卡自帶的SDK各不相同,需要具體分析[11]。根據項目目的和性能要求,對圖像采集卡API函數進行重寫,使用C#語言和unsafe與fixed關鍵字。</p><p>  unsafe class API{</p><p><b>  //模擬相機數據</b></

97、p><p>  public static Random random = null;</p><p>  public static byte[] bydata = null;</p><p>  unsafe public static byte* lvGetData(int dmaSize){</p><p>  //random = ne

98、w Random();</p><p>  bydata = new byte[dmaSize];</p><p>  //random.NextBytes(bydata);</p><p>  for (int i = 0; i < dmaSize; i++){</p><p>  if (i % 4 == 0){</p>

99、<p>  bydata[i] = 255;</p><p><b>  }</b></p><p><b>  }</b></p><p>  byte* tempPointer = null;</p><p>  fixed (byte* pbyte = &bydata[0

100、]){</p><p>  tempPointer = pbyte;</p><p><b>  }</b></p><p>  return tempPointer;</p><p><b>  }</b></p><p><b>  }</b><

101、;/p><p>  4.2 采集軟件控制</p><p>  采集卡使用線掃描采集,兩個相機采集,且兩個相機的采集的數據經過拼接后要分成兩個文件夾存儲,且為交替存儲。</p><p>  窗體設計的技術要點如下:</p><p>  對于窗口設計而言,在.NET 3.5框架中,利用GroupBox控件可以輕松實現(xiàn)窗體的分組效果,即把窗體分成幾個部

102、分,每個部分有自主的名稱,并且可以自由調整各部分的大小 [12]。對于本設計,使用窗體分組效果的好處是能夠清晰的分出不同部分的功能,如參數和操作。上一欄可以用于顯示參數和更改參數,即存儲路徑;而下一欄直接用于采集的操作。方便且容易操作。</p><p><b>  實現(xiàn)過程如下:</b></p><p>  新建窗體。單擊菜單欄中的“文件/新建/項目”命令(快捷鍵:C

103、trl+Shift+N),彈出“新建項目”對話框,設置模板為“Windows窗體應用程序”,然后設置應用程序的名稱、位置及解決方案名稱,在此將名稱設置為LineScanTest,單擊“確定”按鈕就可以創(chuàng)建窗體,如圖4.1所示。</p><p>  圖4.1 “新建項目”對話框</p><p>  設置窗體屬性。單擊菜單欄中的“視圖/屬性窗口”命令(快捷鍵:Ctrl+W,P),打開“屬性面板

104、”,然后選擇Text屬性并設置其屬性為“圖像采集卡控制”,如圖4.2所示。</p><p>  圖4.2 設置窗體屬性</p><p>  添加分組框架組件。單擊工具箱中的GroupBox控件,然后在窗體中添加兩個該控件,就可以添加到應用程序中,這樣窗體就被分成兩部分,分別將其屬性設置為“采集參數”和“基本操作”,如圖4.3所示:</p><p>  圖4.3 添加

105、分組框架組件</p><p>  在“采集參數”和“基本操作”分組框架中分別添加Label、TextBox、Button等控件,在分組框架外添加一個Button控件,分別設置它們的屬性值并調整位置,效果如圖4.4所示。</p><p>  圖4.4 圖像采集卡控制窗口</p><p><b>  程序代碼添加</b></p>&l

106、t;p>  雙擊Form窗體,進入代碼視圖。</p><p>  本設計中,采集的通道為兩個,數據深度為8位,采集分為單次采集和實時采集,可自主選擇保存路徑。</p><p><b>  單次采集方法如下:</b></p><p>  首先對單次采集的各項參數進行初始化,包括讀寫操作、象素值和圖像編碼器以及存儲路徑。</p>

107、<p>  單次采集控制按鈕操作編碼如下:</p><p>  private void btnSignal_Click(object sender, EventArgs e){</p><p>  btnInTime.Enabled = false;</p><p>  btnSignalGather.Enabled = false;</p>

108、;<p><b>  //模擬數據采集</b></p><p>  Stopwatch watch = new Stopwatch();</p><p>  watch.Start();</p><p>  DMASize = CCDLinePixelNum * CCDRow * 2; </p>

109、<p>  ptr = API.lvGetData(DMASize);</p><p>  watch.Stop();</p><p>  //把數據保存為圖像格式 </p><p><b>  //按通道保存</b></p><p>  //-------------------利用OpenCV保存---

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論