專利名稱:Jpeg_ls常規(guī)編碼硬件實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及圖像處理技術(shù)領(lǐng)域,更進(jìn)一步涉及JPEG_LS (Joint PhotographicExperts Group-IoSSleSS )圖像壓縮系統(tǒng)中一種高效低資源的常規(guī)編碼硬件實(shí)現(xiàn)方法。本發(fā)明以全流水結(jié)構(gòu)完成圖像壓縮處理,可以優(yōu)化JPEG_LS常規(guī)編碼硬件實(shí)現(xiàn)結(jié)構(gòu),提高圖像處理速率,節(jié)省現(xiàn)場可編程門陣列的硬件資源,尤其適用于遙感圖像壓縮處理。
背景技術(shù):
JPEG_LS圖像壓縮方法廣泛應(yīng)用于圖像壓縮領(lǐng)域,由于其常規(guī)編碼中的參數(shù)需要實(shí)時(shí)更新,更新時(shí)需要使用當(dāng)前像素點(diǎn)計(jì)算出的誤差值,而計(jì)算誤差值時(shí)又要利用更新出的預(yù)測誤差修正參數(shù),這種循環(huán)結(jié)構(gòu)的出現(xiàn),導(dǎo)致JPEG_LS常規(guī)編碼不易按流水結(jié)構(gòu)實(shí)現(xiàn)。若在更新參數(shù)后再進(jìn)行誤差運(yùn)算,在計(jì)算誤差后會(huì)堆積大量的運(yùn)算量,導(dǎo)致處理速度緩慢。美國西門子醫(yī)療解決公司在其申請(qǐng)的專利“用于醫(yī)學(xué)圖像的基于快速JPEG_LS的壓縮方法”(專利申請(qǐng)?zhí)?00710141738,公開號(hào)CN101132531A)中公開了一種基于醫(yī)學(xué)圖像的JPEG_LS快速壓縮方法。該方法提供圖像數(shù)據(jù)壓縮和重建技術(shù)優(yōu)化,通過在圖像數(shù)據(jù)壓縮之前創(chuàng)建數(shù)據(jù)結(jié)構(gòu),實(shí)現(xiàn)了在圖像數(shù)據(jù)壓縮期間對(duì)預(yù)計(jì)算的量化值存取。同時(shí),通過執(zhí)行量化矢量到相應(yīng)量化值的一對(duì)一映射,完成量化合并操作,其預(yù)測技術(shù)可以減輕相鄰像素點(diǎn)的噪聲對(duì)當(dāng)前像素的影響。該專利申請(qǐng)存在的不足之處是僅僅在量化和合并部分進(jìn)行了優(yōu)化,計(jì)算誤差與更新參數(shù)部分的處理結(jié)構(gòu)復(fù)雜,在更新參數(shù)后堆積大量需要處理的數(shù)據(jù),致使處理速率緩慢,而且該方法專門應(yīng)用于醫(yī)學(xué)圖像壓縮,沒有涉及到遙感圖像等的壓縮處理方法。西安空間無線電技術(shù)研究所申請(qǐng)的專利“一種JPEG_LS圖像壓縮的碼率控制方法”(專利申請(qǐng)?zhí)?01010617932. 2,公開號(hào)CN102088602A)中公開了一種JPEG_LS的碼率控制方法。該專利申請(qǐng)通過實(shí)際碼率和目標(biāo)碼率的累積偏差量,動(dòng)態(tài)調(diào)整參數(shù)值的大小,從而使不同的圖像內(nèi)容經(jīng)過JPEG_LS壓縮后,都能以接近要求的碼率進(jìn)行輸出。該方法將壓縮編碼模塊與碼率控制模塊組成反饋環(huán)路,對(duì)分割后的子圖自適應(yīng)的調(diào)節(jié)參數(shù)值大小,其輸出碼流經(jīng)過緩存控制模塊后以恒定碼率輸出。該專利申請(qǐng)存在的不足之處是僅僅涉及JPEG_LS的壓縮碼率控制優(yōu)化實(shí)現(xiàn),采用順序執(zhí)行方式,在獲得更新參數(shù)后進(jìn)行誤差值計(jì)算,處理過程耗費(fèi)大量的時(shí)鐘周期,沒有合理地安排每個(gè)時(shí)鐘周期處理的數(shù)據(jù)量,致使個(gè)別時(shí)鐘周期數(shù)據(jù)量過多,產(chǎn)生最差路徑,導(dǎo)致處理速率緩慢。
發(fā)明內(nèi)容
本發(fā)明的目的在于針對(duì)上述已有技術(shù)的不足,提出一種基于JPEG_LS常規(guī)編碼的硬件實(shí)現(xiàn)方法。該方法通過引用反饋回路,將更新的參數(shù)實(shí)時(shí)反饋,根據(jù)每次反饋的預(yù)測誤差修正參數(shù)對(duì)預(yù)測中值進(jìn)行預(yù)測與修正,對(duì)每個(gè)時(shí)鐘周期合理安排處理數(shù)據(jù)量,優(yōu)化最差路徑,提聞處理速度。為了實(shí)現(xiàn)上述目的,本發(fā)明的技術(shù)方案是將更新的參數(shù)作為反饋數(shù)據(jù),向更新操作以前的處理級(jí)反饋更新的參數(shù)。在更新操作前,分三步實(shí)現(xiàn)誤差的預(yù)測,第一步,獲得兩個(gè)像素點(diǎn)前的預(yù)測誤差參數(shù),通過此參數(shù),按照預(yù)測誤差參數(shù)的取值規(guī)律性,衍生出九種預(yù)測中值修正結(jié)果;第二步,獲得一個(gè)像素點(diǎn)前的預(yù)測誤差參數(shù),按照預(yù)測誤差參數(shù)的取值規(guī)律性,選取三種預(yù)測中值修正結(jié)果,分別對(duì)預(yù)測中值修正結(jié)果進(jìn)行誤差值運(yùn)算;第三步,獲得上一個(gè)像素點(diǎn)的預(yù)測誤差參數(shù),按照預(yù)測誤差參數(shù)的取值規(guī)律性,從三個(gè)預(yù)測中值修正結(jié)果中選取一個(gè)作為誤差值,實(shí)現(xiàn)預(yù)測過程。上述預(yù)測技術(shù)方案簡化了更新參數(shù)與計(jì)算誤差值之間的復(fù)雜結(jié)構(gòu),在預(yù)測誤差值的第二步進(jìn)行了誤差值計(jì)算,合理地安排了每一個(gè)處理級(jí)的運(yùn)算量,加快了處理速度。
本發(fā)明包括以下步驟(I)輸入像素點(diǎn)Ia)將需要壓縮的圖像像素點(diǎn)輸入到JPEG_LS編碼器中;Ib)按照當(dāng)前像素點(diǎn)與其鄰近點(diǎn)的相應(yīng)位置關(guān)系a、b、C、d,依次從隨機(jī)存儲(chǔ)器中讀出當(dāng)前像素點(diǎn)的鄰近點(diǎn)及其對(duì)應(yīng)位置關(guān)系的信息;Ic)將當(dāng)前像素點(diǎn)的符號(hào)位信號(hào)輸入到JPEG_LS編碼器中;Id)將需要壓縮的圖像參數(shù)更新使能信號(hào)輸入JPEG_LS編碼器中;Ie)將需要壓縮圖像的最大值信號(hào)輸入到JPEG_LS編碼器中;If)將需要壓縮圖像的誤差范圍修正值、誤差范圍上限值及下限值輸入到JPEG_LS編碼器中。(2)獲取梯度值2a)計(jì)算梯度將鄰近點(diǎn)中的d值與b值相減,得到的結(jié)果記為梯度一,將b值與c值相減,得到的結(jié)果記為梯度二,將c值與a值相減,得到的結(jié)果記為梯度三;2b)量化梯度將JPEG_LS常規(guī)編碼標(biāo)準(zhǔn)方法的八個(gè)固定數(shù)值作為門限值,利用八個(gè)門限值將整體數(shù)字空間劃分為九個(gè)區(qū)域,每個(gè)區(qū)域?qū)?yīng)一個(gè)量化值,將步驟2a)獲得的三個(gè)梯度值與八個(gè)門限值分別作比較,選擇僅小于梯度值的門限值作為區(qū)域下限值,選擇僅大于梯度值的門限值作為區(qū)域上限值,將下限值與上限值對(duì)應(yīng)區(qū)域的量化值作為其梯度量化值;2c)修正梯度值分別判斷三個(gè)梯度量化值是否為負(fù)數(shù),若是負(fù)數(shù),取其絕對(duì)值作為梯度量化值,將符號(hào)位信號(hào)修正為“-I ”,如果是正數(shù),三個(gè)梯度量化值與符號(hào)位信號(hào)取值不變,將符號(hào)位信號(hào)值及梯度量化值存入移位寄存器中。(3)獲取預(yù)測中值比較步驟Ib)中a值與b值的大小,若a大于b,則將a作為較大值,將b作為較小值,否則將b作為較大值,將a作為較小值;比較c值與較大值的大小,若c值大于較大值,則預(yù)測中值等于較小值,否則,比較c值與較小值的大小,若c值小于較小值,則預(yù)測中值取較大值,否則,預(yù)測中值取a值加上b值再減去c值的結(jié)果,將預(yù)測中值存入移位寄存器中。(4)獲取索引值信息第一步4a)將JPEG_LS常規(guī)編碼標(biāo)準(zhǔn)方法的索引值參數(shù)作為梯度量化值的加和系數(shù),對(duì)三個(gè)梯度量化值進(jìn)行加和運(yùn)算,得到第一步索引值,將第一步索引值存入移位寄存器中;4b)提取編碼器中的參數(shù)更新使能信號(hào),判斷參數(shù)更新使能信號(hào)是否等于“0”,若等于,將第一步索引值比較信號(hào)設(shè)置為“0”,否則,提取步驟Sb)中的更新索引值,判斷第一步索引值與更新索引值是否相等,若相等,將第一步索引值比較信號(hào)設(shè)置為“1”,若不相等,將第一步索引值比較信號(hào)設(shè)置為“O”,將第一步索引值比較信號(hào)存入移位寄存器中。(5)獲取索引值信息第二步5a)設(shè)置初始參數(shù)值提取移位寄存器中的第一步索引值,查找隨機(jī)存儲(chǔ)器中索引值的存儲(chǔ)記錄,判斷第一步索引值是否為第一次使用若是,將初始參數(shù)值設(shè)置為JPEG_LS常規(guī)編碼標(biāo)準(zhǔn)方法的初始值,將移位寄存器中的第一步索引值比較信號(hào)修正為“ 1”,否貝1J,提取步驟8b)中的更新參數(shù)值,將初始參數(shù)值設(shè)置為更新參數(shù)值,將初始參數(shù)值存入移位寄存器中;5b)提取編碼器中參數(shù)更新使能信號(hào),判斷參數(shù)更新使能信號(hào)是否等于“0”,若等于,將第二步索引值比較信號(hào)設(shè)置為“0”,否則,提取步驟Sb)中的更新索引值,判斷更新索引值與第一步索引值是否相等,若相等,將第二步索引值比較信號(hào)設(shè)置為“1”,否則,將第二步索引值比較信號(hào)設(shè)置為“0”,將第二步索引值比較信號(hào)存入移位寄存器中;5c)令第二步索引值等于第一步索引值,將第二步索引值存入移位寄存器中?!?6)第一次預(yù)測誤差修正參數(shù)6a)提取移位寄存器中參數(shù)更新使能信號(hào),判斷參數(shù)更新使能信號(hào)是否等于“0”,若等于,將第三步索引值比較信號(hào)設(shè)置為“0”,否則,提取步驟Sb)中的更新索引值與移位寄存器中的第二步索引值,判斷更新索引值與第二步索引值是否相等,若相等,將第三步索引值比較信號(hào)設(shè)置為“1”,否則,將第三步索引值比較信號(hào)設(shè)置為“0”,將第三步索引值比較信號(hào)存入移位寄存器中;6b)設(shè)置中間參數(shù)值提取移位寄存器中的第二步索引值比較信號(hào),判斷第二步索引值比較信號(hào)是否等于“ I ”,若是,提取步驟8b)中的更新參數(shù)值,將中間參數(shù)值設(shè)置為更新參數(shù)值,否則,提取移位寄存器中的第一步索引值比較信號(hào),判斷第一步索引值比較信號(hào)是否等于“ I ”,若等于,提取移位寄存器中的初始參數(shù)值,令中間參數(shù)值等于初始參數(shù)值,若不相等,提取隨機(jī)存儲(chǔ)器中第二步索引值對(duì)應(yīng)的參數(shù)值,將此參數(shù)值作為中間參數(shù)值,將中間參數(shù)值存入移位寄存器中;6c)令第三步索引值等于第二步索引值,將第三步索引值存入移位寄存器中;6d)對(duì)參數(shù)值中的誤差修正參數(shù)進(jìn)行預(yù)測,得到九種預(yù)測結(jié)果,讀取步驟(3)中存入移位寄存器的預(yù)測中值,對(duì)預(yù)測中值取絕對(duì)值,將預(yù)測中值的絕對(duì)值分別與九種預(yù)測結(jié)果相加,得到的九個(gè)值構(gòu)成第一步預(yù)測修正中值。(7)第二次預(yù)測誤差修正參數(shù)7a)提取編碼器中的參數(shù)更新使能信號(hào),判斷參數(shù)更新使能信號(hào)是否等于“0”,若等于,將第四步索引值比較信號(hào)設(shè)置為“0”,若不等于,提取步驟Sb)中的更新索引值與步驟6c)存入移位寄存器的第三步索引值,判斷更新索引值與第三步索引值是否相等;若相等,將第四步索引值比較信號(hào)設(shè)置為“1”,否則,將第四步索引值比較信號(hào)設(shè)置為“O”;7b)提取步驟6a)存入移位寄存器的第三步索引值比較信號(hào),判斷第三步索引值比較信號(hào)是否等于“ I ”,若等于,提取步驟6b)存入移位寄存器的中間參數(shù)值,將當(dāng)前參數(shù)值設(shè)置為中間參數(shù)值,否則,提取隨機(jī)存儲(chǔ)器中第三步索引值對(duì)應(yīng)的參數(shù)值作為當(dāng)前參數(shù)值,將當(dāng)前參數(shù)值存入移位寄存器中;7c)令第四步索引值等于第三步索引值,將第四步索引值存入移位寄存器中;
7d)提取移位寄存器中的九種第一步預(yù)測修正中值,對(duì)第一步預(yù)測修正中值進(jìn)行第二次預(yù)測,從九種預(yù)測修正中值中預(yù)測出三個(gè)第二步預(yù)測修正中值;7e)提取編碼器中的當(dāng)前像素點(diǎn)值,分別將三個(gè)第二步預(yù)測修正中值與當(dāng)前像素點(diǎn)值做減法運(yùn)算,將得到的三個(gè)結(jié)果作為誤差值中間結(jié)果;7f)提取編碼器中的誤差范圍修正值,分別將三個(gè)誤差值中間結(jié)果與誤差范圍修正值進(jìn)行運(yùn)算,將誤差值限制在誤差范圍的下限值與上限值范圍內(nèi),修正后得到三個(gè)誤差值,將誤差值存入移位寄存器中。(8)更新參數(shù)值8a)將參數(shù)更新使能信號(hào)設(shè)置為“I” ;Sb)提取步驟7b)存入移位寄存器的當(dāng)前參數(shù)值與步驟7c)存入移位寄存器的第 四步索引值,對(duì)當(dāng)前參數(shù)值進(jìn)行更新操作,得到參數(shù)的更新值,將隨機(jī)存儲(chǔ)器中第四步索引值對(duì)應(yīng)的參數(shù)值設(shè)置為參數(shù)的更新值,令更新索引值等于第四步索引值,將參數(shù)的更新值和更新索引值存入移位寄存器中;Sc)提取步驟7f)存入移位寄存器中的三個(gè)誤差值,利用更新的參數(shù)在三個(gè)誤差值中選擇一個(gè)作為最終誤差值,將最終誤差值存入移位寄存器中。(9)獲得哥倫布編碼參數(shù)9a)提取出步驟Sb)存入移位寄存器的更新參數(shù)中的發(fā)生次數(shù)計(jì)量參數(shù)與前項(xiàng)預(yù)測誤差參數(shù),將發(fā)生次數(shù)計(jì)量參數(shù)向左移動(dòng),每次向左移動(dòng)一位,一直到移位后的發(fā)生次數(shù)計(jì)量參數(shù)大于前項(xiàng)預(yù)測誤差參數(shù),停止左移操作,將移動(dòng)位數(shù)作為哥倫布編碼參數(shù);9b)提取步驟8c)存入移位寄存器中的最終誤差值,提取隨機(jī)存儲(chǔ)器中更新索引值對(duì)應(yīng)的偏差參數(shù)和發(fā)生次數(shù)計(jì)量參數(shù),比較偏差參數(shù)與發(fā)生次數(shù)計(jì)量參數(shù)的大小,由其比較結(jié)果及最終誤差值選擇誤差映射值。(10)哥倫布編碼及碼字合成IOa)將哥倫布編碼參數(shù)值以及誤差映射值送入哥倫布編碼器進(jìn)行哥倫布編碼,獲得不定長碼流,將碼流存入緩存器中;IOb)提取緩存器中的碼流信息,按順序拼接碼流,每當(dāng)碼流拼接滿“64”位時(shí),合成為一個(gè)碼字,將碼字輸出到JPEG_LS編碼器外。本發(fā)明與現(xiàn)有技術(shù)相比具有如下優(yōu)點(diǎn)第一,本發(fā)明采用預(yù)測誤差的方法,根據(jù)誤差修正參數(shù)的取值規(guī)律,由前兩個(gè)像素點(diǎn)的誤差修正參數(shù),分兩步預(yù)測當(dāng)前像素點(diǎn)的誤差值,克服了現(xiàn)有技術(shù)中誤差值計(jì)算結(jié)構(gòu)復(fù)雜的問題,使得本發(fā)明優(yōu)化了最差路徑,提高了處理速度。第二,本發(fā)明采用四級(jí)反饋回路,將更新的參數(shù)值實(shí)時(shí)反饋,克服了現(xiàn)有技術(shù)中順序執(zhí)行結(jié)構(gòu)處理數(shù)據(jù)量分布不均勻的問題,使得本發(fā)明合理地安排了每個(gè)時(shí)鐘周期的數(shù)據(jù)處理量,易于FPGA以流水結(jié)構(gòu)完成壓縮編碼。第三,本發(fā)明通過判斷當(dāng)前索引值與更新索引值是否相等,得到四個(gè)比較信號(hào),將比較信號(hào)作為控制信號(hào)選擇參數(shù)值,克服了現(xiàn)有技術(shù)中參數(shù)更新控制信號(hào)復(fù)雜的問題,使得本發(fā)明簡化了控制信號(hào),易于進(jìn)行壓縮編碼操作。第四,本發(fā)明在獲取哥倫布編碼參數(shù)時(shí)采用二分比較法,對(duì)更新的參數(shù)進(jìn)行二分比較,通過五次比較獲得哥倫布參數(shù),克服了現(xiàn)有技術(shù)中哥倫布參數(shù)復(fù)雜的循環(huán)移位結(jié)構(gòu),使得本發(fā)明簡化了移位操作,節(jié)省了硬件資源,加快了圖像壓縮處理速度。
圖I為本發(fā)明的流程圖;圖2為本發(fā)明當(dāng)前像素點(diǎn)的鄰近點(diǎn)示意圖;圖3為本發(fā)明預(yù)測修正誤差參數(shù)示意圖。
具體實(shí)施例方式參照?qǐng)D1,本發(fā)明的具體實(shí)施步驟如下步驟I,輸入像素點(diǎn)
將需要壓縮的圖像像素點(diǎn)輸入到JPEG_LS編碼器中。按照當(dāng)前像素點(diǎn)與其鄰近點(diǎn)的相應(yīng)位置關(guān)系a、b、c、d,依次從RAM(隨機(jī)存儲(chǔ)器)中讀出當(dāng)前像素點(diǎn)的鄰近點(diǎn)及其對(duì)應(yīng)位置關(guān)系的信息。當(dāng)前像素點(diǎn)與其鄰近點(diǎn)的相應(yīng)位置關(guān)系如圖2所示圖中a表示上一個(gè)處理的像素點(diǎn),c表示上一個(gè)處理像素點(diǎn)上方的像素點(diǎn),b表示當(dāng)前處理像素點(diǎn)上方的像素點(diǎn),d表示下一個(gè)處理像素點(diǎn)上方的像素點(diǎn),將當(dāng)前像素點(diǎn)與其鄰近點(diǎn)組成上下文模型輸入常規(guī)編碼器中。將當(dāng)前像素點(diǎn)的符號(hào)位信號(hào)輸入到JPEG_LS編碼器中,符號(hào)位信號(hào)用以記錄輸入像素點(diǎn)的正負(fù)情況,若為正時(shí),符號(hào)位信號(hào)為“ I ”,否則符號(hào)位信號(hào)為“-I ”。將需要壓縮的圖像參數(shù)更新使能信號(hào)輸入JPEG_LS編碼器中,圖像更新使能信號(hào)是執(zhí)行步驟8時(shí)產(chǎn)生的使能信號(hào),用以標(biāo)記步驟8是否運(yùn)行,圖像更新使能信號(hào)有效時(shí)為“1”,無效時(shí)標(biāo)記為“O”。將需要壓縮圖像的最大值信號(hào)輸入到JPEG_LS編碼器中。將需要壓縮圖像的誤差范圍修正值、誤差范圍上限值及下限值輸入到JPEG_LS編碼器中。本發(fā)明實(shí)施例中,用Verilog語言構(gòu)建整體流水結(jié)構(gòu)。步驟2,獲取梯度值計(jì)算梯度將鄰近點(diǎn)中的d值與b值相減,得到的結(jié)果記為梯度一,將b值與c值相減,得到的結(jié)果記為梯度二,將c值與a值相減,得到的結(jié)果記為梯度三。量化梯度將標(biāo)準(zhǔn)方法中規(guī)定的八個(gè)固定數(shù)值作為門限值,利用八個(gè)門限值將整體數(shù)字空間劃分為九個(gè)區(qū)域,每個(gè)區(qū)域?qū)?yīng)一個(gè)量化值,分別將三個(gè)梯度值與門限值作比較,在八個(gè)門限值中獲取小于梯度值的數(shù)值,選擇這些門限值內(nèi)最大的數(shù)值作為下限值,獲取八個(gè)門限值中大于梯度值的數(shù)值,選擇這些門限值內(nèi)最小的數(shù)值作為上限值,將下限值與上限值對(duì)應(yīng)區(qū)域的量化值作為其梯度量化值Q1, Q2, Q3;其中,Q1, Q2, Q3分別表示三個(gè)梯度量化值,九個(gè)區(qū)域?qū)?yīng)的量化值分別為-4至4的整數(shù)值,量化后梯度范圍限制在-4-4。修正梯度值分別判斷三個(gè)梯度量化值是否為負(fù)數(shù),若是負(fù)數(shù),取其絕對(duì)值作為梯度量化值,并記錄符號(hào)位信號(hào)為“-1”,否則,三個(gè)梯度量化值與符號(hào)位信號(hào)取值不變,將符號(hào)位信號(hào)值及梯度量化值存入移位寄存器中。步驟3,獲取預(yù)測中值
比較步驟I中a值與b值的大小,若a大于b,則將a作為較大值,將b作為較小值,否則將b作為較大值,將a作為較小值;比較c值與較大值的大小,若c值大于較大值,則預(yù)測中值Px等于較小值,否則,比較c值與較小值的大小,若c值小于較小值,則預(yù)測中值Px取較大值,否則,預(yù)測中值Px取a值加上b值再減去c值的結(jié)果,將預(yù)測中值Px存入移位寄存器中;本發(fā)明實(shí)施例中,令Px表示預(yù)測中值。步驟4,獲取索引值信息第一步提取移位寄存器中的三個(gè)量化梯度值Q1, Q2, Q3,判斷Q1是否等于“0”,若%等于“0”,判斷Q2是否等于“0”,若Q2等于“0”,則第一步索引值Q_indexl = 360+Q3,若Q2不等于“0”,則第一步索引值Qjndexl = 324+(Q1-I) X 9+(Q3+4),若Q1不等于“0”,則第一步索弓丨值Q_indexl = (Q1-I) X81+(Q2+4) X9+ (Q3+4);得到第一步索引值Q_indexl,將第一步索引值存入移位寄存器中,其中,Q.indexl表示第一步索引值。
提取編碼器中的參數(shù)更新使能信號(hào),判斷參數(shù)更新使能信號(hào)是否等于“0”,若等于,將第一步索引值比較信號(hào)設(shè)置為“0”,否則,提取步驟Sb)中的更新索引,判斷第一步索引值0_丨11(1611與更新索引值Q_update是否相等,若相等,將第一步索引值比較信號(hào)設(shè)置為“1”,若不相等,將第一步索引值比較信號(hào)設(shè)置為“0”,將第一步索引值比較信號(hào)存入移位寄存器中;。本發(fā)明實(shí)施例中,Q_update表示步驟8b)中更新時(shí)所對(duì)應(yīng)的索引值,索引值Q的取值范圍為0-364的整數(shù)值,共365個(gè)數(shù)值,每次更新需要計(jì)算索引值并且使用此索引值對(duì)應(yīng)的參數(shù)值。步驟5,獲取索引值信息第二步設(shè)置初始參數(shù)值提取移位寄存器中的第一步索引值Qjndexl,查找隨機(jī)存儲(chǔ)器中索引值的存儲(chǔ)記錄,判斷第一步索引值Q_indexl是否為第一次使用若是,將初始參數(shù)值設(shè)置為JPEG_S常規(guī)編碼標(biāo)準(zhǔn)方法的初始值,將移位寄存器中的第一步索引值比較信號(hào)修正為“ I ”,否則,提取步驟8b)中的更新參數(shù)值,將初始參數(shù)值設(shè)置為更新參數(shù)值,將初始參數(shù)值存入移位寄存器中。本發(fā)明實(shí)施例中,每次進(jìn)行編碼使用的參數(shù)包括前項(xiàng)預(yù)測誤差參數(shù),偏差參數(shù),預(yù)測誤差修正參數(shù),發(fā)生次數(shù)計(jì)量參數(shù);每個(gè)索引值均對(duì)應(yīng)四個(gè)參數(shù),每次編碼時(shí)更新當(dāng)前索引值對(duì)應(yīng)的參數(shù)。全部索引值對(duì)應(yīng)的參數(shù)值均存儲(chǔ)在隨機(jī)存儲(chǔ)器中,每次更新參數(shù)后,將更新的參數(shù)值寫入隨機(jī)存儲(chǔ)器中索引值對(duì)應(yīng)的參數(shù)位置。提取編碼器中參數(shù)更新使能信號(hào),判斷參數(shù)更新使能信號(hào)是否等于“0”,若等于,將第二步索引值比較信號(hào)設(shè)置為“0”,否則,提取步驟Sb)中的更新索引,判斷更新索引值Q_update與第一步索引值Q_indexl是否相等,若相等,將第二步索引值比較信號(hào)設(shè)置為“1”,否則,將第二步索引值比較信號(hào)設(shè)置為“0”,將第二步索引值比較信號(hào)存入移位寄存器中;令第二步索引值Q_index2等于第一步索引值Q_indexl,將第二步索引值Q_index2存入移位寄存器中,其中,Q_index2表示第二步索引值;步驟6,第一次預(yù)測誤差修正參數(shù)提取移位寄存器中參數(shù)更新使能信號(hào),判斷參數(shù)更新使能信號(hào)是否等于“0”,若等于,將第三步索引值比較信號(hào)設(shè)置為“O”,否則,提取步驟8b)中的更新索引與移位寄存器中的第二步索引值9」11如12,判斷更新索引值與第二步索引值是否相等,若相等,將第三步索引值比較信號(hào)設(shè)置為“ 1”,否則,將第三步索引值比較信號(hào)設(shè)置為“O”,將第三步索引值比較信號(hào)存入移位寄存器中。設(shè)置中間參數(shù)值提取移位寄存器中的第二步索引值比較信號(hào),判斷第二步索引值比較信號(hào)是否等于“ I ”,若是,提取步驟8b)中的更新參數(shù)值,將中間參數(shù)值設(shè)置為更新參數(shù)值,否則,提取移位寄存器中的第一步索引值比較信號(hào),判斷第一步索引值比較信號(hào)是否等于“ I ”,若等于,提取移位寄存器中的初始參數(shù)值,令中間參數(shù)值等于初始參數(shù)值,若不相等,提取隨機(jī)存儲(chǔ)器中第二步索引值對(duì)應(yīng)的參數(shù)值,將此參數(shù)值作為中間參數(shù)值,將中間參數(shù)值存入移位寄存器中。令第三步索引值0_化(1以3等于第二步索引值Q_index2,將第三步索引值存入移位寄存器中,其中,Q_index3表示第三步索引值。 對(duì)參數(shù)值中的誤差修正參數(shù)進(jìn)行預(yù)測,得到九種預(yù)測結(jié)果,讀取步驟3中存入移位寄存器的預(yù)測中值,對(duì)預(yù)測中值取絕對(duì)值,將預(yù)測中值的絕對(duì)值分別與九種預(yù)測結(jié)果相力口,得到的九個(gè)值構(gòu)成第一步預(yù)測修正中值。由于預(yù)測誤差修正參數(shù)具有如下特點(diǎn)相鄰像素點(diǎn)的索引值對(duì)應(yīng)的預(yù)測誤差參數(shù)只可能有三種差值“0” “I” “-1”,所以在無法獲得當(dāng)前處理像素點(diǎn)對(duì)應(yīng)的預(yù)測誤差參數(shù)時(shí),可以由前兩個(gè)像素點(diǎn)的預(yù)測誤差參數(shù)來推測當(dāng)前點(diǎn)的預(yù)測誤差參數(shù)。由上上一個(gè)像素點(diǎn)推測誤差參數(shù)時(shí),有九種變換結(jié)果,這九種結(jié)果對(duì)應(yīng)五個(gè)數(shù)值。將當(dāng)前參數(shù)中的預(yù)測誤差修正參數(shù)分別與“0”,“-1”,“_2”相加,得到五種加和結(jié)果,讀取移位寄存器中的預(yù)測中值Px,取預(yù)測中值的絕對(duì)值,將預(yù)測中值的絕對(duì)值分別與五種加和結(jié)果相加,得到的五個(gè)值作為預(yù)測修正中值。將預(yù)測修正中值的五個(gè)數(shù)值都限制在下限為“O”、上限為最大值的范圍內(nèi),若預(yù)測修正中值小于“0”,令它等于“0”,若大于最大值,則令它等于最大值。按照預(yù)測誤差修正參數(shù)的取值規(guī)律,將五個(gè)預(yù)測修正中值映射至九種預(yù)測修正中值,得到九種第一步預(yù)測修正中值,將九種第一步預(yù)測修正中值存入移位寄存器中。預(yù)測修正中值的過程如圖3所示在預(yù)測誤差修正參數(shù)第一步,預(yù)測出九種第一步預(yù)測修正中值PxC_pp, PxC_pO, PxC_pm, PxC_0p, PxC_00, PxC_0m, PxC_mp, PxC_mO, PxC_mm ;在第二步預(yù)測誤差修正參數(shù)時(shí),利用更新誤差修正參數(shù)與當(dāng)前誤差修正參數(shù)的比較結(jié)果,從九種第一步預(yù)測修正中值中選擇三種預(yù)測誤差,這三種預(yù)測誤差即為第二步預(yù)測誤差中值;第三步預(yù)測與參數(shù)更新同時(shí)進(jìn)行,比較更新出的誤差修正參數(shù)與當(dāng)前的誤差修正參數(shù),從三種預(yù)測誤差出選擇一個(gè)值作為最終誤差值。其中,PxC表示預(yù)測修正中值,第一個(gè)下標(biāo)“p”,“m”,“O”分別表示對(duì)上上一個(gè)像素點(diǎn)對(duì)應(yīng)的預(yù)測誤差參數(shù)值進(jìn)行加“ I”、減“ I”、不變操作;第二個(gè)下標(biāo)“P”,“m”,“O”分別表示對(duì)上一個(gè)像素點(diǎn)對(duì)應(yīng)的預(yù)測誤差參數(shù)值進(jìn)行加“I”、減“I”、不變操作,因此兩個(gè)下標(biāo)聯(lián)合在一起表示對(duì)前兩個(gè)像素點(diǎn)的預(yù)測誤差參數(shù)進(jìn)行相應(yīng)計(jì)算得到的結(jié)果。步驟7,第二次預(yù)測誤差修正參數(shù)提取編碼器中的參數(shù)更新使能信號(hào),判斷參數(shù)更新使能信號(hào)是否等于“0”,若等于,將第四步索引值比較信號(hào)設(shè)置為“0”,若不等于,提取步驟8中的更新索引與步驟6存入移位寄存器的第三步索引值Q_index3,判斷更新索引值與第三步索引值是否相等;若相等,將第四步索引值比較信號(hào)設(shè)置為“1”,否則,將第四步索引值比較信號(hào)設(shè)置為 “O,,。提取步驟6存入移位寄存器的第三步索引值比較信號(hào),判斷第三步索引值比較信號(hào)是否等于“ I ”,若等于,提取步驟6存入移位寄存器的中間參數(shù)值,將當(dāng)前參數(shù)值設(shè)置為中間參數(shù)值,否則,提取隨機(jī)存儲(chǔ)器中第三步索引值對(duì)應(yīng)的參數(shù)值作為當(dāng)前參數(shù)值,將當(dāng)前參數(shù)值存入移位寄存器中。令第四步索引值Q_index4等于第三步索引值Q_index3,將第四步索引值存入移位寄存器中,其中,Q_index4表示第四步索引值。提取移位寄存器中的九種第一步預(yù)測修正中值,對(duì)第一步預(yù)測修正中值進(jìn)行第二次預(yù)測,從九種預(yù)測修正中值中預(yù)測出三個(gè)第二步預(yù)測修正中值。
本發(fā)明實(shí)施例中,第二次預(yù)測步驟如下判斷比較信號(hào)三是否等于“0”,若等于,說明上上一個(gè)像素點(diǎn)對(duì)應(yīng)的誤差修正參數(shù)等于“0”,因此從九種第一步預(yù)測修正中值內(nèi)取第一個(gè)下標(biāo)為“O”的三個(gè)值PxC_0p、PxC_00、PxC_0m作為第二步預(yù)測修正中值,否則,提取步驟8中更新的誤差修正參數(shù),比較當(dāng)前參數(shù)值中的誤差修正參數(shù)與更新的誤差修正參數(shù)的大小,若前者大于后者,說明上上一個(gè)像素點(diǎn)對(duì)應(yīng)的誤差修正參數(shù)等于“-1”,因此從第一步預(yù)測修正中值內(nèi)取第一個(gè)下標(biāo)為“m”的三個(gè)值PxC_mp、PxC_mO、PxC_mm作為第二步預(yù)測修正中值;否則,選取第一個(gè)下標(biāo)為“P”的三個(gè)值PxC_pp、PxC_pO、PxC_pm作為第二步預(yù)測修正中值。提取編碼器中的當(dāng)前像素點(diǎn)值,分別將三個(gè)第二步預(yù)測修正中值與當(dāng)前像素點(diǎn)值做減法運(yùn)算,將得到的三個(gè)結(jié)果作為誤差值中間結(jié)果。分別比較三個(gè)誤差值中間結(jié)果與誤差范圍上限值與下限值的大小,若誤差值中間結(jié)果小于下限值,則加上誤差范圍修正值,將得到的結(jié)果作為誤差值;若大于上限值,則減去誤差范圍修正值,將得到的結(jié)果作為誤差值;否則,將誤差值中間結(jié)果作為誤差值,將誤差值存入移位寄存器中。步驟8,更新參數(shù)值將參數(shù)更新使能信號(hào)設(shè)置為“ I ”。提取步驟7存入移位寄存器的當(dāng)前參數(shù)值與第四步索引值Q_index4,對(duì)當(dāng)前參數(shù)值進(jìn)行更新操作,得到參數(shù)的更新值,將隨機(jī)存儲(chǔ)器中第四步索引值對(duì)應(yīng)的參數(shù)值設(shè)置為參數(shù)的更新值,令更新索引值Q_update等于第四步索引值Q_index4,將參數(shù)的更新值和更新索引值Q_update存入移位寄存器中,其中,Q_update表示更新索引值。提取步驟7存入移位寄存器中的三個(gè)誤差值,利用更新的參數(shù)在三個(gè)誤差值中選擇一個(gè)作為最終誤差值,將最終誤差值存入移位寄存器中。提取移位寄存器中的比較信號(hào)四,判斷比較信號(hào)四是否等于“0”,若等于,說明上一個(gè)點(diǎn)對(duì)應(yīng)的誤差修正參數(shù)為“0”,從三個(gè)誤差值中選擇第二個(gè)下標(biāo)為“O”的值作為最終誤差值,否則,比較更新的誤差修正參數(shù)與當(dāng)前誤差修正參數(shù)值的大小,若前者大于后者,說明上一個(gè)點(diǎn)對(duì)應(yīng)的誤差修正參數(shù)為“ 1”,從三個(gè)誤差值中選擇第二個(gè)下標(biāo)為“P”的值作為最終誤差值,否則,選擇第二個(gè)下標(biāo)為“m”的誤差值作為最終誤差值,將最終誤差值存入移位寄存器中。本發(fā)明實(shí)施例中,預(yù)測誤差值與參數(shù)更新在同一個(gè)處理級(jí)進(jìn)行,以更新的誤差修正參數(shù)作為敏感變量,一旦參數(shù)的數(shù)值變化,就進(jìn)行一次相應(yīng)的處理,所以接收誤差修正參數(shù)的處理級(jí)可以同步得到最新的誤差修正參數(shù),并進(jìn)行計(jì)算。參數(shù)更新時(shí),發(fā)生次數(shù)計(jì)量參數(shù)加“ I ” ;將當(dāng)前參數(shù)中的偏差參數(shù)與最終誤差值的兩倍相加,得到的結(jié)果記為偏差參數(shù)更新值;將前項(xiàng)預(yù)測誤差參數(shù)與最終誤差值的絕對(duì)值相加,得到的結(jié)果記為前項(xiàng)預(yù)測誤差參數(shù)更新值;判斷偏差參數(shù)的更新值是否小于發(fā)生次數(shù)計(jì)量參數(shù)的相反數(shù)若小于,給偏差參數(shù)加上發(fā)生次數(shù)計(jì)量參數(shù)值,繼續(xù)判斷偏差參數(shù)是否小于發(fā)生次數(shù)計(jì)量參數(shù)的相反數(shù),若仍然小于,令偏差參數(shù)等于“ I ”減去發(fā)生次數(shù)計(jì)量參數(shù),判斷預(yù)測誤差修正參數(shù)是否大于最小值,若大于,減“I”;否則,判斷偏差參數(shù)是否大于“O”:若大于,將偏差參數(shù)減去發(fā)生次數(shù)計(jì)量參數(shù),繼續(xù)判斷偏差參數(shù)是否大于“O”,若大于,令偏差參數(shù)等于“O”,判斷預(yù)測誤差修正參數(shù)是否小于最大值,若小于,預(yù)測誤差修正參數(shù)加“1”,否則,不做處理。步驟9,獲得哥倫布編碼參數(shù)提取出步驟8存入移位寄存器的更新參數(shù)中的發(fā)生次數(shù)計(jì)量參數(shù)與前項(xiàng)預(yù)測誤差參數(shù),將發(fā)生次數(shù)計(jì)量參數(shù)向左移動(dòng),每次向左移動(dòng)一位,一直到移位后的發(fā)生次數(shù)計(jì)量參數(shù)大于前項(xiàng)預(yù)測誤差參數(shù),停止左移操作,將移動(dòng)位數(shù)作為哥倫布編碼參數(shù)。
本發(fā)明實(shí)施例中,根據(jù)硬件實(shí)現(xiàn)環(huán)境確定哥倫布編碼參數(shù)最大值為17,因此將哥倫布編碼參數(shù)范圍限制在0-17之間。本發(fā)明采用二分比較法代替移位操作(I)將范圍為“I”到“17”的區(qū)間作為比較區(qū)間;(2)求出當(dāng)前比較區(qū)間兩個(gè)邊界點(diǎn)數(shù)值的平均值,將平均值作為中間點(diǎn),以中間點(diǎn)為界限,將比較區(qū)間劃分為上、下兩部分區(qū)間;(3)提取出移位寄存器內(nèi)的前項(xiàng)預(yù)測誤差參數(shù)和發(fā)生次數(shù)計(jì)量參數(shù),將發(fā)生次數(shù)計(jì)量參數(shù)左移平均值位,判斷移位后的值是否小于前項(xiàng)預(yù)測誤差參數(shù)值若小于,則選取上半個(gè)區(qū)間作為比較區(qū)間;否則,選取下半個(gè)區(qū)間作為比較區(qū)間,返回步驟(2),重新選取中間點(diǎn)進(jìn)行比較操作,直到進(jìn)行五次比較,根據(jù)比較結(jié)果選取當(dāng)前上邊界或者下邊界值作為哥倫布參數(shù),停止操作。提取步驟8存入移位寄存器中的最終誤差值,提取隨機(jī)存儲(chǔ)器中更新索引值對(duì)應(yīng)的偏差參數(shù)和發(fā)生次數(shù)計(jì)量參數(shù),比較偏差參數(shù)與發(fā)生次數(shù)計(jì)量參數(shù)的大小,由其比較結(jié)果及最終誤差值選擇誤差映射值。步驟10,哥倫布編碼及碼字合成將哥倫布編碼參數(shù)值以及誤差映射值送入哥倫布編碼器進(jìn)行哥倫布編碼,獲得不定長碼流,將碼流存入緩存器中。提取緩存器中的碼流信息,按順序拼接碼流,每當(dāng)碼流拼接滿“64”位時(shí),合成為一個(gè)碼字,將碼字輸出到JPE6_LS編碼器外。本發(fā)明實(shí)施例中,采用Xi I inx公司的I SE I O. I作為綜合工具,首先創(chuàng)建項(xiàng)目向?qū)?,在Xilinx ISE10. I的工具欄中點(diǎn)擊File- > open Project,按照保存路徑打開工程;其次在Sources窗口點(diǎn)擊頂層文件并在processes窗口中雙擊Synthesize-XST,啟動(dòng)全程編譯;最后在Synthesize-XST下拉菜單中選中View RTL Schematic,查看綜合后生成的門級(jí)電路。為了精確測試本發(fā)明的優(yōu)化效果,以某五級(jí)流水結(jié)構(gòu)實(shí)現(xiàn)JPEG_LS常規(guī)編碼預(yù)測編碼部分的系統(tǒng)為對(duì)比系統(tǒng),此系統(tǒng)僅使用了一步預(yù)測誤差修正編碼。測試工具為Xilinx公司的ISE 10. 1,采用Xilinx公司型號(hào)為XC2vp40ff 1148-6的FPGA作為測試平臺(tái)。通過測試工具分別對(duì)五級(jí)流水結(jié)構(gòu)JPEG_LS常規(guī)編碼系統(tǒng)與本發(fā)明系統(tǒng)進(jìn)行綜合,點(diǎn)擊ViewSynthesis Report查看綜合報(bào)告。表I為五級(jí)流水結(jié)構(gòu)實(shí)現(xiàn)JPEG_LS常規(guī)編碼系統(tǒng)的資源占用情況綜合報(bào)告,表2為本發(fā)明實(shí)現(xiàn)JPEG_LS常規(guī)編碼系統(tǒng)的資源占用情況綜合報(bào)告。表I優(yōu)化前JPEG_LS常規(guī)編碼系統(tǒng)資源占用情況
器件名稱_使用數(shù)目(個(gè))_總數(shù)(個(gè))使用數(shù)目/總數(shù)
Slice32621939216%
觸發(fā)器1505387843%
查找表53933878413%
·邏輯單元5393--
移位寄存器O--—
輸入輸出模塊408044%
全局時(shí)鐘輸入I166%表2優(yōu)化后JPEG_LS常規(guī)編碼系統(tǒng)資源占用情況
器件名稱使用數(shù)目(個(gè))總數(shù)(個(gè))使用數(shù)目/總數(shù)
Slice23941939212%
觸發(fā)器1922387844%
查找表42723878411%
邏輯單元4243--
移位寄存器29--
輸入輸出模塊378044%
全局時(shí)鐘輸入I166%表I為優(yōu)化前的5級(jí)流水結(jié)構(gòu),實(shí)現(xiàn)時(shí)只采用了一級(jí)預(yù)測誤差修正參數(shù),表2為本發(fā)明7級(jí)流水結(jié)構(gòu)實(shí)現(xiàn)預(yù)測編碼,采用二級(jí)預(yù)測誤差修正參數(shù);通過比較表I與表2的結(jié)果可以看出,使用FPGA進(jìn)行功能實(shí)現(xiàn)時(shí),優(yōu)化前的結(jié)構(gòu)Slice的占用率降低了 4%,查找表的使用率降低了 2%,輸入輸出模塊的個(gè)數(shù)也減少了 3個(gè)。在不加約束的條件下,分別對(duì)5級(jí)結(jié)構(gòu)與本發(fā)明結(jié)構(gòu)進(jìn)行綜合,得到5級(jí)結(jié)構(gòu)綜合后的最小周期為19. 156ns,最大頻率為52. 203MHz,本發(fā)明7級(jí)結(jié)構(gòu)綜合后的最小周期為15. 568ns,最大頻率為64.236MHz。由此可見,本發(fā)明的實(shí)現(xiàn)頻率較5級(jí)結(jié)構(gòu)提高了12.033MHz ο
權(quán)利要求
1.一種JPEG_LS常規(guī)編碼硬件實(shí)現(xiàn)方法,包括以下步驟 (1)輸入像素點(diǎn) Ia)將需要壓縮的圖像像素點(diǎn)輸入到JPEG_LS編碼器中; Ib)按照當(dāng)前像素點(diǎn)與其鄰近點(diǎn)的相應(yīng)位置關(guān)系a、b、c、d,依次從隨機(jī)存儲(chǔ)器中讀出當(dāng)前像素點(diǎn)的鄰近點(diǎn)及其對(duì)應(yīng)位置關(guān)系的信息; Ic)將當(dāng)前像素點(diǎn)的符號(hào)位信號(hào)輸入到JPEG_LS編碼器中; Id)將需要壓縮的圖像參數(shù)更新使能信號(hào)輸入JPEG_LS編碼器中; Ie)將需要壓縮圖像的最大值信號(hào)輸入到JPEG_LS編碼器中; If)將需要壓縮圖像的誤差范圍修正值、誤差范圍上限值及下限值輸入到JPEG_LS編 碼器中; (2)獲取梯度值 2a)計(jì)算梯度將鄰近點(diǎn)中的d值與b值相減,得到的結(jié)果記為梯度一,將b值與c值相減,得到的結(jié)果記為梯度二,將c值與a值相減,得到的結(jié)果記為梯度三; 2b)量化梯度將JPEG_LS常規(guī)編碼標(biāo)準(zhǔn)方法的八個(gè)固定數(shù)值作為門限值,利用八個(gè)門限值將整體數(shù)字空間劃分為九個(gè)區(qū)域,每個(gè)區(qū)域?qū)?yīng)一個(gè)量化值,將步驟2a)獲得的三個(gè)梯度值與八個(gè)門限值分別作比較,選擇僅小于梯度值的門限值作為區(qū)域下限值,選擇僅大于梯度值的門限值作為區(qū)域上限值,將下限值與上限值對(duì)應(yīng)區(qū)域的量化值作為其梯度量化值; 2c)修正梯度值分別判斷三個(gè)梯度量化值是否為負(fù)數(shù),若是負(fù)數(shù),取其絕對(duì)值作為梯度量化值,將符號(hào)位信號(hào)修正為“-1”,如果是正數(shù),三個(gè)梯度量化值與符號(hào)位信號(hào)取值不變,將符號(hào)位信號(hào)值及梯度量化值存入移位寄存器中; (3)獲取預(yù)測中值 比較步驟Ib)中a值與b值的大小,若a大于b,則將a作為較大值,將b作為較小值,否則將b作為較大值,將a作為較小值;比較c值與較大值的大小,若c值大于較大值,則預(yù)測中值等于較小值,否則,比較c值與較小值的大小,若c值小于較小值,則預(yù)測中值取較大值,否則,預(yù)測中值取a值加上b值再減去c值的結(jié)果,將預(yù)測中值存入移位寄存器中; (4)獲取索引值信息第一步 4a)將JPEG_LS常規(guī)編碼標(biāo)準(zhǔn)方法的索引值參數(shù)作為梯度量化值的加和系數(shù),對(duì)三個(gè)梯度量化值進(jìn)行加和運(yùn)算,得到第一步索引值,將第一步索引值存入移位寄存器中; 4b)提取編碼器中的參數(shù)更新使能信號(hào),判斷參數(shù)更新使能信號(hào)是否等于“O”,若等于,將第一步索引值比較信號(hào)設(shè)置為“O”,否則,提取步驟Sb)中的更新索引值,判斷第一步索引值與更新索引值是否相等,若相等,將第一步索引值比較信號(hào)設(shè)置為“1”,若不相等,將第一步索引值比較信號(hào)設(shè)置為“O”,將第一步索引值比較信號(hào)存入移位寄存器中; (5)獲取索引值信息第二步 5a)設(shè)置初始參數(shù)值提取移位寄存器中的第一步索引值,查找隨機(jī)存儲(chǔ)器中索引值的存儲(chǔ)記錄,判斷第一步索引值是否為第一次使用若是,將初始參數(shù)值設(shè)置為JPEG_LS常規(guī)編碼標(biāo)準(zhǔn)方法的初始值,將移位寄存器中的第一步索引值比較信號(hào)修正為“1”,否則,提取步驟Sb)中的更新參數(shù)值,將初始參數(shù)值設(shè)置為更新參數(shù)值,將初始參數(shù)值存入移位寄存器中;5b)提取編碼器中參數(shù)更新使能信號(hào),判斷參數(shù)更新使能信號(hào)是否等于“0”,若等于,將第二步索引值比較信號(hào)設(shè)置為“0”,否則,提取步驟Sb)中的更新索引值,判斷更新索引值與第一步索引值是否相等,若相等,將第二步索引值比較信號(hào)設(shè)置為“ 1”,否則,將第二步索引值比較信號(hào)設(shè)置為“0”,將第二步索引值比較信號(hào)存入移位寄存器中; 5c)令第二步索引值等于第一步索引值,將第二步索引值存入移位寄存器中; (6)第一次預(yù)測誤差修正參數(shù) 6a)提取移位寄存器中參數(shù)更新使能信號(hào),判斷參數(shù)更新使能信號(hào)是否等于“0”,若等于,將第三步索引值比較信號(hào)設(shè)置為“0”,否則,提取步驟Sb)中的更新索引值與移位寄存器中的第二步索引值,判斷更新索引值與第二步索引值是否相等,若相等,將第三步索引值比較信號(hào)設(shè)置為“ 1”,否則,將第三步索引值比較信號(hào)設(shè)置為“0”,將第三步 索引值比較信號(hào)存入移位寄存器中; 6b)設(shè)置中間參數(shù)值提取移位寄存器中的第二步索引值比較信號(hào),判斷第二步索引值比較信號(hào)是否等于“ I ”,若是,提取步驟8b)中的更新參數(shù)值,將中間參數(shù)值設(shè)置為更新參數(shù)值,否則,提取移位寄存器中的第一步索引值比較信號(hào),判斷第一步索引值比較信號(hào)是否等于“ I ”,若等于,提取移位寄存器中的初始參數(shù)值,令中間參數(shù)值等于初始參數(shù)值,若不相等,提取隨機(jī)存儲(chǔ)器中第二步索引值對(duì)應(yīng)的參數(shù)值,將此參數(shù)值作為中間參數(shù)值,將中間參數(shù)值存入移位寄存器中; 6c)令第三步索引值等于第二步索引值,將第三步索引值存入移位寄存器中; 6d)對(duì)參數(shù)值中的誤差修正參數(shù)進(jìn)行預(yù)測,得到九種預(yù)測結(jié)果,讀取步驟(3)中存入移位寄存器的預(yù)測中值,對(duì)預(yù)測中值取絕對(duì)值,將預(yù)測中值的絕對(duì)值分別與九種預(yù)測結(jié)果相力口,得到的九個(gè)值構(gòu)成第一步預(yù)測修正中值; (7)第二次預(yù)測誤差修正參數(shù) 7a)提取編碼器中的參數(shù)更新使能信號(hào),判斷參數(shù)更新使能信號(hào)是否等于“0”,若等于,將第四步索引值比較信號(hào)設(shè)置為“0”,若不等于,提取步驟Sb)中的更新索引值與步驟6c)存入移位寄存器的第三步索引值,判斷更新索引值與第三步索引值是否相等;若相等,將第四步索引值比較信號(hào)設(shè)置為“1”,否則,將第四步索引值比較信號(hào)設(shè)置為“O”; 7b)提取步驟6a)存入移位寄存器的第三步索引值比較信號(hào),判斷第三步索引值比較信號(hào)是否等于“ I ”,若等于,提取步驟6b)存入移位寄存器的中間參數(shù)值,將當(dāng)前參數(shù)值設(shè)置為中間參數(shù)值,否則,提取隨機(jī)存儲(chǔ)器中第三步索引值對(duì)應(yīng)的參數(shù)值作為當(dāng)前參數(shù)值,將當(dāng)前參數(shù)值存入移位寄存器中; 7c)令第四步索引值等于第三步索引值,將第四步索引值存入移位寄存器中; 7d)提取移位寄存器中的九種第一步預(yù)測修正中值,對(duì)第一步預(yù)測修正中值進(jìn)行第二次預(yù)測,從九種預(yù)測修正中值中預(yù)測出三個(gè)第二步預(yù)測修正中值; 7e)提取編碼器中的當(dāng)前像素點(diǎn)值,分別將三個(gè)第二步預(yù)測修正中值與當(dāng)前像素點(diǎn)值做減法運(yùn)算,將得到的三個(gè)結(jié)果作為誤差值中間結(jié)果; 7f)提取編碼器中的誤差范圍修正值,分別將三個(gè)誤差值中間結(jié)果與誤差范圍修正值進(jìn)行運(yùn)算,將誤差值限制在誤差范圍的下限值與上限值范圍內(nèi),修正后得到三個(gè)誤差值,將誤差值存入移位寄存器中; (8)更新參數(shù)值8a)將參數(shù)更新使能信號(hào)設(shè)置為“I” ; Sb)提取步驟7b)存入移位寄存器的當(dāng)前參數(shù)值與步驟7c)存入移位寄存器的第四步索引值,對(duì)當(dāng)前參數(shù)值進(jìn)行更新操作,得到參數(shù)的更新值,將隨機(jī)存儲(chǔ)器中第四步索引值對(duì)應(yīng)的參數(shù)值設(shè)置為參數(shù)的更新值,令更新索引值等于第四步索引值,將參數(shù)的更新值和更新索引值存入移位寄存器中; Sc)提取步驟7f)存入移位寄存器中的三個(gè)誤差值,利用更新的參數(shù)在三個(gè)誤差值中選擇一個(gè)作為最終誤差值,將最終誤差值存入移位寄存器中; (9)獲得哥倫布編碼參數(shù) 9a)提取出步驟8b)存入移位寄存器的更新參數(shù)中的發(fā)生次數(shù)計(jì)量參數(shù)與前項(xiàng)預(yù)測誤 差參數(shù),將發(fā)生次數(shù)計(jì)量參數(shù)向左移動(dòng),每次向左移動(dòng)一位,一直到移位后的發(fā)生次數(shù)計(jì)量參數(shù)大于前項(xiàng)預(yù)測誤差參數(shù),停止左移操作,將移動(dòng)位數(shù)作為哥倫布編碼參數(shù); 9b)提取步驟8c)存入移位寄存器中的最終誤差值,提取隨機(jī)存儲(chǔ)器中更新索引值對(duì)應(yīng)的偏差參數(shù)和發(fā)生次數(shù)計(jì)量參數(shù),比較偏差參數(shù)與發(fā)生次數(shù)計(jì)量參數(shù)的大小,由其比較結(jié)果及最終誤差值選擇誤差映射值; (10)哥倫布編碼及碼字合成 IOa)將哥倫布編碼參數(shù)值以及誤差映射值送入哥倫布編碼器進(jìn)行哥倫布編碼,獲得不定長碼流,將碼流存入緩存器中; IOb)提取緩存器中的碼流信息,按順序拼接碼流,每當(dāng)碼流拼接滿“64”位時(shí),合成為一個(gè)碼字,將碼字輸出到JPEG_LS編碼器外。
2.根據(jù)權(quán)利要求I所述的JPEG_LS常規(guī)編碼硬件實(shí)現(xiàn)方法,其特征在于,步驟Ib)中所述的鄰近點(diǎn)及其對(duì)應(yīng)位置關(guān)系中的a、b、c、d為a表示處理的上一個(gè)像素點(diǎn),c表示處理的上一個(gè)像素點(diǎn)上方的像素點(diǎn),b表示當(dāng)前處理的像素點(diǎn)上方的像素點(diǎn),d表示處理下一個(gè)處理的像素點(diǎn)上方的像素點(diǎn)。
3.根據(jù)權(quán)利要求I所述的JPEG_LS常規(guī)編碼硬件實(shí)現(xiàn)方法,其特征在于,步驟4a)中所述的索引值提供參數(shù)的索引,取值范圍是0-364的整數(shù)值。
4.根據(jù)權(quán)利要求I所述的JPEG_LS常規(guī)編碼硬件實(shí)現(xiàn)方法,其特征在于,步驟5a)中所述的參數(shù)包括前項(xiàng)預(yù)測誤差參數(shù),偏差參數(shù),誤差修正參數(shù),發(fā)生次數(shù)計(jì)量參數(shù)。
5.根據(jù)權(quán)利要求I所述的JPEG_LS常規(guī)編碼硬件實(shí)現(xiàn)方法,其特征在于,步驟6c)中所述的預(yù)測方法為將當(dāng)前參數(shù)中的預(yù)測誤差修正參數(shù)分別與“2”、“1”“0”,“-1”,“-2”相加,得到五種加和結(jié)果,讀取移位寄存器中的預(yù)測中值,取預(yù)測中值的絕對(duì)值,將預(yù)測中值的絕對(duì)值分別與五種加和結(jié)果相加,得到的五個(gè)值作為預(yù)測修正中值;將預(yù)測修正中值的五個(gè)數(shù)值都限制在下限為“O”、上限為最大值的范圍內(nèi);按照預(yù)測誤差修正參數(shù)的取值規(guī)律,將五個(gè)預(yù)測修正中值映射至九種預(yù)測修正中值,得到九種第一步預(yù)測修正中值。
6.根據(jù)權(quán)利要求I所述的JPEG_LS常規(guī)編碼硬件實(shí)現(xiàn)方法,其特征在于,步驟7d)中所述的第二次預(yù)測方法為提取移位寄存器中的九種第一步預(yù)測修正中值與第三步索引值比較信號(hào),判斷第三步索引值比較信號(hào)是否等于“0”,若等于,則按照預(yù)測誤差修正參數(shù)的取值規(guī)律,從九種預(yù)測修正中值中選擇三種作為第二步預(yù)測修正中值,否則,提取步驟8b)中更新的誤差修正參數(shù),比較當(dāng)前參數(shù)值中誤差修正參數(shù)與更新的誤差修正參數(shù)的大小,按照比較結(jié)果在第一步預(yù)測修正中值中選擇三種作為第二步預(yù)測修正中值。
7.根據(jù)權(quán)利要求I所述的JPEG_LS常規(guī)編碼硬件實(shí)現(xiàn)方法,其特征在于,步驟8b)中所述的隨機(jī)存儲(chǔ)器用于存儲(chǔ)索引值對(duì)應(yīng)的參數(shù)信息,共365個(gè)索引值,每一個(gè)索引值對(duì)應(yīng)的前項(xiàng)預(yù)測誤差參數(shù),偏差參數(shù),誤差修正參數(shù),發(fā)生次數(shù)計(jì)量參數(shù)四個(gè)參數(shù)值。
8.根據(jù)權(quán)利要求I所述的JPEG_LS常規(guī)編碼硬件實(shí)現(xiàn)方法,其特征在于,步驟Sc)中所述的最終誤差值的選擇方法為提取移位寄存器中的第四步索引值比較信號(hào),判斷第四步索引值比較信號(hào)是否等于“O”,若等于,則按照誤差修正參數(shù)的取值規(guī)律,從三個(gè)誤差值中 選擇一個(gè)作為最終誤差值,否則,比較更新的誤差修正參數(shù)與當(dāng)前誤差修正參數(shù)值的大小,由其比較結(jié)果從另兩個(gè)誤差值中選擇一個(gè)作為誤差值。
全文摘要
本發(fā)明公開了一種JPEG_LS常規(guī)編碼硬件實(shí)現(xiàn)方法,主要解決目前JPEG_LS編碼時(shí)參數(shù)更新與誤差值計(jì)算結(jié)構(gòu)復(fù)雜、處理速率緩慢的問題。本發(fā)明采用四級(jí)反饋回路,實(shí)時(shí)更新并反饋參數(shù)更新值,用當(dāng)前像素點(diǎn)的前兩個(gè)點(diǎn)誤差修正參數(shù)值預(yù)測誤差值,利用兩步預(yù)測,簡化了誤差值計(jì)算過程,得到第一步預(yù)測結(jié)果后,對(duì)預(yù)測結(jié)果進(jìn)行后續(xù)運(yùn)算,合理地安排了每一級(jí)的數(shù)據(jù)處理量,能夠在更新的同時(shí)進(jìn)行誤差預(yù)測,最終獲得哥倫布參數(shù)進(jìn)行哥倫布編碼,輸出壓縮碼流。本發(fā)明具有處理速度快,占用資源少,簡單易行的優(yōu)點(diǎn),易于FPGA實(shí)現(xiàn)。
文檔編號(hào)H04N7/26GK102724506SQ201210198818
公開日2012年10月10日 申請(qǐng)日期2012年6月6日 優(yōu)先權(quán)日2012年6月6日
發(fā)明者張毅, 張靜, 李云松, 王柯儼, 王舒瑤, 賈超群, 雷杰, 魏雯 申請(qǐng)人:西安電子科技大學(xué)