版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 基于TI VC5416的黑白圖像采集之縮放實現(xiàn)</p><p> 摘 要 本課程設(shè)計主要是設(shè)計一個基于TIVC5416的黑白圖像采集之縮放實現(xiàn),在TIVC5416 DSP芯片上完成對黑白圖像采集、縮放的編程,軟件編程主要采用模塊化的設(shè)計思想,把程序細(xì)化成易于實現(xiàn)的小模塊。編程的語言主要采用執(zhí)行效率高的匯編語言編寫。通過CCS3.0仿真平臺最終成功實現(xiàn)了黑白圖像的采集和縮放。通過最后的仿
2、真結(jié)果可知,基于TIVC5416的黑白圖像采集之縮放實現(xiàn)已初步達到了設(shè)計指標(biāo),達到了預(yù)期設(shè)計效果。</p><p> 關(guān)鍵詞:TIVC5416,黑白圖像采集,縮放,匯編語言,CCS仿真</p><p> Based on TI VC5416 black and white image acquisition of scaling realized</p><p>
3、; Abstract:This course is designed to design a black and white image acquisition based on TIVC5416 realize the scale, TIVC5416 DSP chip in to black and white image acquisition, complete with zoom programming, software p
4、rogramming mainly uses the modular design thought, the program into easy to realize the little refinement module. Programming language mainly adopts high efficiency of the assembly language. Through the CCS3.0 simulation
5、 platform ultimately successful realized the black and white im</p><p> Key words: TIVC5416, black and white image acquisition, zoom, assembly language, CCS simulation</p><p><b> 1引 言<
6、;/b></p><p> DSP[1](digital singnal processor)是一種獨特的微處理器,是以數(shù)字信號來處理大量信息的器件。其工作原理是接收模擬信號,將其轉(zhuǎn)換為0或1的數(shù)字信號,再對數(shù)字信號進行修改、刪除、強化,并在其他系統(tǒng)芯片中把數(shù)字?jǐn)?shù)據(jù)翻譯回模擬數(shù)據(jù)或?qū)嶋H環(huán)境格式。它不僅具有可編程性,而且其實時運行速度可達每秒數(shù)以千萬條復(fù)雜指令程序,遠遠超過了通用微處理器,是數(shù)字化電子世界中
7、日益重要的電腦芯片。它的強大數(shù)據(jù)處理能力和高運行速度,是最值得稱道的兩大特色。DSP既是Digital Signal Processing的縮寫(數(shù)字信號處理的理論和方法)也是Digital Signal Processor(用于數(shù)字信號處理的可編程微處理器)的縮寫。我們所說的DSP技術(shù),則一般指將通用的或?qū)S玫腄SP處理器用于完成數(shù)字信號處理的方法和技術(shù)。</p><p> 1.1 課程設(shè)計的目的</p
8、><p> 科技的進步帶動了DSP技術(shù)的發(fā)展,現(xiàn)代控制設(shè)備的性能和結(jié)構(gòu)發(fā)生了巨大的變化,我們已經(jīng)進入了高速發(fā)展的信息時代,DSP技術(shù)也成為當(dāng)今科技的主流之一,被廣泛地應(yīng)用于生產(chǎn)的各個領(lǐng)域。對于本次課程設(shè)計,其目的在于:</p><p> (1)算法原理與方法。對算法的原理進行詳細(xì)的闡述。</p><p> (2)實現(xiàn)平臺介紹。TI VC5416[2]及實驗板的簡單
9、描述。</p><p> (3)硬件資源的設(shè)置。對外設(shè)及內(nèi)核的配置。</p><p> (4)算法實現(xiàn)及流程。給出算法的流程圖及核心代碼。</p><p> (5)軟仿真、調(diào)試及結(jié)果。在CCS3.3[3]開發(fā)環(huán)境下進行軟仿真,調(diào)試,給出截圖并簡單敘述過程。</p><p> (6)畫出系統(tǒng)原理圖。采用Protel、Or CAD等原理圖
10、軟件。</p><p> 1.2 課程設(shè)計的要求</p><p> 本課程設(shè)計主要要注意以下幾方面的內(nèi)容:</p><p> (1)綜合運用DSP基本技術(shù)和信號系統(tǒng)設(shè)計方法設(shè)計本系統(tǒng)。</p><p> (2)學(xué)會文獻檢索的基本方法和綜合運用文獻的能力。</p><p> (3)通過課程設(shè)計培養(yǎng)嚴(yán)謹(jǐn)?shù)目茖W(xué)態(tài)度
11、,認(rèn)真的工作作風(fēng)和團隊協(xié)作精神。</p><p><b> 1.3設(shè)計平臺</b></p><p> CCS集成開發(fā)環(huán)境。CCS(Code Composer Studio)是TI開發(fā)的一個完整的DSP集成開發(fā)環(huán)境,也是目前使用最為廣泛的DSP開發(fā)軟件之一?,F(xiàn)在,所有的TI DSP都可以使用該軟件工具來進行開發(fā)。在CCS中,不僅集成了常規(guī)的開發(fā)工具,如源程序編輯器
12、、代碼生成工具(編譯、連接器)及調(diào)試環(huán)境,還提供了DSP/BIOSTM開發(fā)工具。DSP/BIOSTM是一個簡易的嵌入式操作系統(tǒng),它大大方便了用戶編寫多任務(wù)應(yīng)用程序。使用DSP/BIOSTM后,還能增強對代碼執(zhí)行效率的監(jiān)控。目前,CCS已經(jīng)成為DSP開發(fā)過程中不可缺少的工具。</p><p><b> 2 基本原理</b></p><p> 2.1 DSP系統(tǒng)簡介
13、</p><p> 數(shù)字信號處理[4]的目的是對真實世界的連續(xù)模擬信號進行測量或濾波。因此在進行數(shù)字信號處理之前需要將信號從模擬域轉(zhuǎn)換到數(shù)字域,這通常通過A/D轉(zhuǎn)換器實現(xiàn)。而數(shù)字信號處理的輸出經(jīng)常也要變換到模擬域,這是通過D/A轉(zhuǎn)換器實現(xiàn)的。 </p><p> 數(shù)字信號處理的算法需要利用計算機或?qū)S锰幚碓O(shè)備如數(shù)字信號處理器(DSP)和專用集成電路(ASIC)等。數(shù)字信號處理技術(shù)及
14、設(shè)備具有靈活、精確、抗干擾強、設(shè)備尺寸小、造價低、速度快等突出優(yōu)點,這些都是模擬信號處理技術(shù)與設(shè)備所無法比擬的。 </p><p> 數(shù)字信號處理的核心算法是離散傅立葉變換(DFT),是DFT使信號在數(shù)字域和頻域都實現(xiàn)了離散化,從而可以用通用計算機處理離散信號。而使數(shù)字信號處理從理論走向?qū)嵱玫氖强焖俑盗⑷~變換(FFT),F(xiàn)FT的出現(xiàn)大大減少了DFT的運算量,使實時的數(shù)字信號處理成為可能、極大促進了該學(xué)科的發(fā)展
15、。 </p><p> 世界上三大DSP芯片生產(chǎn)商是德克薩斯儀器公司(TI) 、模擬器件公司(ADI) 和摩托羅拉公司(Motorola)。這三家公司幾乎壟斷了通用DSP芯片市場。 </p><p> 圖像信號處理的應(yīng)用已滲透到各個科學(xué)技術(shù)領(lǐng)域。譬如,圖像處理技術(shù)可用于研究粒子的運動軌跡、生物細(xì)胞的結(jié)構(gòu)、地貌的狀態(tài)、氣象云圖的分析、宇宙星體的構(gòu)成等。在圖像處理的實際應(yīng)用中,獲得較大成
16、果的有遙感圖像處理技術(shù)、斷層成像技術(shù)、計算機視覺技術(shù)和景物分析技術(shù)等。根據(jù)圖像信號處理的應(yīng)用特點,處理技術(shù)大體可分為圖像增強、恢復(fù)、分割、識別、編碼和重建等幾個方面。這些處理技術(shù)各具特點,且正在迅速發(fā)展中。 </p><p> 2.2 TI VC5416芯片簡介</p><p> 圖像處理用TI公司的VC5416是TI公司的一款16bit定點高性能DSP芯片,是VC54XX系列中
17、的第三代芯片。主要特征有:速率最高達160MIPS;3條16bit的數(shù)據(jù)存儲器總線和1條程序存儲器總線;1個40bit桶形移位器和2個40bit累加器;1個17×17乘法器和1個40bit專用加法器;最大8M×16bit的擴展尋址空間,內(nèi)置128M×16bit的RAM和16K×16bit的ROM個多通道緩沖串口;配有PCM3002,可對語音進行A/D和D/A轉(zhuǎn)換。由于VC5416功耗低,性能高,其
18、分開的數(shù)據(jù)和指令空間使該芯片具有高度的并行操作能力,在單周期內(nèi)允許指令和數(shù)據(jù)同時存取,再加上高度優(yōu)化的指令集,使得該芯片具有很高的運算速度并且該芯片本身具有豐富的片內(nèi)存儲器資源和多種片上外設(shè),因此在工程界得到了廣泛應(yīng)用。</p><p> 2.3 CCS軟件簡介</p><p> 該課程設(shè)計是基于CCS開發(fā)環(huán)境的。CCS是TI公司推出的為開發(fā)TMS320系列DSP軟件的集成開發(fā)環(huán)境,是
19、目前使用最為廣泛的DSP開發(fā)軟件之一。它采用Windows風(fēng)格界面,提供了環(huán)境配置、源文件編譯、編譯連接、程序調(diào)試、跟蹤分析等環(huán)節(jié),并把軟、硬件開發(fā)工具集成在一起,使程序的編寫、匯編、程序的軟硬件仿真和調(diào)試等開發(fā)工作在統(tǒng)一的環(huán)境中進行,從而加速軟件開發(fā)進程。本課程設(shè)計通過CCS軟件平臺上應(yīng)用執(zhí)行效率高的匯編語言來實現(xiàn)黑白圖像采集及縮放實現(xiàn)。</p><p> 一個典型的CCS集成開發(fā)環(huán)境用戶界面如圖2.1所示。
20、</p><p> 圖2.1 CCS用戶界面</p><p> 由上圖知整個用戶界面由主菜單、工具欄、工程窗口、源程序編輯調(diào)試窗口、輸出窗口等組成。工程窗口用來組織用戶將若干程序構(gòu)成一個項目,用戶可以從工程列表中選擇需要編輯和調(diào)試的特定程序,可以在工程中添加文件。在源程序編輯窗口中用戶可以編輯程序,又可以設(shè)置斷點、探針調(diào)試程序。輸出窗口顯示編譯信息、程序執(zhí)行結(jié)果。</p>
21、<p> CCS主菜單中共有12項,如圖2.2所示,各項功能見表2-1。</p><p> 圖2.2 CCS主菜單</p><p> 表2-1 主菜單各項功能簡介</p><p> 常用工具欄由CCS的一些常用命令組成,有6個工具欄,分別是: Standard Toolbar(標(biāo)準(zhǔn)工具條)、GEL Toolbar(GEL工具條)、Project
22、Toolbar(工程工具條)、Debug Toolbar(調(diào)試工具條)、Edit Toolbar(編輯工具條)和Plug-in Toolbar(插件程序工具條)。這6個工具欄可在View菜單下找到,如圖2.3所示,并可選擇是否顯示該工具欄。</p><p> 圖2.3 View 菜單</p><p> 2.4 黑白圖像采集實現(xiàn)原理</p><p> 在計算機圖
23、像處理中,圖像縮放(image scaling)是指對數(shù)字圖像的大小進行調(diào)整的過程。圖像縮放是一種非平凡的過程,需要在處理效率以及結(jié)果的平滑度(smoothness)和清晰度(sharpness)上做一個權(quán)衡。當(dāng)一個圖像的大小增加之后,組成圖像的像素的可見度將會變得更高,從而使得圖像表現(xiàn)得“軟”。相反地,縮小一個圖像將會增強它的平滑度和清晰度。 </p><p> 壓縮卡的圖像采集是由VC5416直接完成的。初
24、始化結(jié)束后,VC5416按缺省模式或主機命令的要求確定圖像的大小和采集速率等參數(shù),然后根據(jù)奇、偶場信號和復(fù)合同步脈沖信號來采集圖像數(shù)據(jù)。</p><p> 采集流程可分為以下幾個步驟:</p><p><b> ①等待場開始。</b></p><p> ②當(dāng)場開始信號到來時,VC5416進入場處理子程序,開放行中斷做好采集一場數(shù)據(jù)的準(zhǔn)備。
25、根據(jù)奇、偶場信號可以決定是采集奇場圖像還是采集偶場圖像。</p><p> ?、郛?dāng)重復(fù)同步信號到來時,VC5416進入中斷服務(wù)子程序,并將圖像數(shù)據(jù)存入擴展的數(shù)據(jù)存儲器中。當(dāng)一場或一幀圖像各行數(shù)據(jù)都采集完畢后,關(guān)閉中斷。</p><p> 基于TIVC5416的黑白圖像采集之縮放實現(xiàn)中,DSP接收到場開始信號后進入場處理子程序中。在場處理子程序中,先確定將要采集的圖像的大小并設(shè)置采集、編碼
26、及發(fā)送過程中要使用的參數(shù),然后打開行采集中斷INT0,延時一定數(shù)目的行周期后退出場處理子程序,進入圖像采集階段。采集中斷要完成圖像采集和其它一些任務(wù)。在每行圖像采集之間應(yīng)根據(jù)圖像大小延時一段時間,以保證采集到的圖像位于畫面的中心。采集圖像時,每隔140ns讀取一個A/D轉(zhuǎn)換數(shù)據(jù),存入幀緩沖器。由于讀取A/D轉(zhuǎn)換結(jié)果與寫幀緩沖器只用了80ns,因此可以先將圖像數(shù)據(jù)減去128,再存入幀存儲器,這樣就進行了JPEG編碼時就不要執(zhí)行減128操作
27、了,節(jié)約了時間。</p><p><b> 3 設(shè)計步驟</b></p><p><b> 3.1程序流程圖</b></p><p> 圖像可以看作由無數(shù)點(像素)組成,這些點與x軸的每一個角度值相對應(yīng),可以利用DSP處理器處理大量重復(fù)計算的優(yōu)勢來計算x軸每一點對應(yīng)的y的值(在x軸取N個點進行逼近)。程序流程圖如圖3
28、.1所示。</p><p> 3.2 具體實現(xiàn)過程</p><p> CCS是一個開放的環(huán)境,可以通過設(shè)置不同的驅(qū)動程序完成對不同環(huán)境的支持。CCS setup 配置程序就是用來定義DSP芯片和目標(biāo)板類型的。在第一次使用CCS之前必須首先運行CCS setup 配置程序。在以后的使用中,若想改變CCS應(yīng)用平臺的類型,可以再次運行該配置程序來改變設(shè)置。CCS軟件集成了TI公司的Simul
29、ator和Emulatord的驅(qū)動程序,用戶可以直接用TI的仿真器進行開發(fā)測試。其配置過程如下,雙擊桌面上的Setup CCStudio圖標(biāo),彈出如圖3.2所示的對話框。</p><p> 圖3.2 CCS配置對話框</p><p> 從Family下拉菜單中選擇C54XX,Platform下拉菜單選擇xds510 emulator,從該對話框中選擇C5416 Device Simul
30、ator選項,然后單擊Add按鈕,如圖3.3所示。</p><p> 圖3.3用戶平臺類型</p><p> 該對話框中的Family欄用于設(shè)置DSP類型、平臺類型、是否進行內(nèi)存映射等。在配置對話框完成后,單擊Add按鈕保存設(shè)置即完成了配置。完成配置后即可打開CCS仿真軟件進行設(shè)計。首先創(chuàng)建源文件。</p><p> 選擇File →New →Source F
31、ile 命令,編寫源代碼(見附錄一)image.asm。</p><p> (2)創(chuàng)建黑白圖像采集的鏈接命令文件image.cmd(見附錄二)。</p><p> 其次是創(chuàng)建工程文件。</p><p> ?。?) 打開CCS,點擊Project-->New,創(chuàng)建一個新工程,其中工程名及路徑如圖3.4所示。</p><p> 圖3.
32、4 創(chuàng)建一個新工程</p><p> 點擊完成即可完成工程創(chuàng)建。</p><p> 右鍵點擊Projects,選擇Add Files to project,添加工程所需文件。如圖3.5所示</p><p> 圖3.5 添加工程文件</p><p> 在彈出的對話框中的下拉菜單中分別選擇image.asm和image.cmd點擊打開,即
33、可添加源程序到工程中,在Projects窗口中可見兩個源文件都已添加進工程。如圖3.6所示。</p><p> 圖3.6 已添加源文件窗口</p><p> 然后是設(shè)置編譯與連接選項,點擊Projects,選擇Build Options,在彈出的對話框中設(shè)置相應(yīng)的編譯參數(shù),一般情況下,按默認(rèn)值就可以;如圖3.7所示。</p><p> 圖3.7 編譯環(huán)境設(shè)置&
34、lt;/p><p> 同時在彈出的對話框中選擇連接的參數(shù)設(shè)置,設(shè)置輸出文件名,堆棧的大小以及初始化的方式。如圖3.8所示。 </p><p> 圖3.8 編譯環(huán)境設(shè)置</p><p> 最后是工程編譯與調(diào)試,點擊Projects→ Rebuild all,對工程進行編譯,如正確則生成.out文件;若是修改程序,可以使用Project → Bu
35、ild 命令,進行編譯連接,它只對修改部分做編譯連接工作,可節(jié)省編譯與連接的時間。編譯通過生成.out 文件。點擊File → load program,在彈出的對話框中載入debug 文件夾下的.out 可執(zhí)行文件,裝載完畢。</p><p><b> 4 仿真結(jié)果</b></p><p> 假設(shè)原圖像如下圖4.1所示: </p><p>
36、;<b> 圖4.1原圖像</b></p><p> 將該圖像放大兩倍,可以有很多種算法,最簡單的方法為最近領(lǐng)域插值,即將每一個原像素原封不動地復(fù)制映射到擴展后對應(yīng)四個像素中。如圖4.2所示。 </p><p> 圖4.2放大兩倍的圖像</p><p> 這種方法在放大圖像的同時保留了所有的原圖像的所有信息,但是會產(chǎn)生鋸齒現(xiàn)象。 <
37、;/p><p> 雙線性插值的效果對于放大的圖像而言較最近領(lǐng)域插值來得平滑,但是卻使得圖像變得模糊而且仍然會有一部分鋸齒現(xiàn)象。如圖4.3所示。 </p><p> 圖4.3雙線性插值法放大的圖像</p><p> 雙三次插值更好比雙線性插值更好。如圖4.4所示。 </p><p> 圖4.4雙三次插值法放大的圖像</p>&
38、lt;p> 對于低分辨率或顏色很少的(通常是從2到256色)圖像的放大問題,效果最好的算法是hq2x算法或類似的縮放算法。這些算法將會產(chǎn)生銳邊并保留大量的細(xì)節(jié),其效果圖4.5所示。</p><p> 圖4.5hq2x算法放大的圖像</p><p> 對于照片(以及有許多色階的光柵圖像)的縮放算法可以參看一種被稱為超采樣(supersampling)的反鋸齒算法。如圖4.6所示。
39、 </p><p> 圖4.6 縮放前后的圖像</p><p> 5 出現(xiàn)的問題及解決方法</p><p> (1)編寫相關(guān)程序中部分代碼出現(xiàn)問題無法運行,對CCS仿真軟件也不大熟悉,通過查看原理及相關(guān)資料,了解了黑白圖像的采集原理和CCS軟件的操作說明書,從而正確編寫出了設(shè)計程序并運行無錯。</p><p> (2)理論驗證時沒有徹
40、底搞清楚原理,黑白圖像采集過程中出現(xiàn)了錯誤,導(dǎo)致程序運行結(jié)果與理論驗證結(jié)果不符。在查看相關(guān)書籍,同學(xué)和老師的幫助下,最終徹底弄清楚了原理,得到了所要的圖像。</p><p> ?。?)在查找相關(guān)資料時不懂取舍,導(dǎo)致查了很多無關(guān)的資料。解決方法是首先弄清楚黑白圖像采集的相關(guān)原理和課程設(shè)計的要求。</p><p> ?。?)在寫論文的過程中也出現(xiàn)了不少的問題,如Visio 2003不知道使用,
41、原理圖的繪制比較麻煩,在同學(xué)的幫助下,通過多次練習(xí),終于熟練掌握了Visio畫圖。</p><p><b> 6 結(jié)束語</b></p><p> 經(jīng)過四周的摸索以及老師同學(xué)的幫助,經(jīng)過對課程設(shè)計的多次修改,我終于順利按時完成了本次課程設(shè)計任務(wù)。在這次課程設(shè)計中,我遇到了一些課堂中從未遇到的問題,通過網(wǎng)絡(luò)查找和同學(xué)交流,大大促進了設(shè)計進程。并在過程中進一步提高了自
42、身的創(chuàng)作、創(chuàng)新水平,扎實基礎(chǔ),擴展所學(xué)。這次課程設(shè)計不僅讓我更加深刻的了解了黑白圖像采集之縮放實現(xiàn)的原理,也更加深刻理解了它在通信系統(tǒng)中的重要作用。</p><p> 在整個設(shè)計過程中,對我來說收獲最大的是那些分析和解決問題的方法與能力。從分析任務(wù)書,到如何找到設(shè)計原理,以及采用什么平臺來實現(xiàn)原理都是環(huán)環(huán)相扣的一個過程,哪一個步驟出現(xiàn)了問題都會給最終的設(shè)計帶來麻煩。</p><p>
43、我的理論知識和實際應(yīng)用脫節(jié),它需要我將學(xué)過的相關(guān)知識都系統(tǒng)地聯(lián)系起來,對學(xué)過的理論進行深入的理解,這就為我們以后進行社會生產(chǎn)打下了基礎(chǔ)。通過本次課程設(shè)計,我真切的體會到了理論與實際工程的聯(lián)系,架起這座橋梁的就是我們的系統(tǒng)仿真。也正是因為有了系統(tǒng)仿真這個模塊才讓我們的理論在不至于和實際工程相差很遠,也讓我們在學(xué)校里就可以驗證理論知識,說到這里我不得不感到電子世界的奇妙。對于我們在校大學(xué)生來說很難遇到很好的機會可以把理論運用到真正的實際工程
44、中去,因為我們沒有經(jīng)驗,也因為實際工程的嚴(yán)謹(jǐn),不存在嘗試的可能性,不允許有任何差錯。要完整的做好一個設(shè)計需要的不僅是懂得理論就可以了。</p><p> 回顧這次課程設(shè)計,感慨頗多,在短短的四周時間里,我不僅鞏固了以前學(xué)過的知識,還學(xué)到了很多新知識。這次課程設(shè)計使我深刻認(rèn)識到理論和實踐相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把理論和實踐結(jié)合起來,從實踐中得出結(jié)論,才是真正自己掌握好的知識,才能提高自己的
45、實際動手能力和獨立思考解決問題的能力。同時,完成課程設(shè)計的過程中我也發(fā)現(xiàn)了自己的很多不足。比如,有時候自己遇到問題做不出來就開始浮躁。通過此次課程設(shè)計我知道了做科學(xué)需要嚴(yán)謹(jǐn)?shù)膽B(tài)度和廣褒的知識,為我以后更好的學(xué)習(xí)指明了一個努力的方向。我會不斷的努力學(xué)習(xí),珍惜每次機會,把專業(yè)學(xué)好,鍛煉自己獨立思考問題的能力,同時培養(yǎng)自己理論聯(lián)系實際及動手的能力。</p><p> 最后,這個設(shè)計之所以能按時完成離不開老師的指導(dǎo)和同
46、學(xué)的幫助,在此對他們表示衷心的感謝,也感謝學(xué)校給了我這次鍛煉自己和認(rèn)識自己知識水平的好機會。</p><p><b> 參考文獻</b></p><p> [1] 支長義等.DSP原理及開發(fā)應(yīng)用.北京:北京航空航天大學(xué)出版社,2006.</p><p> [2] 清源科技.TMS320C54xDSP硬件開發(fā)教程.北京:機械工業(yè)出版社,20
47、03.</p><p> [3] 劉益成.TMS320C54xDSP應(yīng)用程序設(shè)計與開發(fā).北京:北京航空航天大學(xué)出版社,2002.</p><p> [4] 趙紅怡.DSP技術(shù)與應(yīng)用實例(第二版).北京:電子工業(yè)出版社,2008.</p><p><b> 附件</b></p><p> 附件一:黑白圖像采集源程序
48、</p><p> //程序名稱:image.asm</p><p> //程序功能:實現(xiàn)黑白圖像采集的功能</p><p> //程序作者:唐勝艷</p><p> //最后修改日期:2011-11-4</p><p> /*圖像句柄的聲明*/</p><p> VP_Handle
49、 vpHchannel0;</p><p> VP_Handle vpHchannel1;</p><p> VP_Handle vpHchannel2;</p><p> /*確定圖像的參數(shù)*/</p><p> int numPixels = 720;//每行720個像素</p><p> int num
50、Lines = 576;//每幀576行(PAL)</p><p> /*采集與顯示緩沖區(qū)的首址*/</p><p> Uint32 capYbuffer = 0x80000000;</p><p> Uint32 capCbbuffer = 0x800675c0;</p><p> Uint32 capCrbuffer = 0x8
51、009b0a0;</p><p> Uint32 disYbuffer = 0x80100000;</p><p> Uint32 disCbbuffer = 0x801675c0; </p><p> Uint32 disCrbuffer = 0x8019b0a0;</p><p> Uint32 tempYbuffer = 0x8
52、0200000; //臨時值</p><p> /*圖像格式標(biāo)志*/</p><p> Uint8 NTSCorPAL = 0;</p><p> extern far void vectors();</p><p> extern volatile Uint32 capNewFrame;</p><p>
53、 extern volatile Uint32 disNewFrame;</p><p> void main()</p><p><b> {inti;</b></p><p> Uint8 addrI2C;</p><p> /*等待第一幀數(shù)據(jù)采集完成*/</p><p> wh
54、ile(capNewFrame == 0){}</p><p> /*將數(shù)據(jù)存入顯示緩沖區(qū),并清采集完成的標(biāo)志*/</p><p> capNewFrame =0;</p><p> for(i=0;i<numLines;i++)</p><p><b> {</b></p><p>
55、; /*傳送臨時Y緩沖區(qū)*/</p><p> DAT_copy((void *)(capYbuffer + i * numPixels), </p><p> (void *)(tempYbuffer + i * numPixels), numPixels); </p><p><b> }</b></p>&l
56、t;p> /*畫邊框*/ </p><p> drawRectangle(); </p><p> for(i=0;i<0x33ae0;i++)</p><p> { *((Uint8 *)(disCrbuffer +i)) =0x80;</p><p> *((Uint8 *)(disCbbuffer +i))
57、=0x80;</p><p><b> }</b></p><p> for(i=0;i<numLines;i++)</p><p> {/*傳送Y緩沖區(qū)*/</p><p> DAT_copy((void *)(tempYbuffer + i * numPixels), (void *)(disYbuff
58、er + i * numPixels), numPixels);</p><p><b> }</b></p><p> /*啟動顯示模塊*/</p><p> bt656_display_start(vpHchannel1);</p><p> /*建立顯示的實時循環(huán)*/</p><p
59、><b> for(;;)</b></p><p> {/*當(dāng)采集區(qū)的數(shù)據(jù)已經(jīng)采集好,而顯示緩沖區(qū)的數(shù)據(jù)已空*/</p><p> if((capNewFrame == 1)&&(disNewFrame == 1))</p><p> {/*將數(shù)據(jù)裝入顯示緩沖區(qū),并清采集完成的標(biāo)志*/</p><
60、;p> capNewFrame =0;</p><p> disNewFrame =0;</p><p> for(i=0;i<numLines;i++)</p><p> {/*傳送臨時Y緩沖區(qū)*/</p><p> DAT_copy((void *)(capYbuffer + i * numPixels), (voi
61、d *)(tempYbuffer + i * numPixels),numPixels);</p><p><b> }</b></p><p> /*畫邊框*/ </p><p> drawRectangle(); </p><p> for(i=0;i<numLines;i++)</p
62、><p> {/*傳送Y緩沖區(qū)*/</p><p> DAT_copy((void *)(tempYbuffer + i * numPixels), (void *)(disYbuffer + i * numPixels),numPixels);</p><p><b> }</b></p><p><b
63、> }</b></p><p><b> }</b></p><p><b> }</b></p><p> /*畫矩形邊框函數(shù)的定義*/</p><p> void drawRectangle()</p><p><b> {int
64、i,j;</b></p><p><b> /*畫上邊*/</b></p><p><b> //奇數(shù)行</b></p><p> for(i=intALines-4;i<intALines;i++) //邊框長度</p><p> { for(j=intAPixels-
65、6;j<intDPixels+6;j++) //奇數(shù)行邊框?qū)挾?lt;/p><p> {*(Uint8 *)(tempYbuffer + i*numPixels + j) = 0x00;</p><p><b> }</b></p><p><b> }</b></p><p><b
66、> //偶數(shù)行</b></p><p> for(i=numLines/2+intALines-4;i<numLines/2+intALines;i++) //邊框長度</p><p> {for(j=intAPixels-6;j<intDPixels+6;j++) //偶數(shù)行邊框?qū)挾?lt;/p><p> {*(Uint8 *)
67、(tempYbuffer + i*numPixels + j) = 0x00;</p><p><b> }</b></p><p><b> }</b></p><p><b> /*畫下邊*/</b></p><p><b> //奇數(shù)行</b>
68、;</p><p> for(i=intDLines;i<intDLines+4;i++)//邊框長度</p><p> {for(j=intAPixels-6;j<intDPixels+6;j++) //奇數(shù)行邊框?qū)挾?lt;/p><p> { *(Uint8 *)(tempYbuffer + i*numPixels + j) = 0x00;<
69、/p><p><b> }</b></p><p><b> }</b></p><p><b> //偶數(shù)行</b></p><p> for(i=numLines/2+intDLines;i<numLines/2+intDLines+4;i++)//邊框長度<
70、;/p><p> {for(j=intAPixels-6;j<intDPixels+6;j++) //偶數(shù)行邊框?qū)挾?lt;/p><p> {*(Uint8 *)(tempYbuffer + i*numPixels + j) = 0x00;</p><p><b> }</b></p><p><b>
71、}</b></p><p><b> /*畫左邊*/</b></p><p><b> //奇數(shù)行</b></p><p> for(i=intALines;i<intDLines;i++)//邊框長度</p><p> {for(j=intAPixels-6;j<
72、intAPixels;j++) //奇數(shù)行邊框?qū)挾?lt;/p><p> { *(Uint8 *)(tempYbuffer + i*numPixels + j) = 0x00;</p><p><b> }</b></p><p><b> }</b></p><p><b> //偶
73、數(shù)行</b></p><p> for(i=numLines/2+intALines;i<numLines/2+intDLines;i++)//邊框長度</p><p> {for(j=intAPixels-6;j<intAPixels;j++) //偶數(shù)行邊框?qū)挾?lt;/p><p> { *(Uint8 *)(tempYbuffer +
74、 i*numPixels + j) = 0x00;</p><p><b> }</b></p><p><b> }</b></p><p><b> /*畫右邊*/</b></p><p><b> //奇數(shù)行</b></p>&
75、lt;p> for(i=intALines;i<intDLines;i++)//邊框長度</p><p> {for(j=intDPixels;j<intDPixels+6;j++) //奇數(shù)行邊框?qū)挾?lt;/p><p> {*(Uint8 *)(tempYbuffer + i*numPixels + j) = 0x00;</p><p>&l
76、t;b> }</b></p><p><b> }</b></p><p><b> //偶數(shù)行</b></p><p> for(i=numLines/2+intALines;i<numLines/2+intDLines;i++)//邊框長度</p><p> {
77、 for(j=intDPixels;j<intDPixels+6;j++) //偶數(shù)行邊框?qū)挾?lt;/p><p> { *(Uint8 *)(tempYbuffer + i*numPixels + j) = 0x00;</p><p><b> }</b></p><p><b> }</b></p>
78、<p><b> } </b></p><p> 附錄二:圖像縮放處理算法函數(shù)體程序</p><p> //程序名稱:image.cmd</p><p> //程序功能:實現(xiàn)圖像縮放的功能</p><p> //程序作者:唐勝艷</p><p> //最后修改日期:201
79、1-11-4</p><p> /*圖像縮放處理算法函數(shù)體程序*/</p><p> void zoom()</p><p><b> {</b></p><p> int i,j; //定義變量</p><p> int int CapX, int CapY; //定義橫縱
80、坐標(biāo)</p><p> for (i=0;i<numLines;i++) //定義循環(huán)變量</p><p><b> {</b></p><p> for (j=0;j<numPixels;j++) //定義循環(huán)變量</p><p> { </p><p&
81、gt; intCapX = (int)(j/fYZoomRatio+0.5); //X軸的縮放計算</p><p> intCapY = (int)(i/fXZoomRatio+0.5); //Y軸的縮放計算</p><p> //判斷是否在原圖范圍內(nèi)</p><p> if ((intCapX>=0) && (intCapX&
82、lt;numPixels)) </p><p> { if ((i<numLines/2) && (intCapY>=0) && (intCapY<numLines/2))</p><p><b> {</b></p><p><b> //傳送亮度信號</b>&
83、lt;/p><p> *(Uint8 *)(tempYbuffer + i*numPixels + j) = *(Uint8 *)(capYbuffer + intCapY*numPixels + intCapX); </p><p><b> }</b></p><p> else if ((i>=numLines/2) &
84、& (i<numLines) && (intCapY>=numLines/2) && (intCapY<numLines))</p><p><b> {</b></p><p><b> //傳送亮度信號</b></p><p> *(Uint8 *)(te
85、mpYbuffer + i*numPixels + j) = *(Uint8 *)(capYbuffer + intCapY*numPixels + intCapX); </p><p><b> }</b></p><p><b> else</b></p><p> {*(Uint8 *)(tempYbuffe
86、r + i*numPixels + j) = 0xFF;</p><p><b> } </b></p><p><b> } </b></p><p><b> else</b></p><p> {*(Uint8 *)(tempYbuffer + i*numPixe
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- dsp課程設(shè)計-- 溫度采集與顯示系統(tǒng)設(shè)計
- 基于dsp的圖像處理-dsp課程設(shè)計
- dsp課程設(shè)計fft的dsp實現(xiàn)
- dsp課程設(shè)計報告--fft的dsp實現(xiàn)
- dsp課程設(shè)計報告-數(shù)據(jù)采集處理和控制系統(tǒng)設(shè)計
- dsp課程設(shè)計-無線電系統(tǒng)設(shè)計與實現(xiàn)
- dsp課程設(shè)計---基于dsp的bios模塊設(shè)計實現(xiàn)
- 溫度采集系統(tǒng)課程設(shè)計
- dsp課程設(shè)計-語音采集壓縮存儲與回放
- 通信系統(tǒng)課程設(shè)計
- 通信系統(tǒng)課程設(shè)計
- 通信原理課程設(shè)計--數(shù)字通信系統(tǒng)的設(shè)計與實現(xiàn)
- 利用dsp實現(xiàn)自適應(yīng)濾波dsp課程設(shè)計
- 通信系統(tǒng)課程設(shè)計報告--現(xiàn)代通信系統(tǒng)之ngn軟交換實訓(xùn)
- dsp課程設(shè)計報告--dsp芯片應(yīng)用系統(tǒng)設(shè)計
- dsp最小系統(tǒng)課程設(shè)計
- 現(xiàn)代通信電路課程設(shè)計--模擬通信系統(tǒng)的設(shè)計與實現(xiàn)
- 通信原理課程設(shè)計--- 時分復(fù)用通信系統(tǒng)的設(shè)計與實現(xiàn)
- 課程設(shè)計報告--模擬通信系統(tǒng)的設(shè)計與實現(xiàn)
- 基于DSP和CPLD的圖像通信系統(tǒng)設(shè)計與實現(xiàn).pdf
評論
0/150
提交評論