魯億方, 藍(lán)金輝,遲健男
(北京科技大學(xué) 自動(dòng)化學(xué)院,北京 100083)
隨著電子科學(xué)與計(jì)算機(jī)科學(xué)的發(fā)展與進(jìn)步,數(shù)字圖像處理技術(shù)在各個(gè)領(lǐng)域應(yīng)用越來越廣泛,日益成為教學(xué)熱點(diǎn)。數(shù)字圖像處理的內(nèi)容包括:圖像變換 、圖像編碼 、圖像增強(qiáng) 、圖像恢復(fù)、圖像分割和圖像識(shí)別等。目前,數(shù)字信號(hào)處理器(digital signal processer,DSP)芯片在圖像處理領(lǐng)域應(yīng)用得十分廣泛,因此將DSP實(shí)驗(yàn)平臺(tái)引入“數(shù)字圖像處理”課堂,利用DSP進(jìn)行數(shù)字圖像處理,讓學(xué)生自己設(shè)計(jì)圖像處理的算法,自己在DSP平臺(tái)上對(duì)比圖像處理效果,進(jìn)而引導(dǎo)他們進(jìn)行創(chuàng)新[1]。
為了滿足學(xué)生的需要,本文介紹了以DM642為核心的DSP平臺(tái),并以此為基礎(chǔ)進(jìn)行一系列的數(shù)字圖像處理實(shí)驗(yàn),為學(xué)生以后的實(shí)驗(yàn)課程學(xué)習(xí)進(jìn)行了探索。
在課堂大綱的指導(dǎo)下,針對(duì)學(xué)生所學(xué)的知識(shí)點(diǎn)、學(xué)生的實(shí)際情況,適時(shí)地選擇有代表性、難度適中的數(shù)字圖像處理實(shí)例作為學(xué)生的實(shí)驗(yàn)項(xiàng)目,讓學(xué)生能夠獨(dú)立自主地進(jìn)行設(shè)計(jì)、編程、調(diào)試,通過自己的實(shí)踐來發(fā)現(xiàn)問題、解決問題,在實(shí)踐過程中不斷學(xué)習(xí)。學(xué)生在實(shí)踐過程中既能在CCS環(huán)境實(shí)驗(yàn)中加深掌握數(shù)字信號(hào)處理的基礎(chǔ)知識(shí),又能培養(yǎng)學(xué)生調(diào)試程序的能力。為了配合理論教學(xué),實(shí)驗(yàn)內(nèi)容安排仍從認(rèn)識(shí)性和驗(yàn)證性入手,逐步增加設(shè)計(jì)性和工程應(yīng)用性內(nèi)容,使學(xué)生在掌握數(shù)字信號(hào)處理基本理論和方法的基礎(chǔ)上,可以更多地了解和掌握數(shù)字信號(hào)處理的仿真、開發(fā)、實(shí)現(xiàn)工具和方法,達(dá)到訓(xùn)練實(shí)驗(yàn)技能和積累工程實(shí)際應(yīng)用經(jīng)驗(yàn)的目的[2-4]。
DSP是針對(duì)數(shù)字信號(hào)處理需要而設(shè)計(jì)的一種可編程的超高速單片計(jì)算機(jī)系統(tǒng),是現(xiàn)代電子技術(shù)、計(jì)算機(jī)技術(shù)和信號(hào)處理技術(shù)相結(jié)合的產(chǎn)物。在過去的20多年里,DSP芯片的性能得到了很大的改善,軟件和開發(fā)工具也得到了相應(yīng)的發(fā)展,且價(jià)格大幅下降,采用DSP器件來實(shí)現(xiàn)數(shù)字信號(hào)處理系統(tǒng)已成了當(dāng)前的發(fā)展趨勢(shì),其在電子信息、通信、軟件無線電、自動(dòng)控制、儀器儀表、信息家電等高科技領(lǐng)域獲得了越來越廣泛的應(yīng)用。在數(shù)字圖像處理領(lǐng)域,DSP也扮演著不可替代的重要角色。為了應(yīng)對(duì)人才市場(chǎng)對(duì)DSP相關(guān)人才日益增長(zhǎng)的需求,越來越多的工科學(xué)校開始重視和大力發(fā)展DSP教學(xué),因此研究DSP應(yīng)用教學(xué)有著重要的現(xiàn)實(shí)意義[5-6]。
TMS320DM642(以下簡(jiǎn)稱為DM642)是TI公司2003年推出的一款針對(duì)多媒體處理領(lǐng)域應(yīng)用的高速DSP處理器,基于C64X核心架構(gòu),集成了豐富的外圍設(shè)備和接口,最高主頻達(dá)到了720 MHz,并行處理指令的能力可達(dá)每個(gè)指令周期處理8條32位指令,因此最大指令處理速度為5760MIPS。超長(zhǎng)指令字(VLIW)的DM642核具64個(gè)32位字長(zhǎng)的通用寄存器,8個(gè)獨(dú)立的功能單元(L1,L2,S1,S2,D1;D2,M1和M2),2個(gè)寄存器文件(A和B)和2個(gè)數(shù)據(jù)交叉通道(1X和2X)。這些硬件資源對(duì)等分配為2個(gè)相同的組,每組占用一個(gè)數(shù)據(jù)交叉通道。DM642每周期能夠提供4個(gè)16位MAC,兩級(jí)緩存:一級(jí)程序緩存L1P是一個(gè)128 Kbit的直接映射緩存,另一級(jí)數(shù)據(jù)緩存L1D是一個(gè)128 Kbit的雙路結(jié)合設(shè)置緩存。L2緩存器能被配置成映射存儲(chǔ)器、高速緩存或者兩者結(jié)合。DM642的一個(gè)很重要的外設(shè)就是VideoPort,它可以很方便地讀寫外部的視頻解碼器,TI公司提供了針對(duì)DM642的視頻解碼器的驅(qū)動(dòng)程序,用戶只需開發(fā)應(yīng)用程序即可,為系統(tǒng)的開發(fā)帶來極大的方便。DM642的結(jié)構(gòu)框圖如圖1 所示[7]。
圖1 DM642結(jié)構(gòu)圖
DM642屬于TI公司的C64x系列DSP。DM642 與其他芯片比較,主要有以下幾方面的優(yōu)勢(shì):第一,它具有通用性,可以實(shí)現(xiàn)很多功能;第二,用戶開發(fā)自由度更大,支持多種個(gè)性化開發(fā),可以滿足市場(chǎng)不斷提出的新的要求,在第一時(shí)間提升產(chǎn)品性能,增強(qiáng)產(chǎn)品的競(jìng)爭(zhēng)能力;第三,處理能力強(qiáng),可以在一個(gè)DM642上同時(shí)實(shí)現(xiàn)多路音視頻信號(hào)的壓縮處理,同時(shí)為了及時(shí)滿足應(yīng)用的需要,還提供了很多視頻專用功能,比如視頻濾波、高分辨顯示輸出功能等,使進(jìn)一步大幅度降低產(chǎn)品的成本成為可能(這一點(diǎn)很重要);第四,開發(fā)周期短,實(shí)現(xiàn)快速技術(shù)更新和產(chǎn)品換代;第五,芯片功耗低,為提高產(chǎn)品的穩(wěn)定性提供可靠保障。因此我們選擇DM642作為核心搭建數(shù)字圖像處理實(shí)驗(yàn)平臺(tái),來進(jìn)行接下來的數(shù)字圖像處理實(shí)驗(yàn)探索[8]。
實(shí)驗(yàn)平臺(tái)采用高性能的DSP芯片DM642作為核心處理器,擴(kuò)展了SDRAM和Flash存儲(chǔ)器,分別用于程序的運(yùn)行和存儲(chǔ),通過視頻編解碼器完成視頻的采集和輸出[9]。集成了CCD、TV、JTAG仿真接口等外設(shè),充分利用了片上資源。系統(tǒng)既可以脫機(jī)工作,也可以通過接口進(jìn)行二次開發(fā)。系統(tǒng)硬件組成如圖2所示。
圖2 系統(tǒng)硬件組成結(jié)構(gòu)圖
軟件的質(zhì)量可以從代碼長(zhǎng)度、執(zhí)行速度以及代碼是否可重復(fù)利用等方面進(jìn)行評(píng)價(jià),而開發(fā)工具的好壞對(duì)代碼的長(zhǎng)度、代碼的執(zhí)行速度起著關(guān)鍵的作用。另外,開發(fā)工具的功能是否齊全、使用是否方便,在很大程度上影響DSP系統(tǒng)的開發(fā)周期以及產(chǎn)品的上市時(shí)間。為此1999年,TI公司針對(duì)TMS320C6000系列的數(shù)字信號(hào)處理器,推出了一種CCS(code composer studio),它是一個(gè)集成性的DSP軟件開發(fā)工具。CCS的出現(xiàn)是DSP開發(fā)軟件的一次革命性的變化。
CCS 主要包含如下功能:
(1) 集成了可直接編寫 C、匯編、.H 文件、.cmd 文件等的可視化代碼編輯界面;
(2) 集成了包括匯編器、優(yōu)化 C 編譯器、連接器等的代碼生成工具;
(3) 集成了各種調(diào)試工具,如裝入執(zhí)行代碼后,即可查看寄存器、存儲(chǔ)器、反匯編、變量窗口等的相應(yīng)信息,還支持 C 源代碼級(jí)調(diào)試;
(4) 斷點(diǎn)工具包括硬件斷點(diǎn)、數(shù)據(jù)空間讀/寫斷點(diǎn),條件斷點(diǎn)等;
(5) 集成了可繪制眼圖、星座圖、時(shí)域/頻域波形、圖像等的數(shù)據(jù)圖形顯示工具,并可自動(dòng)刷新;
(6) 支持 RTDX(real time data exchange)技術(shù),實(shí)現(xiàn)在不中斷 DSP 系統(tǒng)運(yùn)行的情況下與其他應(yīng)用程序的數(shù)據(jù)交換;
(7) 提供 DSP/BIOS 工具,增強(qiáng)對(duì)代碼的實(shí)時(shí)分析能力、調(diào)度程序執(zhí)行的優(yōu)先級(jí)、方便管理和使用系統(tǒng)資源,減少了開發(fā)人員對(duì)硬件資源熟悉程度的依賴[10]。
代碼生成工具奠定了CCS所提供的開發(fā)環(huán)境的基礎(chǔ),CCS使用到的主要開發(fā)工具如下:
(1) 匯編優(yōu)化器。匯編優(yōu)化器允許用戶在寫線性匯編代碼時(shí)不用考慮流水線結(jié)構(gòu)和寄存器分配。匯編優(yōu)化器的輸入是線形匯編代碼,這種匯編代碼沒有進(jìn)行寄存器分配,也不考慮指令流水延遲。匯編優(yōu)化器分配寄存器利用循環(huán)優(yōu)化技術(shù)把線性匯編轉(zhuǎn)化為高度并行和軟件流水的匯編代碼。
(2) C/C++編譯器。C/C++編譯器的輸入為C/C++源代碼,輸出為 C6000 匯編源代碼。編譯器、優(yōu)化器和交疊工具是 C/C++編譯器的組成部分,編譯器使用戶能一步完成編譯、匯編和連接。如果輸入文件中有.sa文件,編譯器執(zhí)行匯編優(yōu)化器。優(yōu)化器調(diào)整和修改代碼以提高了C程序的效率。交疊工具把C/C++語(yǔ)句和對(duì)應(yīng)的匯編語(yǔ)句交疊列出。
(3) 匯編器。匯編器把匯編源文件翻譯為機(jī)器語(yǔ)言目標(biāo)文件。
(4) 連接器。連接器連接目標(biāo)文件,生成一個(gè)可執(zhí)行的目標(biāo)文件。由于連接器生成可執(zhí)行目標(biāo)文件,它要完成地址的重分配和解析外部引用,連接器的輸入是可重分配地址的目標(biāo)文件和目標(biāo)庫(kù)。
(5) 文檔管理器。文檔管理器允許用戶把一組文件放入一個(gè)稱為庫(kù)的文檔文件內(nèi)。此外,文檔管理器允許用戶刪除、替換、提取或添加庫(kù)中的成員。
(6) 建庫(kù)工具。用戶可以利用建庫(kù)工具生成自己的運(yùn)行時(shí)支持庫(kù)。
(7) 十六進(jìn)制轉(zhuǎn)換工具。十六進(jìn)制轉(zhuǎn)換工具把通用目標(biāo)文件格式(COFF)目標(biāo)文件轉(zhuǎn)化為 TI-Tagged、ASCII-hex、Intel、Mortorala-S 和 Tektronix 等目標(biāo)文件格式,然后用戶就可以把轉(zhuǎn)換后的文件燒寫到 Flash 中,實(shí)現(xiàn) Flash 自舉。
本系統(tǒng)使用了CCS集成開發(fā)環(huán)境,程序的編寫、編譯、鏈接以及下載調(diào)試都在同窗口下完成。程序調(diào)試完成后,生成COFF 格式的可執(zhí)行代碼文件(*.out),通過專門的燒寫程序可將文件寫入Flash中固化;然后通過DSP獨(dú)立自主的對(duì)圖像進(jìn)行處理;最后將處理過后的圖片輸出到顯示屏。
本節(jié)針對(duì)DSP平臺(tái)做一組數(shù)字圖像處理實(shí)驗(yàn),并對(duì)實(shí)驗(yàn)結(jié)果給與分析。首先連接好DSP數(shù)字圖像處理平臺(tái)與上位機(jī)及顯示液晶屏;然后打開DSP數(shù)字圖像處理平臺(tái)的開關(guān),給其上電并開啟液晶屏;設(shè)置CCS在硬件仿真下運(yùn)行,啟動(dòng)CCS,所有的算法,并通過CCS環(huán)境下進(jìn)行編譯、連接、下載并運(yùn)行程序,然后在液晶顯示屏觀察運(yùn)行結(jié)果[11]。
數(shù)字圖像在計(jì)算機(jī)上以位圖的形式存在,位圖是一個(gè)矩形點(diǎn)陣,其中每個(gè)點(diǎn)稱為一個(gè)像素,像素是數(shù)字圖像中的基本單位。一幅圖像的大小是由n個(gè)明暗度不等的像素組成,數(shù)字圖像中各個(gè)像素所具有的明暗程度是由灰度值所標(biāo)志,灰度是描述灰度圖像內(nèi)容的最直接的視覺特征,它指黑白圖像中點(diǎn)的顏色深度,范圍一般從0~255,白色為255,黑色為0,故黑白圖片也稱灰度圖像?;叶葓D像矩陣元素的取值通常為[0,255],因此其數(shù)據(jù)類型一般為8位無符號(hào)整數(shù)(int8),這就是人們通常所說的256級(jí)灰度。0表示純黑色,255表示純白色,中間的數(shù)字從小到大表示由黑到白的過渡色,即可以表示不同的灰度等級(jí)。
在CCS中編譯取灰度圖程序,部分程序如下:
void gray()
{
int i,j;
for(i=intALines;i { for(j=intAPixels/2;j { *(Uint8 *)(tempCbbuffer +i * (numPixels >> 1) + j) = 0x80; *(Uint8 *)(tempCrbuffer + i * (numPixels >> 1) + j) = 0x80; } } } 圖3即所得灰度圖。 圖3 灰度圖顯示實(shí)驗(yàn)結(jié)果 一幅圖像包括目標(biāo)物體、背景,還有噪聲,要想從多值的數(shù)字圖像中直接提取出目標(biāo)物體,最常用的方法就是設(shè)定一個(gè)閾值T,用T將圖像的數(shù)據(jù)分成兩部分:大于T的像素群和小于T的像素群。這是研究灰度變換的最特殊的方法,稱為圖像的二值化。圖像的二值化,就是將圖像上的像素點(diǎn)的灰度值設(shè)置為0或255,也就是將整個(gè)圖像呈現(xiàn)出明顯的只有黑和白的視覺效果。 于是在得到灰度圖像的基礎(chǔ)上繼續(xù)利用DSP平臺(tái)計(jì)算并獲取其原始圖像的二值化圖像。部分程序如下: void threshold() { int i,j; for(i=intALines;i { for(j=intAPixels;j { *(Uint8 *)(tempYbuffer + i*numPixels + j) = *(Uint8 *)(tempYbuffer + i*numPixels + j) } } } 在經(jīng)過DSP平臺(tái)處理之后所得的圖像如圖4所示。 圖4 二值化實(shí)驗(yàn)結(jié)果 圖像的邊緣是圖像的最基本特征。所謂邊緣(或邊沿)是指其周圍像素灰度有階躍變化或屋頂變化的那些像素的集合。邊緣廣泛存在于物體與背景之間、物體與物體之間、基元與基元之間。因此,它是圖像分割所依賴的重要特征。物體的邊緣是由灰度不連續(xù)性所反映的。經(jīng)典的邊緣提取方法是考察圖像的每個(gè)像素在某個(gè)鄰域內(nèi)灰度的變化,利用邊緣臨近一階或二階方向?qū)?shù)變化規(guī)律,用簡(jiǎn)單的方法檢測(cè)邊緣,這種方法稱為邊緣檢測(cè)局部算子法。 在本次實(shí)驗(yàn)里,使用Sobel邊緣算子來進(jìn)行邊緣檢測(cè)。Sobel邊緣算子:圖5所示的2個(gè)卷積核形成了sobel邊緣算子,圖像中的每個(gè)點(diǎn)都用這2個(gè)核做卷積,一個(gè)核對(duì)通常的垂直邊緣相應(yīng)最大,而另一個(gè)對(duì)水平邊緣相應(yīng)最大,2個(gè)卷積的最大值作為該點(diǎn)的輸出位。運(yùn)算結(jié)果是一幅邊緣幅度圖像[12]。 圖5 Sobel邊緣檢測(cè)算子 部分程序如下: /*Sobel邊緣檢測(cè)處理*/ void sobelEdge() { int i,j; int d1,d2,intTemp; for(i=intALines;i { for(j=intAPixels;j { d1 = (*(Uint8 *)(tempSrcYbuffer + (numLines/2+i)*numPixels + (j-1))) + 2*(*(Uint8 *)(tempSrcYbuffer + (numLines/2+i)*numPixels + j)) + (*(Uint8 *)(tempSrcYbuffer + (numLines/2+i)*numPixels + (j+1))) - (*(Uint8 *)(tempSrcYbuffer + (numLines/2+i-1)*numPixels + (j-1))) - 2*(*(Uint8 *)(tempSrcYbuffer + (numLines/2+i-1)*numPixels + j)) - (*(Uint8 *)(tempSrcYbuffer + (numLines/2+i-1)*numPixels + (j+1))); d2 = (*(Uint8 *)(tempSrcYbuffer + (numLines/2+i)*numPixels + (j+1))) - (*(Uint8 *)(tempSrcYbuffer + (numLines/2+i)*numPixels + (j-1))) + 2*(*(Uint8 *)(tempSrcYbuffer + i*numPixels + (j+1))) -2*(*(Uint8 *)(tempSrcYbuffer + i*numPixels + (j-1))) +(*(Uint8 *)(tempSrcYbuffer + (numLines/2+i-1)*numPixels + (j+1))) -(*(Uint8 *)(tempSrcYbuffer + (numLines/2+i-1)*numPixels + (j-1))); intTemp = d1>d2 d1:d2; if(intTemp<0) { intTemp = 0; } if(intTemp>255) { intTemp = 255; *(Uint8 *)(tempDisYbuffer + i*numPixels + j) = intTemp; } } } } 圖6就是經(jīng)過用邊緣檢測(cè)(Sobel邊緣算子)處理后的圖像。 圖6 邊緣檢測(cè)(Sobel邊緣算子)實(shí)驗(yàn)結(jié)果 在數(shù)字圖像處理的實(shí)驗(yàn)教學(xué)中,突出強(qiáng)調(diào)理論知識(shí)和實(shí)踐的結(jié)合,切實(shí)使實(shí)驗(yàn)課程成為學(xué)習(xí)和應(yīng)用之間的紐帶,從而有效地提高學(xué)生解決問題的綜合能力。為此在實(shí)驗(yàn)課程中要篩選圖像處理中最重要的算法作為實(shí)驗(yàn)課程的主要教學(xué)內(nèi)容,涵蓋了圖像的點(diǎn)運(yùn)算、圖像的幾何變換、圖像的增強(qiáng)、圖像的邊緣檢測(cè)和視頻處理等重要部分。除此外,重點(diǎn)培養(yǎng)學(xué)生的動(dòng)手能力,讓每個(gè)學(xué)生都能熟悉DSP實(shí)驗(yàn)平臺(tái)的使用,通過編寫調(diào)試程序使學(xué)生熟練地掌握使用CCS集成開發(fā)環(huán)境和數(shù)字圖像處理的DSP編程實(shí)現(xiàn)[13-14]。 在本實(shí)驗(yàn)平臺(tái)里,基于CCS開發(fā)環(huán)境可以促進(jìn)學(xué)生對(duì)數(shù)字圖像處理知識(shí)的理解,并通過實(shí)踐來鞏固課堂里學(xué)到的知識(shí),讓學(xué)生對(duì)數(shù)字信號(hào)處理理論知識(shí)掌握得更深刻,同時(shí)對(duì)硬件實(shí)驗(yàn)產(chǎn)生很大的興趣,并看到了自己的不足之處,從而使學(xué)生更加努力、認(rèn)真地學(xué)習(xí)理論課上的知識(shí)。 [1] 李小紅.基于DSP圖像處理實(shí)驗(yàn)系統(tǒng)的開發(fā)與應(yīng)用[J].合肥學(xué)院學(xué)報(bào), 2009,19(4):38-41. [2] 賈永紅.現(xiàn)代化教學(xué)手段在數(shù)字圖像處理教學(xué)中的應(yīng)用研究[J].測(cè)繪通報(bào), 2006(1):62-64. [3] 劉洋, 劉嘉.數(shù)字圖像處理課程教學(xué)方法研究[J].教研, 2011(8):70-71. [4] 楊達(dá)亮.DSP課程實(shí)驗(yàn)教學(xué)分析[J].廣西大學(xué)學(xué)報(bào),2007(29):184-186. [5] 廉小親,張曉力,方平,等.DSP 技術(shù)應(yīng)用綜合實(shí)訓(xùn)課程的構(gòu)建[J].中國(guó)現(xiàn)代教育裝備,2009(3):116-118. [6] 劉黨輝,沈蘭蓀.DSP芯片及其在圖像技術(shù)中的應(yīng)用[J].測(cè)控技術(shù),2001,20(5):16-23. [7] 劉源,朱善安,葉旭東.基于DM642的嵌入式視頻監(jiān)控系統(tǒng)硬件設(shè)計(jì)[J].電子器件,2006,26(3):905-908. [8] 李方慧,王飛.何佩琨,等.TMS320C6000 系列 DSPs 原理與應(yīng)用[M].北京:電子工業(yè)出版社,2003. [9] 張煒,胡云龍,吳鎮(zhèn)揚(yáng).DM642的性能及其在視頻處理實(shí)驗(yàn)中的應(yīng)用[J].電氣電子教學(xué)學(xué)報(bào),2005,27(5):82-85. [10] 何偉,陳彬,張玲.DSP/BIOS在基于DM642的視頻圖像處理中的應(yīng)用[J].信息與電子工程,2006,4(1):60-62. [11] 張建平, 戴詠夏.CCS在數(shù)字信號(hào)處理實(shí)驗(yàn)教學(xué)中的探究[J].高等理科教育, 2009(1):92-94. [12] 章世秀,高天武,鄒修國(guó).基于CCS的邊緣檢測(cè)算子實(shí)驗(yàn)[J].高校實(shí)驗(yàn)室工作研究,2012(3):56-57. [13] 韓智, 張振虹.“數(shù)字圖像處理”實(shí)驗(yàn)課教學(xué)改革與實(shí)踐[J].實(shí)驗(yàn)室研究與探索,2008,27(9):102-104. [14] 田秀玲.DSP應(yīng)用教學(xué)的探索和實(shí)踐[J].中國(guó)電力教育,2010(28):76-77.4.2 二值化實(shí)驗(yàn)
4.3 邊緣檢測(cè)實(shí)驗(yàn)
5 結(jié)束語(yǔ)