吳嘉彥
(廣東省人民廣播電臺,廣東廣州510012)
基于ARM的JPEG圖像處理技術研究與應用
吳嘉彥
(廣東省人民廣播電臺,廣東廣州510012)
首飾鑲嵌工人長期工作在顯微鏡環境下,容易形成眼睛職業病,研究首飾工件的USB顯微圖像采集、利用VC++工具進行首飾顯微圖像JPEG格式壓縮、編碼、解碼,通過移植Samsung公司的嵌入式ARM系統S3C2440A,實現首飾顯微圖像的LCD顯示、JPEG及BMP格式存儲、網絡傳輸,可以改善首飾鑲嵌工人的工作環境。
首飾鑲嵌;圖像JPEG編解碼;嵌入式
隨著內地珠寶首飾業的發展,居民的消費習慣也發生了很大的變化:從1982-1993年,人們對金銀珠寶的消費還僅僅停留在24K黃金上,而到了1993年,隨著跨國珠寶行業巨頭滲入中國,珠寶首飾行業也逐漸從保值增值的功能向時尚和多元化過渡。寶石鑲嵌[1]首飾市場的迅速發展引起了珠寶首飾業內外人士的注意,尤其是晶石鑲嵌首飾,揮舞著悅人的色彩,在國內大有興起之勢。寶石鑲嵌首飾市場造就了大量的就業崗位,長期以來,寶石鑲嵌工作人員都是長時間在顯微鏡環境下進行首飾的寶石鑲嵌工作,由于長時間使用顯微鏡等放大工具會導致視覺疲勞,對視力造成了很大的損害,引起眼澀、眼脹、視物模糊、近視、弱視等眼部疾病的發生。研究具有高質量圖像放大、圖像信息存貯、多媒體及網上交流系統勢在必行,利用Samsung公司的嵌入式[2]ARM系統芯片S3C2440A具有價格便宜、[3]資源豐富的優勢,實施基于ARM的JPEG圖像處理技術研究與系統實現具有一定的實用價值。
系統以解決寶石鑲嵌靜態圖像采集、放大、首飾數字圖像的存儲、網上交流為目的。通過智能自動連續調焦的物鏡組,將寶石鑲嵌托架靜態圖像聚集于MB86S02的CMOS圖像傳感器芯片上,經ARM為核心的圖像處理系統對靜態首飾圖像讀取、按JPEG標準進行壓縮編碼,實現首飾圖像的JPEG文件格式,可對圖像進行存儲、交流;ARM系統對已壓縮編碼的JPEG格式圖像文件進行解碼,實現首飾加工現場大屏幕LCD數字圖像的顯示。
如下頁圖1所示,系統采用Samsung公司的ARM CPU處理器:S3C2440A,該處理品主頻400MHz,最高533Mhz,SDRAM內存為64M,32bit數據總線,時鐘頻率高達100MHz,帶LCD控制器、RAM控制器、NAND閃存控制器、FLASH存儲器采用256M的掉電非易失Nand Flash,Nor Flash均為2M,掉電非易失;SDRAM內存為64M SDRAM,32bit數據總線SDRAM時鐘頻率高達100MHz,LCD顯示屏為帶電阻式觸摸屏,支持黑白、4級灰度、16級灰度、256色、64K色、真彩色TFT液晶屏分辨率為1024x768;1個10M以太網RJ-45接口(采用CS8900網絡芯片),實現互聯網資源交流,2個串行口USART,1個USB Host型接口,1個用于程序下載的標準JTAG接口,1個擴展系統用總線I2C接口,移植操作系統為Linux。[4]A/D,D/A為模數、數模轉換,實現旋轉平臺的控制。

