
4 JPEG-LS圖像編碼
系統(tǒng)采集的原始圖像相關(guān)性大、數(shù)據(jù)量大,需要進(jìn)行圖像壓縮。醫(yī)學(xué)圖像要求將圖像質(zhì)量放在首位,因此必須采用無損壓縮算法。本系統(tǒng)采用靜態(tài)圖像無損壓縮技術(shù)JPEG-LS,它是目前無損壓縮算法中性能較好的一種算法。JPEG-LS是ISO/ITU組織提出的最新的連續(xù)靜態(tài)圖像近無損壓縮標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)采用LOCO-I(Low Complexity Lossless Compression for Images)核心算法,建立簡單的上下文模型,在低復(fù)雜度的情況下實(shí)現(xiàn)了高壓縮率;同時(shí),算法對圖像逐行進(jìn)行壓縮,降低了系統(tǒng)對圖像緩沖區(qū)的要求。
4.1 JPEG-LS工作原理簡介
如圖5所示,JPEG-LS的編碼過程主要包括預(yù)測、上下文建模和熵編碼。核心算法LOCO-I采用鄰域非線性預(yù)測和Golomb熵編碼。

上下文建模是JPEG-LS編碼的基礎(chǔ),使用的建模方法是基于對上下文的認(rèn)識。上下文首先根據(jù)圖5中a、b、c、d處像素值決定對x處像素足采用常規(guī)模式編碼還是采用游程模式編碼。當(dāng)從上下文估計(jì)的連續(xù)像素在近似無失真編碼要求的容限內(nèi)幾乎完全相同時(shí),選擇游程模式;否則,選擇常規(guī)模式。
常規(guī)模式下首先完成預(yù)測。預(yù)測器對位于a、b、c等3個(gè)鄰近像素的重建組值Ra、Rb、Rc進(jìn)行綜合,形成x像素的預(yù)測值Px,即:

預(yù)測誤差是x像索的實(shí)際值和預(yù)測值的差分。通過一個(gè)與上下文有關(guān)的項(xiàng)對預(yù)測誤差進(jìn)行修正,以補(bǔ)償預(yù)測中的系統(tǒng)偏移。如果采用近無損編碼,則要對預(yù)測誤差進(jìn)行量化,所允許的最大誤差用一個(gè)“NEAR"參數(shù)表示。對已修正的預(yù)測誤差進(jìn)行Golomb編碼。Golomb編碼相當(dāng)于幾何分布下的Huffman編碼。它依賴于上下文,而前面編碼的預(yù)測誤差也是以相同的上下文為基礎(chǔ)。
為進(jìn)一步提高數(shù)據(jù)壓縮效率,JPEG-LS引入了游程模式。此時(shí)編碼過程直接跳過預(yù)測和誤差編碼程序:編碼器從x處開始對像素值和a處像素重建值相同的一系列連續(xù)像素進(jìn)行計(jì)數(shù),即統(tǒng)計(jì)游程的長度。當(dāng)遇到一個(gè)具有不同值的像素或當(dāng)前行的行尾時(shí),游程終止。該游程長度經(jīng)過一個(gè)專門的性能更好、更適用的Golomb編碼擴(kuò)展程序來編碼。
4.2 JPEG-LS的移植問題
本系統(tǒng)使用HP實(shí)驗(yàn)室提供的開源JPEG-LS開發(fā)包。完整的JPEG-LS開發(fā)包支持多種顏色模型,如多平面壓縮、逐行或者逐點(diǎn)等壓縮方式。本系統(tǒng)考慮到ARM系統(tǒng)資源的限制,只裁減了其中的逐行單文件壓縮方式。原始開發(fā)包運(yùn)行在Linux或者Windows平臺上,移植過程最主要的工作包括3點(diǎn)。
①裁減不必要的功能,如原始開發(fā)包中對多圖像編碼的支持。
②針對系統(tǒng)設(shè)計(jì)移植后的接口,如本模塊移植后,只提供以下幾個(gè)接口:
◇jls_global_init,全局初始化函數(shù),計(jì)算查詢表等,只需要啟動時(shí)調(diào)用一次;
◇jls_image_init,每幀圖像開始壓縮時(shí)都要調(diào)用一次的初始化;
◇jls_encode_one_line,壓縮一行圖像。
③對原開發(fā)包中使用的動態(tài)內(nèi)存分配需要移植,解決的方案有2個(gè):
◇開發(fā)一個(gè)簡單的內(nèi)存管理模塊;
◇手動分配內(nèi)存。
考慮到源碼包中使用的動態(tài)內(nèi)存不多,系統(tǒng)采用第2種方案。在移植過程中,建議先在PC上分配好一大塊內(nèi)存,然后,給開發(fā)包中需要分配的地方手動分配。在PC上調(diào)試通過之后,就可以直接在ARM上面使用了。
5 調(diào)試及優(yōu)化方法
5.1調(diào)試方法
嵌入式系統(tǒng)的調(diào)試是一個(gè)很繁瑣而復(fù)雜的過程。在調(diào)試之前劃分好模塊,可以大大提高調(diào)試效率;另外為了調(diào)試,還需要添加一些計(jì)劃項(xiàng)目之外的調(diào)試工具。
本系統(tǒng)的調(diào)試工作分為3個(gè)部分。
(1)藍(lán)牙無線鏈路層調(diào)試
藍(lán)牙無線鏈路層的調(diào)試可以直接借助PC上很多現(xiàn)有的串口工具來實(shí)現(xiàn)。
(2)CMOS攝像頭調(diào)試
CMOS攝像頭的調(diào)試有兩個(gè)部分:SCCB配置時(shí)序、RGB圖像數(shù)據(jù)時(shí)序。
一般的處理器都不帶SCCB接口,因此要用處理器的口線模擬SCCB時(shí)序。此時(shí)的調(diào)試一般都是通過示波器觀察模擬的時(shí)序,看足否符合芯片手冊上的要求。為了驗(yàn)證是否正確,一般可先讀一個(gè)指定的寄存器(這些寄存器都有出廠默認(rèn)值);然后寫一個(gè)數(shù)據(jù),讀取出來驗(yàn)證是否吻合。
RGB圖像數(shù)據(jù)時(shí)序由CPLD產(chǎn)生,此時(shí)的調(diào)試需要ARM來配合。本系統(tǒng)在調(diào)試時(shí),在PC上編寫了一個(gè)簡單的串口接收程序,ARM把SRAM中的圖像數(shù)據(jù)通過串口發(fā)送給該P(yáng)C,PC上的程序把這些原始的RGB數(shù)據(jù)插值并顯示出來,從而可以得知CPLD的時(shí)序是否正確。當(dāng)然,調(diào)試時(shí)序時(shí),示波器仍然是必不可少的工具。
(3)JPEG-LS算法調(diào)試
JPEG-LS算法的調(diào)試分為兩個(gè)步驟:PC上的算法驗(yàn)證和目標(biāo)板上的調(diào)試。
PC上的算法驗(yàn)證使用VC6.O模擬目標(biāo)板上的運(yùn)行環(huán)境,測試目標(biāo)板上的各個(gè)功能接口。本部分的驗(yàn)證代碼可供下載。
目標(biāo)板上調(diào)試時(shí),還是要借助串口,把壓縮的圖像和原始圖像通過串口發(fā)送至PC。Pc上的JPEG-LS解碼程序解碼壓縮圖像,然后與原始圖像對比,從而找出算法中的錯(cuò)誤。
5.2 優(yōu)化方法
為提高圖像傳輸?shù)膸,本系統(tǒng)主要采用了2種優(yōu)化方法。
(1)硬件優(yōu)化
硬件優(yōu)化主要是在CPLD采集數(shù)據(jù)時(shí),使用雙緩沖,使得連續(xù)采集下一幀圖像和傳輸上一幀圖像可以并行,從而提高系統(tǒng)的





