本發(fā)明屬于圖像解壓縮
技術(shù)領(lǐng)域:
,更具體地,涉及一種基于可變輸入數(shù)據(jù)流的大動(dòng)態(tài)實(shí)時(shí)解壓縮系統(tǒng)。
背景技術(shù):
:隨著信息技術(shù)的不斷發(fā)展和我國(guó)衛(wèi)星通信在軍事上的迫切需要,衛(wèi)星圖像的星地傳輸技術(shù)成為了一個(gè)需要重點(diǎn)研究的領(lǐng)域。進(jìn)入21世紀(jì),我國(guó)在航空航天領(lǐng)域取得了較大的研究成果,對(duì)地觀測(cè)等空間領(lǐng)域正處于高速發(fā)展時(shí)期。近年來(lái)由于衛(wèi)星傳感器性能的極大提升,使得衛(wèi)星圖像在時(shí)間、空間和光譜分辨率上都得到了很大的提高,空間探測(cè)器所獲取的數(shù)據(jù)量越來(lái)越大,如此龐大的數(shù)據(jù)量在星地間傳輸是有限的信道容量所無(wú)法承載的。這樣有限的信道容量與傳輸大量衛(wèi)星遙感圖像數(shù)據(jù)需求間的矛盾日益突出。衛(wèi)星圖像數(shù)據(jù)壓縮是靜止圖像壓縮中的較難掌握的一門(mén)技術(shù),與普通圖像相比,衛(wèi)星圖像數(shù)據(jù)的相關(guān)性較弱、熵值高、冗余小,并隨地面背景和氣象狀況的不同而發(fā)生巨大的變化,連續(xù)性差,可預(yù)測(cè)性極低,目前國(guó)內(nèi)外主要的壓縮標(biāo)準(zhǔn)是由國(guó)際化標(biāo)準(zhǔn)組織iso和國(guó)際電聯(lián)itu的圖像專(zhuān)家工作組針對(duì)不同的圖像類(lèi)型,制定了一系列的國(guó)際標(biāo)準(zhǔn)。其中包括動(dòng)態(tài)視頻壓縮的h.261、h.263、h.264,二值圖像壓縮的jbig、jbig2,以及連續(xù)色調(diào)靜止圖像壓縮的jpeg、jpeg-ls和jpeg2000等,與jpeg、jpeg2000等流行的圖像壓縮算法相比較,jpeg-ls在無(wú)損壓縮領(lǐng)域具有高保真和低復(fù)雜度等特點(diǎn)。大幅面的衛(wèi)星圖像經(jīng)過(guò)星地?zé)o線(xiàn)信道傳輸至地面端需要在最短的時(shí)間內(nèi)要無(wú)失真的恢復(fù)出探測(cè)器所拍攝到的原圖。這就要求地面接收系統(tǒng)具備很高的實(shí)時(shí)處理能力。其硬件架構(gòu)要能具有強(qiáng)大的計(jì)算能力和良好的并行處理特性,采用通用處理器進(jìn)行軟件解壓難以保證實(shí)時(shí)性。技術(shù)實(shí)現(xiàn)要素:針對(duì)現(xiàn)有技術(shù)的以上缺陷或改進(jìn)需求,本發(fā)明的目的在于提供了一種基于可變輸入數(shù)據(jù)流的大動(dòng)態(tài)實(shí)時(shí)解壓縮系統(tǒng),由此解決現(xiàn)有的采用通用處理器進(jìn)行軟件解壓難以保證實(shí)時(shí)性的技術(shù)問(wèn)題。為實(shí)現(xiàn)上述目的,按照本發(fā)明的一個(gè)方面,提供了一種基于可變輸入數(shù)據(jù)流的大動(dòng)態(tài)實(shí)時(shí)解壓縮系統(tǒng),包括:解幀模塊、rs解碼模塊、2decc解碼模塊、無(wú)糾錯(cuò)解碼模塊、edc檢糾錯(cuò)模塊、數(shù)據(jù)打包分發(fā)模塊、多路并行g(shù)olomb解碼模塊、多路并行殘差預(yù)測(cè)解碼模塊、像素收集模塊以及組幀模塊;所述解幀模塊,用于識(shí)別壓縮碼流中的標(biāo)志識(shí)別碼,提取解碼需要的中間參數(shù)和相機(jī)格式數(shù)據(jù)并緩存,并將壓縮碼流中的幀格式數(shù)據(jù)、相機(jī)格式數(shù)據(jù)以及壓縮碼流數(shù)據(jù)分離,進(jìn)而從幀格式數(shù)據(jù)中提取衛(wèi)星工作狀態(tài)參數(shù),計(jì)算壓縮碼流狀態(tài)信息,確定壓縮碼流的編碼方式;所述rs解碼模塊,用于在所述解幀模塊確定的壓縮碼流的編碼方式為rs編碼時(shí),接收所述解幀模塊輸出的壓縮碼流數(shù)據(jù)和數(shù)據(jù)使能信號(hào),對(duì)該壓縮碼流數(shù)據(jù)進(jìn)行rs檢糾錯(cuò)解碼,將糾錯(cuò)后的壓縮碼流數(shù)據(jù)發(fā)送給所述edc檢糾錯(cuò)模塊;所述2decc解碼模塊,用于在所述解幀模塊確定的壓縮碼流的編碼方式為2decc編碼時(shí),接收所述解幀模塊輸出的壓縮碼流數(shù)據(jù)和數(shù)據(jù)使能信號(hào),對(duì)該壓縮碼流數(shù)據(jù)進(jìn)行逐比特檢錯(cuò)、糾錯(cuò),去除校驗(yàn)位,將糾錯(cuò)后的壓縮碼流數(shù)據(jù)發(fā)送給所述edc檢糾錯(cuò)模塊;所述無(wú)糾錯(cuò)解碼模塊,用于在所述解幀模塊確定的壓縮碼流的編碼方式為無(wú)糾錯(cuò)編碼時(shí),接收所述解幀模塊輸出的壓縮碼流數(shù)據(jù)和數(shù)據(jù)使能信號(hào),并將該壓縮碼流數(shù)據(jù)發(fā)送給所述edc檢糾錯(cuò)模塊;所述edc檢糾錯(cuò)模塊,用于對(duì)接收到的壓縮碼流數(shù)據(jù)進(jìn)行edc塊檢錯(cuò)監(jiān)督信息校驗(yàn)、全圖域碼流按塊的方式隔離、壓縮碼流長(zhǎng)度校驗(yàn)以及提取并保存edc信息;所述數(shù)據(jù)打包分發(fā)模塊,用于利用所述edc檢糾錯(cuò)模塊提取的edc信息分割壓縮碼流得到每個(gè)子塊的碼流數(shù)據(jù),并將各子塊碼流數(shù)據(jù)分別打包分發(fā)至多路并行g(shù)olomb解碼模塊;所述多路并行g(shù)olomb解碼模塊,用于并行計(jì)算各子塊碼流數(shù)據(jù)的映射誤差值merrval;所述多路并行殘差預(yù)測(cè)解碼模塊與所述多路并行g(shù)olomb解碼模塊一一對(duì)應(yīng),用于根據(jù)各子塊碼流數(shù)據(jù)對(duì)應(yīng)的映射誤差值merrval對(duì)各子塊碼流數(shù)據(jù)進(jìn)行殘差預(yù)測(cè)解碼;所述像素收集模塊,用于收集所述多路并行殘差預(yù)測(cè)解碼模塊進(jìn)行預(yù)測(cè)解碼后輸出的還原的數(shù)據(jù)塊;所述組幀模塊,用于將所述像素收集模塊收集的數(shù)據(jù)塊逆壓縮排序組合后與相機(jī)輔助信息拼接組成相機(jī)格式數(shù)據(jù),完成解壓縮操作。優(yōu)選地,所述rs解碼模塊包括:伴隨式獲取模塊,用于計(jì)算m-n個(gè)伴隨式,在初始階段,寄存器被清零,輸入第一個(gè)碼字與零相加后被送入寄存器,再乘以與第二個(gè)輸入的碼字相加,如此循環(huán),直到m個(gè)碼字全部送入寄存器經(jīng)過(guò)計(jì)算后,寄存器內(nèi)的值便是所需要的伴隨多項(xiàng)式,其中,m與n為正整數(shù);第一計(jì)算模塊,用于根據(jù)所述伴隨多項(xiàng)式求出錯(cuò)誤位置多項(xiàng)式和錯(cuò)誤值多項(xiàng)式;第二計(jì)算模塊,用于在所述錯(cuò)誤位置多項(xiàng)式和所述錯(cuò)誤值多項(xiàng)式確定后,通過(guò)求解所述錯(cuò)誤位置多項(xiàng)式的根得到錯(cuò)誤位置,并獲取所述錯(cuò)誤位置上的錯(cuò)誤值;第一誤碼糾正模塊,用于根據(jù)所述錯(cuò)誤位置及所述錯(cuò)誤位置上的錯(cuò)誤值確定錯(cuò)誤多項(xiàng)式,將所述錯(cuò)誤多項(xiàng)式與所述接收多項(xiàng)式相加,即完成誤碼的糾正。優(yōu)選地,所述2decc解碼模塊包括:取數(shù)據(jù)模塊,用于從壓縮碼流中取m比特位進(jìn)行奇偶校驗(yàn),前n比特位組成奇偶校驗(yàn)矩陣,后m-n比特位作為奇偶校驗(yàn)位,其中,m與n為正整數(shù);第一判斷模塊,用于根據(jù)所述奇偶校驗(yàn)位判斷所述奇偶校驗(yàn)矩陣的每行、每列元素之和的奇偶性是否正確;第二誤碼糾正模塊,用于定位錯(cuò)誤比特位置并糾正,若前n比特位信息位出現(xiàn)1比特位錯(cuò)誤,則確定錯(cuò)誤位置并糾正;若后m-n比特位出現(xiàn)1比特位錯(cuò)誤,則判定為校驗(yàn)位出錯(cuò),不對(duì)信息位進(jìn)行糾錯(cuò),將糾錯(cuò)后的奇偶校驗(yàn)矩陣重組為一維碼流,并跳轉(zhuǎn)至所述取數(shù)據(jù)模塊的操作,直至壓縮碼流中剩余比特位數(shù)不足一次解碼為止,并將剩余比特位直接寫(xiě)入2decc解碼后的壓縮碼流中。優(yōu)選地,所述edc檢糾錯(cuò)模塊包括:塊檢錯(cuò)監(jiān)督信息校驗(yàn)?zāi)K,用于根據(jù)edc塊檢錯(cuò)信息與碼流的組幀方式,壓縮過(guò)程中對(duì)每k個(gè)塊的edc信息存放α份,解碼接收α組k個(gè)子塊的edc信息進(jìn)行逐比特校驗(yàn)得到edc信息,其中,k、α為正整數(shù);分離模塊,用于根據(jù)每個(gè)塊的碼流長(zhǎng)度,將每個(gè)塊的碼流信息進(jìn)行分離;第二判斷模塊,用于將k個(gè)塊的碼流長(zhǎng)度,與edc信息每個(gè)塊的碼流長(zhǎng)度的累加和進(jìn)行比較,來(lái)判斷壓縮碼流長(zhǎng)度信息是否正確;存儲(chǔ)模塊,用于將碼流信息和edc信息通過(guò)edc頭標(biāo)志進(jìn)行分離,并分別存儲(chǔ)。優(yōu)選地,所述多路并行g(shù)olomb解碼模塊中的每一路golomb解碼模塊均包括:檢測(cè)模塊、第一檢測(cè)處理模塊及第二檢測(cè)處理模塊;所述檢測(cè)模塊,用于檢測(cè)輸入的壓縮碼流中比特1之前0的個(gè)數(shù),得到val值,即val個(gè)0,然后與最長(zhǎng)比特門(mén)限值lmax比較,其中,lmax=limit-qbpp-1,limit為單個(gè)像素編碼的最長(zhǎng)編碼長(zhǎng)度,qbpp為像素精度;所述第一檢測(cè)處理模塊,用于在val值小于lmax時(shí),讀入1bit后續(xù)的k個(gè)比特,后面的k個(gè)bit記為n,計(jì)算得到merrval的值,即merrval=val*2k+n,其中,k為golomb編碼的中間變量;所述第二檢測(cè)處理模塊,用于在val值不小于lmax時(shí),讀入qbpp個(gè)后續(xù)比特,得到merrval-1的二進(jìn)制表示,求出merrval的值。優(yōu)選地,所述多路并行殘差預(yù)測(cè)解碼模塊中的每一路殘差預(yù)測(cè)解碼模塊均包括:上下文建模模塊、梯度計(jì)算量化模塊、索引值計(jì)算模塊、邊界檢測(cè)預(yù)測(cè)解碼模塊、預(yù)測(cè)校正解碼模塊、參數(shù)更新模塊、誤差逆映射模塊以及像素?cái)?shù)據(jù)還原模塊;所述上下文建模模塊,用于在待解碼像素x處于圖像的第一行時(shí),將該待解碼像素的鄰域位置重建值ra、rb、rc和rd作為圖像的首像素值;在待解碼像素處于圖像的行開(kāi)始或行結(jié)束時(shí),由于ra或rd的值與rb的值一樣,則將rc的值用前一行第一個(gè)像素編碼時(shí)ra的值;所述梯度計(jì)算量化模塊,用于根據(jù)上下文重建值ra、rb、rc和rd,計(jì)算出局部梯度(d1、d2、d3),并對(duì)局部梯度(d1、d2、d3)進(jìn)行量化得到待解碼像素x的上下文矢量q1、q2、q3,以檢測(cè)圖像的平行與垂直邊緣;所述索引值計(jì)算模塊,用于在矢量q1、q2、q3的第一個(gè)非零元素是負(fù)數(shù)時(shí),將該矢量的符號(hào)反轉(zhuǎn),得到-q1、-q2、-q3,并將符號(hào)變量sign設(shè)置為-1,反之,sign設(shè)置為+1,然后由處理后的qi值得到索引值q=81*q1+9*q2+q3,其中q表示待解碼像素x的上下文;所述邊界檢測(cè)預(yù)測(cè)解碼模塊,用于采用中值邊緣檢測(cè)算法,將上下文重建值ra、rb、rc以及rd進(jìn)行數(shù)學(xué)運(yùn)算來(lái)預(yù)測(cè)x的像素值px;所述預(yù)測(cè)校正解碼模塊,用于根據(jù)符號(hào)變量sign以及上下文參數(shù)預(yù)測(cè)修正值c[q]對(duì)預(yù)測(cè)的像素值px進(jìn)行校正得到校正后的預(yù)測(cè)值;所述參數(shù)更新模塊,用于在每個(gè)像素解碼后,將解碼需要的參數(shù)a[q]、b[q]、c[q]及n[q]進(jìn)行更新以用于下一個(gè)像素值的解碼,其中,a[q]表示上下文參數(shù)殘差累計(jì)值,b[q]表示上下文參數(shù)計(jì)算的偏差,n[q]表示每個(gè)上下文的發(fā)生次數(shù);所述誤差逆映射模塊,用于根據(jù)golomb解碼得到映射誤差值merrval,得到預(yù)測(cè)誤差值errval;所述像素?cái)?shù)據(jù)還原模塊,用于利用預(yù)測(cè)誤差值errval對(duì)校正后的預(yù)測(cè)值進(jìn)行數(shù)據(jù)還原得到還原后的像素值pixel=[(errval+px_correct)%(range*(2*near+1))],其中,px_correct表示校正后的預(yù)測(cè)值,range表示預(yù)測(cè)誤差表示的范圍,near表示近無(wú)損編解碼的誤差界限。優(yōu)選地,所述邊界檢測(cè)預(yù)測(cè)解碼模塊,具體用于若圖像在待解碼像素x的左邊有垂直邊緣,則取rb為x的預(yù)測(cè)像素值px;若圖像在待解碼像素x的上面有水平邊緣,則取ra為x的預(yù)測(cè)像素值px;若沒(méi)有檢測(cè)到邊緣,則取ra+rb–rc作為x的預(yù)測(cè)像素值px。優(yōu)選地,所述預(yù)測(cè)校正解碼模塊,具體用于若符號(hào)變量sign等于1,則px’=px+c[q],否則px’=px-c[q];若px’小于0,則校正后的預(yù)測(cè)值為0,若px’大于maxval,則校正后的預(yù)測(cè)值為maxval,否則將預(yù)測(cè)的像素值px作為校正后的預(yù)測(cè)值。優(yōu)選地,所述golomb編碼的中間變量?jī)?yōu)選地,所述參數(shù)更新模塊,具體用于為a[q]、b[q]、c[q]及n[q]四個(gè)參數(shù)分配兩塊相同的ram,由兩塊ram交替地進(jìn)行參數(shù)初始化和更新操作,當(dāng)ram1進(jìn)入當(dāng)前像素的解碼更新操作的同時(shí)對(duì)ram2進(jìn)行參數(shù)初始化,以確保在當(dāng)前像素的解碼完成后,下一個(gè)像素能夠使用ram2進(jìn)行更新操作而不受時(shí)序的限制??傮w而言,本發(fā)明方法與現(xiàn)有技術(shù)方案相比,能夠取得下列有益效果:(1)采用通用處理器進(jìn)行軟件解壓滿(mǎn)足不了多模態(tài)高保真壓縮算法解壓縮的實(shí)時(shí)性,針對(duì)多模態(tài)高保真壓縮算法,本發(fā)明實(shí)現(xiàn)了對(duì)應(yīng)的解壓縮算法的fpga并行實(shí)現(xiàn),實(shí)現(xiàn)了可變的輸入數(shù)據(jù)流和大動(dòng)態(tài)壓縮比變化的實(shí)時(shí)解壓縮。(2)檢糾錯(cuò)后壓縮碼流誤碼防擴(kuò)散的fpga實(shí)現(xiàn),當(dāng)rs解碼或者2decc解碼后,如果一個(gè)塊的碼流有誤碼,就會(huì)導(dǎo)致誤碼擴(kuò)散,導(dǎo)致后面的碼流塊解碼錯(cuò)誤,本發(fā)明針對(duì)碼流幀格式,通過(guò)碼流長(zhǎng)度信息,將誤碼擴(kuò)散抑制在一個(gè)塊內(nèi)。使得后面正確塊不會(huì)受到影響。(3)幀格式檢測(cè)與解碼工作狀態(tài)監(jiān)測(cè),為實(shí)現(xiàn)對(duì)硬件系統(tǒng)中錯(cuò)誤情況的智能監(jiān)測(cè)與智能判斷,在系統(tǒng)工作過(guò)程中,對(duì)碼流幀格式進(jìn)行檢測(cè),有助于我們判斷解壓縮設(shè)備收到的壓縮碼流幀格式的正確性,同時(shí)在硬件解碼過(guò)程中設(shè)置多處解碼工作狀態(tài)監(jiān)測(cè)參數(shù),可以實(shí)時(shí)幫助我們判斷解碼的狀態(tài)。提升了系統(tǒng)的穩(wěn)健性。(4)解壓系統(tǒng)要求掃描圖像解壓縮數(shù)據(jù)5s輸出一幀,解壓系統(tǒng)要求的時(shí)延為100ms,采用intel(r)core(tm)i7-4790cpu處理器進(jìn)行軟件解壓縮時(shí)延大于40s,并且大于解壓縮輸出的幀周期5s。通過(guò)將解壓縮算法fpga并行實(shí)現(xiàn),使得時(shí)延小于100ms,滿(mǎn)足了要求。時(shí)延:第一碼流進(jìn)入解壓系統(tǒng)到第一個(gè)圖像像素被還原輸出或者最后一個(gè)碼流進(jìn)入解壓系統(tǒng)到最后一個(gè)圖像像素被還原。附圖說(shuō)明圖1為本發(fā)明實(shí)施例公開(kāi)的一種基于可變輸入數(shù)據(jù)流的大動(dòng)態(tài)實(shí)時(shí)解壓縮系統(tǒng)的結(jié)構(gòu)示意圖;圖2為本發(fā)明實(shí)施例公開(kāi)的一種壓縮碼流的解幀,7個(gè)同步頭標(biāo)志位抗誤碼模塊數(shù)據(jù)流示意圖;圖3為本發(fā)明實(shí)施例公開(kāi)的一種壓縮碼流的解幀信號(hào)流程示意圖;圖4為本發(fā)明實(shí)施例公開(kāi)的一種檢糾錯(cuò)解碼模塊的工作流程示意圖;圖5為本發(fā)明實(shí)施例公開(kāi)的一種2decc檢糾錯(cuò)實(shí)現(xiàn)方案框圖;圖6為本發(fā)明實(shí)施例公開(kāi)的一種rs檢糾錯(cuò)流程圖;圖7為本發(fā)明實(shí)施例公開(kāi)的一種edc塊檢錯(cuò)解碼流程示意圖;圖8為本發(fā)明實(shí)施例公開(kāi)的一種golomb解碼的數(shù)據(jù)流程圖;圖9為本發(fā)明實(shí)施例公開(kāi)的一種上下文示意圖;圖10為本發(fā)明實(shí)施例公開(kāi)的一種梯度量化邏輯圖;圖11為本發(fā)明實(shí)施例公開(kāi)的一種參數(shù)更新和初始化的控制以及信號(hào)流程圖;圖12為本發(fā)明實(shí)施例公開(kāi)的一種相機(jī)組幀的壓縮排序與逆壓縮排序方式;圖13為本發(fā)明實(shí)施例公開(kāi)的一種相機(jī)組幀部分,如何將分塊數(shù)據(jù)還原時(shí)對(duì)存儲(chǔ)區(qū)的地址操作示意圖。具體實(shí)施方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì)本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。此外,下面所描述的本發(fā)明各個(gè)實(shí)施方式中所涉及到的技術(shù)特征只要彼此之間未構(gòu)成沖突就可以相互組合。如圖1所示為本發(fā)明實(shí)施例公開(kāi)的一種基于可變輸入數(shù)據(jù)流的大動(dòng)態(tài)實(shí)時(shí)解壓縮系統(tǒng)的結(jié)構(gòu)示意圖,在圖1所示的系統(tǒng)中包括:解幀模塊、rs解碼模塊、2decc解碼模塊、無(wú)糾錯(cuò)解碼模塊、edc檢糾錯(cuò)模塊、數(shù)據(jù)打包分發(fā)模塊、多路并行g(shù)olomb解碼模塊、多路并行殘差預(yù)測(cè)解碼模塊、像素收集模塊以及組幀模塊;上述解幀模塊,用于識(shí)別壓縮碼流中的標(biāo)志識(shí)別碼,提取解碼需要的中間參數(shù)和相機(jī)格式數(shù)據(jù)并緩存,并將壓縮碼流中的幀格式數(shù)據(jù)、相機(jī)格式數(shù)據(jù)以及壓縮碼流數(shù)據(jù)分離,進(jìn)而從幀格式數(shù)據(jù)中提取衛(wèi)星工作狀態(tài)參數(shù),計(jì)算壓縮碼流狀態(tài)信息,確定壓縮碼流的編碼方式;其中,如圖3所示為本發(fā)明實(shí)施例公開(kāi)的一種壓縮碼流的解幀信號(hào)流程示意圖,壓縮碼流的解幀主要完成三個(gè)任務(wù):第一,正確識(shí)別壓縮碼流中的標(biāo)志識(shí)別碼,如圖2所示將幀同包含的7個(gè)同步頭中帶的參數(shù)進(jìn)行7選4的表決,將解碼需要的中間參數(shù)主要包括壓縮碼流的分塊大小、near值、碼流的編碼方式和相機(jī)格式數(shù)據(jù)提取并緩存;第二,將碼流幀格式數(shù)據(jù)、相機(jī)格式數(shù)據(jù)和壓縮碼流數(shù)據(jù)分離,壓縮碼流數(shù)據(jù)用于解碼,相機(jī)格式數(shù)據(jù)用于解碼后數(shù)據(jù)組幀;第三,從碼流幀格式數(shù)據(jù)中提取分塊大小、near值和編碼方式等衛(wèi)星工作狀態(tài)參數(shù),測(cè)量計(jì)算壓縮碼流狀態(tài)信息,實(shí)時(shí)檢測(cè),提取解碼需要的中間分塊大小、near值、碼流的編碼方式參數(shù)進(jìn)行解析,例如:分塊大小為32(行)*8(列)、near表示壓縮的微損度,0表示無(wú)損,1、2、3表示不同程度的微損。上述rs解碼模塊,用于在所述解幀模塊確定的壓縮碼流的編碼方式為rs編碼時(shí),接收所述解幀模塊輸出的壓縮碼流數(shù)據(jù)和數(shù)據(jù)使能信號(hào),對(duì)該壓縮碼流數(shù)據(jù)進(jìn)行rs檢糾錯(cuò)解碼,將糾錯(cuò)后的壓縮碼流數(shù)據(jù)發(fā)送給所述edc檢糾錯(cuò)模塊;如圖4所示為本發(fā)明實(shí)施例公開(kāi)的一種檢糾錯(cuò)解碼模塊的工作流程示意圖,rs解碼模塊能對(duì)223bytes壓縮碼流糾正隨機(jī)16bytes的錯(cuò)誤,具體實(shí)施操作如圖6所示:(1)rs譯碼的第一步就是計(jì)算m-n個(gè)伴隨式,在初始階段,寄存器被清零,輸入第一個(gè)碼字在與零相加后被送入寄存器,再乘以與第二個(gè)輸入的碼字相加,如此循環(huán),直到m個(gè)碼字全部進(jìn)去寄存器經(jīng)過(guò)計(jì)算后,寄存器內(nèi)的值便是所需要的伴隨式;優(yōu)選地,m取值為255,n取值為223。(2)根據(jù)伴隨多項(xiàng)式求出錯(cuò)誤位置多項(xiàng)式和錯(cuò)誤值多項(xiàng)式;(3)錯(cuò)誤位置多項(xiàng)式和錯(cuò)誤值多項(xiàng)式確定后,錯(cuò)誤位置可以通過(guò)錢(qián)搜索算法求解錯(cuò)誤位置多項(xiàng)式的根求得,利用福尼算法可以求得錯(cuò)誤位置上的錯(cuò)誤值;(4)當(dāng)確定錯(cuò)誤位置及具體的錯(cuò)誤值后,也就確定了錯(cuò)誤多項(xiàng)式,將得到的錯(cuò)誤多項(xiàng)式與接收多項(xiàng)式相加,即完成誤碼的糾正。上述2decc解碼模塊,用于在所述解幀模塊確定的壓縮碼流的編碼方式為2decc編碼時(shí),接收所述解幀模塊輸出的壓縮碼流數(shù)據(jù)和數(shù)據(jù)使能信號(hào),對(duì)該壓縮碼流數(shù)據(jù)進(jìn)行逐比特檢錯(cuò)、糾錯(cuò),去除校驗(yàn)位,將糾錯(cuò)后的壓縮碼流數(shù)據(jù)發(fā)送給所述edc檢糾錯(cuò)模塊;在圖4中還包括2decc解碼流程,2decc解碼模塊首先接收解幀模塊輸出的碼流數(shù)據(jù)和數(shù)據(jù)使能信號(hào),根據(jù)每256bit數(shù)據(jù)塊緊隨的32bit校驗(yàn)位,對(duì)該碼流進(jìn)行逐比特檢錯(cuò)、糾錯(cuò),然后去除32bit校驗(yàn)位,將糾錯(cuò)后的碼流數(shù)據(jù)發(fā)送給edc解碼處理模塊。2d-ecc解碼模塊能對(duì)壓縮碼流中單比特錯(cuò)誤進(jìn)行糾正,具體實(shí)施過(guò)程如圖5所示:(1)每次從碼流中取mbit進(jìn)行奇偶校驗(yàn),前nbit組成奇偶校驗(yàn)矩陣,后(m-n)bit作為奇偶校驗(yàn)位;優(yōu)選地,m取值為288,n取值為256。(2)據(jù)奇偶校驗(yàn)位判斷奇偶校驗(yàn)矩陣的每行、每列元素之和的奇偶性是否正確;(3)定位錯(cuò)誤比特位置并糾正,若前nbit信息位出現(xiàn)1bit錯(cuò)誤,則必然在行、列校驗(yàn)中各出現(xiàn)一次錯(cuò)誤,此時(shí)可確定錯(cuò)誤位置并糾正;若后(m-n)bit信息位出現(xiàn)1bit錯(cuò)誤,則行、列校驗(yàn)中會(huì)因?yàn)樾r?yàn)位錯(cuò)誤而誤檢某一行或某一列出錯(cuò),但是行校驗(yàn)錯(cuò)誤和列校驗(yàn)錯(cuò)誤不會(huì)成對(duì)出現(xiàn),此時(shí)即可判定為校驗(yàn)位出錯(cuò),不對(duì)信息位進(jìn)行糾錯(cuò),將糾錯(cuò)后二維矩陣重組為一維碼流;(4)重復(fù)上述步驟直至碼流中剩余比特位數(shù)不足一次解碼為止,將剩余比特位直接寫(xiě)入解碼后碼流。上述無(wú)糾錯(cuò)解碼模塊,用于在所述解幀模塊確定的壓縮碼流的編碼方式為無(wú)糾錯(cuò)編碼時(shí),接收所述解幀模塊輸出的壓縮碼流數(shù)據(jù)和數(shù)據(jù)使能信號(hào),并將該壓縮碼流數(shù)據(jù)發(fā)送給所述edc檢糾錯(cuò)模塊;上述edc檢糾錯(cuò)模塊,用于對(duì)接收到的壓縮碼流數(shù)據(jù)進(jìn)行edc塊檢錯(cuò)監(jiān)督信息校驗(yàn)、全圖域碼流按塊的方式隔離、壓縮碼流長(zhǎng)度校驗(yàn)以及提取并保存edc信息;其中,edc檢糾錯(cuò)模塊的具體實(shí)施過(guò)程如圖7所示:(1)edc塊檢錯(cuò)監(jiān)督信息校驗(yàn):根據(jù)edc塊檢錯(cuò)信息與碼流的組幀方式,壓縮過(guò)程中對(duì)每k個(gè)塊的edc信息存放α份,解碼接收α組k個(gè)子塊的edc信息進(jìn)行逐比特校驗(yàn)得到edc信息。從而大概率避免了edc信息在傳輸過(guò)程中出現(xiàn)的誤碼,增加了解碼的穩(wěn)定性;優(yōu)選地,k取值為17,α取值為3。(2)根據(jù)每個(gè)塊的碼流長(zhǎng)度,將每個(gè)塊的碼流信息進(jìn)行分離;(3)將k個(gè)塊的碼流長(zhǎng)度,與edc信息每個(gè)塊的碼流長(zhǎng)度的累加和進(jìn)行比較,來(lái)判斷壓縮碼流長(zhǎng)度信息是否正確。以此來(lái)保證k塊的碼流是獨(dú)立的,不會(huì)因?yàn)槟骋粋€(gè)k塊的碼流長(zhǎng)度錯(cuò)誤而影響下一個(gè)k塊;(4)將碼流和edc信息通過(guò)edc頭標(biāo)志進(jìn)行分離,并分別存儲(chǔ)。檢糾錯(cuò)后壓縮碼流誤碼防擴(kuò)散的fpga實(shí)現(xiàn),當(dāng)rs解碼或者2decc解碼后,如果一個(gè)塊的碼流有誤碼,就會(huì)導(dǎo)致誤碼擴(kuò)散,導(dǎo)致后面的碼流塊解碼粗,本發(fā)明針對(duì)碼流幀格式,通過(guò)碼流長(zhǎng)度信息,就誤碼擴(kuò)散抑制在一個(gè)塊內(nèi)。后面正確塊不會(huì)受到影響。下面針對(duì)錯(cuò)誤模式分析:(1)edc信息異常處理星上壓縮單元在壓縮圖像時(shí)添加edc信息以進(jìn)行塊檢糾錯(cuò),edc信息中包含壓縮碼流每個(gè)分塊的比特?cái)?shù)與首像素信息,首像素信息中包含分塊的分區(qū)微損值。碼流分塊的比特?cái)?shù)用于golomb解碼時(shí)塊檢錯(cuò)校驗(yàn),首像素信息用于分塊預(yù)測(cè)解碼,分區(qū)微損值用于微損解碼時(shí)解碼處理環(huán)節(jié)。因此,edc信息對(duì)于碼流解壓縮是非常重要的。但在數(shù)據(jù)傳輸過(guò)程中由于通道環(huán)境的復(fù)雜性,可能導(dǎo)致數(shù)據(jù)部分丟失,如果丟失的數(shù)據(jù)中包含edc信息,會(huì)對(duì)之后的解碼環(huán)節(jié)造成嚴(yán)重影響。為增強(qiáng)解壓縮設(shè)備工作的穩(wěn)定性,需要考慮edc信息丟失后的錯(cuò)誤恢復(fù)機(jī)制,在錯(cuò)誤程度可允許的范圍內(nèi),能夠恢復(fù)碼流的正常解碼狀態(tài)并正確解碼。但往往數(shù)據(jù)丟失后的恢復(fù)都比較困難,對(duì)于edc信息丟失后,要不影響解碼正確性的恢復(fù)解壓縮設(shè)備的工作狀態(tài)有以下兩個(gè)難點(diǎn):(a)每個(gè)edc信息后都有其對(duì)應(yīng)的壓縮碼流數(shù)據(jù),如果edc信息丟失,后面對(duì)應(yīng)的壓縮碼流不能正常的解碼,而且可能會(huì)影響到后面正確數(shù)據(jù)的解碼工作。(b)由于edc信息的組成形式為一個(gè)edc頭與三個(gè)組的edc信息組合,在edc模塊中解析edc信息時(shí)再進(jìn)行三選二的edc信息校驗(yàn)得到每組的edc信息,如果edc信息丟失,在進(jìn)行edc信息“三選二”校驗(yàn)時(shí)會(huì)導(dǎo)致edc信息錯(cuò)位,從而影響其他正確edc信息的校驗(yàn),導(dǎo)致整幀碼流解碼錯(cuò)誤。針對(duì)于壓縮碼流格式的固有特點(diǎn),對(duì)實(shí)現(xiàn)edc信息丟失后能恢復(fù)正常解碼功能的難點(diǎn)進(jìn)行可行性分析,提出實(shí)現(xiàn)方案。edc信息在丟失前的組成形式如下所示。根據(jù)edc信息組成格式特點(diǎn),將edc信息丟失分為兩種情況:第一種情況,edc信息僅僅丟失一個(gè),以丟失第四個(gè)edc信息為例。第二種情況,edc信息丟失兩個(gè)或兩個(gè)以上,并且edc信息連續(xù)丟失。以丟失第四個(gè)edc信息與第五個(gè)edc信息為例。分析edc信息的兩種丟失情況與edc塊檢糾錯(cuò)模塊中edc“三選二”的校驗(yàn)方式,提出一個(gè)通用的edc信息丟失后恢復(fù)的方案并得以實(shí)現(xiàn)。以第二種丟失情況為例,當(dāng)連續(xù)丟失一個(gè)或多個(gè)edc信息時(shí),此時(shí)無(wú)法完成edc信息的“三選二”校驗(yàn),按照“三選二”的方式進(jìn)行校驗(yàn),僅僅可以完成第一組edc信息的校驗(yàn),在開(kāi)始第二組以及之后的edc信息校驗(yàn)時(shí),所有的edc信息校驗(yàn)都會(huì)錯(cuò)位而導(dǎo)致無(wú)法正確校驗(yàn)出相應(yīng)的edc信息。因此,一旦檢測(cè)到edc信息丟失,則暫時(shí)停止edc信息的校驗(yàn)工作,而是將丟失前的一個(gè)edc信息塊進(jìn)行保存。當(dāng)丟失了第四組和第五組edc信息,需要將第三組中的所有edc信息(edc信息_1、edc信息_2、edc信息_3)保存在寄存器中,因?yàn)榇藭r(shí)已經(jīng)停止了edc信息的校驗(yàn),將第三組edc信息中包含的edc信息_2和edc信息_3分別在找到第6個(gè)edc頭和第7個(gè)edc頭時(shí)賦值給對(duì)應(yīng)的第二個(gè)edc信息和第三個(gè)edc信息而不經(jīng)過(guò)“三選二”校驗(yàn),在找到第8個(gè)edc頭標(biāo)志時(shí),恢復(fù)edc信息的“三選二”檢驗(yàn)功能,此時(shí)正好可以完成第6組edc信息的校驗(yàn),之后的edc校驗(yàn)工作正常進(jìn)行。根據(jù)如上方案即可完成edc信息丟失后的恢復(fù)。上述數(shù)據(jù)打包分發(fā)模塊,用于利用所述edc檢糾錯(cuò)模塊提取的edc信息分割壓縮碼流得到每個(gè)子塊的碼流數(shù)據(jù),并將各子塊碼流數(shù)據(jù)分別打包分發(fā)至多路并行g(shù)olomb解碼模塊;上述多路并行g(shù)olomb解碼模塊,用于并行計(jì)算各子塊碼流數(shù)據(jù)的映射誤差值merrval;如圖8所示為本發(fā)明實(shí)施例公開(kāi)的一種golomb解碼的數(shù)據(jù)流程圖,具體的解碼過(guò)程如下:對(duì)于輸入的壓縮碼流,golomb解碼模塊先檢測(cè)比特1之前0的個(gè)數(shù),得到val值,即val個(gè)0,然后與最長(zhǎng)比特門(mén)限值lmax(lmax=limit-qbpp-1)比較,其中l(wèi)imit為單個(gè)像素編碼的最長(zhǎng)編碼長(zhǎng)度,qbpp為像素精度,k為golomb編碼的中間變量,比較的結(jié)果分兩種情況討論:情況一:如果val的值小于lmax,則讀入1bit1后續(xù)的k個(gè)比特,后面的k個(gè)bit記為n,計(jì)算得到merrval的值,其中公式為merrval=val*2k+n;情況二:如果val的值不小于(等于)lmax,則需讀入qbpp個(gè)后續(xù)比特,得到merrval-1的二進(jìn)制表示,求出merrval的值。val的最大值為31,直接去計(jì)算val的值,判斷一個(gè)31位數(shù),組合邏輯延時(shí)會(huì)非常大,考慮到硬件的實(shí)現(xiàn),改進(jìn)了val的計(jì)算,每次去判斷4bit,通過(guò)8個(gè)周期完成val的計(jì)算。golomb解碼異常數(shù)據(jù)處理:當(dāng)一個(gè)塊的解碼實(shí)際使用的比特?cái)?shù)小于塊的碼流長(zhǎng)度信息,將多余的碼流讀出丟棄,當(dāng)一個(gè)塊的解碼實(shí)際使用的比特?cái)?shù)大于塊的碼流長(zhǎng)度信息,對(duì)merrval的計(jì)算個(gè)數(shù)補(bǔ)足一個(gè)塊的個(gè)數(shù)。(塊指的是壓縮參數(shù)中的分塊大小。例如:32(行)*8(列).上述多路并行殘差預(yù)測(cè)解碼模塊與所述多路并行g(shù)olomb解碼模塊一一對(duì)應(yīng),用于根據(jù)各子塊碼流數(shù)據(jù)對(duì)應(yīng)的映射誤差值merrval對(duì)各子塊碼流數(shù)據(jù)進(jìn)行殘差預(yù)測(cè)解碼;在圖8中還包括殘差預(yù)測(cè)解碼模塊的操作流程,主要包括以下操作:(1)上下文建模:當(dāng)解碼的像素處于圖像的第一行時(shí),a、b、c和d為當(dāng)前像素的鄰域位置(如圖9所示),因?yàn)閍、b、c和d位置的值不存在,ra、rb、rc和rd為鄰域位置重建值,ra、rb、rc和rd值定義為分塊的首像素值。當(dāng)解碼的像素處于行開(kāi)始或行結(jié)束時(shí),此時(shí)ra或rd的值與rb的值一樣,rc的值用前一行第一個(gè)像素編碼時(shí)ra的值。(2)梯度計(jì)算:為檢測(cè)圖像的平行與垂直邊緣,需要進(jìn)行梯度的計(jì)算與量化。根據(jù)上下文重建值ra、rb、rc和rd,可以計(jì)算出局部梯度(d1、d2、d3)。將輸入進(jìn)來(lái)的ra、rb、rc和rd值按照固定的算法公式進(jìn)行計(jì)算即可求出梯度值,算法公式在fpga邏輯中的實(shí)現(xiàn)如下方所示:d1=rd–rb;d2=rb-rc;d3=rc–ra;(3)梯度量化:上下文的決定過(guò)程接下來(lái)要對(duì)d1、d2和d3進(jìn)行量化。為此使用三個(gè)非負(fù)的閾值t1、t2和t3。根據(jù)di(d1、d2、d3)與閾值的關(guān)系,將得到一個(gè)區(qū)域號(hào)qi,對(duì)應(yīng)于q1、q2、q3。由此可以構(gòu)成當(dāng)前采樣x的上下文矢量qi。因?yàn)槊總€(gè)梯度有9個(gè)量化區(qū)域,q1、q2、q3分別被從-4到4的9個(gè)可能的數(shù)中分配一個(gè)。最優(yōu)門(mén)限的設(shè)置如下表1所示,其中p代表圖像數(shù)據(jù)的精度值即像素比特位的數(shù)目。表1pt1t2t3p<=83721p>81867276具體量化算法描述如下所示。if(di<=-t3)qi=-4;elseif(di<=-t2)qi=-3;elseif(di<=-t1)qi=-2;elseif(di<=-near)qi=-1;elseif(di<=-near)qi=0;elseif(di<=-t1)qi=1;elseif(di<=-t2)qi=2;elseif(di<=-t3)qi=3;elseqi=4;局部梯度值的量化在硬件實(shí)現(xiàn)上應(yīng)該是并行結(jié)構(gòu)實(shí)現(xiàn)的,如圖10所示。如果僅僅使用if-else語(yǔ)句實(shí)現(xiàn),將會(huì)使用8級(jí)嵌套,大量增加組合邏輯延時(shí),降低系統(tǒng)運(yùn)行效率。為減少組合邏輯延時(shí),采用并行結(jié)構(gòu)設(shè)計(jì),定義了一個(gè)8位的寄存器zi,把梯度值di與門(mén)限值t1、t2和t3并行地比較,比較結(jié)果(0或1)存入寄存器zi的對(duì)應(yīng)位中,再由case語(yǔ)句判斷zi的值得到qi的值。索引值計(jì)算:如果矢量q1、q2、q3的第一個(gè)非零元素是負(fù)數(shù),那么需要將該矢量的符號(hào)反轉(zhuǎn),得到-q1、-q2、-q3。此時(shí),符號(hào)變量sign設(shè)置為-1,反之,sign設(shè)置為+1。之后對(duì)處理后的qi值進(jìn)行線(xiàn)性運(yùn)算q=81*q1+9*q2+q3,將上下文矢量映射到[0:364]范圍內(nèi),得到索引值q,它表示采樣x的上下文。(4)邊界檢測(cè)預(yù)測(cè)解碼:采用中值邊緣檢測(cè)算法,將上下文重建值ra、rb、rc進(jìn)行數(shù)學(xué)運(yùn)算來(lái)預(yù)測(cè)像素值px。邊界檢測(cè)預(yù)測(cè)解碼的算法為:其中,如果分塊圖像在當(dāng)前像素x的左邊有垂直邊緣,則取rb為x的預(yù)測(cè)值;如果分塊圖像正好在x的上面有水平邊緣,則取ra為x的預(yù)測(cè)值;如果沒(méi)有檢測(cè)到邊緣,則取ra+rb–rc作為預(yù)測(cè)值px。(5)預(yù)測(cè)校正解碼:計(jì)算出預(yù)測(cè)值px后,預(yù)測(cè)值必須進(jìn)行校正,這一過(guò)程需依賴(lài)于符號(hào)變量sign,即在上下文決定過(guò)程中檢測(cè)出的正負(fù)號(hào)。px的新值必須鉗位到范圍[0...maxval]內(nèi),預(yù)測(cè)校正時(shí)的上下文參數(shù)c[q]由參數(shù)存儲(chǔ)a、b、c、n塊ram得到。q為索引值。預(yù)測(cè)校正解碼模塊采用組合邏輯實(shí)現(xiàn),在fpga邏輯實(shí)現(xiàn)時(shí),設(shè)置一個(gè)中間態(tài)px_temp,先用sign、c[q]求出中間態(tài)px_temp的值,后將px_temp與maxval、0比較,最終得到校正后預(yù)測(cè)值px_correct。預(yù)測(cè)校正解碼的算法步驟如下所示:if(sign==1)px=px+c[q];elsepx=px-c[q];if(px<0)px=0;elseif(px>maxval)px=maxval;elsepx=px;(6)圖11為本發(fā)明實(shí)施例公開(kāi)的一種參數(shù)更新和初始化的控制以及信號(hào)流程圖:由于預(yù)測(cè)校正解碼解碼過(guò)程中需要用到a、b、c、n四個(gè)參數(shù)的輔助計(jì)算,因此這些參數(shù)的正確性與實(shí)時(shí)性是至關(guān)重要的。在每個(gè)像素x解碼的最后一步都需要將參數(shù)進(jìn)行更新以用于下一個(gè)像素值的解碼。上下文參數(shù)a、b、c和n是從0到364索引的數(shù)組,這些參數(shù)可以被認(rèn)為圖像解壓時(shí)各種不同的上下文環(huán)境的記錄。各參數(shù)的意義:a[0:364]:365個(gè)計(jì)數(shù)器,用來(lái)存儲(chǔ)累積的預(yù)測(cè)誤差數(shù)值;b[0:364]:365個(gè)計(jì)數(shù)器,用來(lái)存儲(chǔ)計(jì)算的偏差;c[0:364]:365個(gè)計(jì)數(shù)器,用來(lái)存儲(chǔ)預(yù)測(cè)修正值;n[0:364]:365個(gè)計(jì)數(shù)器,用來(lái)存儲(chǔ)每個(gè)上下文的發(fā)生次數(shù)。在loco-i算法思想中,根據(jù)當(dāng)前像素的上下文索引值q獲得對(duì)應(yīng)的上下文參數(shù)用于圖像的解壓縮處理,這些是算法能自適應(yīng)的關(guān)鍵所在。在對(duì)每一個(gè)像素解碼完畢后,對(duì)其對(duì)應(yīng)的上下文都要進(jìn)行參數(shù)更新,以保證當(dāng)不同像素對(duì)應(yīng)相同的上下文時(shí)編碼的正確性和高效性。上下文參數(shù)的更新也是算法的精髓之一。參數(shù)的初始化:在當(dāng)前分塊做完進(jìn)入下一分塊的解碼時(shí)需清除當(dāng)前塊對(duì)參數(shù)ram的更新操作,使其回歸初始值,即需要對(duì)參數(shù)ram使用各參數(shù)的初始值進(jìn)行初始化。在fpga中開(kāi)辟ram存儲(chǔ)資源,對(duì)上下文參數(shù)(a、b、c、n)分別進(jìn)行初始化。由于a、b、c、n四個(gè)參數(shù)均為長(zhǎng)度為365的數(shù)組,要完成初始化,需對(duì)365個(gè)ram地址寫(xiě)入初始值。a、b、c、n四個(gè)參數(shù)的初始值分別為16、0、0、1。如果在當(dāng)前分塊的解碼處理完之后再進(jìn)行參數(shù)初始化操作,在時(shí)序上是非??膳碌?,因?yàn)樾枰獙?duì)a、b、c和n四個(gè)參數(shù)的365個(gè)ram地址寫(xiě)入初始值,不僅打斷了流水線(xiàn)的操作而且對(duì)整個(gè)解碼效率和數(shù)據(jù)吞吐率有很大的影響。為此我們沿用星上壓縮編碼在上下文參數(shù)ram控制部分的乒乓操作。a、b、c、n四個(gè)參數(shù)各有兩塊相同的ram,在初始化模塊的控制下,兩塊ram交替地進(jìn)行參數(shù)初始化和更新操作,即當(dāng)ram1進(jìn)入當(dāng)前解碼分塊的更新操作的同時(shí)對(duì)ram2進(jìn)行參數(shù)初始化,這樣就可以確保在當(dāng)前塊解碼完畢后,下一個(gè)分塊可以使用ram2進(jìn)行更新操作而不受時(shí)序的限制。n參數(shù)更新:n參數(shù)是用來(lái)存儲(chǔ)每個(gè)上下文的發(fā)生次數(shù)的參數(shù),在每次參數(shù)更新過(guò)程中,n參數(shù)需要進(jìn)行次數(shù)上的累加,并當(dāng)n[q]等于reset值(默認(rèn)為64)時(shí),參數(shù)值被減半。n參數(shù)更新算法步驟如下:if(n[q]==reset)n[q]=n[q]>>1;flag_n=1;elsen[q]=n[q]+1;abc參數(shù)更新:a和b的更新相當(dāng)于統(tǒng)計(jì)誤差值errval的計(jì)算,當(dāng)flag_n信號(hào)拉高時(shí),a和b同時(shí)被減半。對(duì)正常更新過(guò)的b和c做大小判斷,如果b和c的大小超出了相應(yīng)的范圍區(qū)間,則需要將參數(shù)進(jìn)行修正鉗位到對(duì)應(yīng)區(qū)間內(nèi)。對(duì)這些參數(shù)更新的具體方法如下:更新a[q]a[q]+|errval|,b[q]b[q]+errval;;ifflag_n=1則a[q],b[q]若b[q]<=-n[q]更新b[q]max{b[q]+n[q],1-n[q]}ifc[q]>cmin(默認(rèn)值為-128)更新c[q]c[q]-1(偏差減1)若b[q]>0更新b[q]min{b[q]-n[q],0}ifc[q]<cmax(默認(rèn)值為127)更新c[q]c[q]+1(偏差加1)由于參數(shù)更新的過(guò)程需要三個(gè)步驟完成,即a、b、c和n的正常更新過(guò)程、n達(dá)到閾值時(shí)的減半過(guò)程、bc值修正至相應(yīng)區(qū)間過(guò)程。因此在邏輯實(shí)現(xiàn)過(guò)程中采用全組合邏輯節(jié)省系統(tǒng)運(yùn)行時(shí)間,并采用三級(jí)中間態(tài)(temp1、temp2、temp3)分別完成參數(shù)更新過(guò)程中的三個(gè)步驟。(7)k值計(jì)算:golomb解碼過(guò)程中需要使用k值進(jìn)行計(jì)算誤差逆映射值merrval,而golomb解碼變量k值的計(jì)算需要使用上下文參數(shù)殘差累計(jì)值a[q]和上下文發(fā)生次數(shù)n[q],變量k的計(jì)算和上下文有關(guān)。k值計(jì)算模塊的輸入為上下文參數(shù)a[q]和n[q],輸出為golomb解碼變量k,k值計(jì)算公式如下所示。由于fpga中不能直接做對(duì)數(shù)運(yùn)算,故而轉(zhuǎn)換思想,采用簡(jiǎn)單的移位再比較的方法代替對(duì)數(shù)運(yùn)算,可以用以下的代碼來(lái)表征其計(jì)算過(guò)程:for(k=0;(n[q]<<k)<a[q];k++);fpga中邏輯做如下處理:當(dāng)a<=n時(shí),k=0;當(dāng)n<a<=2n,k=1;當(dāng)2n<a<=4n,k=2;當(dāng)4n<a<=8n,k=3;當(dāng)8n<a<=16n,k=4;當(dāng)16n<a<=32n,k=5;當(dāng)32n<a<=64n,k=6;當(dāng)64n<a<=128n,k=7;當(dāng)128n<a<=256n,k=8;當(dāng)256n<a<=512n,k=9。(8)誤差逆映射:golomb解碼得到映射誤差值merrval,需要經(jīng)過(guò)預(yù)測(cè)誤差的逆映射,得到預(yù)測(cè)誤差值errval,而errval值的計(jì)算需要利用merrval值,計(jì)算的過(guò)程中需要用到上下文參數(shù)存儲(chǔ)計(jì)算的偏差b[q]、上下文的發(fā)生次數(shù)n[q]和k值。根據(jù)給定的映射誤差值merrval,作出誤差逆映射,得到預(yù)測(cè)誤差值errval,詳細(xì)的計(jì)算步驟如下代碼所示。if((k==0)&&(2*b[q]<=-n[q])){if(merrval%==0)errval=(-merrval)/2-1;elseerrval=(merrval-1)/2;}else{if(merrval%==0)errval=(merrval)/2;elseerrval=-(merrval+1)/2;}(9)像素?cái)?shù)據(jù)還原:像素?cái)?shù)據(jù)還原是解碼算法的最后一步,復(fù)原像素值需要利用預(yù)測(cè)誤差值errval和像素預(yù)測(cè)校正值px_correct。復(fù)原的像素值用于接下來(lái)的預(yù)測(cè)解碼。根據(jù)像素還原公式pixel=[(errval+px_correct)%(range*(2*near+1))]可知,反映射后的殘差值errval與預(yù)測(cè)修正后的像素值px_correct相加后再與range做取模運(yùn)算即可得出還原的像素值。range表示預(yù)測(cè)誤差表示的范圍range=maxval+1;maxval:圖像內(nèi)所有像素可能取到的最大值,maxval=2p-1;p表示像素位寬;near:近無(wú)損編解碼的誤差界限。由于fpga中對(duì)于取模運(yùn)算的不可綜合性,將取模運(yùn)算轉(zhuǎn)換為加減運(yùn)算。代碼邏輯如下文所示:if(pixel<-near)pixel=pixel+range*(2*near+1);elseif(pixel>maxval+near)pixel=pixel-range*(2*near+1);if(pixel<0)pixel=0;elseif(pixel>maxval)pixel=maxval;由于像素值的大小不會(huì)超出[0,1023]范圍,在邏輯實(shí)現(xiàn)過(guò)程中需要進(jìn)行像素值大小判斷,將像素值大小鉗位于[0,1023]之間。上述像素收集模塊,用于收集所述多路并行殘差預(yù)測(cè)解碼模塊進(jìn)行預(yù)測(cè)解碼后輸出的還原的數(shù)據(jù)塊;上述組幀模塊,用于將所述像素收集模塊收集的數(shù)據(jù)塊逆壓縮排序組合后與相機(jī)輔助信息拼接組成相機(jī)格式數(shù)據(jù),完成解壓縮操作。圖12所示為本發(fā)明實(shí)施例公開(kāi)的一種相機(jī)組幀的壓縮排序與逆壓縮排序方式;如圖13所示為本發(fā)明實(shí)施例公開(kāi)的一種相機(jī)組幀部分,如何將分塊數(shù)據(jù)還原時(shí)對(duì)存儲(chǔ)區(qū)的地址操作示意圖。均表示相機(jī)的組幀過(guò)程。對(duì)于壓縮單元,數(shù)據(jù)的輸入是相機(jī)或加載器輸出的圖像前半場(chǎng)和后半場(chǎng)相機(jī)格式數(shù)據(jù),在壓縮單元中,相機(jī)格式數(shù)據(jù)經(jīng)過(guò)圖像數(shù)據(jù)分塊處理、壓縮算法編碼、檢糾錯(cuò)算法編碼和幀輔助信息添加后組成壓縮碼流。對(duì)于解壓縮設(shè)備,輸入的數(shù)據(jù)是壓縮碼流,壓縮碼流需要經(jīng)過(guò)解幀模塊、檢糾錯(cuò)解碼模塊、八路并行解碼模塊和組幀模塊。解幀模塊解析壓縮碼流的幀格式,分離輔助信息與壓縮碼流數(shù)據(jù);壓縮碼流數(shù)據(jù)輸入到檢糾錯(cuò)模塊、八路并行解碼模塊進(jìn)行按塊解碼,解碼后的像素?cái)?shù)據(jù)需要還原成壓縮單元輸入的數(shù)據(jù)形式,才能完成解壓縮工作,同時(shí),壓縮編碼中,像素按塊的形式編碼,也就是將原圖像數(shù)據(jù)重新按壓縮排序編碼,因此,解碼后的像素需要在組幀模塊逆壓縮排序組合后與相機(jī)輔助信息拼接組成相機(jī)格式數(shù)據(jù)輸出。可選地,本發(fā)明中的系統(tǒng)還可以包括幀格式檢測(cè)與解碼工作狀態(tài)監(jiān)測(cè)模塊:為實(shí)現(xiàn)對(duì)硬件系統(tǒng)中錯(cuò)誤情況的智能監(jiān)測(cè)與智能判斷,在系統(tǒng)工作過(guò)程中,對(duì)碼流幀格式進(jìn)行檢測(cè),有助于我們判斷解壓縮設(shè)備收到的壓縮碼流幀格式的正確性,同時(shí)在硬件解碼過(guò)程中設(shè)置多處解碼工作狀態(tài)監(jiān)測(cè)參數(shù),可以實(shí)時(shí)幫助我們判斷解碼的狀態(tài)。當(dāng)從顯示終端上以及誤碼率對(duì)比中觀察到解碼錯(cuò)誤。通過(guò)幀格式檢測(cè)可以判斷壓縮碼流本身的正確性,在解壓縮的同時(shí)進(jìn)行幀格式檢測(cè)是非常重要的,一方面可以輔助解碼邏輯進(jìn)行解碼工作,判斷壓縮碼流的幀格式信息正確性、輔助信息正確性、碼流數(shù)據(jù)是否缺失以及提取衛(wèi)星工作與壓縮模式參數(shù)信息,另一方面實(shí)時(shí)監(jiān)測(cè)衛(wèi)星工作狀態(tài),防止衛(wèi)星功能異常而導(dǎo)致重要信息丟失。本領(lǐng)域的技術(shù)人員容易理解,以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。當(dāng)前第1頁(yè)12