圖 1
MB86S02是Fujitsu(富士通)公司生產的一款式10萬像素CIF格式的CMOS圖像傳感器,片內集成了色彩信號處理模塊,圖像傳感功能與色彩處理功能合二為一。MB86S02集成了CMOS圖像傳感器陣列、AGC自動增益控制放大器、AD模數轉換器、色彩信號處理及數字視頻信號輸出等功能。圖像采集鏡頭配一組由步進電機同軸連續變焦控制[5]的鏡頭組,實現首飾圖像采集的自動對焦控制。[6]
相對而言,首飾鑲嵌實際加工環境中所采集的是靜態圖像。為兼容于廣泛應用的互聯網、數碼相機、手機攝像等對圖像的應用領域,首飾寶石鑲嵌圖像處理采用JPEG格式。[6]JPEG(Joint Photographic Experts Group聯合照片專家組)由國際標準化組織ISO和國際電話電報咨詢委員會CCITT建立并開發第一套國際靜態圖像壓縮標準。
另一方面,考慮到采用JPEG標準壓縮圖像,實際上是一種利用人的眼睛對圖像的感知信息中的亮度成分特別敏感,而對圖像信息的色差成分相對遲鈍的特點,進行的“打折壓縮”處理,即保留圖像上每個像素點的亮度成分,合并相鄰像素點的色差成分,實現了圖片文件大比例的壓縮。雖然難以察覺視覺上的損失,但由于實際上已將相鄰像素點的色差信號值進行了合并,圖像的實際色彩失真是客觀存在的,壓縮比越大,合并度越高,色彩損失也就越多,這對首飾寶石鑲嵌加工操作不利。為確保首飾寶石鑲嵌的高清晰圖像質量,研究首飾寶石鑲嵌靜態圖像的JPEG標準壓縮編碼、解碼技術與系統實現具有一定的實用價值。
3.1 首飾圖像的JPEG壓縮編碼
如下頁圖2所示,對MB86S02圖像傳感器的靜態圖像進行JPEG格式編碼,首先要對首飾圖像矩陣進行分塊操作,從左到右,從上到下的次序排列,連續分為8×8數據單位塊(若圖像長度非8的倍數,先補成8的倍數),在每個單位塊內的每個像素取亮度Y值,每個2×2個像素只取一個色差CrCb值,再對數據進行一次離散余弦變換,而離散余弦變換是圖像空間域的低通濾波器,表示出經過離散余弦變換的首飾圖像點和點之間的規律,圖像中的低頻分量都集中在左上角,首飾圖像的高頻分量相對集中在右下角,由離散余弦變換后的低頻分量體現圖像的主要信息,忽略高頻分量實現首飾圖像的壓縮目的。

圖 2
使用Forward DCT(FDCT)對首飾圖像進行離散余弦變換,針對8X8圖像,FDCT的變換公式如下:

通過量化處理濾除首飾圖像的高頻分量,進行圖像的JPEG編碼量化處理即產生了首飾圖像高頻成分信息的損失。對經FDCT變換后的頻率系數進行量化,將每個變換后的值除以量化表中對應的值,為保證首飾圖像的人眼視覺效果,即保持圖像的低頻分量,抑制圖像的高頻分量,實際安排亮度Y的量化表左上角的值較小,右下角的值較大,實現圖像亮度Y的細量化,而對色差信號CrCb采用粗量化,量化表中大數值密度較大,提高密度圖像高頻部分的壓縮比,如圖3所示。

圖 3
由如下表達式計算量化值:

進行Z字形編排,[6]離散余弦變換之后,圖像中低頻分量集中在矩陣的左上角,即直流(DC)系數,即8X8子塊的平均值,進行單獨編碼,對相鄰圖像之間的量化DC系數的差值(Delta)進行編碼,Delta=DC(0,0)κ-DC(0,0)κ-1,對剩余的63個交流(AC)系數進行行程編碼,如圖4所示。采取Z字形編排方法,先低頻后高頻分量的先后順序,Z字形行程中連續“0”的個數將增加。

圖 4
經Z字形排列后,二維的8X8矩陣降到一維的1x64的低頻在頭高頻在后的矢量。依JPEG算法格式,對編碼后的直流系數和行程編碼后的交流系數使用熵編碼壓縮,按JPEG標準,使用范式Huffman編碼(Canonical Huffman Code)來減少熵,由碼表查表方法實現首飾圖像壓縮編碼。
3.2 首飾圖像的JPEG解碼顯示
當對JPEG圖像進行解碼時,即是圖像壓縮編碼的逆過程,如圖五所示。通過熵解碼將數據還原成直流DC值及交流AC值的量化圖,由量化區塊與加權函數進行計算,利用存于JPEG文件中(標記碼部分)的加權函數還原成DCT系數,應用Inverse DCT(IDCT)二維反離散余弦變換,實現反離散余弦轉換IDCT,把頻率域DCT分量系數轉換為空間域表示的首飾數字圖像,如f(x,y)所表示,考慮到許多圖像文件格式仍然是BMP格式,在實現JPEG格式顯示的同時可將圖像轉換成為RGB色彩的BMP格式文件。[7]

圖 5

