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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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

2、業(yè) 名 稱 :通信工程</p><p>  學(xué) 生 姓 名 : </p><p>  指 導(dǎo) 教 師 : </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平臺(tái)

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

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

6、損檢測(cè);應(yīng)用程序編程接口;C#編程技術(shù)</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 國(guó)內(nèi)外現(xiàn)狀與趨勢(shì)2</p><p>  1.3 本文的研究?jī)?nèi)容4</p><p>  1.4 本文的結(jié)構(gòu)安排5</p><p>  第二章 高速圖像采集基礎(chǔ)6</p><p>  2.1 圖像采集卡6</p><p>  2.1.1圖像

14、采集卡基本參數(shù)7</p><p>  2.1.2圖像采集基本過程8</p><p>  2.1.3圖像采集卡選取比較原則9</p><p>  2.2 硬件設(shè)備最終比較選擇11</p><p>  2.2.1圖像采集卡的選取11</p><p>  2.2.2計(jì)算機(jī)的選取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>  第四章 實(shí)現(xiàn).NET Framework 環(huán)境下圖像采集功能18</p><p>  4.1用V

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

56、尋找,不同明暗情況下的邊緣尋找等等;四、速度??稍诮y(tǒng)一的情況下(如,使用同一圖像)對(duì)不同系統(tǒng)進(jìn)行實(shí)際測(cè)試。 </p><p>  目標(biāo)定位功能:目標(biāo)定位功能,是圖象處理中另一基本且常用的工具。同樣有以下幾個(gè)參數(shù)作對(duì)比:一、精度。可以查閱軟件包的產(chǎn)品介紹或是使用說明;二、穩(wěn)定性??墒褂貌煌瑘D像對(duì)軟件進(jìn)行實(shí)際測(cè)試;三、速度。對(duì)于目標(biāo)定位功能來說,其運(yùn)行速度的快慢,可以認(rèn)為是其軟件水平高低的直接標(biāo)志之一。可在統(tǒng)一的情況

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

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

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

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

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

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

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

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

65、程,處理時(shí)間約為t2 = 230ms;由于兩個(gè)相機(jī)的采集的數(shù)據(jù)經(jīng)過拼接后要分成兩個(gè)文件夾存儲(chǔ),且為交替存儲(chǔ),SATA2硬盤(7200RPM)平均尋道時(shí)間在12ms以上,且存完一幅要給CPU反饋。因此計(jì)算機(jī)從接收數(shù)據(jù)到存儲(chǔ)數(shù)據(jù)至少需要t3 =2 80ms以上。</p><p>  在實(shí)際工作中,處理時(shí)間為Max(t1,t3),即上述兩個(gè)時(shí)間的最大時(shí)間。因?yàn)椴杉ㄒ獙⒃O(shè)定的buffer存滿才會(huì)像計(jì)算機(jī)傳數(shù)據(jù),目前要存

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

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

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

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

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

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

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

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

74、t;p>  XML Web services</p><p>  XML Web Services 是可以通過 HTTP 使用 XML 接收請(qǐng)求和數(shù)據(jù)的應(yīng)用程序。XML Web Services 并不依賴于特定的組件技術(shù)或?qū)ο笳{(diào)用約定,因此可以通過任何語(yǔ)言、組件模型或操作系統(tǒng)進(jìn)行訪問。在 Visual Studio 中,可以使用 Visual Basic、Visual C#、JScript 或 ATL Se

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

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

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

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

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

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

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

82、Java的虛擬機(jī)。事實(shí)上,代碼管理的概念是公共語(yǔ)言運(yùn)行庫(kù)的基本原則。以公共語(yǔ)言運(yùn)行庫(kù)為目標(biāo)的代碼稱為托管代碼,而不以公共語(yǔ)言運(yùn)行庫(kù)為目標(biāo)的代碼稱為非托管代碼。</p><p><b>  類庫(kù)</b></p><p>  .NET Framework 的另一個(gè)主要組件是類庫(kù),它是一個(gè)綜合性的面向?qū)ο蟮目芍赜妙愋图?,您可以使用它開發(fā)多種應(yīng)用程序,這些應(yīng)用程序包括傳統(tǒng)的

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

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

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

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

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

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

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

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

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

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

93、。 所以不經(jīng)常使用,其主要用途是在處理大量的數(shù)組的時(shí)候,有大量的地址在變化的時(shí)候用 unsafe 關(guān)鍵字就有可能贏得更大的效力。</p><p>  而fixed其實(shí)是在非安全代碼下用到才會(huì)有意義。因?yàn)樗?fù)責(zé)對(duì)指針?biāo)赶虻摹皠?dòng)態(tài)分配內(nèi)存的對(duì)象或?qū)ο笾械某蓡T”簡(jiǎn)稱“對(duì)象”進(jìn)行鎖定。之所以要鎖定,是因?yàn)榧词乖诜前踩a模式下,這些對(duì)象一樣的使用CLR的代碼托管,這樣的話,很可能造成對(duì)象的地址變動(dòng)。就是因?yàn)镃LR對(duì)資源

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

95、使用fixed關(guān)鍵字,那么接下來的這段程序的執(zhí)行的結(jié)果是不可預(yù)知的,因?yàn)槔厥掌鲿?huì)不斷的回收這些可控制代碼的所占用的內(nèi)存空間[10]。因此,unsafe和fixed都是為了保證能夠使用指針而設(shè)計(jì)的。 </p><p>  4.1.2 圖像采集卡API編程</p><p>  圖像采集卡產(chǎn)品自身提供軟件開發(fā)工具包,例如SDK是開發(fā)商為了擴(kuò)展功能而設(shè)計(jì)出來給開發(fā)人員使用的工具包。SDK一般以

96、lib或dll的形式給出,里面封裝了相應(yīng)的API函數(shù),而里面的API函數(shù)是進(jìn)行二次開發(fā)的關(guān)鍵。不同采集卡自帶的SDK各不相同,需要具體分析[11]。根據(jù)項(xiàng)目目的和性能要求,對(duì)圖像采集卡API函數(shù)進(jìn)行重寫,使用C#語(yǔ)言和unsafe與fixed關(guān)鍵字。</p><p>  unsafe class API{</p><p><b>  //模擬相機(jī)數(shù)據(jù)</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>  采集卡使用線掃描采集,兩個(gè)相機(jī)采集,且兩個(gè)相機(jī)的采集的數(shù)據(jù)經(jīng)過拼接后要分成兩個(gè)文件夾存儲(chǔ),且為交替存儲(chǔ)。</p><p>  窗體設(shè)計(jì)的技術(shù)要點(diǎn)如下:</p><p>  對(duì)于窗口設(shè)計(jì)而言,在.NET 3.5框架中,利用GroupBox控件可以輕松實(shí)現(xiàn)窗體的分組效果,即把窗體分成幾個(gè)部

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

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

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

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

106、t;p>  雙擊Form窗體,進(jìn)入代碼視圖。</p><p>  本設(shè)計(jì)中,采集的通道為兩個(gè),數(shù)據(jù)深度為8位,采集分為單次采集和實(shí)時(shí)采集,可自主選擇保存路徑。</p><p><b>  單次采集方法如下:</b></p><p>  首先對(duì)單次采集的各項(xiàng)參數(shù)進(jìn)行初始化,包括讀寫操作、象素值和圖像編碼器以及存儲(chǔ)路徑。</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>  //模擬數(shù)據(jù)采集</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>  //把數(shù)據(jù)保存為圖像格式 </p><p><b>  //按通道保存</b></p><p>  //-------------------利用OpenCV保存---

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論