專利名稱:數(shù)據(jù)編碼裝置、數(shù)據(jù)編碼方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于對固定長度的編碼對象數(shù)據(jù)進行編碼的數(shù)據(jù)編碼裝置、數(shù)據(jù)編碼方法。
背景技術(shù):
公知的是一般編碼后的數(shù)據(jù)相對于以固定長度存儲的數(shù)據(jù)、在傳輸時等混入了錯誤的情況下,有時不能進行此后的數(shù)據(jù)解壓。
為此,在JPEG等國際標(biāo)準編碼方式中規(guī)定了以下技術(shù)在編碼數(shù)據(jù)內(nèi)按照合適間隔附加重新開始標(biāo)記,即使在局部混入了錯誤,也能夠從此后的重新開始標(biāo)志位置起重新開始編碼數(shù)據(jù)的解壓。作為這種技術(shù)的一例,可以列舉日本特開平9-247423號公報所記載的技術(shù)。
如果設(shè)置重新開始標(biāo)志,則除了錯誤耐性較強的優(yōu)點外,還具有能夠只對數(shù)據(jù)中所期望的一部分高速地進行解壓的優(yōu)點、可以對于由重新開始標(biāo)志劃分的每個部分、并列地對編碼數(shù)據(jù)進行解壓,從而可以實現(xiàn)處理時間的縮短的優(yōu)點等。
可是,以往,在JPEG-LS等中采用了Golomb-Rice編碼。在該Golomb-Rice編碼后的數(shù)據(jù)中嵌入重新開始標(biāo)記時,由于僅僅通過依次讀入則不能判斷是否是重新開始標(biāo)記,因此需要另外設(shè)置表示重新開始標(biāo)記的位置的偏置信息。并且,作為偏置信息,可以考慮形成利用從某個重新開始標(biāo)記到下一個重新開始標(biāo)記為止的字節(jié)數(shù)等表示的、所謂鏈式結(jié)構(gòu)。如果使用這種技術(shù),即使編碼數(shù)據(jù)中的某個比特位置處的數(shù)據(jù)被改寫,也能夠從其后的重新開始標(biāo)記的位置起再次進行解碼。
專利文獻1日本特開平9-247423號公報但是,在上述的使用偏置信息把重新開始標(biāo)記作為控制碼嵌入到Golomb-Rice編碼數(shù)據(jù)中的技術(shù)中,有時由于在中途產(chǎn)生數(shù)據(jù)遺漏或錯誤信息的附加等時,重新開始標(biāo)記的位置與偏置信息所示的位置偏離,所以即使存在重新開始標(biāo)記也不能確定該重新開始標(biāo)記的位置,有可能無法進行信息的解碼。另外,在偏置信息為鏈式結(jié)構(gòu)的情況下,如果某個重新開始標(biāo)記的位置信息被損壞,則導(dǎo)致此后的重新開始標(biāo)記的位置信息也同樣地被損壞。
這樣,不能說可以應(yīng)用于Golomb-Rice編碼等的現(xiàn)有的重新開始標(biāo)記對于錯誤的耐性充分高?;谶@種原因,期待不取決于偏置信息的、錯誤耐性更強的重新開始標(biāo)記的附加技術(shù)。
發(fā)明內(nèi)容
本發(fā)明就是鑒于上述情況而提出的,其目的在于,提供可以附加錯誤耐性強的控制碼的數(shù)據(jù)編碼裝置、數(shù)據(jù)編碼方法。
為了達到上述目的,第一發(fā)明的數(shù)據(jù)編碼裝置用于對固定長度D(D為大于等于1的整數(shù))比特的編碼對象數(shù)據(jù)進行編碼,具備編碼單元,其根據(jù)上述編碼對象數(shù)據(jù)生成包含至少1比特以上的比特“0”和比特“1”中的任意一方的編碼數(shù)據(jù);以及控制碼附加單元,其向上述編碼數(shù)據(jù)附加控制碼,該控制碼比連續(xù)的兩個任意的編碼數(shù)據(jù)中的比特“0”和比特“1”中的上述任意一方的另一方的最大連續(xù)數(shù)長,由比特“0”和比特“1”中的上述任意一方的另一方連續(xù)而成。
并且,第二發(fā)明的數(shù)據(jù)編碼裝置是在上述第一發(fā)明的數(shù)據(jù)編碼裝置中,上述編碼單元通過進行下述的第1編碼來生成上述編碼數(shù)據(jù)把上述編碼對象數(shù)據(jù)分割為高位比特和低位比特兩部分,對高位比特進行編碼,使其成為由該高位比特的值的長度那么多的比特“0”和比特“1”中的上述任意一方的另一方連續(xù)而成的前綴,并且把上述低位比特作為后綴,在高位側(cè)的前綴和低位側(cè)的后綴之間附加1比特的比特“0”和比特“1”中的任意一方,作為識別碼。
另外,第三發(fā)明的數(shù)據(jù)編碼裝置是在上述第二發(fā)明的數(shù)據(jù)編碼裝置中,上述編碼單元在上述高位比特的值小于預(yù)定的前綴最大長度max_prefix(max_prefix為大于等于1的整數(shù))時,通過上述第1編碼生成上述編碼數(shù)據(jù),在大于等于上述前綴最大長度max_prefix時,通過第2編碼生成上述編碼數(shù)據(jù),該第2編碼為,把上述前綴最大長度max_prefix的長度那么多的比特“0”和比特“1”中的上述任意一方的另一方連續(xù)而成的部分作為前綴,并且把上述低位比特作為后綴,在高位側(cè)的前綴和低位側(cè)的后綴之間附加上述高位比特,作為識別碼,上述控制碼附加單元使比特“0”和比特“1”中的上述任意一方的另一方連續(xù)(max_prefix+2×D)的長度或以上,由此生成上述控制碼。
第四發(fā)明的數(shù)據(jù)編碼裝置是在上述第三發(fā)明的數(shù)據(jù)編碼裝置中,上述控制碼是重新開始標(biāo)記。
第五發(fā)明的數(shù)據(jù)編碼裝置是在上述第三發(fā)明的數(shù)據(jù)編碼裝置中,上述控制碼附加單元還在上述控制碼的最低位之后附加由比特“0”和比特“1”中的任意一方構(gòu)成所有比特的值的大于等于1位的代碼,作為表示該控制碼末端的代碼。
第六發(fā)明的數(shù)據(jù)編碼裝置是在上述第五發(fā)明的數(shù)據(jù)編碼裝置中,上述控制碼和表示上述控制碼末端的代碼是重新開始標(biāo)記。
第七發(fā)明的數(shù)據(jù)編碼方法用于對固定長度D(D為大于等于1的整數(shù))比特的編碼對象數(shù)據(jù)進行編碼,具有編碼步驟,根據(jù)上述編碼對象數(shù)據(jù)生成包含至少1比特以上的比特“0”和比特“1”中的任意一方的編碼數(shù)據(jù);以及控制碼附加步驟,向上述編碼數(shù)據(jù)附加控制碼,該控制碼比連續(xù)的兩個任意的編碼數(shù)據(jù)中的比特“0”和比特“1”中的上述任意一方的另一方的最大連續(xù)數(shù)長,由比特“0”和比特“1”中的上述任意一方的另一方連續(xù)而成。
圖1是表示本發(fā)明的實施方式1中的數(shù)據(jù)編碼裝置的結(jié)構(gòu)的方框圖。
圖2是表示上述實施方式1中的編碼處理的流程圖。
圖3是表示上述實施方式1中的前綴長度計算處理的流程圖。
圖4是表示上述實施方式1中的前綴長度判斷處理的流程圖。
圖5是表示上述實施方式1中的標(biāo)記生成處理的流程圖。
圖6是表示上述實施方式1中的前綴生成處理的流程圖。
圖7是表示上述實施方式1中的識別碼生成處理的流程圖。
圖8是表示上述實施方式1中的后綴生成處理的流程圖。
圖9是表示上述實施方式1中的編碼生成處理的流程圖。
圖10是表示上述實施方式1中的重新開始標(biāo)記的結(jié)構(gòu)的圖。
圖11是表示上述實施方式1中的、編碼對象數(shù)據(jù)的高位比特的值小于前綴最大長度時的編碼例的圖。
圖12是表示上述實施方式1中的、編碼對象數(shù)據(jù)的高位比特的值大于等于前綴最大長度時的編碼例的圖。
圖13是表示上述實施方式1中,Golomb-Rice編碼和第2編碼中的高位側(cè)和低位側(cè)的比特“0”的最大連續(xù)數(shù)的圖表。
圖14是表示本發(fā)明的實施方式2中的重新開始標(biāo)記的結(jié)構(gòu)的圖。
圖15是表示上述實施方式2中的標(biāo)記生成處理的流程圖。
圖16是表示上述實施方式2中的編碼生成處理的流程圖。
圖17是表示通過現(xiàn)有的Golomb-Rice編碼,對高位比特的值大于等于前綴最大長度的編碼對象數(shù)據(jù)進行編碼的例子的圖。
具體實施例方式
以下,參照
本發(fā)明的實施方式。
(實施方式1)圖1~圖12表示本發(fā)明的實施方式1,圖1是表示數(shù)據(jù)編碼裝置的結(jié)構(gòu)的方框圖,圖2是表示編碼處理的流程圖,圖3是表示前綴長度計算處理的流程圖,圖4是表示前綴長度判斷處理的流程圖,圖5是表示標(biāo)記生成處理的流程圖,圖6是表示前綴生成處理的流程圖,圖7是表示識別碼生成處理的流程圖,圖8是表示后綴生成處理的流程圖,圖9是表示編碼生成處理的流程圖,圖10是表示重新開始標(biāo)記的結(jié)構(gòu)的圖,圖11是表示編碼對象數(shù)據(jù)的高位比特的值小于前綴最大長度時的編碼例的圖,圖12是表示編碼對象數(shù)據(jù)的高位比特的值大于等于前綴最大長度時的編碼例的圖,圖13是表示Golomb-Rice編碼和第2編碼中的高位側(cè)和低位側(cè)的比特“0”的最大連續(xù)數(shù)的圖表。
首先,假設(shè)要編碼的數(shù)據(jù)包含1個或以上的固定長度(假設(shè)為D(D為大于等于1的整數(shù))比特)的編碼對象數(shù)據(jù)。作為具體例,假設(shè)要編碼的數(shù)據(jù)是圖像數(shù)據(jù)時,編碼對象數(shù)據(jù)例如是構(gòu)成圖像數(shù)據(jù)的像素數(shù)據(jù),該像素數(shù)據(jù)的固定長度D在該像素數(shù)據(jù)的動態(tài)范圍、即例如是256灰度的像素數(shù)據(jù)時為8比特。
并且,該數(shù)據(jù)編碼裝置通過改進的Golomb-Rice編碼來進行編碼,在不使用偏置信息的情況下,生成能夠根據(jù)依次讀入的編碼數(shù)據(jù)判別重新開始標(biāo)記等的控制碼的編碼數(shù)據(jù)。此處,改進的Golomb-Rice編碼基本上通過Golomb-Rice編碼(第1編碼)對編碼對象數(shù)據(jù)進行編碼,但在通過該Golomb-Rice編碼得到的碼長大于等于預(yù)定的碼長時,應(yīng)用后述的第2編碼。并且,由k參數(shù)k_param(k_param是整數(shù),滿足0≤k_param≤D)賦予Golomb-Rice編碼中的固定長度碼部分的碼長(比特數(shù)),把編碼對象數(shù)據(jù)的固定長度碼部分稱為低位比特,把該編碼對象數(shù)據(jù)的固定長度碼以外的部分稱為高位比特。
如圖1所示,該數(shù)據(jù)編碼裝置構(gòu)成為包括作為編碼單元的前綴長度計算部1;作為編碼單元的前綴長度判斷部2;作為控制碼附加單元的標(biāo)記生成部3;作為編碼單元的前綴生成部4;作為編碼單元的識別碼生成部5;作為編碼單元的后綴生成部6;以及作為編碼單元及控制碼附加單元的代碼生成部7。
前綴長度計算部1根據(jù)編碼對象數(shù)據(jù)data的高位比特的值,計算作為對該高位比特進行可變長度編碼時的前綴(參照圖11)的比特長度的前綴長度。
前綴長度判斷部2判斷通過前綴長度計算部1計算出的前綴長度是否大于等于預(yù)定的前綴最大長度。
標(biāo)記生成部3在編碼對象數(shù)據(jù)data是要附加重新開始標(biāo)記的編碼對象數(shù)據(jù)時,生成標(biāo)記數(shù)據(jù)。
前綴生成部4根據(jù)前綴長度判斷部2的判斷結(jié)果,生成Golomb-Rice編碼的前綴、或第2編碼的前綴。
識別碼生成部5根據(jù)前綴長度判斷部2的判斷結(jié)果,生成Golomb-Rice編碼的識別碼、或第2編碼的識別碼。
后綴生成部6生成Golomb-Rice編碼的后綴、或第2編碼的后綴。如后所述,該后綴在Golomb-Rice編碼和第2編碼中的任意一種處理中都直接使用上述的低位比特部分。
代碼生成部7依次連接通過標(biāo)記生成部3根據(jù)需要生成的標(biāo)記數(shù)據(jù)、通過前綴生成部4生成的前綴、通過識別碼生成部5生成的識別碼、以及通過后綴生成部6生成的后綴,由此生成編碼數(shù)據(jù)而輸出。
另外,在圖1中,通過未圖示的定時調(diào)節(jié)電路進行各個模塊之間的相互動作定時的調(diào)節(jié)。
按照作用進一步說明該圖1所示的數(shù)據(jù)編碼裝置的具體情況。
首先,參照圖2說明編碼處理的流程。
在開始該處理時,首先由前綴長度計算部1計算前綴長度(步驟S1)。
然后,前綴長度判斷部2判斷通過前綴長度計算部1計算出的前綴長度是否大于等于預(yù)定的前綴最大長度(步驟S2)。
然后,標(biāo)記生成部3在接收到標(biāo)記生成信號時,生成標(biāo)記數(shù)據(jù)(步驟S3)。
并且,前綴生成部4根據(jù)前綴長度判斷部2的判斷結(jié)果,生成與Golomb-Rice編碼對應(yīng)的前綴、或與第2編碼對應(yīng)的前綴(步驟S4)。
另外,識別碼生成部5根據(jù)前綴長度判斷部2的判斷結(jié)果,生成與Golomb-Rice編碼對應(yīng)的識別碼、或與第2編碼對應(yīng)的識別碼(步驟S5)。
然后,后綴生成部6生成后綴(步驟S6)。
這樣,代碼生成部7根據(jù)需要將前綴、識別碼、以及后綴與標(biāo)記數(shù)據(jù)進行連接,生成編碼數(shù)據(jù)(步驟S7),結(jié)束處理。
下面,參照圖3具體說明步驟S1的前綴長度計算處理。
向前綴長度計算部1輸入編碼對象數(shù)據(jù)data和k參數(shù)k_param。然后,前綴長度計算部1使編碼對象數(shù)據(jù)data向右移位k參數(shù)k_param所示的值(在圖3中,將此表示為記號“data>>k_param”。),把其結(jié)果存儲在前綴長度prefix_length中(步驟S11),返回圖2所示的處理。另外,此處,以編碼對象數(shù)據(jù)data的比特長度(固定長度D)為“15”的情況為例進行說明。
下面,參照圖4具體說明步驟S2的前綴長度判斷處理。
向前綴長度判斷部2輸入通過前綴長度計算部1計算出的前綴長度prefix_length、以及預(yù)先設(shè)定的前綴最大長度max_prefix(max_prefix為大于等于1的整數(shù))。前綴長度判斷部2判斷前綴長度prefix_length是否小于前綴最大長度max_prefix(步驟S21),在小于前綴最大長度max_prefix時,對前綴標(biāo)志prefix_flag設(shè)定“0”(步驟S22)。另一方面,在大于等于前綴最大長度max_prefix時,對前綴標(biāo)志prefix_flag設(shè)定“1”(步驟S23)。這樣,在步驟S22或步驟S23的處理結(jié)束后,返回圖2所示的處理。
下面,參照圖5具體說明步驟S3的標(biāo)記生成處理。
向標(biāo)記生成部3輸入預(yù)先設(shè)定的重新開始標(biāo)記長度。此處,重新開始標(biāo)記長度基于后述的原因設(shè)為“48”。標(biāo)記生成部3輸出48比特的比特“0”(在圖5和后述的圖9中,由記號“0x000000000000”(“0x”表示16進制數(shù))表示,在圖10中由6個記號“0x00”表示),作為重新開始標(biāo)記(步驟S31),進而,輸出作為重新開始標(biāo)記長度的“48”(步驟S32),返回圖2所示的處理。
下面,參照圖6具體說明步驟S4的前綴生成處理。
向前綴生成部4輸入通過前綴長度計算部1計算出的前綴長度prefix_length、從前綴長度判斷部2輸出的前綴標(biāo)志prefix_flag、以及預(yù)先設(shè)定的前綴最大長度max_prefix。前綴生成部4首先進行前綴標(biāo)志prefix_flag的判斷(步驟S41),在前綴標(biāo)志prefix_flag是“0”時,輸出前綴長度prefix_length那么多的比特“0”(步驟S42),輸出前綴長度prefix_length(步驟S43)。另一方面,前綴生成部4在前綴標(biāo)志prefix_flag是“1”的情況下,輸出前綴最大長度max_prefix那么多的比特“0”(步驟S44),輸出前綴最大長度max_prefix(步驟S45)。這樣,步驟S43或步驟S45的處理結(jié)束后,返回圖2所示的處理。
下面,參照圖7具體說明步驟S5的識別碼生成處理。
向識別碼生成部5輸入通過前綴長度計算部1計算出的前綴長度prefix_length、從前綴長度判斷部2輸出的前綴標(biāo)志prefix_flag、以及k參數(shù)k_param。識別碼生成部5首先進行前綴標(biāo)志prefix_flag的判斷(步驟S51),在前綴標(biāo)志prefix_flag是“0”時,輸出1比特的比特“1”,作為識別碼(步驟S52),輸出表示識別碼的碼長的“1”(步驟S53)。另一方面,識別碼生成部5在前綴標(biāo)志prefix_flag是“1”時,輸出前綴長度prefix_length,作為識別碼(步驟S54),輸出表示識別碼的碼長的“15-k_param”(步驟S55)。這樣,步驟S53或步驟S55的處理結(jié)束后,返回圖2所示的處理。
下面,參照圖8具體說明步驟S6的后綴生成處理。
向后綴生成部6輸入編碼對象數(shù)據(jù)data和k參數(shù)k_param。后綴生成部6把編碼對象數(shù)據(jù)data的低位k_param個比特作為后綴數(shù)據(jù)suffix(步驟S61),輸出該后綴數(shù)據(jù)suffix(步驟S62),并且輸出表示后綴的碼長的k參數(shù)k_param(步驟S63),返回圖2所示的處理。
下面,參照圖9具體說明步驟S7的編碼生成處理。
向代碼生成部7輸入來自標(biāo)記生成部3的標(biāo)記數(shù)據(jù)和標(biāo)記的碼長、來自前綴生成部4的前綴數(shù)據(jù)和前綴的碼長、來自識別碼生成部5的識別碼數(shù)據(jù)和識別碼的碼長、來自后綴生成部6的后綴數(shù)據(jù)和后綴的碼長,并且根據(jù)需要輸入標(biāo)記生成信號。代碼生成部7首先進行標(biāo)記生成信號的判斷(步驟S71),在出現(xiàn)比特(為“1”)時,輸出比特“1”直到字節(jié)單位位置為止,以進行以字節(jié)為單位結(jié)束到前一像素為止的數(shù)據(jù)填充(packing)(步驟S72)。另外,此處輸出比特“1”是為了明確下一個標(biāo)記數(shù)據(jù)的起頭位置(因為如果明確了標(biāo)記數(shù)據(jù)的起頭位置,就明確了標(biāo)記數(shù)據(jù)的碼長,因此標(biāo)記數(shù)據(jù)的末端位置也變得明確,后續(xù)的編碼數(shù)據(jù)的起頭位置變得明確)。然后,輸出標(biāo)記的碼長那么多的標(biāo)記數(shù)據(jù)(如上所述,48比特的比特“0”)(步驟S73)。在該步驟S73結(jié)束、或在步驟S71中標(biāo)記生成信號為“0”時,接著輸出前綴的碼長那么多的前綴數(shù)據(jù)(步驟S74)。然后,輸出識別碼的碼長那么多的識別碼數(shù)據(jù)(步驟S75),輸出后綴的碼長那么多的后綴數(shù)據(jù)(步驟S76),返回圖2所示的處理。
下面,參照圖11,說明編碼對象數(shù)據(jù)的高位比特的值小于前綴最大長度max_prefix時的編碼例。
編碼對象數(shù)據(jù)data的固定長度D如上所述是15比特,此處說明由十進制數(shù)表示為“374”時的例子。并且,假設(shè)k參數(shù)k_param設(shè)定為“5”,前綴最大長度max_prefix設(shè)定為“12”。在由二進制數(shù)表示該編碼對象數(shù)據(jù)時成為“000000101110110”,所以高位比特為“0000001011”,低位比特為“10110”。此處,由十進制數(shù)表示高位比特時為“11”,所以小于前綴最大長度max_prefix,前綴標(biāo)志prefix_flag為“0”。因此,在步驟S42中,作為前綴,輸出作為高位比特的值的“11”(十進制數(shù))個的比特“0”,作為前綴輸出“00000000000”。而且,此時,作為識別碼輸出1比特的比特“1”。并且,直接使用低位比特作為后綴。因此,由代碼生成部7生成的代碼為“00000000000110110”,得到了碼長為17比特的代碼。這樣,在編碼對象數(shù)據(jù)data的高位比特的值小于前綴最大長度max_prefix時,進行Golomb-Rice編碼。另外,前綴的碼長的最大值為(max_prefix-1),識別碼的碼長為1,后綴的碼長為k_param,所以應(yīng)用該Golomb-Rice編碼時的最大碼長為(max_prefix+k_param)。
下面,參照圖12說明編碼對象數(shù)據(jù)data的高位比特的值大于等于前綴最大長度max_prefix時的編碼例。
此處,說明編碼對象數(shù)據(jù)data以十進制數(shù)表示為“1142”時的例子。另外,編碼對象數(shù)據(jù)data的固定長度D、k參數(shù)k_param的值、以及前綴最大長度max_prefix的值與上述相同。在由二進制數(shù)表示該編碼對象數(shù)據(jù)data時為“000010001110110”,所以高位比特是“0000100011”,低位比特是“10110”。此處,由十進制數(shù)表示高位比特時為“35”,因此大于等于前綴最大長度max_prefix,前綴標(biāo)志prefix_flag為“1”。因此,在步驟S44中,作為前綴,輸出作為前綴最大長度max_prefix的“12”(十進制數(shù))個的比特“0”,作為前綴輸出“000000000000”。另外,此時,作為識別碼輸出作為前綴長度prefix_length的“0000100011”(這與高位比特相同)。并且,直接使用低位比特作為后綴。因此,由代碼生成部7生成的代碼為“000000000000000010001110110”,得到了碼長為27比特的代碼。這與對編碼對象數(shù)據(jù)data本身的高位附加前綴“000000000000”一樣。另外,前綴的碼長為max_prefix,識別碼和后綴相加后的碼長不取決于k參數(shù)k_param的值而成為編碼對象數(shù)據(jù)data的固定長度D,所以應(yīng)用該第2編碼時的碼長固定為(max_prefix+D)。
此處,為了進行對比,參照圖17說明對與圖12相同的編碼對象數(shù)據(jù)“1142”(十進制數(shù))進行了與以往相同的Golomb-Rice編碼時的狀態(tài)。此處,圖17是表示通過現(xiàn)有的Golomb-Rice編碼,對高位比特的值大于等于前綴最大長度的編碼對象數(shù)據(jù)進行編碼的例子的圖。
如上所述,高位比特是“35”(十進制數(shù)),所以進行可變長度編碼后成為“00000000000000000000000000000000000”。因此,加入識別碼和后綴而進行合成時,編碼后的數(shù)據(jù)為“00000000000000000000000000000000000110110”,成為41比特的碼長。因此,像本實施方式這樣,通過由前綴最大長度max_prefix限制可變長度碼的碼長,可以在高位比特的值較大時限制碼長變長。
而且,通過這種可變長度碼的碼長的限制,使比特“0”的連續(xù)數(shù)產(chǎn)生圖13所示那樣的上限。
首先,在圖11所示的Golomb-Rice編碼的情況下,識別碼為比特“1”,所以高位側(cè)的比特“0”的最大連續(xù)數(shù)為作為前綴的碼長的(max_prefix-1)。
并且,Golomb-Rice編碼時的低位側(cè)的比特“0”的最大連續(xù)數(shù)與編碼對象數(shù)據(jù)data的固定長度D相同。該具體例是k參數(shù)k_param與編碼對象數(shù)據(jù)data的固定長度D相等、編碼對象數(shù)據(jù)data為0(即,所有比特為0)時的例子。此時,在1比特的識別碼“1”之后連續(xù)D個比特“0”。
然后,在圖12所示的第2編碼的情況下,高位側(cè)的比特“0”的最大連續(xù)數(shù)為(max_prefix+D-1)。該具體例是k參數(shù)k_param為0,因此前綴最大長度max_prefix為1,編碼對象數(shù)據(jù)data為1(即,高位的(D-1)比特全部為0,僅最低位的1比特為1)時的例子。此時,k參數(shù)k_param為0,所以全部成為高位比特,該高位比特的值大于等于作為前綴最大長度max_prefix的1,所以應(yīng)用圖12所示的第2編碼,在編碼對象數(shù)據(jù)data之前附加了max_prefix比特的比特“0”作為前綴。因此,如上所述,編碼后的數(shù)據(jù)在高位側(cè)連續(xù)(max_prefix+D-1)的比特“0”。
并且,第2編碼的情況下的低位側(cè)的比特“0”的最大連續(xù)數(shù)為(D-1)。該具體例是編碼對象數(shù)據(jù)data只有最高位的1比特為1、其余的(D-1)比特全部為0時的例子。
并且,在Golomb-Rice編碼和第2編碼中的任意一方中,由于在編碼數(shù)據(jù)中一定含有比特“1”(更具體講,在編碼數(shù)據(jù)的識別碼中一定含有比特“1”),所以比特“0”不會跨越3個或以上的編碼數(shù)據(jù)而連續(xù),最多也只是跨越兩個編碼數(shù)據(jù)。關(guān)于各個編碼對象數(shù)據(jù),可以應(yīng)用的編碼是Golomb-Rice編碼和第2編碼這兩種,所以作為連續(xù)的兩個編碼對象數(shù)據(jù)中的編碼的組合有4種。首先,求出其中前面的編碼數(shù)據(jù)中的低位側(cè)的比特“0”的最大連續(xù)數(shù)、以及后面的編碼數(shù)據(jù)中的高位側(cè)的比特“0”的最大連續(xù)數(shù)的組合中為最大者。參照圖13,作為低位側(cè)的比特“0”的最大連續(xù)數(shù),D大于(D-1)。同樣,作為高位側(cè)的比特“0”的最大連續(xù)數(shù),(max_prefix+D-1)大于(max_prefix-1)。因此,將較大的最大連續(xù)數(shù)彼此組合時,成為(max_prefix+2×D-1)。如上所述,k_param≤D、而且D是大于等于1的整數(shù),所以該(max_prefix+2×D-1)大于等于Golomb-Rice編碼的最大碼長(max_prefix+k_param)、而且大于等于第2編碼的碼長(max_prefix+D)。因此,(max_prefix+2×D-1)大于對一個編碼對象數(shù)據(jù)進行Golomb-Rice編碼而得到的編碼數(shù)據(jù)中所包含的比特“0”的最大連續(xù)數(shù)、而且大于對一個編碼對象數(shù)據(jù)進行第2編碼而得到的編碼數(shù)據(jù)中所包含的比特“0”的最大連續(xù)數(shù)。這樣,保證了該改進的Golomb-Rice編碼中的比特“0”的最大連續(xù)數(shù)是(max_prefix+2×D-1)。另外,如上所述的、在編碼對象數(shù)據(jù)data的固定長度D是15、而且前綴最大長度max_prefix是12的情況下,12+2×15-1=41成為比特“0”的最大連續(xù)數(shù)。
基于上述的原因,作為可以完全識別為編碼數(shù)據(jù)的重新開始標(biāo)記等的控制碼,使用比特“0”連續(xù)下面的式1所示的比特數(shù)或以上的代碼即可。
max_prefix+2×D因此,在上述例子中,可以把比特“0”連續(xù)42比特或以上的代碼用作控制碼即可。
但是,實用時,作為控制碼優(yōu)選使用字節(jié)單位的代碼,因此例如可考慮把比特“0”連續(xù)由下面的式2所示的字節(jié)的代碼作為控制碼而使用。
[(max_prefix+2×D)/8]+1其中,記號[]在此處表示向下取整函數(shù)(賦予不超過[]內(nèi)的數(shù)的最大整數(shù)的函數(shù))。
因此,在上述的例子中,[42/8]+1=5+1=6,把比特“0”連續(xù)6個字節(jié)(即48比特)的代碼作為重新開始標(biāo)記而使用。
根據(jù)這種實施方式1,限制了Golomb-Rice編碼中的前綴長度,因此在高位比特的值較大時可以限制編碼數(shù)據(jù)龐大化,可以抑制數(shù)據(jù)量的增大。并且,把編碼數(shù)據(jù)中不存在的數(shù)據(jù)作為控制碼而使用,因此可在不使用偏置地址等的情況下、在依次讀入時識別控制碼,也提高了錯誤耐性。另外,在把k參數(shù)或前綴最大長度變更為各種值時、也使用編碼數(shù)據(jù)中不存在的數(shù)據(jù)作為控制碼,所以還能夠應(yīng)對適應(yīng)性的k參數(shù)的變更、適應(yīng)性的前綴最大長度的變更。
(實施方式2)圖14~圖16表示本發(fā)明的實施方式2,圖14是表示重新開始標(biāo)記的結(jié)構(gòu)的圖,圖15是表示標(biāo)記生成處理的流程圖,圖16是表示編碼生成處理的流程圖。
在該實施方式2中,對與上述實施方式1相同的部分標(biāo)以相同標(biāo)號并省略說明,主要只對不同之處進行說明。
該實施方式2將重新開始標(biāo)記的結(jié)構(gòu)略作改動,以使重新開始標(biāo)記的末端位置明確。
即,如圖14所示,在本實施方式中使用的重新開始標(biāo)記構(gòu)成為,由48比特構(gòu)成的重新開始標(biāo)記中的、高位47比特為0(控制碼)、最低位的1比特為1(表示控制碼末端的代碼)。另外,在本實施方式中,也假設(shè)編碼對象數(shù)據(jù)data的固定長度D為15,k參數(shù)k_param為5,前綴最大長度max_prefix為12。另外,更為一般的是,使重新開始標(biāo)記構(gòu)成為高位([(max_prefix+2×D)/8]×8+7)比特為0(控制碼)、最低位的1比特為1(表示控制碼末端的代碼)。此處,記號[]與上述相同,表示向下取整函數(shù)。
該實施方式的數(shù)據(jù)編碼裝置的結(jié)構(gòu)與圖1所示的結(jié)構(gòu)相同,編碼處理的流程也與圖2所示的流程相同。
參照圖15,具體說明圖2的步驟S3中的標(biāo)記生成的、本實施方式中的處理。
在開始該處理時,標(biāo)記生成部3輸出47比特的比特“0”和1比特的比特“1”,作為重新開始標(biāo)記(步驟S31a),然后進行上述的步驟S32的處理,返回圖2所示的處理。
下面,參照圖16,具體說明圖2的步驟S7中的代碼生成的、本實施方式中的處理。
在上述的步驟S71中,在判斷為標(biāo)記生成信號為“1”的情況下,首先,輸出比特“0”,直到字節(jié)單位位置為止,以進行以字節(jié)為單位結(jié)束到前一像素為止的數(shù)據(jù)填充(步驟S72a)。另外,在上述的實施方式1的圖9所示的處理中,為了明確標(biāo)記數(shù)據(jù)的起頭位置,需要把填充用的比特設(shè)為“1”,但在本實施方式的重新開始標(biāo)記中,如上所述,重新開始標(biāo)記的末端位置已明確,所以可以使用比特“0”。另外,如果使用本實施方式的重新開始標(biāo)記,當(dāng)然也可以把填充用的比特設(shè)為“1”。
然后,輸出標(biāo)記的碼長那么多的標(biāo)記數(shù)據(jù)(此處為47比特的比特“0”和1比特的比特“1”)(步驟S73a)。
在該步驟S73a結(jié)束、或在步驟S71中標(biāo)記生成信號為“0”的情況下,進行上述的步驟S74~S76的處理,返回圖2所示的處理。
另外,表示控制碼末端的代碼為具有與控制碼不同的比特值的1比特數(shù)據(jù)即可,所以在上述例子中設(shè)為1比特,但也可以排列多個比特的與控制碼不同的比特值。
根據(jù)這種實施方式2,可以發(fā)揮與上述的實施方式1大致相同的效果、并且明確重新開始標(biāo)記等的控制碼的末端位置,使后續(xù)的編碼數(shù)據(jù)的起頭位置變得清楚。
另外,在上述說明中舉出了編碼對象數(shù)據(jù)是構(gòu)成圖像數(shù)據(jù)的像素數(shù)據(jù)的情況的例子,但通過數(shù)據(jù)編碼裝置處理而得到的數(shù)據(jù)當(dāng)然不限于此。
并且,在上述說明中,使用比特“0”作為前綴或控制碼,但也可以使用比特“1”來代替。此時,表示控制碼末端的代碼或由1比特構(gòu)成的識別碼的比特值也使用與上述不同的比特值。
另外,在上述說明中,作為控制碼舉出了重新開始標(biāo)記的例子,但也可以使用上述技術(shù)把在其它用途中使用的控制碼嵌入編碼數(shù)據(jù)中。
并且,在上述說明中,說明了通過數(shù)據(jù)編碼裝置進行處理的例子,但也可以把數(shù)據(jù)編碼方法應(yīng)用于現(xiàn)有的運算器等來進行處理,還可以通過用于進行與數(shù)據(jù)編碼裝置同等的處理的程序,由計算機進行處理。
另外,本發(fā)明不限于上述實施方式,當(dāng)然可以在不脫離發(fā)明宗旨的范圍內(nèi)進行各種變形或應(yīng)用。
本發(fā)明可以恰當(dāng)?shù)乩糜趯潭ㄩL度的編碼對象數(shù)據(jù)進行編碼的數(shù)據(jù)編碼裝置、數(shù)據(jù)編碼方法。
權(quán)利要求
1.一種數(shù)據(jù)編碼裝置,用于對固定長度D(D為大于等于1的整數(shù))比特的編碼對象數(shù)據(jù)進行編碼,其特征在于,具備編碼部,其根據(jù)上述編碼對象數(shù)據(jù)生成包含至少1比特以上的比特“0”和比特“1”中的任意一方的編碼數(shù)據(jù);以及控制碼附加部,其向上述編碼數(shù)據(jù)附加控制碼,該控制碼比連續(xù)的兩個任意的編碼數(shù)據(jù)中的比特“0”和比特“1”中的上述任意一方的另一方的最大連續(xù)數(shù)長,由比特“0”和比特“1”中的上述任意一方的另一方連續(xù)而成。
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)編碼裝置,其特征在于,上述編碼部通過進行下述的第1編碼來生成上述編碼數(shù)據(jù)把上述編碼對象數(shù)據(jù)分割為高位比特和低位比特兩部分,對高位比特進行編碼,使其成為由該高位比特的值的長度那么多的比特“0”和比特“1”中的上述任意一方的另一方連續(xù)而成的前綴,并且把上述低位比特作為后綴,在高位側(cè)的前綴和低位側(cè)的后綴之間附加1比特的比特“0”和比特“1”中的上述任意一方,作為識別碼。
3.根據(jù)權(quán)利要求2所述的數(shù)據(jù)編碼裝置,其特征在于,上述編碼部在上述高位比特的值小于預(yù)定的前綴最大長度max_prefix(max_prefix為大于等于1的整數(shù))時,通過上述第1編碼生成上述編碼數(shù)據(jù),在大于等于上述前綴最大長度max_prefix時,通過第2編碼生成上述編碼數(shù)據(jù),該第2編碼為,把上述前綴最大長度max_prefix的長度那么多的比特“0”和比特“1”中的上述任意一方的另一方連續(xù)而成的部分作為前綴,并且把上述低位比特作為后綴,在高位側(cè)的前綴和低位側(cè)的后綴之間附加上述高位比特,作為識別碼,上述控制碼附加部使比特“0”和比特“1”中的上述任意一方的另一方連續(xù)(max_prefix+2×D)的長度或以上,由此生成上述控制碼。
4.根據(jù)權(quán)利要求3所述的數(shù)據(jù)編碼裝置,其特征在于,上述控制碼是重新開始標(biāo)記。
5.根據(jù)權(quán)利要求3所述的數(shù)據(jù)編碼裝置,其特征在于,上述控制碼附加部還在上述控制碼的最低位之后附加由比特“0”和比特“1”中的任意一方構(gòu)成所有比特的值的1比特或以上的代碼,作為表示該控制碼末端的代碼。
6.根據(jù)權(quán)利要求5所述的數(shù)據(jù)編碼裝置,其特征在于,上述控制碼和表示上述控制碼末端的代碼是重新開始標(biāo)記。
7.一種數(shù)據(jù)編碼方法,用于對固定長度D(D為大于等于1的整數(shù))比特的編碼對象數(shù)據(jù)進行編碼,其特征在于,具有編碼步驟,根據(jù)上述編碼對象數(shù)據(jù)生成包含至少1比特以上的比特“0”和比特“1”中的任意一方的編碼數(shù)據(jù);以及控制碼附加步驟,向編碼數(shù)據(jù)附加控制碼,該控制碼比連續(xù)的兩個任意的編碼數(shù)據(jù)中的比特“0”和比特“1”中的上述任意一方的另一方的最大連續(xù)數(shù)長,由比特“0”和比特“1”中的上述任意一方的另一方連續(xù)而成。
全文摘要
數(shù)據(jù)編碼裝置、數(shù)據(jù)編碼方法。本發(fā)明的課題是提供可以附加錯誤耐性強的控制碼的數(shù)據(jù)編碼裝置等。作為解決手段,數(shù)據(jù)編碼裝置在對固定長度D比特的編碼對象數(shù)據(jù)進行Golomb-Rice編碼時,在由前綴長度計算部(1)和前綴長度判斷部(2)判斷為由比特0連續(xù)而成的可變長度碼的碼長大于等于預(yù)定的前綴最大長度max_prefix的情況下,取代該Golomb-Rice編碼而進行第2編碼,在該第2編碼中,前綴生成部(5)生成由前綴最大長度max_prefix的比特0連續(xù)而成的前綴、代碼生成部(7)將其附加到編碼對象數(shù)據(jù)的高位,另外,在附加重新開始標(biāo)記等的控制碼的情況下,標(biāo)記生成部(3)生成比特0連續(xù)(max_prefix+2×D)或以上的長度的代碼,作為控制碼。
文檔編號H03M7/30GK1874162SQ200610088520
公開日2006年12月6日 申請日期2006年6月1日 優(yōu)先權(quán)日2005年6月1日
發(fā)明者石川隆志 申請人:奧林巴斯映像株式會社