3.3 基于PC機的JPEG解碼器的實現部分程序
typedef void(JpegDecoder::*decode_MCU_func)(DWORD);//Z字形排列后的DCT系數序號矩陣

//數值幅度編碼表數組

3.4 嵌入式Linux移植
內核移植[8]的時候有兩個地方需要注意,一是文件系統,二是控制臺。文件系統所涉及的內容較多,一般在默認配置的基礎上進行修改。在調試階段需要使用網絡文件系統(NFS),必須加上對NFS的支持。為了將JPEG解壓縮文件從開發調試計算機中移植到Samsung公司的ARM CPU處理器S3C2440A處理器平臺,須考慮兩開發工具系統的數據類型,而VC和ADS的數據類型完全相同,只是由不同的編譯器生成不同的目標代碼,在不同的硬件平臺上運行,而本系統無操作系統,所以不支持文件系統格式,移植之前屏蔽源程序中的讀、寫JPEG文件和BMP文件的語句后完全可以進行移植。
內核配置[8]對應控制臺驅動,控制臺驅動與圖像顯示關聯,首飾圖像顯示須使用FrameBuffer,在完成對Linux內核配置后,內核仍以源碼形式[9]存在,未能直接下載至嵌入系統運行,需要對內核進行編譯,生成嵌入式系統上可執行代碼。首先,修改內核根目錄下的Makefile文件,指明所用的編譯器為arm-linux-交叉編譯器,使用的體系結構為ARM;然后,設置NAND Flash分區,由于系統所用的是64MB NAND Flash作為Flash存儲器,首先必須建立一個NAND Flash分區表,定義各分區的起始地址及分區大小;配置內核選項,將默認的配置文件復制到內核代碼的根目錄下,可通過make config或make oldconfig或make menuconfig及make xconfig四種方法配置內核。在交叉編譯環境ADS下建立工程,將Bootloader代碼、UART代碼、初始化代碼、LCD驅動代碼、色彩轉換代碼、主程序代碼等添加進工程文件,設置好運行環境。生成二進制文件并將此文件燒寫入NAND FLASH中(一般以0x50000為起始地址),解碼程序將自動運行,LCD屏幕上可顯示解壓縮之后的首飾數字圖像。
實驗結果表明,基于上述處理方法,顯微鏡頭CCD采集的圖像經JPEG格式壓縮、編碼、解碼前后圖像質量比較如下頁圖6所示,可以滿足首飾顯微圖像的LCD顯示、JPEG及BMP格式存儲、網絡傳輸的基本要求。
目前的JPEG圖像壓縮標準,具有中端和高端比特速率的良好的速率畸變特性,但在低比特率范圍內,將會出現很明顯的方塊效應,其質量變得不可接受。JPEG不能在單一碼流中提供有損和無損壓縮,當碰到比特差錯時圖像質量將受到嚴重的損壞。雖然新的JPEG-2000算法在這有了不少改進,也允許進行無損壓縮,但壓縮比與圖像質量之間永遠是難以兩全的對立面,要想獲得大的壓縮比,勢必造成圖像質量的下降。本文在亮度與色差量化表中進行調整,在首飾圖像壓縮與圖像質量下降矛盾中取一相對值,實現設計目的。

圖 6
[1]周漢利.寶石琢型設計及加工工藝學[M].北京:中國地質大學出版社,2007.
[2]三恒星科技.ARM9原理及應用[M].北京:電子工業出版社,2008.
[3]王黎明.ARM9嵌入式系統開發與實踐[M].北京:北京航空航天大學出版社,2008.
[4]楊水清,張劍.ARM嵌入式Linux系統開發技術詳解[M].北京:電子工業出版社,2010.
[5]王洪輝.嵌入式系統Linux內核開發指南[M].北京:電子工業出版社,2010.
[6]楊旭強,等.基于ARM電動機控制技術[M].北京:中國電力出版社,2008.
[7]宋坤.Visual C++視頻技術方案寶典[M].北京:人民郵電出版社,2008.
[8]左飛,劉航.Visual C++數字圖像處理[M].北京:電子工業出版社,2009.
[9]李亞鋒,歐文盛.ARM嵌入式Linux系統開發[M].北京:清華大學出版社,2007.
TN912
A
1673-8535(2010)06-0067-06
吳嘉彥(1985-),男,廣西梧州市人,廣東省人民廣播電臺技術部工程師,研究方向:信息處理、信號傳輸等。
(責任編輯:覃華巧)
2010-10-09