本發(fā)明涉及圖像處理技術(shù)領(lǐng)域,更進(jìn)一步涉及靜態(tài)圖像壓縮技術(shù)領(lǐng)域中的一種基于多級(jí)樹(shù)集合分裂編碼的系統(tǒng)及其實(shí)現(xiàn)方法。本發(fā)明在靜態(tài)圖像的編碼過(guò)程中運(yùn)用存儲(chǔ)器共用和運(yùn)算邏輯模塊共用,實(shí)現(xiàn)在航天領(lǐng)域應(yīng)用中對(duì)硬件資源的減少和對(duì)靜態(tài)圖像傳輸可靠性的提高。本發(fā)明可用于各種數(shù)字設(shè)備的靜態(tài)圖像壓縮編碼。
背景技術(shù):隨著現(xiàn)代空間技術(shù)的不斷發(fā)展,遙感圖像數(shù)據(jù)海量增長(zhǎng),給存儲(chǔ)和傳輸帶來(lái)了極大的困難,因而進(jìn)行有效實(shí)時(shí)的數(shù)據(jù)壓縮顯得特別迫切和重要。多級(jí)樹(shù)集合分裂正是為了滿足這種要求而產(chǎn)生的空間圖像壓縮算法,它采用離散小波變換和位平面編碼方法。該算法不僅能夠有效的減少圖像數(shù)據(jù)量、降低傳輸帶寬、減少數(shù)據(jù)存儲(chǔ),而且算法結(jié)構(gòu)簡(jiǎn)單,支持高速低功耗硬件實(shí)現(xiàn),明確的將應(yīng)用領(lǐng)域定位于空間探測(cè)。多級(jí)樹(shù)集合分裂靜態(tài)圖像編碼器主要由離散小波變換和位平面編碼組成,原始圖像首先經(jīng)過(guò)離散小波變換實(shí)現(xiàn)頻帶分解,去除圖像數(shù)據(jù)的空間相關(guān)性,然后位平面編碼根據(jù)變換后的小波系數(shù)的特點(diǎn),對(duì)其進(jìn)行編碼,達(dá)到壓縮的目的。中國(guó)科學(xué)院空間科學(xué)與應(yīng)用研究中心在其擁有專利技術(shù)“用于無(wú)人機(jī)圖像傳輸裝置的FPGA編碼方法、系統(tǒng)及控制方法”(專利申請(qǐng)?zhí)枺?01310249861.9,授權(quán)公告號(hào):CN103327335A)中公開(kāi)了一種用于無(wú)人機(jī)圖像傳輸裝置的FPGA編碼方法、系統(tǒng)及控制方法。該系統(tǒng)包含:圖像輸入模塊、小波變換處理模塊和SPIHT算法編碼模塊。SPIHT算法編碼模塊用于采用位平面編碼,將小波系數(shù)進(jìn)行位平面劃分,形成并行掃描的n個(gè)位平面,并對(duì)每個(gè)位平面進(jìn)行處理,得到編碼后的二進(jìn)制碼流。所述系統(tǒng)還包含:圖像編碼器總控功能模塊,用于控制FPGA編碼系統(tǒng)各功能模塊的使能和包括輸入輸出和中間的數(shù)據(jù)處理過(guò)程的狀態(tài)轉(zhuǎn)移過(guò)程的使能;和系統(tǒng)初始化功能模塊,用于對(duì)FPGA編碼系統(tǒng)各功能模塊和內(nèi)存、寄存器進(jìn)行初始化,設(shè)置缺省狀態(tài)。這一過(guò)程通過(guò)并行處理數(shù)據(jù)大大節(jié)省計(jì)算時(shí)間和空間,從而適應(yīng)無(wú)人機(jī)圖像的高效傳輸,這種方法特別適用于硬件實(shí)現(xiàn)的專用系統(tǒng)。該方法還存在不足:各比特平面的掃描和存儲(chǔ)控制獨(dú)立進(jìn)行,沒(méi)有共用一些共同的控制信息,不僅控制復(fù)雜而且存儲(chǔ)過(guò)程繁瑣;掃描每個(gè)比特平面時(shí),對(duì)D集合信息和L集合信息掃描用兩個(gè)不同的模塊產(chǎn)生,對(duì)邏輯資源造成不必要的浪費(fèi);各個(gè)比特平面存儲(chǔ)重要性信息都占用一個(gè)獨(dú)立的先進(jìn)先出隊(duì)列,隨著比特平面增多,占用資源大大增加且讀寫(xiě)控制麻煩。該系統(tǒng)和方法并沒(méi)有對(duì)硬件資源進(jìn)行更好的利用。
技術(shù)實(shí)現(xiàn)要素:本發(fā)明的目的是提出一種基于多級(jí)樹(shù)集合分裂編碼的系統(tǒng)及其實(shí)現(xiàn)方法,以低功耗、高效率、資源減緩、性能優(yōu)化的方法實(shí)現(xiàn)對(duì)靜態(tài)圖像的壓縮。本發(fā)明提出的基于多級(jí)樹(shù)集合分裂編碼的系統(tǒng),減少使用只讀存儲(chǔ)器及邏輯電路資源,節(jié)省了存儲(chǔ)器及硬件資源。本發(fā)明提出的基于多級(jí)樹(shù)集合分裂編碼的實(shí)現(xiàn)方法,利用時(shí)分復(fù)用和并行處理計(jì)數(shù),實(shí)現(xiàn)了存儲(chǔ)器及硬件邏輯的共用,降低了數(shù)據(jù)流處理的復(fù)雜度。本發(fā)明的系統(tǒng)包括小波變換模塊、小波抽樹(shù)模塊、重要性掃描模塊和并行編碼模塊。其中,小波變換模塊用于從同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器中讀出像素點(diǎn),輸出變換后的小波系數(shù),送入小波抽樹(shù)模塊。小波抽樹(shù)模塊用于對(duì)小波變換模塊輸出的小波變換系數(shù),按照深度優(yōu)先左遍歷的樹(shù)形結(jié)構(gòu)重排,將重排的小波系數(shù)送到重要性掃描模塊。重要性掃描模塊,用于產(chǎn)生波抽樹(shù)模塊輸出的小波系數(shù)節(jié)點(diǎn)在樹(shù)中的位置信息,根據(jù)位置信息產(chǎn)生當(dāng)前節(jié)點(diǎn)的子孫D集合重要性信息和孫子L集合重要性信息,將產(chǎn)生的重要性信息存儲(chǔ)供并行編碼模塊使用。并行編碼模塊用于對(duì)小波系數(shù)按12個(gè)比特平面并行編碼。本發(fā)明的實(shí)現(xiàn)方法,包括以下步驟:(1)輸入像素點(diǎn):將待壓縮圖像的8個(gè)比特位像素點(diǎn),輸入到小波變換模塊中。(2)小波變換:小波變換模塊對(duì)待壓縮圖像的像素點(diǎn)進(jìn)行4級(jí)小波變換,得到多組具有4級(jí)子帶的12個(gè)比特位的小波系數(shù),將變換后的小波系數(shù)送入小波抽樹(shù)模塊中。(3)抽取小波系數(shù):小波抽樹(shù)模塊依照每組變換后的小波系數(shù)4級(jí)子帶之間的分級(jí)關(guān)系,按照深度優(yōu)先左遍歷順序,對(duì)每一組的小波系數(shù)重排,每一組形成一棵深度優(yōu)先左遍歷的樹(shù),將重排的小波系數(shù)依次送到重要性掃描模塊中。(4)掃描樹(shù)的重要性:(4a)重要性掃描模塊中的位置信息產(chǎn)生單元,按照深度優(yōu)先左遍歷的順序,從樹(shù)的第1個(gè)節(jié)點(diǎn)計(jì)數(shù)到樹(shù)的第256個(gè)節(jié)點(diǎn),得到各個(gè)節(jié)點(diǎn)的位置信息;(4b)對(duì)各節(jié)點(diǎn)按樹(shù)分層,提取樹(shù)中除葉子節(jié)點(diǎn)層外,擁有D集合或L集合信息的4層節(jié)點(diǎn),按層并行提取各層節(jié)點(diǎn)對(duì)應(yīng)的使能信號(hào),將4個(gè)使能信號(hào)并行輸入到重要性掃描模塊的對(duì)應(yīng)層的掃描單元中;(4c)判斷進(jìn)入當(dāng)前層掃描單元節(jié)點(diǎn)的使能信號(hào)位是否為“1”,若是,執(zhí)行步驟(4d),否則,執(zhí)行步驟(4f);(4d)輸入當(dāng)前節(jié)點(diǎn)的D集合或L集合,從重要性掃描模塊的各層掃描單元輸出當(dāng)前節(jié)點(diǎn)的D集合重要性信息或L集合的重要性信息,送入該模塊的重要性信息存儲(chǔ)單元;(4e)通過(guò)重要性信息存儲(chǔ)單元,存儲(chǔ)12個(gè)比特平面上相同位置節(jié)點(diǎn)的1比特的重要性信息拼接成的12比特的比特流;(4f)判斷樹(shù)中的節(jié)點(diǎn)是否已經(jīng)全部遍歷,若是,執(zhí)行步驟(5),否則,執(zhí)行步驟(4c)。(5)并行編碼:(5a)從重要性掃描模塊的重要性信息存儲(chǔ)單元中,一次性讀取樹(shù)中相同位置節(jié)點(diǎn)在12個(gè)比特平面上的12比特長(zhǎng)的重要性信息,將讀取的重要性信息輸入到并行編碼模塊;(5b)并行編碼模塊按照12個(gè)比特平面并行方式,對(duì)重要性信息進(jìn)行多級(jí)樹(shù)集合分裂編碼,同時(shí)將編碼產(chǎn)生的碼流按照從高比特平面到低比特平面碼流的生成順序拼接,將拼接后的碼流打包成多個(gè)32比特的碼流。(6)輸出碼流:并行編碼模塊輸出打包后的碼流。本發(fā)明與現(xiàn)有技術(shù)相比較,具有如下優(yōu)點(diǎn):第一,本發(fā)明的系統(tǒng),通過(guò)采用不同比特平面同一個(gè)位置的節(jié)點(diǎn)共用一個(gè)重要性存儲(chǔ)單元,克服現(xiàn)有技術(shù)中各個(gè)比特平面存儲(chǔ)重要性信息都占用一個(gè)獨(dú)立的先進(jìn)先出隊(duì)列的繁瑣和低效,使得本發(fā)明提高了編碼過(guò)程的存取效率。第二,本發(fā)明的系統(tǒng),在重要性掃描模塊中標(biāo)記位置信息時(shí),不同的比特平面上的所有同一位置的節(jié)點(diǎn)共享相同的位置信息,克服現(xiàn)有技術(shù)中各比特平面的掃描和存儲(chǔ)控制獨(dú)立進(jìn)行,沒(méi)有共用相同控制信息的繁瑣和冗雜,使得本發(fā)明使用的硬件資源減少,可靠性進(jìn)一步提高,尤其是在航天領(lǐng)域?qū)o態(tài)圖像的壓縮方面更為突出。第三,本發(fā)明的實(shí)現(xiàn)方法,在重要性掃描過(guò)程中,所有樹(shù)中層位置相同的節(jié)點(diǎn)的重要性可以通過(guò)時(shí)分復(fù)用,重復(fù)使用對(duì)應(yīng)層的同一個(gè)掃描單元,同時(shí)利用D集合重要性信息通過(guò)同一個(gè)單元產(chǎn)生L集合重要性,克服了現(xiàn)有技術(shù)中對(duì)每個(gè)比特平面掃描時(shí),D集合重要性信息和L集合重要性信息掃描用兩個(gè)不同的模塊產(chǎn)生的重復(fù)和繁瑣,實(shí)現(xiàn)了硬件資源的復(fù)用,使得本發(fā)明使用的硬件資源大大減少,提高了硬件資源的利用率。附圖說(shuō)明圖1是本發(fā)明系統(tǒng)的結(jié)構(gòu)圖;圖2是本發(fā)明系統(tǒng)的重要性掃描單元結(jié)構(gòu)圖;圖3是本發(fā)明方法的流程圖;圖4是本發(fā)明方法的樹(shù)形結(jié)構(gòu)集合標(biāo)識(shí)圖。具體實(shí)施方式下面結(jié)合附圖對(duì)本發(fā)明做進(jìn)一步描述。參照?qǐng)D1,本發(fā)明的系統(tǒng)包括小波變換模塊、小波抽樹(shù)模塊、重要性掃描模塊、和并行編碼模塊。小波變換模塊用于從同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器中讀出像素點(diǎn),輸出變換后的小波系數(shù),送入小波抽樹(shù)模塊。小波抽樹(shù)模塊用于對(duì)小波變換模塊輸出的小波變換系數(shù),按照深度優(yōu)先左遍歷的樹(shù)形結(jié)構(gòu)重排,將重排的小波系數(shù)送到重要性掃描模塊。重要性掃描模塊用于產(chǎn)生波抽樹(shù)模塊輸出的小波系數(shù)節(jié)點(diǎn)在樹(shù)中的位置信息,根據(jù)位置信息產(chǎn)生當(dāng)前節(jié)點(diǎn)的子孫D集合重要性信息和孫子L集合重要性信息,將產(chǎn)生的重要性信息存儲(chǔ)供并行編碼模塊使用。參照?qǐng)D2,以第2層節(jié)點(diǎn)為例說(shuō)明重要性掃描如何實(shí)施。當(dāng)計(jì)算第2層某一節(jié)點(diǎn)的D集合重要性信息時(shí),向重要性掃描模塊輸入一棵樹(shù)的小波系數(shù),根據(jù)輸入小波系數(shù)的使能信號(hào),判斷是否是待計(jì)算重要性節(jié)點(diǎn)的D集合。若是,則通過(guò)選擇器選擇進(jìn)入電路與當(dāng)前寄存器暫存的數(shù)據(jù)進(jìn)行或運(yùn)算;否則,通過(guò)選擇器選擇不進(jìn)入電路參與運(yùn)算。判斷該節(jié)點(diǎn)的D集合是否全部輸入:若是,則通過(guò)選擇器控制輸出D集合重要性信息并清空寄存器中的暫存值;否則,通過(guò)選擇器控制將或運(yùn)算后的結(jié)果暫存入寄存器,該結(jié)果將參與下一次的或運(yùn)算。輸出的D集合重要性信息在同一個(gè)模塊中還參與上層節(jié)點(diǎn)(即第1層節(jié)點(diǎn))L集合重要性的計(jì)算,該計(jì)算將得到的D集合重要性信息與當(dāng)前寄存器暫存的值進(jìn)行或運(yùn)算,判斷該上層節(jié)點(diǎn)的L集合是否全部輸入:若是,則通過(guò)選擇器控制輸出L集合重要性并清空寄存器中的暫存值;否則,通過(guò)選擇器控制將或運(yùn)算后的結(jié)果暫存入寄存器中,參與下一次的或運(yùn)算。輸出當(dāng)前節(jié)點(diǎn)的D集合重要性信息和上層節(jié)點(diǎn)的L集合重要性信息,送入到重要性信息存儲(chǔ)模塊。第3層和第4層重要性掃描的操作與第2層重要性掃描相同,第1層重要性掃描只需要產(chǎn)生D集合重要性的部分。并行編碼模塊用于對(duì)小波系數(shù)按12個(gè)比特平面并行編碼。參照?qǐng)D3,本發(fā)明的具體實(shí)施步驟如下:步驟1,輸入像素點(diǎn)。將待壓縮圖像的8個(gè)比特位像素點(diǎn),輸入到小波變換模塊中。步驟2,小波變換。小波變換模塊對(duì)待壓縮圖像的像素點(diǎn)進(jìn)行4級(jí)小波變換,得到多組具有4級(jí)子帶的12個(gè)比特位的小波系數(shù),將變換后的小波系數(shù)送入小波抽樹(shù)模塊中。步驟3,抽取小波系數(shù)。小波抽樹(shù)模塊依照每組變換后的小波系數(shù)4級(jí)子帶之間的分級(jí)關(guān)系,按照深度優(yōu)先左遍歷順序,對(duì)每一組的小波系數(shù)重排,每一組形成一棵深度優(yōu)先左遍歷的樹(shù),將重排的小波系數(shù)依次送到重要性掃描模塊中。步驟4,掃描樹(shù)的重要性。重要性掃描模塊中的位置信息產(chǎn)生單元,按照深度優(yōu)先左遍歷的順序,從樹(shù)的第1個(gè)節(jié)點(diǎn)計(jì)數(shù)到樹(shù)的第256個(gè)節(jié)點(diǎn),得到各個(gè)節(jié)點(diǎn)的位置信息。位置信息是指,能夠標(biāo)記出該節(jié)點(diǎn)是否含有D集合、L集合以及該節(jié)點(diǎn)的父節(jié)點(diǎn)是否有L集合的信息。參照?qǐng)D4,說(shuō)明本發(fā)明方法的樹(shù)形結(jié)構(gòu)集合標(biāo)識(shí)。圖4中節(jié)點(diǎn)(i,j)表示一棵樹(shù)的根節(jié)點(diǎn),O(i,j)表示節(jié)點(diǎn)(i,j)的兒子集合O集合,L(i,j)表示節(jié)點(diǎn)(i,j)的孫子集合L集合,D(i,j)表示節(jié)點(diǎn)(i,j)的O集合和L集合的并集,子孫集合D集合,Z(i,j)是一棵樹(shù)的所有節(jié)點(diǎn)的集合。從圖4中可以看出,根結(jié)點(diǎn)沒(méi)有父節(jié)點(diǎn)的L集合信息,葉子節(jié)點(diǎn)沒(méi)有D集合和L集合信息,葉子節(jié)點(diǎn)的父節(jié)點(diǎn)只有D集合信息,沒(méi)有L集合信息,根據(jù)某個(gè)節(jié)點(diǎn)在樹(shù)中的位置信息可以得知這個(gè)節(jié)點(diǎn)是否含有這些集合信息。如果該節(jié)點(diǎn)有D集合,則該節(jié)點(diǎn)是否含有D集合信息位設(shè)置為“1”,否則為“0”;如果該節(jié)點(diǎn)有L集合,則該節(jié)點(diǎn)是否含有L集合信息位設(shè)置為“1”,否則為“0”;如果該節(jié)點(diǎn)的父親節(jié)點(diǎn)有L集合,則該節(jié)點(diǎn)的父節(jié)點(diǎn)是否含有L集合信息位設(shè)置為“1”,否則為“0”。對(duì)各節(jié)點(diǎn)按樹(shù)分層,提取樹(shù)中除葉子節(jié)點(diǎn)層外,擁有D集合或L集合信息的4層節(jié)點(diǎn),按層并行提取各層節(jié)點(diǎn)對(duì)應(yīng)的使能信號(hào),將4個(gè)使能信號(hào)并行輸入到重要性掃描模塊的對(duì)應(yīng)層的掃描單元中。其中,使能信號(hào)是這樣設(shè)置的:對(duì)于樹(shù)中的一個(gè)節(jié)點(diǎn)來(lái)說(shuō),如果該節(jié)點(diǎn)有D集合,則該節(jié)點(diǎn)D集合中的所有節(jié)點(diǎn)信息均置“1”,其他節(jié)點(diǎn)信息置“0”;如果該節(jié)點(diǎn)有L集合,則該節(jié)點(diǎn)L集合中的所有節(jié)點(diǎn)信息均置“1”,其他節(jié)點(diǎn)信息置“0”。判斷進(jìn)入當(dāng)前層掃描單元節(jié)點(diǎn)的使能信號(hào)位是否為“1”,若是則輸入當(dāng)前節(jié)點(diǎn)的D集合或L集合,從重要性掃描模塊的各層掃描單元輸出當(dāng)前節(jié)點(diǎn)的D集合重要性信息或L集合的重要性信息,送入該模塊的重要性信息存儲(chǔ)單元。通過(guò)重要性信息存儲(chǔ)單元,存儲(chǔ)12個(gè)比特平面上相同位置節(jié)點(diǎn)的1比特的重要性信息拼接成的12比特的比特流;判斷樹(shù)中的節(jié)點(diǎn)是否已經(jīng)全部遍歷,若是,則執(zhí)行步驟5,否則,提取下一個(gè)節(jié)點(diǎn),輸入對(duì)應(yīng)層的掃描模塊判斷其重要性,并輸出其集合的重要性信息。步驟5,并行編碼。從重要性掃描模塊的重要性信息存儲(chǔ)單元中,一次性讀取樹(shù)中相同位置節(jié)點(diǎn)在12個(gè)比特平面上的12比特長(zhǎng)的重要性信息,將讀取的重要性信息輸入到并行編碼模塊。并行編碼模塊按照12個(gè)比特平面并行方式,對(duì)重要性信息進(jìn)行多級(jí)樹(shù)集合分裂編碼,同時(shí)將編碼產(chǎn)生的碼流按照從高比特平面到低比特平面碼流的生成順序拼接,將拼接后的碼流打包成多個(gè)32比特的碼流,如果最后的碼流不足32比特,則在碼流末尾補(bǔ)零。步驟6,輸出碼流。并行編碼模塊輸出打包后的碼流。下面結(jié)合本發(fā)明的仿真實(shí)驗(yàn)對(duì)本發(fā)明作進(jìn)一步的描述。仿真條件是選擇現(xiàn)有技術(shù)“用于無(wú)人機(jī)圖像傳輸裝置的FPGA編碼方法、系統(tǒng)及控制方法”與本發(fā)明的系統(tǒng)都用硬件描述性語(yǔ)言VHDL來(lái)描述,并在XilinxISE12.4軟件中被綜合后,在仿真軟件modelsim6.5上進(jìn)行仿真,最終在器件XilinxVirtex5XC5VLX110T上分別實(shí)現(xiàn),可以得到兩者的綜合資源占用情況如表1和表2所示,其中觸發(fā)器、查找表和FIFO16/RAMB16s均為FPGA中的器件名稱?,F(xiàn)有技術(shù)“用于無(wú)人機(jī)圖像傳輸裝置的FPGA編碼方法、系統(tǒng)及控制方法”中12個(gè)位平面并行編碼模塊綜合邏輯資源占用情況如表1所示。表1現(xiàn)有技術(shù)編碼模塊邏輯資源占用情況表2是本發(fā)明的系統(tǒng)中與表1中的位平面并行編碼模塊相同功能的模塊的綜合邏輯資源占用情況,具體包括重要性掃描模塊、并行編碼模塊的所有使用的邏輯資源占用情況報(bào)告。表2多級(jí)樹(shù)集合分裂編碼系統(tǒng)編碼模塊邏輯資源占用情況對(duì)比表1和表2的結(jié)果可以看出,通過(guò)使用FPGA對(duì)系統(tǒng)相應(yīng)模塊的功能進(jìn)行實(shí)現(xiàn),優(yōu)化后比優(yōu)化前的結(jié)構(gòu)觸發(fā)器的占用率降低了5%,查找表的使用率降低了5%。由此可知采用本發(fā)明的方法與現(xiàn)有技術(shù)“用于無(wú)人機(jī)圖像傳輸裝置的FPGA編碼方法、系統(tǒng)及控制方法”相比,所使用的硬件資源大幅度減少。