汪國強,饒文高,王 蘭
(黑龍江大學(xué) 電子工程學(xué)院,哈爾濱 150080)
隨著科學(xué)技術(shù)的快速發(fā)展,嵌入式技術(shù)已經(jīng)深入科學(xué)技術(shù)、生活和生產(chǎn)的各個角落,例如國防軍事領(lǐng)域、安保監(jiān)控設(shè)備、消費電子產(chǎn)品、工業(yè)化自動生產(chǎn)、智能化控制、電子醫(yī)療、網(wǎng)絡(luò)通信、航空航天等諸多領(lǐng)域[1-2]。現(xiàn)在很多新技術(shù)都與嵌入式技術(shù)相結(jié)合,在實際應(yīng)用中發(fā)揮重要作用。
本文應(yīng)用嵌入式技術(shù)和圖像處理技術(shù),充分發(fā)揮嵌入式系統(tǒng)功能強大、處理速度高、運行穩(wěn)定的優(yōu)點,把嵌入式系統(tǒng)作為圖像處理的載體平臺。選用的平臺是基于Samsung公司的S3C2440處理器系統(tǒng)[3],在硬件基礎(chǔ)上,進行軟件系統(tǒng)構(gòu)建,系統(tǒng)包括嵌入式系統(tǒng)環(huán)境的搭建、數(shù)字圖像采集相關(guān)驅(qū)動設(shè)計和數(shù)字圖像處理算法軟件的設(shè)計3個部分。利用Qt設(shè)計數(shù)字圖像處理平臺,實現(xiàn)多種處理算法,算法包括圖像的正交變換、平滑、銳化、邊緣檢測、浮雕算法等。
嵌入式系統(tǒng)的基礎(chǔ)技術(shù)是計算機技術(shù),所以它的體系繼承了計算機體系的特點。體系結(jié)構(gòu)包括3個重要的部分:硬件設(shè)備部分、嵌入式操作系統(tǒng)部分、應(yīng)用軟件部分。結(jié)構(gòu)見圖1。
圖1 嵌入式系統(tǒng)體系結(jié)構(gòu)Fig.1 Embedded system architecture
根據(jù)功能的具體應(yīng)用,選用S3C2440ARM微處理器。這款處理器也是基于ARM920T體系內(nèi)核,16/32位RISC嵌入式微處理器[4],輸入設(shè)備選用USB攝像頭設(shè)備作為圖像采集設(shè)備,輸出設(shè)備選用LCD顯示屏進行圖片的顯示輸出。核心部分包括,處理器、64Mbytes的SDRAM芯片、128Mbyte的Nand Flash,以及其他部分構(gòu)成。結(jié)構(gòu)見圖2。
在硬件基礎(chǔ)上,搭建嵌入式系統(tǒng),嵌入式操作系統(tǒng)的引入,使嵌入式的發(fā)展推向了一個新的階段。有了嵌入式操作系統(tǒng),可以應(yīng)對復(fù)雜的實際要求,使得嵌入式系統(tǒng)其功能強大,支持更多的功能。不僅使嵌入式系統(tǒng)具有通用操作系統(tǒng)的一般功能,如具備像PC機一樣的文件和目錄管理、多任務(wù)線程管理、各種網(wǎng)絡(luò)的應(yīng)用等功能,而且為上層開發(fā)人員提供了大量的用戶接口并在上層進行應(yīng)用程序的開發(fā)[5]。所構(gòu)建的嵌入式系統(tǒng)的構(gòu)成與軟件開發(fā)體系見圖3。
嵌入式Linux系統(tǒng)下的設(shè)備驅(qū)動,可以準(zhǔn)備好編譯到內(nèi)核中,系統(tǒng)啟動后內(nèi)核就啟動加載相關(guān)驅(qū)動。通常一個模塊對應(yīng)于一個設(shè)備驅(qū)動,應(yīng)用開發(fā)人員就可以通過驅(qū)動程序跨越設(shè)備的復(fù)雜硬件實現(xiàn)細節(jié),編寫應(yīng)用程序?qū)崿F(xiàn)對設(shè)備的控制完成功能要求。在驅(qū)動程序的具體操作中,應(yīng)用程序可以像對普通文件操作一樣進行控制,主要是調(diào)用應(yīng)用程序接口函數(shù)API完成對設(shè)備的打開、關(guān)閉、讀/寫數(shù)據(jù)操作和輸入/輸出控制操作[6]。
基于USB攝像頭本文使用Video4Linux,該驅(qū)動是為Linux提供的視頻設(shè)備驅(qū)動,因此在調(diào)用設(shè)備模塊流程中,是在用戶空間中完成系統(tǒng)調(diào)用功能。為上層開發(fā)提供API函數(shù):包括基本的I/O操作函數(shù)open()、close()、read()、write();對中斷的處理函數(shù);內(nèi)存映射功能以及對I/O通道的控制接口函數(shù)ioctl()的實現(xiàn)等。在V4L中,這些功能函數(shù)都定義在結(jié)構(gòu)體struct video_device中,主要為video_capability、grab_cap、video_picture grab_pic、video_mmap grab_buf、video_mbuf grab_vm[7],提供給內(nèi)核進行調(diào)用。
基于Video4Linux的設(shè)計流程,也是對/dev/video設(shè)備的操作[8],流程見圖4。
圖4 視頻設(shè)備驅(qū)動流程Fig.4 Video device driver process
編譯后,加載到嵌入式設(shè)備,運行后圖像采集見圖5。
圖5 顯示采集的圖像Fig.5 Image show
Qt/Embedded是著名的Qt庫開發(fā)商挪威的Trolltech面對嵌入式系統(tǒng)提供的優(yōu)化過的Qt版本,目前Qt已經(jīng)被諾基亞公司收購,Qt是一個跨平臺的C++圖形用戶界面軟件,其嵌入式版本Qt/Embedded和Qtopia Core版本對于各種可能涉及的嵌入式硬件接口和GUI工具包都提供了完全的圖形棧。
微課教學(xué)方法的應(yīng)用改變了傳統(tǒng)的教學(xué)模式,使得整個教學(xué)動起來了,這是激發(fā)學(xué)生學(xué)習(xí)積極性和興趣的重要舉措,這也是未來高中數(shù)學(xué)教學(xué)發(fā)展的趨勢.在教學(xué)改革的進一步深化推進當(dāng)中,高中數(shù)學(xué)教學(xué)改革和新的技術(shù)相結(jié)合的需求也在增加,這就為提高數(shù)學(xué)教學(xué)質(zhì)量有著積極作用.
Qt系統(tǒng)是C++面向?qū)ο驩OP跨平臺系統(tǒng),它的優(yōu)越性就是基于信號/槽機制。也就是當(dāng)一個對象的內(nèi)部狀態(tài)發(fā)生改變后,一個特定的信號就被發(fā)射,這種改變可以被認(rèn)為是類及其子類的改變。當(dāng)一個信號被發(fā)射后,這個信號所連接的槽就像調(diào)用普通函數(shù)一樣能被執(zhí)行[9]。結(jié)構(gòu)見圖6。
圖6 信號/槽機制Fig.6 Signal/Slot mechanism
利用USB攝像頭進行視頻圖像的采集,圖像經(jīng)過保存后,利用Qt數(shù)字圖像處理平臺進行算法處理,平臺中File、Edit選項是基本選項,包括讀取攝像頭采集圖像等;Geometry選項包括圖像的幾何算法;Character包括圖像特征算法,包括轉(zhuǎn)化灰度圖、顏色變換、亮度變換、對比度變換等;Pixel選項包括圖像的幾種增強算法,包括邊緣提取、銳化、浮雕、平滑處理等;Orthogonal選項為圖像的正交變換,包括傅里葉變換、快速離散傅里葉變換、基于FFT的濾波器設(shè)計、小波變換等。
利用Qt設(shè)計的圖像處理平臺對采集的圖像進行各種算法的處理,并選取幾種典型的圖像處理算法進行處理。
根據(jù)傅里葉變換的相關(guān)概念,對圖像進行的二維離散傅里葉變換,在大小為N行M 列的圖像f(x,y)中,二維離散傅里葉變換可以表示為[10]:
傅里葉變換也可以表示為實部和虛部的兩個組成部分,表示如下:
Qt軟件算法設(shè)計,進行數(shù)學(xué)變換、處理,程序的關(guān)鍵步驟如下:
void ImageProcess::DFT()//Qt程序中,二維離散傅里葉變換處理函數(shù)
由于傅里葉變換的時間很長,設(shè)計實現(xiàn)快速傅里葉變換,其原理根據(jù)庫利-圖基算法進行按時間抽選法的離散快速傅里葉變換[11]。基于8點的時間抽取法傅里葉變換。軟件流程圖見圖8。經(jīng)過編譯,處理結(jié)果見圖9。
圖8 圖像時間抽取法蝶形傅里葉變換軟件流程圖Fig.8 Image processing software flow chart of DIT-FFT
利用Daubechies表示法[12](N=2時,序列pk為0.4829629131445341、0.83651630373780、0.22414386804201、-0.12940952255126)的小波系數(shù)(Wavelet coefficient)進行對圖像信息進行分解。圖像數(shù)據(jù)作為二維的離散數(shù)據(jù)f(m,n)給出,根據(jù)小波變換的尺度關(guān)系,從第j級的小波系數(shù)及尺度系數(shù)能夠求得精度高一級j-1的尺度系數(shù)的關(guān)系可得:
處理結(jié)果見圖10。
在Qt設(shè)計中,圖像對邊緣的提取采用了偏導(dǎo)數(shù)估計的卷積核的算法,采用索貝爾(Sobel)算子進行處理。在對圖像進行初步的處理,包括去噪、銳化等,提取出圖像的邊緣信息。處理見圖11。
將圖像中色彩不同的部分突出出來,而色彩相同的部分進行層次上的淡化,顯得圖像看上去有深度,凸顯層次。具體做法在一個圖形f(x,y)中,點(x,y)的像素與相鄰點(x+1,y+1)像素相減,再加上一個常量表示為:
數(shù)字圖像浮雕的算法就是使用一種卷積核的形式進行前面相減的運算,可以方便地進行圖像二維計算。處理結(jié)果見圖12。
本文把嵌入式技術(shù)和圖像處理技術(shù)結(jié)合起來,為圖像處理提供一個實時處理的平臺,實現(xiàn)數(shù)字圖像處理平臺的小型化、方便化。通過以上實驗,該平臺可以對圖像進行變換域和空域上的處理。模塊式的程序設(shè)計提供了更加靈活的加載方式,可以根據(jù)不同的需求對算法進行適當(dāng)?shù)脑鎏恚瑢崟r處理采集的圖像。
[1]吳 軍,周運轉(zhuǎn).嵌入式Linux系統(tǒng)應(yīng)用基礎(chǔ)與開發(fā)范例 [M].北京:人民郵電出版社,2003:1-2.
[2]孫鶴旭,林 濤.嵌入式控制系統(tǒng) [M].北京:清華大學(xué)出版社,2005:1-2.
[3]SAMSUNG.S3C2440User’s Manual [EB/OL],2003.
[4]杜春雷.ARM體系結(jié)構(gòu)與編程 [M].北京:清華大學(xué)出版社,2003:8-9.
[5]趙 偉,張昕凱,譚彩虹.基于嵌入式Linux的DPR設(shè)備驅(qū)動程序開發(fā) [J].儀器儀表學(xué)報,2006,27(6):2050-2053.
[6]李 俊.嵌入式Linux設(shè)備驅(qū)動開發(fā)詳解 [M].北京:人民郵電出版社,2008:16-18.
[7]杜海順,柴秀麗,汪鳳泉,等.一種領(lǐng)域保持判別嵌入人臉識別方法 [J].儀器儀表學(xué)報,2010,31(3):625-628.
[8]Alan Cox.Video4Linux Programming [EB/OL],2003.
[9]Jasmin Blanchette,Mark Summerfield.C+ + GUI Programming with Qt4[M]USA:Prentice Hall in association with Trolltech Press,2007:18-20.
[10]謝鳳英,趙丹培.Visual C++數(shù)字圖像處理技術(shù)[M].北京:電子工業(yè)出版社,2008:236-278.
[11]阮秋琦.數(shù)字圖像處理學(xué) [M].北京:電子工業(yè)出版社,2006:93-100.
[12]楊勝波,于春梅.小波分析在生物醫(yī)學(xué)信號圖像處理中的應(yīng)用 [J].儀器儀表學(xué)報,2002,23(3):179-181.