亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Framebuffer的二維圖像處理關(guān)鍵技術(shù)研究與應(yīng)用

        2015-09-18 13:26:03范麗辰王桂海姜淑香
        軟件導刊 2015年8期

        范麗辰 王桂?!〗缦?/p>

        摘要:介紹二維圖像處理原理與處理過程,闡述Framebuffer的概念與工作原理,描述基于Framebuffer的二維圖像處理關(guān)鍵技術(shù),為開發(fā)嵌入式GUI與嵌入式應(yīng)用提供技術(shù)參考。

        關(guān)鍵詞:嵌入式GUI;Framebuffer;二維圖像

        DOIDOI:10.11907/rjdk.151379

        中圖分類號:TP317.4

        文獻標識碼:A 文章編號文章編號:16727800(2015)008019702

        0 引言

        嵌入式應(yīng)用中人機交互接口的圖形用戶接口(GUI),應(yīng)為用戶提供友好界面,操作簡潔、直觀,并滿足體積小、運行時耗用資源少、上層接口與硬件無關(guān)、可移植性好、可靠性高等要求。

        嵌入式系統(tǒng)GUI的開發(fā)、移植與底層顯示設(shè)備密切相關(guān),如果對顯示設(shè)備不熟悉,則無法開發(fā)GUI。然而,不同應(yīng)用系統(tǒng)使用的顯示設(shè)備不同,驅(qū)動程序也則不同。開發(fā)GUI的用戶如果總是去關(guān)心底層設(shè)備,將會導致開發(fā)工作量大、技術(shù)難度高、開發(fā)效率低、開發(fā)的軟件可移植性差。為避免上述問題,Linux操作系統(tǒng)抽象出Framebuffer,用戶通過Framebuffer提供的接口即可操作底層設(shè)備。這樣用戶只需面向Framebuffer編程,從而簡化了開發(fā)步驟,也增加了可移植性。此外,F(xiàn)ramebuffer也是X Windows、MiniGUI等實現(xiàn)的重要基礎(chǔ)。理解二維圖像處理原理,掌握Framebuffer的原理與開發(fā)技術(shù),是進行嵌入式系統(tǒng)GUI開發(fā)所必須具備的基礎(chǔ)。

        1 二維圖像處理原理

        二維圖像處理在嵌入式開發(fā)中得到普遍應(yīng)用,其包括獲取、壓縮、存儲、解壓縮、顯示等環(huán)節(jié)。

        1.1 圖像獲取與存儲

        用于獲取二維圖像的設(shè)備種類繁多,如數(shù)碼相機、攝像機、掃描儀等,由于生產(chǎn)廠家不同、使用目的不同,得到的圖像格式也不同,常見的存儲格式有BMP、GIF、JPEG、PNG等[1]。

        BMP位圖格式是Windows操作系統(tǒng)的標準圖像文件格式,Windows的畫圖軟件即使用這種格式;GIF是CompuServe公司開發(fā)的圖像文件存儲格式,可以在一個文件中存放多幅彩色圖形/圖像;JPEG格式是有損壓縮的靜態(tài)圖像文件存儲格式,用于在互聯(lián)網(wǎng)上存儲和傳輸照片;PNG是20世紀90年代出現(xiàn)的圖像文件存儲格式,增加了一些GIF格式所不具備的特性。

        1.2 圖像壓縮

        二維圖像有多種格式,不同格式的圖像占用存儲空間不同。如BMP格式存儲的圖像數(shù)據(jù)量大,占用存儲空間大,因而影響傳輸效率。為減少存儲空間,對圖像進行壓縮,用較小的數(shù)據(jù)量表達原始圖像,從而能在較小的空間存儲更多圖像,同時帶來更高的傳輸效率。

        圖像中存在很多重復數(shù)據(jù),使用數(shù)學方法可以減少數(shù)據(jù)量。另外,人視覺對圖像細節(jié)和顏色的辨認有一個極限,把超過極限的部分去掉,也能減少數(shù)據(jù)量,達到壓縮的目的。

        壓縮方法為使用離散余弦變換將色彩空間表示的圖轉(zhuǎn)換為頻率空間表示的圖,并進行量化與編碼。

        不同設(shè)備使用不同的壓縮算法進行圖像處理,但圖像壓縮處理步驟大致相同。以JPEG圖像為例,在進行離散余弦變換將色彩空間轉(zhuǎn)換到頻率空間之前,先將RGB顏色模型轉(zhuǎn)換為YUV顏色模型。因為RGB顏色模型的圖像數(shù)據(jù)量非常大,壓縮效果并不理想,而JPEG壓縮算法也是基于YUV顏色模型的。人們視覺對亮度的變化比對色彩的變化敏感,利用這一特性,YUV顏色模型將圖像的亮度信息Y和顏色信息(U,V)分離,用不同的位數(shù)存儲Y、U、V 3個分量,從而提高了壓縮效率,更好地利用了存儲空間。將RGB顏色模型轉(zhuǎn)換為YUV顏色模型時,保存亮度和顏色變化的數(shù)據(jù)部分,還要舍棄人眼不敏感的成分。這樣既保證了圖像質(zhì)量,也節(jié)省了存儲空間。

        不同設(shè)備使用不同的壓縮算法,不同壓縮算法產(chǎn)生不同的圖像格式。例如,用于BMP位圖文件的壓縮算法有RLE4、RLE8兩種,JPEG格式采用JPEG壓縮算法,PNG格式采用LZ77派生的DEFLATE非專利無失真壓縮算法,GIF格式采用LZW壓縮算法。

        1.3 圖像解壓縮

        對于壓縮存儲的圖像,要經(jīng)過解壓縮后才能還原為在顯示設(shè)備上可用的數(shù)據(jù)格式。解壓縮是壓縮的逆過程,包括頭文件解析、熵編碼、反量化、反離散余弦變換、顏色模型轉(zhuǎn)換等幾個步驟,解壓縮后的圖像數(shù)據(jù)為RGB顏色模型。

        首先對圖像數(shù)據(jù)進行頭文件解析,得到圖像的文件信息;然后通過熵編碼得到圖像壓縮前離散余弦變換的量化值;接著進行反量化,將量化值乘以反量化參數(shù),得到離散余弦變換的頻率系數(shù);再對頻率系數(shù)進行反離散余弦變換,得到Y(jié)UV顏色模型的圖像取樣數(shù)據(jù);最后將YUV顏色模型轉(zhuǎn)換為RGB顏色模型,完成圖像解壓縮。

        2 Framebuffer工作原理及應(yīng)用

        Linux操作系統(tǒng)工作在保護模式下,用戶程序不能直接對設(shè)備進行操作,只能利用操作系統(tǒng)提供的接口完成對設(shè)備的讀寫。對于顯示設(shè)備,該接口即是Framebuffer,稱作幀緩沖。Framebuffer設(shè)備是圖形設(shè)備的抽象,是某些視頻硬件的幀緩沖,允許用戶在完全不了解底層硬件的情況下,應(yīng)用程序通過已定義好的接口(framebuffer)訪問圖形硬件。

        2.1 Framebuffer工作原理

        Linux操作系統(tǒng)將視頻設(shè)備進行抽象,成為Framebuffer設(shè)備,對幀緩沖設(shè)備操作即相當于對視頻設(shè)備操作,改變幀緩沖設(shè)備中的數(shù)據(jù),則會改變LCD屏的顯示內(nèi)容。mmap()函數(shù)將幀緩沖設(shè)備描述符映射到幀緩沖區(qū),通過讀寫幀緩沖區(qū)來操作幀緩沖設(shè)備。應(yīng)用程序向幀緩沖區(qū)首地址指定的某個位置寫入數(shù)據(jù),即是向顯存的對應(yīng)位置寫入數(shù)據(jù)。LCD控制器將顯存內(nèi)容輸出到LCD屏,從而實現(xiàn)寫屏。圖1描述了Framebuffer的工作原理。

        圖1 Framebuffer工作原理

        幀緩沖區(qū)的數(shù)據(jù)與LCD屏像素點有不同的對應(yīng)關(guān)系。針對像素深度為16位的LCD屏,幀緩沖區(qū)每一個字節(jié)的數(shù)據(jù)對應(yīng)LCD屏上一個像素點,改變一個像素點的顏色需要改變一個字節(jié)的內(nèi)容;針對像素深度為16、24、32位的LCD屏,幀緩沖區(qū)中每2、3、4個字節(jié)數(shù)據(jù)分別對應(yīng)LCD屏上一個像素點,改變一個像素點的顏色則需要同時改變相關(guān)字節(jié)的內(nèi)容。

        2.2 Framebuffer應(yīng)用

        應(yīng)用Framebuffer進行二維圖像顯示時,需要經(jīng)過圖像文件打開、建立幀緩沖、進行內(nèi)存映射、圖像解壓縮、格式轉(zhuǎn)換及寫屏等步驟。在Linux下進行二維圖像開發(fā),可以借助已有函數(shù)庫對其進行解壓縮,不同格式的二維圖像使用不同的庫,如libjpeg庫、libgif庫、libpng庫等,分別用于JPEG、GIF、PNG格式圖像的壓縮/解壓縮。

        下面以JPEG圖像為例,將圖像顯示在LCD屏上的過程如下:首先初始化Framebuffer設(shè)備。包括打開Framebuffer設(shè)備、獲取設(shè)備描述符、用ioctl()函數(shù)獲取屏幕參數(shù)、設(shè)置幀緩沖區(qū)大小、用mmap()函數(shù)將幀緩沖設(shè)備描述符映射到幀緩沖區(qū)、得到幀緩沖區(qū)首地址指針等步驟[2];然后使用libjpeg庫解壓縮JPEG圖像。在Linux系統(tǒng)中安裝該函數(shù)庫,在程序中包含jpeglib.h、jerror.h頭文件,之后調(diào)用庫函數(shù)對圖像進行解壓縮,并將解壓后的圖像數(shù)據(jù)存儲到虛擬內(nèi)存。

        具體步驟如下:①打開JPEG圖像文件,獲取文件描述符;②通過jpeg_create_decompress()函數(shù)分配并初始化一個jpeg對象,通過jpeg_std_error()函數(shù)定義用于錯誤處理的結(jié)構(gòu)體對象,將其與jpeg對象綁定;③用jpeg_stdio_src()函數(shù)指定解壓縮數(shù)據(jù)源,將JPEG圖像與jpeg對象綁定;④用jpeg_read_header()函數(shù)獲取圖像信息,填充到j(luò)peg對象;⑤為解壓縮設(shè)定參數(shù),例如可以設(shè)置解壓后的圖像與原圖的比例;⑥用jpeg_start_decompress()函數(shù)開始解壓縮,將解壓后的圖像信息填充至jpeg對象;⑦用jpeg_read_scanlines()函數(shù)從jpeg對象中讀取一行像素點的顏色值,將讀取的顏色值存放到虛擬內(nèi)存,直至讀完所有行并將數(shù)據(jù)存儲到虛擬內(nèi)存;⑧調(diào)用jpeg_finish_decompress()函數(shù),完成解壓縮;⑨調(diào)用jpeg_destroy_decompress()函數(shù),釋放jpeg對象;⑩調(diào)用寫屏函數(shù),將虛擬內(nèi)存中的像素點顏色值寫入幀緩沖區(qū)首地址指向的位置中。需要注意的是,解壓后的圖像采用24位的RGB 8:8:8顏色模型,而顯示設(shè)備可能是8位、16位、24位與32位的RGB顏色模型。針對不同RGB顏色模型的設(shè)備,調(diào)用寫屏函數(shù)之前,可能需要將解壓后的圖像進行RGB顏色模型的轉(zhuǎn)換,使解壓后圖像與設(shè)備的RGB顏色模型相同。

        針對8位RGB 3:3:2顏色模型的設(shè)備,轉(zhuǎn)換時要保留R分量的高3位、G分量的高3位與B分量的高2位,舍去低位;16位RGB顏色模型有RGB 5:6:5與RGB 5:5:5(剩余一位是透明度)兩種,轉(zhuǎn)換為第一種顏色模型時,要保留R分量的高5位、G分量的高6位與B分量的高5位,舍去低位。轉(zhuǎn)換為第二種顏色模型時,保持透明度不變,保留R分量的高5位、G分量的高5位與B分量的高5位,舍去低位;針對24位RGB 8:8:8顏色模型的設(shè)備,無需轉(zhuǎn)換;針對32位RGB 8:8:8(剩余8位是透明度)顏色模型的設(shè)備,需將24位RGB顏色模型擴展為32位,保持R分量、G分量與B分量的值不變,添加8位透明度。

        為了實現(xiàn)虛擬顯示,保存圖像數(shù)據(jù)的虛擬緩沖區(qū)大小,應(yīng)大于實際LCD面板顯示屏全部像素所需的數(shù)據(jù)緩沖區(qū)大小[3]。

        3 結(jié)語

        本文研究了二維圖像處理的關(guān)鍵技術(shù),描述了基于Framebuffer的二維圖像處理過程。Framebuffer能支持絕大多數(shù)顯示設(shè)備,具有良好的平臺無關(guān)性,因而對應(yīng)用程序開發(fā)者而言,不用關(guān)心底層設(shè)備的細節(jié)即可開發(fā)出完美的二維圖像處理程序。Framebuffer不支持三維圖像開發(fā),如果進行三維圖像應(yīng)用開發(fā),可以在Windows下使用DirectX,或在Linux下使用OpenGL。二維圖像是圖形庫的基本元素,F(xiàn)ramebuffer為構(gòu)建GUI提供了實現(xiàn)基礎(chǔ),研究基于Framebuffer的二維圖像處理,可為開發(fā)輕型、可靠、可移植的嵌入式系統(tǒng)GUI提供思路,具有一定參考價值。

        參考文獻:

        [1] 林宗福.多媒體技術(shù)基礎(chǔ)[M].第2版.北京:清華大學出版社,2002.

        [2] 郭劍,趙建.嵌入式Linux的圖像采集與顯示[J].現(xiàn)代電子技術(shù),2006(7):129131.

        [3] 劉彥文.嵌入式系統(tǒng)原理與接口技術(shù)[M].北京:清華大學出版社,2011.

        (責任編輯:黃 健)

        亚洲视一区二区三区四区| 中文字幕经典一区| 精品国产一区二区三区av 性色| 在线精品首页中文字幕亚洲| av影院手机在线观看| 日韩精品亚洲一区二区| 久久精品人人做人人爱爱| 国产精品毛片无遮挡| 亚洲国产精华液网站w| 极品美女aⅴ在线观看| 又爆又大又粗又硬又黄的a片| 国产在线不卡AV观看| 中国精品视频一区二区三区| 中文无码免费在线| 免费一区二区三区av| 精品日韩在线观看视频| 谷原希美中文字幕在线| 亚洲一区二区三区特色视频| 中文人妻av久久人妻水蜜桃| 午夜成人鲁丝片午夜精品| 久久国产精品二国产精品| 2017天天爽夜夜爽精品视频| 黑人免费一区二区三区| 国产一区精品二区三区四区| 国产精品日韩av一区二区| 无遮挡激情视频国产在线观看| 风情韵味人妻hd| 免费人成网ww555kkk在线| 国产欧美亚洲精品a| 亚洲av日韩aⅴ无码电影| 国模少妇无码一区二区三区| av二区三区在线观看| 亚洲网站一区在线播放| 免费观看成人欧美www色| 国产av无码专区亚洲av毛网站| 性动态图av无码专区| 大屁股少妇一区二区无码| 亚洲一区二区三区福利久久蜜桃 | 九色综合九色综合色鬼| 欧美艳星nikki激情办公室| 亚洲国产精品线观看不卡|