專利名稱:圖像編碼裝置、圖像解碼裝置及它們的控制方法
技術(shù)領(lǐng)域:
本發(fā)明涉及圖像編碼裝置、圖像解碼裝置及它們的控制方法。
背景技術(shù):
作為用于圖像編碼的熵編碼的形式,有使用靜態(tài)概率分布模型的形式和基于動態(tài)模型的形式。使用靜態(tài)概率分布模型的形式,是調(diào)查或假定信息源的性質(zhì),預(yù)先準備概率分布的模型,并進行適于該模型的編碼的形式。此外,使用動態(tài)概率分布模型的形式,是在編碼過程中學(xué)習(xí)信息源的性質(zhì),動態(tài)地邊變更概率分布的模型邊進行編碼的形式。
在此,對多值圖像的無損失壓縮(lossless)編碼,列舉其2個例子。
在作為連續(xù)灰階靜止圖像的國際標(biāo)準編碼方式由ISO和ITU-T推薦的JPEG所規(guī)定的無損失壓縮編碼方式中,使用預(yù)先確定的霍夫曼表對關(guān)注像素和預(yù)測值的差進行編碼,使用了靜態(tài)模型。
而作為連續(xù)灰階靜止圖像的可逆和準可逆壓縮的國際標(biāo)準方式由ISO和ITU-T推薦的JPEG-LS Part1是動態(tài)模型的一個例子。JPEG-LS在預(yù)測誤差的編碼中,采用了可通過改變編碼參數(shù)來應(yīng)對不同概率分布的Golomb編碼技術(shù)。對每個由關(guān)注像素的周圍4個像素確定的前后關(guān)系(context),參考已編碼的符號(symbol)的概率分布狀況選擇“k”,由此動態(tài)地進行概率分布模型的變更。
以下,說明JPEG-LS中的預(yù)測誤差編碼的總體流程和Golomb編碼參數(shù)的確定方法。在以下的說明中,省略與本發(fā)明沒有直接關(guān)系的因素,例如關(guān)注像素的周圍像素全部為相同像素值時適用的運行模式、或用于準可逆編碼的量化處理等。關(guān)于標(biāo)準方式的詳細情況請參照說明書。
圖3表示在JPEG-LS中參照的關(guān)注像素“x”與其周圍像素a、b、c、d的相對位置關(guān)系。請注意由于是按照光柵掃描順序?qū)ο袼剡M行編碼,因此,關(guān)注像素“x”的周圍像素a、b、c、d全部已編碼。各個像素的值也用a、b、c、d表示。首先,利用以下的公式求出a和c、c和b、b和d的差,得到D1、D2、D3。
D1=d-bD2=b-cD3=c-a將該差值D1、D2、D3量化成九種(從-4到4),求出各自的差的量化值Q1、Q2、Q3。圖2表示差值的范圍與其量化值的對應(yīng)關(guān)系。T1、T2、T3是預(yù)先確定的非負的整數(shù)值。
例如,對取0~255值的8位圖像,設(shè)定T1=3、T2=7、T3=21這樣的值。這樣得到的Q1、Q2、Q3的組合(Q1,Q2,Q3),由于Q1、Q2、Q3分別能夠具有從-4到4的九種的值,因而是9×9×9=729種。
在此,認為在狀態(tài)(Q1,Q2,Q3)下發(fā)生預(yù)測誤差e的概率和在狀態(tài)(-Q1,-Q2,-Q3)下發(fā)生預(yù)測誤差-e的概率相同。因此,合并這兩個狀態(tài)縮減至365種。表示該組合的信息是上述前后關(guān)系。將表示是365種狀態(tài)的哪一個的標(biāo)識符取為S,以下,將該標(biāo)識符S稱作狀態(tài)序號。
使用周圍像素a、b、c利用以下的公式求出對關(guān)注像素值x的預(yù)測值p。
p=min(a,b)(max(a,b)≤c時),或者p=max(a,b)(min(a,b)≥c時),或者p=a+b-c(其它情況下)在此,min(x,y)是返回x、y中較小者的函數(shù),max(x,y)是返回較大者的函數(shù)。
請注意如下情況雖然預(yù)測值p的值的取得方法要根據(jù)周圍像素a、b、c的值的大小關(guān)系進行切換,但由于a、b、c是已編碼的像素,因此,能夠不傳送關(guān)于切換的附加信息地,在編碼側(cè)和解碼側(cè)取得相同的預(yù)測值p。在JPEG-LS中為了提高預(yù)測精度,采用了如下技術(shù)參照此前在狀態(tài)S下進行了編碼的像素中發(fā)生的預(yù)測誤差的平均值來修正預(yù)測值p,但在此省略說明。
求出該預(yù)測值p和關(guān)注像素x的差e,將其轉(zhuǎn)換成非負的整數(shù)值進行Golomb編碼。此時,按照關(guān)注像素的前后關(guān)系確定編碼的參數(shù)k。
在JPEG-LS中,對每個狀態(tài)S,保持發(fā)生次數(shù)N[S]和在該狀態(tài)下進行了編碼的預(yù)測誤差的絕對值之和A[S]。Golomb編碼的參數(shù)k,滿足使用了這2個值的以下的條件?!皒^y”表示x的y次冪。
2^(k-1)<A[S]/N[S]≤2^k實際上,不需要做A[S]/N[S]的除法。只要求出滿足N[S]×2^k≥A[S]的最小的k即可。由此,在預(yù)測誤差的絕對值的平均大的狀態(tài)下作為k參數(shù)選擇大的值,相反地在絕對值的平均小的狀態(tài)下選擇小的k參數(shù)。
在編碼的開始時刻預(yù)先對A[S]、N[S]設(shè)定初始值,通過在編碼處理的過程中隨時更新值,動態(tài)地追蹤各個狀態(tài)的概率分布。
在基于上述JPEG-LS的圖像處理裝置中,每當(dāng)對預(yù)測誤差進行編碼時,執(zhí)行用于確定k參數(shù)的處理。
雖然人們采取了使得不進行除法等減輕處理負荷的措施,但從處理負荷的觀點來看,每次都要進行伴隨不定次數(shù)的判斷的處理不能說是有效率的。
此外,保持預(yù)測誤差的絕對值之和需要有較多的位數(shù),根據(jù)情況A[S]的存儲容量有時會成為問題。
此外,根據(jù)預(yù)測誤差的絕對值的平均來確定編碼參數(shù)k。由此,仍然會有這樣的問題例如在對狀態(tài)分離不充分造成統(tǒng)計性質(zhì)的變化較大的信息源進行編碼的情況下,在發(fā)生了較大的預(yù)測誤差時,對此后要編碼的多個預(yù)測誤差帶來k參數(shù)變大等影響。
發(fā)明內(nèi)容
本發(fā)明正是鑒于上述問題而完成的。并且,根據(jù)本發(fā)明的實施方式,提供如下的技術(shù)在使用動態(tài)概率分布模型的圖像編碼中,能夠簡單地確定編碼參數(shù),并且,實現(xiàn)良好的編碼性能。
本發(fā)明的第1實施方式的圖像編碼裝置具有以下結(jié)構(gòu)。即,一種圖像編碼裝置,包括輸入單元,輸入編碼對象的符號;編碼單元,按照編碼參數(shù)對上述編碼對象的符號進行編碼,生成編碼數(shù)據(jù);判斷單元,判斷上述編碼對象的符號是否超過了上述編碼參數(shù)中的目標(biāo)范圍的上限,以及是否低于該目標(biāo)范圍的下限;以及更新單元,按照上述判斷單元的判斷結(jié)果,進行編碼參數(shù)的更新。
此外,本發(fā)明的第2實施方式的圖像編碼裝置的控制方法具有以下結(jié)構(gòu)。即,一種圖像編碼裝置的控制方法,包括輸入步驟,輸入編碼對象的符號;編碼步驟,按照編碼參數(shù)對上述編碼對象的符號進行編碼,生成編碼數(shù)據(jù);判斷步驟,判斷上述編碼對象的符號是否超過了上述編碼參數(shù)中的目標(biāo)范圍的上限,以及是否低于該目標(biāo)范圍的下限;以及更新步驟,按照上述判斷步驟的判斷結(jié)果,進行編碼參數(shù)的更新。
此外,本發(fā)明的第3實施方式的圖像解碼裝置具有以下結(jié)構(gòu)。即,一種圖像解碼裝置,包括輸入單元,輸入編碼數(shù)據(jù);解碼單元,按照解碼參數(shù)對所輸入的編碼數(shù)據(jù)進行解碼,生成符號;
判斷單元,判斷上述符號是否超過了上述解碼參數(shù)的目標(biāo)范圍的上限,以及是否低于上述目標(biāo)范圍的下限;以及更新單元,按照上述判斷單元的判斷結(jié)果,進行解碼參數(shù)的更新。
此外,本發(fā)明的第4實施方式的圖像解碼裝置的控制方法具有以下結(jié)構(gòu)。即,一種圖像解碼裝置的控制方法,包括輸入步驟,輸入編碼數(shù)據(jù);解碼步驟,按照解碼參數(shù)對所輸入的編碼數(shù)據(jù)進行解碼,生成符號;判斷步驟,判斷上述符號是否超過了上述解碼參數(shù)的目標(biāo)范圍的上限,以及是否低于上述目標(biāo)范圍的下限;以及更新步驟,按照上述判斷步驟的判斷結(jié)果,進行解碼參數(shù)的更新。
此外,本發(fā)明的第5實施方式的圖像編碼裝置具有以下結(jié)構(gòu)。即,一種基于動態(tài)概率分布模型對圖像數(shù)據(jù)進行編碼的圖像編碼裝置,包括輸入單元,按照像素單位輸入圖像數(shù)據(jù);符號生成單元,從由上述輸入單元所輸入的關(guān)注像素數(shù)據(jù),生成成為熵編碼對象的符號;編碼單元,按照所給的編碼參數(shù)對由上述符號生成單元所生成的符號進行編碼,生成編碼數(shù)據(jù);判斷單元,判斷在對成為上述編碼單元編碼對象的符號進行編碼時使用的編碼參數(shù),是在用于使上述編碼對象的符號的代碼字為目標(biāo)代碼長度內(nèi)的編碼參數(shù)可取的范圍內(nèi),還是超過上述范圍的上限,或是低于上述范圍的下限;以及更新單元,根據(jù)上述判斷單元的判斷結(jié)果更新上述編碼參數(shù)。
此外,本發(fā)明的第6實施方式的圖像編碼裝置的控制方法具有以下結(jié)構(gòu)。即,一種基于動態(tài)概率分布模型對圖像數(shù)據(jù)進行編碼的圖像編碼裝置的控制方法,包括輸入步驟,按照像素單位輸入圖像數(shù)據(jù);符號生成步驟,從在上述輸入步驟所輸入的關(guān)注像素數(shù)據(jù),生成成為熵編碼對象的符號;編碼步驟,按照所給的編碼參數(shù)對在上述符號生成步驟所生成的符號進行編碼,生成編碼數(shù)據(jù);判斷步驟,判斷在對成為上述編碼步驟的編碼對象的符號進行編碼時使用的編碼參數(shù),是在用于使上述編碼對象的符號的代碼字為目標(biāo)代碼長度內(nèi)的編碼參數(shù)可取的范圍內(nèi),還是超過上述范圍的上限,或是低于上述范圍的下限;以及更新步驟,根據(jù)上述判斷步驟的判斷結(jié)果更新上述編碼參數(shù)。
此外,本發(fā)明的第7實施方式的圖像解碼裝置具有以下結(jié)構(gòu)。即,一種對基于動態(tài)概率分布模型進行了編碼的圖像數(shù)據(jù)進行解碼的圖像解碼裝置,包括輸入單元,輸入像素單位的編碼數(shù)據(jù);解碼單元,按照所給的解碼參數(shù)對由上述輸入單元所輸入的編碼數(shù)據(jù)進行解碼,生成關(guān)注像素的符號;像素數(shù)據(jù)恢復(fù)單元,從解碼得到的符號恢復(fù)成關(guān)注像素的像素數(shù)據(jù);判斷單元,判斷在對由上述解碼單元得到的符號進行解碼時使用的解碼參數(shù),是在用于將上述符號的代碼字的代碼長度容納于目標(biāo)代碼長度內(nèi)的編碼參數(shù)可取的范圍內(nèi),還是超過上述范圍的上限,或是低于上述范圍的下限;以及更新單元,根據(jù)上述判斷單元的判斷結(jié)果更新上述解碼參數(shù)。
此外,本發(fā)明的第8實施方式的圖像解碼裝置的控制方法具有以下結(jié)構(gòu)。即,
一種對基于動態(tài)概率分布模型進行了編碼的圖像數(shù)據(jù)進行解碼的圖像解碼裝置的控制方法,包括輸入步驟,輸入像素單位的編碼數(shù)據(jù);解碼步驟,按照所給的解碼參數(shù)對在上述輸入步驟所輸入的編碼數(shù)據(jù)進行解碼,生成關(guān)注像素的符號;像素數(shù)據(jù)恢復(fù)步驟,從解碼得到的符號恢復(fù)成關(guān)注像素的像素數(shù)據(jù);判斷步驟,判斷對在上述解碼步驟得到的符號進行解碼時使用的解碼參數(shù),是在用于將上述符號的代碼字的代碼長度容納于目標(biāo)代碼長度內(nèi)的編碼參數(shù)可取的范圍內(nèi),還是超過上述范圍的上限,或是低于上述范圍的下限;以及更新步驟,根據(jù)上述判斷步驟的判斷結(jié)果更新上述解碼參數(shù)。
根據(jù)本發(fā)明,能夠用處理負荷和存儲成本較少的簡單方法確定編碼參數(shù),并且,能夠以良好的壓縮性能對圖像數(shù)據(jù)進行編碼。
通過如下參照附圖的對示例性實施方式的說明,本發(fā)明的其它特征將得以清楚。
附圖包含在說明書中,構(gòu)成其一部分,用于說明本發(fā)明的實施方式,并與說明書的記述一起用于解釋本發(fā)明的原理。
圖1是第1實施方式所涉及的圖像處理裝置的框結(jié)構(gòu)圖。
圖2是表示用于對周圍像素之間的差進行量化的表的圖。
圖3是表示編碼對象像素x與其周圍像素a、b、c的相對位置關(guān)系的圖。
圖4是表示第1實施方式所涉及的編碼處理流程的流程圖。
圖5A是表示Golomb編碼的k參數(shù)和各個符號的代碼長度的關(guān)系的表。
圖5B是表示Golomb編碼的k參數(shù)、各個符號的代碼長度以及修正值的關(guān)系的表。
圖6是表示第1實施方式所涉及的圖像處理裝置中的k參數(shù)變遷的例子的圖。
圖7是表示k=1時使編碼效率最大的概率分布f(n,1)的圖。
圖8A和8B是表示k參數(shù)的變遷概率的圖。
圖9是表示本圖像處理裝置的輸出碼串的結(jié)構(gòu)的圖。
圖10是第2實施方式和第3實施方式所涉及的圖像處理裝置的框結(jié)構(gòu)圖。
圖11是表示第2實施方式中的k參數(shù)更新部1002的處理流程的流程圖。
圖12是表示第3實施方式中的索引值i和參數(shù)k的對應(yīng)關(guān)系的圖。
圖13是表示第3實施方式中的k參數(shù)更新部1002的處理流程的流程圖。
圖14是表示用軟件實現(xiàn)第1~第3實施方式時的信息處理裝置的框結(jié)構(gòu)圖。
圖15是進行在第1實施方式中的解碼的圖像處理裝置的框結(jié)構(gòu)圖。
圖16是表示Golomb編碼的例子的圖。
具體實施例方式
下面,參照附圖按照優(yōu)選實施方式詳細地說明本發(fā)明。
<第1實施方式>
圖1是表示本實施方式所涉及的圖像處理裝置的功能結(jié)構(gòu)的框結(jié)構(gòu)圖。
如圖1所示,本實施方式所涉及的進行圖像編碼的圖像處理裝置具有圖像輸入部101、行緩沖器(line buffer)102、預(yù)測器103、預(yù)測誤差生成部104、預(yù)測順序轉(zhuǎn)換部105、Golomb編碼部106、k參數(shù)更新部107以及碼串形成部108。在圖1中109表示信號線。
以下,參照圖1說明本實施方式所涉及的圖像處理裝置進行的圖像編碼處理。在此,編碼對象圖像,取為各個像素由8位(0~255的范圍)的表示亮度值或者密度值的像素數(shù)據(jù)構(gòu)成的、單色圖像數(shù)據(jù)。但是,本方式也同樣能夠適用于RGB、CMYK等1個像素用多個分量(component)(顏色)表現(xiàn)的彩色圖像、各個分量用8位以上的位精度表現(xiàn)的圖像數(shù)據(jù)。例如,在適用于彩色圖像時,只要分離成每個分量,與單色圖像同樣地對各個分量進行編碼即可。編碼對象圖像,由水平方向W像素、垂直方向G像素構(gòu)成。
接著,說明本實施方式的圖像處理裝置的各部的動作。
圖像輸入部101,輸入編碼對象圖像數(shù)據(jù)的像素數(shù)據(jù)x。該輸入為光柵掃描順序。假定輸入源為圖像掃描儀,但也可以是存儲有圖像數(shù)據(jù)文件的存儲介質(zhì),不管該輸入源的種類如何。
行緩沖器102具有存儲2行圖像數(shù)據(jù)的存儲容量,依次存儲從圖像輸入部101輸入的圖像數(shù)據(jù)。即,行緩沖器102所需要的容量是2×W字節(jié)。行緩沖器102所保持的2行的像素數(shù)據(jù),在編碼開始時刻用預(yù)定的值初始化。作為像素的初始值,只要是可在編碼裝置和解碼裝置中共同設(shè)定的值即可。在此,為了簡化說明,在開始編碼處理時假定用“0”對行緩沖器102進行初始化。
預(yù)測器103,對從圖像輸入部101輸入的像素(以下稱作關(guān)注像素),參照已編碼的周圍像素a、b、c生成預(yù)測值p。關(guān)注像素x與周圍像素a、b、c的相對位置關(guān)系如圖3所示。已編碼的周圍像素a、b、c由行緩沖器102提供。在關(guān)注像素x為行的起始時或者行的最后的像素的情況下,周圍像素a、b、c的任意一個有時會在編碼對象圖像的范圍外。在這樣的情況下,雖然在編碼裝置和解碼裝置中使用共同的值,但在此圖像的范圍外的值取為0。在本實施方式中,預(yù)測值p利用以下的公式求出。
p=min(a,b)(max(a,b)≤c時),或者p=max(a,b)(min(a,b)≥c時),或者p=a+b-c(其它情況下)在生成預(yù)測值時除了上述方法還可以使用各種方法。例如,也可以像可在JPEG標(biāo)準方式的無損失壓縮編碼中使用的7個預(yù)測式那樣,使用其它預(yù)測式。此外,還能夠使用像JPEG-LS標(biāo)準方式那樣,通過使用在已編碼的像素中平均發(fā)生的預(yù)測誤差值修正上述預(yù)測值p,來提高預(yù)測精度的方法。
預(yù)測誤差生成部104,對由預(yù)測器103生成的預(yù)測值p和從圖像輸入部101輸入的關(guān)注像素值x的差“x-p”進行運算,將其結(jié)果作為預(yù)測誤差e輸出。
預(yù)測順序轉(zhuǎn)換部105,利用以下的公式將由預(yù)測誤差生成部104求出的預(yù)測誤差e映射成非負的整數(shù)值M(e)。以下,將M(e)稱作預(yù)測順序。
M(e)=2×e(e≥0時)M(e)=-2×e-1 (e<0時)由此,M(e)成為非負的整數(shù),能夠根據(jù)其是偶數(shù)還是奇數(shù)來辨別預(yù)測誤差e的正負記號(sign)。
Golomb編碼部106,使用在k參數(shù)更新部107內(nèi)部保持的k參數(shù),對從預(yù)測順序轉(zhuǎn)換部105輸出的預(yù)測順序M(e)進行Golomb編碼,輸出2值符號串。
Golomb編碼具有如下特征可將非負的整數(shù)值作為編碼對象,用取決于參數(shù)變量m而不同的多個概率模型進行編碼。此外,由于能夠根據(jù)編碼對象符號和參數(shù)變量m導(dǎo)出代碼字,因而還具有不需要代碼表這樣的優(yōu)點。在以下的說明中,限定于參數(shù)變量m為2^k的Golomb編碼的特殊形式,將k作為參數(shù)變量進行說明。在由ISO和ITU-T作為國際標(biāo)準推薦的JPEG-LS(ISO/IEC 14495-1|ITU-TRecommendation T.87)中,這樣的Golomb編碼的一種形式被用作預(yù)測誤差的編碼方式。
用編碼參數(shù)k對編碼對象的非負的整數(shù)值n進行Golomb編碼的順序如下所述。首先,將n右移k位求出整數(shù)值u。簡單地說,整數(shù)值u是n除以2^k得到的商。
對符號n的代碼,由u個“0”后面的“1”(可變長部)和n的下位k位(固定長部)的組合構(gòu)成。圖16表示k=0,1,2,3時Golomb編碼的例子。
例如,在k=2(因此m=4)、符號n=5時,u=floor(5/4)=1,因此,可變長部成為二進制的“01”。此外,符號n的下位2位成為“01”,因此,k=2時的符號“5”的Golomb代碼字(codeword)成為“0101”,代碼長度為4位。
在此所說的代碼的構(gòu)成方法是一個例子,即使調(diào)換固定長部和可變長部的順序也能夠構(gòu)成可唯一解碼的代碼。此外,也可以使0和1相反地構(gòu)成代碼。
k參數(shù)更新部107,在由Golomb編碼部106對從預(yù)測順序轉(zhuǎn)換部105輸出的預(yù)測順序M(e)進行了編碼后,進行在內(nèi)部保持的k參數(shù)的更新處理。更新處理通過以下方式來進行比較編碼后的預(yù)測順序M(e)的值和用當(dāng)前保持的k參數(shù)能夠得到最小代碼長度的范圍(以下稱作最佳符號范圍),根據(jù)需要將k的值+1或者-1。
圖5A是表示Golomb編碼的各個符號的值(縱軸)、k參數(shù)(橫軸)和二維空間中的代碼長度的表。如圖所示,表示用k=0~5各自的編碼參數(shù)對0~28的編碼對象符號(對應(yīng)于預(yù)測順序M(e))進行編碼時發(fā)生的代碼長度(位數(shù))。
在圖示的表中,分成3個區(qū)域進行顯示。第1個區(qū)域是關(guān)注各個符號,其代碼字的代碼長度為最小(最短)的區(qū)域50。其余的2個區(qū)域是由區(qū)域50隔開的區(qū)域51、52。區(qū)域51,可以說成是用比規(guī)定區(qū)域50的編碼參數(shù)k的值大的編碼參數(shù)k、和不是最小代碼長度的代碼長度定義的區(qū)域。此外,區(qū)域52,可以說成是用比規(guī)定區(qū)域50的編碼參數(shù)k的值小的編碼參數(shù)k、和不是最小代碼長度的代碼長度定義的區(qū)域。
例如,在編碼對象符號為“8”、編碼參數(shù)k=2~4的范圍內(nèi),最小代碼長度為“5”。因此,在符號為“8”時,編碼參數(shù)k=2~4的范圍的代碼長度為“5”的位置,在區(qū)域50內(nèi)。
此外,在編碼對象符號為“8”、編碼參數(shù)k=5時,代碼長度為“6”,不是最小代碼長度“5”。故而,在符號為“8”時,編碼參數(shù)k=5的代碼長度為“6”的位置,在區(qū)域51內(nèi)。
同樣地,在編碼對象符號為“8”、編碼參數(shù)k=0、1時,代碼長度為“9”或“6”,仍然不是最小代碼長度“5”。故而,在符號為“8”時,編碼參數(shù)k=0、1的代碼長度為“9”或“6”的位置,在區(qū)域52內(nèi)。
本實施方式的k參數(shù)更新部107,當(dāng)編碼對象的預(yù)測順序M(e)在區(qū)域51內(nèi)時,在對接下來的像素進行編碼時,判斷為適合更小的k參數(shù),將k的值修正為更小的值。具體地說,準備接下來的像素的編碼,從參數(shù)k減1。
此外,當(dāng)編碼后的預(yù)測順序M(e)在區(qū)域52內(nèi)時,判斷為更大的k參數(shù)合適,將k的值修正為更大的值。具體地說,將k加1進行更新。
并且,當(dāng)編碼后的預(yù)測順序M(e)在區(qū)域50內(nèi)時,判斷為當(dāng)前的k參數(shù)合適,不修正而是維持k的值。
圖示的區(qū)域51、52的邊界能夠根據(jù)參數(shù)k導(dǎo)出。當(dāng)用n表示編碼對象符號的值時,區(qū)域51是滿足“n<2^(k-1)”的關(guān)系的范圍,區(qū)域52是3×2^k≤n的范圍。換言之,不必存儲全部的圖5A的表,只要僅存儲定義區(qū)域50的信息即可。區(qū)域50,只要存儲各個符號的值,并對于每個符號存儲對其進行編碼時成為最小代碼長度的參數(shù)k的下限值和上限值即可。
此外,為了不要該判斷處理,也可以預(yù)先由k參數(shù)更新部107存儲保持圖5B所示的表。圖5B的表,是在圖5A的表中追加為下一次編碼準備的修正值(-1、0、+1)的項目而成的。區(qū)域50內(nèi)的修正值是“0”,區(qū)域51內(nèi)的修正值是“-1”,并且,區(qū)域52內(nèi)的修正值是“+1”。因此,修正值H(=-1、0、+1)可表現(xiàn)為H(n,k),因此,將該值H(n,k)與當(dāng)前的k參數(shù)相加即可更新k參數(shù)。
碼串形成部108,使從Golomb編碼部106輸出的碼串(2值符號串)結(jié)合起來,加上必要的附加信息形成成為本圖像處理裝置的輸出的編碼數(shù)據(jù),從信號線109輸出。如果輸出目的地是存儲裝置,則存儲為文件。
圖9是表示本圖像處理裝置的輸出碼串的結(jié)構(gòu)的圖。在輸出碼串的起始,作為首部添加有對圖像進行解碼所需要的信息,例如圖像的水平方向像素數(shù)、垂直方向像素數(shù)、表示顏色空間的屬性信息、分量數(shù)、各個分量的位數(shù)等附加信息。
圖4是表示基于本實施方式所涉及的圖像處理裝置的編碼對象圖像數(shù)據(jù)的編碼處理流程的流程圖。以下,參照圖4所示的流程圖,說明本實施方式所涉及的圖像處理裝置進行的圖像編碼處理的整體流程。
首先,在編碼處理之前,先進行存儲于行緩沖器102的像素數(shù)據(jù)、和保持于k參數(shù)更新部107的編碼參數(shù)k的初始化。在本實施方式中,將行緩沖器102的像素數(shù)據(jù)全部初始化為0,將k參數(shù)更新部107所保持的k參數(shù)設(shè)定為“2”(步驟S400)。接著,圖像輸入部101,按照光柵掃描順序開始輸入圖像數(shù)據(jù),將所輸入的圖像數(shù)據(jù)的各個像素數(shù)據(jù)存儲到行緩沖器102,并且,提供給預(yù)測誤差生成部104(步驟S401)。
接著,從行緩沖器102讀取關(guān)注像素的周圍像素a、b、c,由預(yù)測器103生成預(yù)測值p(步驟S402)。預(yù)測誤差生成部104,求出關(guān)注像素x和預(yù)測器103生成的預(yù)測值p的差,作為預(yù)測誤差e輸出(步驟S403)。預(yù)測順序轉(zhuǎn)換部105,將該預(yù)測誤差e轉(zhuǎn)換成預(yù)測順序M(e)(步驟S404)。Golomb編碼部106,使用在k參數(shù)更新部107內(nèi)部所保持的k參數(shù),對預(yù)測順序M(e)進行Golomb編碼(步驟S405)。
接著,由k參數(shù)更新部107比較編碼后的預(yù)測順序M(e)和更新前的k參數(shù)時的最佳范圍,根據(jù)需要更新自身所保持的k參數(shù)(步驟S406)。即,判斷用預(yù)測順序M(e)和由Golomb編碼部106使用的k參數(shù)所表示的位置,位于圖5A或者圖5B的區(qū)域50~52的哪個區(qū)域內(nèi),根據(jù)位于哪個區(qū)域更新(修正)將在對接下來的像素進行編碼時使用的k參數(shù)。
接著,判斷編碼后的像素是否為圖像的最后的像素(步驟S407),在為最后的像素時結(jié)束編碼處理,在不是時將處理轉(zhuǎn)移至步驟S401,進行接下來的像素的編碼處理。
根據(jù)以上的處理,進行圖像整體的編碼。編碼處理不必一定按照該順序進行。例如,在此雖然按照像素數(shù)據(jù)的讀取(步驟S401)、預(yù)測值的生成(步驟S402)這樣的順序進行了說明,但也可以將順序調(diào)換。此外,如果能夠正確地交接更新前的k參數(shù),則也可以進行改變Golomb編碼(步驟S405)和k參數(shù)的更新(步驟S406)的順序,或者并行進行這樣的變更。
在此,以對從預(yù)測順序轉(zhuǎn)換部105依次輸出的預(yù)測順序的列“0,0,2,0,0,1,0,3,0…”進行編碼的情況為例,在圖6中表示編碼所使用的k參數(shù)的值、更新處理的內(nèi)容以及更新處理后的k值的推移。
以下,依次說明k參數(shù)的變化。在開始編碼時將k參數(shù)的初始值設(shè)定為“2”,使用該k=2對最初的符號“0”進行Golomb編碼。相對于k=2,符號“0”屬于圖5A的區(qū)域51。因此,從k減1,更新為k=1。
用更新后的k(此時k=1)對第2個符號“0”進行編碼。此時,符號“0”同樣屬于圖5A的區(qū)域51,因此,從k減1,更新為k=0。
接著,用k=0對符號“2”進行編碼。符號“2”位于k=0的最佳符號范圍,因此,k的值沒有變化。以下,同樣對符號串“0,0,1,0”進行編碼,但基于同樣的理由k的值沒有變化。
接著,用k=0對符號“3”進行編碼,由于符號相當(dāng)于區(qū)域52,因此加1更新為k=1。用k=1對接下來的符號“0”進行編碼,由于屬于區(qū)域51,因此減1更新為k=0。這樣,進行編碼和參數(shù)k的更新處理。由該例子可知按照編碼對象符號的局部的性質(zhì)逐步變更k參數(shù)的情況。
當(dāng)要對由本實施方式的圖像處理裝置生成的編碼數(shù)據(jù)進行解碼時,參照在首部所示的附加信息,按照編碼處理的相反順序逐步對各個像素進行解碼即可。此時,在對各個符號進行解碼時,Golomb編碼的k參數(shù)使用在編碼側(cè)和解碼側(cè)相同的值。即,在解碼側(cè)也給予與編碼側(cè)相同的初始值開始解碼,判斷解碼后的符號屬于當(dāng)前的k參數(shù)是否位于最佳符號范圍,根據(jù)需要用與編碼時相同的算法逐步進行更新。
圖15是表示解碼側(cè)的圖像處理裝置的功能結(jié)構(gòu)的框圖。對于與在先說明的圖1共同的框標(biāo)注相同的序號,省略說明。如圖所示,解碼側(cè)的圖像處理裝置具有編碼數(shù)據(jù)輸入部1501、Golomb編碼解碼部1502、預(yù)測順序逆轉(zhuǎn)換部1503、像素值恢復(fù)部1504、首部分析部1505、行緩沖器102、預(yù)測器103以及k參數(shù)更新部107。
以下,說明進行解碼處理的圖像處理裝置的各個處理部的動作。
編碼數(shù)據(jù)輸入部1501,輸入成為解碼對象的編碼數(shù)據(jù)。此時,編碼數(shù)據(jù)輸入部1501,進行編碼數(shù)據(jù)的構(gòu)造分析,向首部分析部1505傳送首部,向Golomb編碼解碼部1502傳送像素編碼數(shù)據(jù)。
首部分析部1505,分析從編碼數(shù)據(jù)輸入部1501傳送的首部,取出編碼后的圖像數(shù)據(jù)的水平、垂直方向像素數(shù)等解碼處理所需要的信息,使之反映到圖像處理裝置的控制。
Golomb編碼解碼部1502,取得k參數(shù)更新部107所保持的k參數(shù),使用它恢復(fù)到預(yù)測順序M(e)。
k參數(shù)更新部107,采用與在先說明的編碼時的更新處理相同的方法,基于解碼后的預(yù)測順序M(e)根據(jù)需要更新k參數(shù)。
預(yù)測順序逆轉(zhuǎn)換部1503,根據(jù)由Golomb編碼解碼部1502解碼后的預(yù)測順序M(e)利用以下的公式恢復(fù)預(yù)測誤差e。
e=M(e)/2(M(e)為偶數(shù)時)e=-(M(e)+1)/2 (M(e)為奇數(shù)時)像素值恢復(fù)部1504,根據(jù)由預(yù)測順序逆轉(zhuǎn)換部1503恢復(fù)的預(yù)測誤差e和由預(yù)測器103生成的預(yù)測值p,通過e+p恢復(fù)關(guān)注像素值x進行輸出。解碼后的像素值x被存儲到行緩沖器102,在生成以下的像素的預(yù)測值時使用。
通過反復(fù)進行從Golomb編碼解碼部1502到像素值恢復(fù)部1504的處理,根據(jù)編碼數(shù)據(jù)進行圖像數(shù)據(jù)的解碼,直到構(gòu)成圖像的全部像素被解碼為止。
如以上說明的那樣,在本實施方式所涉及的圖像處理裝置中,判斷編碼后的符號或者解碼后的符號是否位于當(dāng)前的k參數(shù)中的最佳符號范圍內(nèi),當(dāng)不在最佳符號范圍內(nèi)時通過+1或者-1進行更新,進行控制使之成為合適的k參數(shù)。由此,即使是局部的統(tǒng)計性質(zhì)不同的圖像數(shù)據(jù),也能夠追蹤性質(zhì)的變化高效率地進行編碼。
<第1實施方式的變形例>
也可以由個人計算機等通用信息處理裝置和在其上運行的計算機程序來實現(xiàn)上述實施方式。
圖14是表示本變形例所涉及的信息處理裝置的基本結(jié)構(gòu)的圖。在圖14中,1401是CPU,使用存儲于RAM1402或ROM1403的程序或數(shù)據(jù)控制本裝置整體,并且,執(zhí)行后述的圖像編碼處理。
1402是RAM,具有用于存儲經(jīng)由外部存儲裝置1407、存儲介質(zhì)驅(qū)動器1408、或者I/F1409從外部裝置下載的程序或數(shù)據(jù)的區(qū)域,并且,還具有CPU1401在執(zhí)行各種處理時使用的工作區(qū)域。
1403是ROM,存儲引導(dǎo)程序、本裝置的設(shè)定程序和數(shù)據(jù)。
1404、1405分別是鍵盤、鼠標(biāo)等定點設(shè)備,能夠?qū)PU1401輸入各種指示。
1406是顯示裝置,由CRT或液晶畫面等構(gòu)成,能夠顯示圖像、文字等信息。
1407是外部存儲裝置,是硬盤驅(qū)動裝置等大容量信息存儲裝置,其中保存有OS、后述的用于圖像編碼、解碼處理的應(yīng)用程序、編碼對象的圖像數(shù)據(jù)等。OS和應(yīng)用程序,通過CPU1401的控制,加載到RAM1402上的預(yù)定區(qū)域,從而被執(zhí)行。
1408是存儲介質(zhì)驅(qū)動器,用于讀取存儲于CD-ROM、DVD-ROM等存儲介質(zhì)的程序或數(shù)據(jù),輸出到RAM1402或外部存儲裝置1407。也可以預(yù)先在該存儲介質(zhì)中記錄后述的用于圖像編碼處理的程序、編碼對象圖像。在這樣的情況下,存儲介質(zhì)驅(qū)動器1408,通過CPU1401的控制,將這些程序或數(shù)據(jù)加載到RAM1402上的預(yù)定區(qū)域。
1409是I/F,通過該I/F1409將外部裝置連接到本裝置,從而能夠在本裝置與外部裝置之間進行數(shù)據(jù)通信。例如能夠經(jīng)由I/F1409將成為編碼對象的圖像數(shù)據(jù)輸入到本裝置的RAM1402或外部存儲裝置1407,或者相反地,將所生成的圖像編碼數(shù)據(jù)從本裝置的RAM1402或外部存儲裝置1407輸出到裝置外部。1410是連接上述各部的總線。
在進行圖像編碼處理時,將對應(yīng)的程序從外部存儲裝置1407加載到RAM1402,由CPU1401執(zhí)行該處理。該編碼處理的程序,基本上按照圖4的流程圖進行處理即可。此外,該程序由相當(dāng)于圖1所示的各個結(jié)構(gòu)的模塊(也可以稱作函數(shù)、子程序)構(gòu)成即可。不過,行緩沖器102將會在RAM1402確保相應(yīng)容量的數(shù)據(jù)區(qū)域。
此外,解碼處理所涉及的程序,無疑也可以由圖15所示的模塊構(gòu)成。
<第2實施方式>
接著,說明第2實施方式。在第1實施方式的圖像處理裝置中,每當(dāng)編碼對象的符號在最佳符號范圍外時,通過增減編碼參數(shù)k來進行修正。在這樣的情況下,具有能夠迅速應(yīng)對信息源的統(tǒng)計性質(zhì)變化的優(yōu)點,但在性質(zhì)變化較少的信息源中穩(wěn)定性將成為問題。
例如,考慮在各自的k參數(shù)中編碼效率最大的概率分布f(n,k)=(1/2)^L(n,k)。L(n,k)是用編碼參數(shù)k對編碼對象符號n進行Golomb編碼時的代碼長度,由L(n,k)=k+1+floor(n/(2^k))給出。x^y表示x的y次冪,floor(x)表示返回不超過x的最大整數(shù)的函數(shù)。
圖7表示k=1時的概率分布f(n,1)。
對于概率分布f(n,k),研究屬于圖5A所示的區(qū)域52的任意一個符號出現(xiàn)的概率,即在某個k時屬于區(qū)域52的符號的出現(xiàn)概率的和時,可知在任何k參數(shù)時均為12.5%。
當(dāng)同樣地觀察區(qū)域51時,除了k=0時,區(qū)域51的符號的出現(xiàn)概率為25%。即,表示即使用某個k參數(shù)(k≠0)對其理想的概率分布的信息源f(n,k)進行了編碼時,k參數(shù)仍以37.5%(=12.5%+25%)的概率變化。
圖8A表示k=0時對具有f(n,k)的概率分布的信息源的符號進行編碼所引起的k參數(shù)的變遷;圖8B表示k>0時對具有f(n,k)的概率分布的信息源的符號進行編碼所引起的k參數(shù)的變遷。
在此,作為本發(fā)明的第2實施方式,說明抑制k參數(shù)的變動,提高穩(wěn)定性的方法。
圖10是表示本第2實施方式所涉及的圖像處理裝置的功能結(jié)構(gòu)的框圖。對于與在第1實施方式中說明的圖1共同的框標(biāo)注相同的序號,省略說明。
本第2實施方式所涉及的圖像處理裝置具有圖像輸入部101、行緩沖器102、預(yù)測器103、預(yù)測誤差生成部104、預(yù)測順序轉(zhuǎn)換部105、Golomb編碼部106、前后關(guān)系生成部1001、k參數(shù)更新部1002以及碼串形成部108。此外,在圖10中109表示信號線。
本第2實施方式所涉及的圖像處理裝置的基本結(jié)構(gòu),也可以由專用的硬件來構(gòu)成各自的功能。此外,也可以與在先說明的第1實施方式的變形例同樣地取為圖14所示的結(jié)構(gòu),通過使計算機實現(xiàn)圖10所示的各部的功能的程序來實現(xiàn)。在為后者的情況下,該程序經(jīng)由上述外部存儲裝置1407、存儲介質(zhì)驅(qū)動器1408或者I/F1409從外部裝置加載到RAM1402,由CPU1401執(zhí)行。
以下,使用圖10說明本第2實施方式所涉及的圖像處理裝置進行的處理。
本第2實施方式所涉及的圖像處理裝置的作為編碼對象的圖像數(shù)據(jù),與第1實施方式相同,作為各個像素用8位表現(xiàn)0~255范圍的亮度值的單色圖像數(shù)據(jù)進行說明。不過,還能夠適用于RGB、CMYK彩色圖像等由多個分量構(gòu)成的圖像數(shù)據(jù)。此外,編碼對象的圖像數(shù)據(jù),按照光柵掃描順序排列各個像素的值而構(gòu)成。圖像由水平方向W像素、垂直方向H像素構(gòu)成。
在本第2實施方式的圖像處理裝置中,也與第1實施方式的圖像處理裝置相同,圖像輸入部101輸入成為編碼對象的像素數(shù)據(jù)x,將該像素數(shù)據(jù)x存儲到行緩沖器102。由在先說明的預(yù)測器103、預(yù)測誤差生成部104、預(yù)測順序轉(zhuǎn)換部105,生成成為熵編碼對象的非負的整數(shù)值M(e)。
另一方面,在前后關(guān)系生成部1001中,從行緩沖器102讀取關(guān)注像素x的周圍像素a、b、c、d,生成表示關(guān)注像素周圍的狀態(tài)的前后關(guān)系。在本實施方式中,采用與JPEG-LS相類似的方法,分離成狀態(tài)序號S為0~728的729種的狀態(tài)。
如在現(xiàn)有技術(shù)的說明部分中說明的那樣,對于周圍像素a、b、c、d,分別按照圖2的表對a和b、b和c、c和d的差進行量化,得到Q1、Q2、Q3。生成唯一地表示該組合的狀態(tài)序號S。在本第2實施方式中利用以下的公式確定狀態(tài)序號S。
S=81×Q1+9×Q2+Q3+364與JPEG-LS相同地,可以合并狀態(tài)(Q1,Q2,Q3)和狀態(tài)(-Q1,-Q2,-Q3)縮減至365個狀態(tài),也可以參照a、b、c、d以外的周圍像素生成前后關(guān)系。
在k參數(shù)更新部1002內(nèi)部,保持存儲對應(yīng)于各個狀態(tài)S的k參數(shù)的陣列K[S],和在后述的更新處理中參照的標(biāo)記陣列F[S]。在開始編碼時,陣列K[S](S=0,1,2,…)被設(shè)定為初始值(在本實施方式中為2),將標(biāo)記陣列F[S](S=0,1,2,…)初始化為“0”。
圖11是表示對關(guān)注像素x進行編碼時k參數(shù)更新部1002的處理流程的流程圖。使用圖11說明在各個像素中進行的k參數(shù)更新部1002的處理流程。
首先,k參數(shù)更新部1002,取得從前后關(guān)系生成部1001輸出的狀態(tài)序號S和從預(yù)測順序轉(zhuǎn)換部105輸出的預(yù)測順序M(e)(步驟S1101)。接著,k參數(shù)更新部1002,利用陣列元素K[S]取得對應(yīng)于所輸入的狀態(tài)序號S的k參數(shù),將其輸出到Golomb編碼部106(步驟S1102)。由此,Golomb編碼部106,進行預(yù)測順序M(e)的編碼。
接著,判斷用當(dāng)前的k參數(shù)的值、即K[S]和作為符號的預(yù)測順序M(e)表示的位置(K[S],M(e))是否在區(qū)域51內(nèi)(步驟S1103)。
換言之,就是判斷當(dāng)前的k參數(shù)的值,是否超過了成為預(yù)測順序M(e)的最小代碼長度的k參數(shù)的上限值。
當(dāng)判斷為位置(K[S],M(e))在區(qū)域51內(nèi)時,將處理前進至步驟S1107,判斷標(biāo)記陣列的元素F[S]是否為“1”。在判斷為不是“1”時,對標(biāo)記陣列元素F[S]設(shè)定“1”(步驟S1110)。此外,當(dāng)在步驟S1107中判斷為標(biāo)記陣列的元素F[S]是“1”時,從K[S]減“1”進行更新(步驟S1108),對標(biāo)記陣列的元素F[S]設(shè)定“0”(步驟S1109)。
當(dāng)在步驟S1103中判斷為位置(K[S],M(e))不屬于區(qū)域51時,前進至步驟S1104,判斷位置(K[S],M(e))是否在區(qū)域52內(nèi)。
換言之,就是判斷當(dāng)前的k參數(shù)的值,是否低于成為預(yù)測順序M(e)的最小代碼長度的k參數(shù)的下限值。
當(dāng)判斷為位置(K[S],M(e))在區(qū)域52內(nèi)時,對K[S]加“1”進行更新,對F[S]設(shè)定“0”(步驟S1106)。
此外,當(dāng)在步驟S1104中判斷為位置(K[S],M(e))不屬于區(qū)域52時,即,判斷為位置(K[S],M(e))位于區(qū)域50內(nèi)時,判斷為當(dāng)前的編碼處理狀態(tài)處于最佳符號范圍,不進行k參數(shù)的更新。
此后,更新后的K[S]適用于關(guān)注像素以后的、為相同狀態(tài)序號S的像素的編碼。
總結(jié)以上內(nèi)容,在本第2實施方式中,當(dāng)位置(K[S],M(e))位于區(qū)域52內(nèi)時,與第1實施方式相同地直接對k參數(shù)加1進行更新。但是,使用標(biāo)記F[S],將當(dāng)位置(K[S],M(e))位于區(qū)域51內(nèi)時減1進行更新的處理取1/2的頻率。
在此,再次考慮用某個k參數(shù)對在本實施方式的說明的開始所述的概率分布f(n,k)的信息源進行編碼的情況,在本實施方式中,考慮發(fā)生增大k的方向的更新的概率為12.5%,發(fā)生減小k的方向的更新的概率為12.5%以下,因此,不進行k參數(shù)變遷的概率為75%以上。
因此,能夠減小k參數(shù)更新中、增加方向和減少方向的概率偏差,并且,減少不需要的k參數(shù)變動的發(fā)生概率。
與第1實施方式相同地,Golomb編碼部106,使用從k參數(shù)更新部107輸出的k參數(shù),對預(yù)測順序M(e)進行編碼,由碼串形成部108進行合并,作為對編碼對象的圖像數(shù)據(jù)的碼串,由碼串形成部108生成的最終碼串通過信號線109被輸出到裝置外部。
基于本第2實施方式所涉及的圖像處理裝置的編碼對象圖像數(shù)據(jù)的編碼處理流程,僅對圖4所示的第1實施方式的圖像處理裝置的流程圖實施了細微的改動。具體而言,在從步驟S401到步驟S404的處理時序由前后關(guān)系生成部1001進行前后關(guān)系生成處理。例如,在步驟S401讀取關(guān)注像素數(shù)據(jù)和在步驟S402生成預(yù)測值之間,實施該前后關(guān)系生成處理。
對由本第2實施方式的圖像處理裝置所生成的編碼數(shù)據(jù)進行解碼,只要參照首部所示的附加信息按照編碼處理的相反順序?qū)Ω鱾€像素進行解碼即可。
此時,在各個符號的解碼中,Golomb編碼的k參數(shù)使用在編碼側(cè)和解碼側(cè)相同的值。
即,在解碼側(cè)也給出與編碼側(cè)相同的初始值開始解碼,判斷解碼后的符號相對于當(dāng)前的k參數(shù)是否位于最佳符號范圍,根據(jù)需要采用與編碼時相同的算法預(yù)先更新即可。
像以上說明的那樣,在本第2實施方式所涉及的圖像處理裝置中,能夠采用簡單的方法進行追蹤信息源性質(zhì)的編碼。此外,能夠通過調(diào)整參數(shù)變遷的頻率,減少相對于統(tǒng)計性質(zhì)變化較少的信息源無用的參數(shù)變遷。
<第3實施方式>
在上述第2實施方式中,示出了在發(fā)生2次區(qū)域51的符號時減少k參數(shù)的方法,但也可以根據(jù)k參數(shù)改變實施更新的發(fā)生次數(shù)。將其例子作為第3實施方式進行說明。
本第3實施方式的圖像處理裝置的框圖,與在第2實施方式說明的圖10相同,僅k參數(shù)更新部1002的處理不同。以下,說明本第3實施方式中的k參數(shù)更新部1002的處理。
本第3實施方式的k參數(shù)更新部1002,保持圖12所示的索引值i和參數(shù)k的對應(yīng)表,以及對由前后關(guān)系生成部1001分類的365個狀態(tài)序號S存儲索引值i的陣列I[S]。陣列I[S]的所有元素在開始編碼的時刻被設(shè)定為初始值(在此為4)。即,不管狀態(tài)序號S如何,初始狀態(tài)的參數(shù)k都為“2”。更清楚地說,如果用陣列K[i]表現(xiàn)基于索引i的k參數(shù),則可表記為K[i]=K[I[S]]。
圖13是表示對關(guān)注像素x進行編碼時k參數(shù)更新部1002的處理流程的流程圖。使用圖13說明在各個像素中進行的k參數(shù)更新部1002的處理流程。
k參數(shù)更新部1002,取得從前后關(guān)系生成部1001輸出的狀態(tài)序號S和從預(yù)測順序轉(zhuǎn)換部105輸出的預(yù)測順序M(e)(步驟S1301)。取出所輸入的狀態(tài)序號S的索引值陣列的元素I[S],將參照圖12的對應(yīng)表與之對應(yīng)得k參數(shù)的值輸出到Golomb編碼部106(步驟S1102)。例如,如果對于某個狀態(tài)序號S,I[S]的值為5,則參照對應(yīng)表k參數(shù)為K[I[S]]=K“5”,因此,作為k參數(shù)將“3”輸出到Golomb編碼部106。由此,Golomb編碼部106,進行對應(yīng)于關(guān)注像素x的預(yù)測順序M(e)的編碼。
接著,判斷用當(dāng)前的k參數(shù)和預(yù)測順序M(e)表示的位置是否在區(qū)域51內(nèi)(步驟S1303)。當(dāng)判斷為該位置屬于區(qū)域51內(nèi)時,將處理移至步驟S1308,當(dāng)不屬于時,移至步驟S1304。
當(dāng)屬于區(qū)域51時,檢查陣列元素I[S]是否為0(步驟S1308),在不是0時從I[S]的值中減1進行更新(步驟S1309)。此外,當(dāng)陣列元素I[S]為0時,不進行上述減法。
當(dāng)在步驟S1303中判斷為用參數(shù)k和M(e)表示的位置在區(qū)域51以外時,判斷該位置是否在區(qū)域52之內(nèi)(步驟S1304)。
當(dāng)判斷為在區(qū)域52內(nèi)時,使I[S]的值與“2”相加進行更新(步驟S1305)。此外,檢查I[S]是否超過了預(yù)先確定的索引的最大值(在本實施方式中為23)(步驟S1306),在超過了時將I[S]設(shè)定為最大值(步驟S1307)。
此外,當(dāng)在步驟S1304中判斷為用參數(shù)k和M(e)表示的位置不屬于區(qū)域52時,表示該位置位于區(qū)域50內(nèi)。即,判斷為處于最佳符號范圍,不進行索引I[S]的更新。更新后的I[S],在對關(guān)注像素以后的成為相同狀態(tài)序號S的像素進行編碼時使用。
由上述處理可知,在本第3實施方式中示出了在k參數(shù)小的部分索引I[S]和k參數(shù)的變遷迅速進行、在k參數(shù)大的部分變遷變得緩慢的例子。
不僅能夠通過直接增減k參數(shù)進行更新,還能夠通過像本第3實施方式那樣導(dǎo)入索引值間接地控制k參數(shù),符合編碼對象的信息源的動態(tài)特性地,更自由地設(shè)計編碼系統(tǒng)。
<其他變形例>
本發(fā)明不限于上述實施方式。例如,雖然示出了作為預(yù)測誤差的生成方法采用與JPEG-LS相同的方法,適當(dāng)?shù)厍袚Qa、b、a+b-c這三種預(yù)測式的例子,但也可以使用(a+b)/2等除此以外的預(yù)測式。并且,只要是從已編碼的區(qū)域生成預(yù)測值的方法即可,例如,也可以采用如下方法在由多個幀構(gòu)成的動圖像中,將存在于在編碼完成之前的上一幀中與關(guān)注像素相同的空間位置的像素值作為預(yù)測值。
此外,如在JPEG-LS所采用的那樣,也可以參照已編碼的預(yù)測誤差修正預(yù)測值來提高預(yù)測精度。
此外,也可以預(yù)測預(yù)測誤差的符號再進行符號翻轉(zhuǎn),或者與通過模轉(zhuǎn)換去除動態(tài)范圍這樣的效率改善的研究組合起來使用。
此外,在第1~第3實施方式中,示出了以代碼長度最小的范圍為基準判斷k參數(shù)的更新的結(jié)構(gòu)。例如,在k=2的情況下,在編碼對象的符號(在實施方式中為M(e))為2~11時作為最佳符號范圍不進行參數(shù)更新,在為0或者1時在減小k的方向進行更新,在為12以上時在增大k的方向進行更新。
但是,例如也可以進行將到最小代碼長度+1認為是適當(dāng)?shù)姆秶龋狗秶儗捇蛘咦冋男拚?br>
如果k=2時將到最小代碼長度+1認為是適當(dāng)范圍,則在符號的值為1~15時不進行參數(shù)更新,參數(shù)穩(wěn)定性提高。但是,在這樣的情況下,由于不從k=1變遷成k=0,因此,需要在k=1時不適用范圍擴大等的例外處理。
此外,在上述實施方式中,示出了作為熵編碼使用參數(shù)變量m=2^k的Golomb編碼的例子,但不限于此。也可以使用不為2^k的m來適用本方法。并且,還能夠適用Exponential-Golomb編碼等Golomb編碼的派生形式。
此外,在實施方式中,特別地以進行編碼/解碼的圖像處理裝置為例進行了說明,但也可以適用于進行圖像的編碼或解碼的裝置,例如復(fù)印機、打印機、讀取器等裝置。此外,如在先說明的那樣,本實施方式的功能,也可以通過計算機讀取、執(zhí)行的計算機程序來實現(xiàn),因此,計算機程序顯然也屬于本發(fā)明的范疇。此外,通常計算機程序被存儲于CD-ROM等計算機可讀存儲介質(zhì),將其設(shè)置為計算機的讀入裝置(CD-ROM驅(qū)動器等),可通過復(fù)制或安裝到系統(tǒng)中來執(zhí)行之。由此,這樣的計算機可讀存儲介質(zhì)顯然也屬于本發(fā)明的范疇。
盡管參照示例性實施方式描述了本發(fā)明,但是應(yīng)當(dāng)理解為本發(fā)明不限于所公開的示例性實施方式。將按照最寬的范圍來解釋后附的權(quán)利要求的范圍,以便概括所有這些修改和等同的結(jié)構(gòu)和功能。
權(quán)利要求
1.一種圖像編碼裝置,包括輸入單元,輸入編碼對象的符號;編碼單元,按照編碼參數(shù)對上述編碼對象的符號進行編碼,生成編碼數(shù)據(jù);判斷單元,判斷上述編碼對象的符號是否超過了上述編碼參數(shù)的目標(biāo)范圍的上限,以及是否低于該目標(biāo)范圍的下限;以及更新單元,按照上述判斷單元的判斷結(jié)果,進行編碼參數(shù)的更新。
2.一種圖像編碼裝置的控制方法,包括輸入步驟,輸入編碼對象的符號;編碼步驟,按照編碼參數(shù)對上述編碼對象的符號進行編碼,生成編碼數(shù)據(jù);判斷步驟,判斷上述編碼對象的符號是否超過了上述編碼參數(shù)中的目標(biāo)范圍的上限,以及是否低于該目標(biāo)范圍的下限;以及更新步驟,按照上述判斷步驟的判斷結(jié)果,進行編碼參數(shù)的更新。
3.一種圖像解碼裝置,包括輸入單元,輸入編碼數(shù)據(jù);解碼單元,按照解碼參數(shù)對所輸入的編碼數(shù)據(jù)進行解碼,生成符號;判斷單元,判斷上述符號是否超過了上述解碼參數(shù)的目標(biāo)范圍的上限,以及是否低于上述目標(biāo)范圍的下限;以及更新單元,按照上述判斷單元的判斷結(jié)果,進行解碼參數(shù)的更新。
4.一種圖像解碼裝置的控制方法,包括輸入步驟,輸入編碼數(shù)據(jù);解碼步驟,按照解碼參數(shù)對所輸入的編碼數(shù)據(jù)進行解碼,生成符號;判斷步驟,判斷上述符號是否超過了上述解碼參數(shù)的目標(biāo)范圍的上限,以及是否低于上述目標(biāo)范圍的下限;以及更新步驟,按照上述判斷步驟的判斷結(jié)果,進行解碼參數(shù)的更新。
5.一種基于動態(tài)概率分布模型對圖像數(shù)據(jù)進行編碼的圖像編碼裝置,包括輸入單元,以像素單位輸入圖像數(shù)據(jù);符號生成單元,從由上述輸入單元所輸入的關(guān)注像素數(shù)據(jù),生成成為熵編碼對象的符號;編碼單元,按照所給的編碼參數(shù)對由上述符號生成單元所生成的符號進行編碼,生成編碼數(shù)據(jù);判斷單元,判斷在對成為上述編碼單元的編碼對象的符號進行編碼時使用的編碼參數(shù),是在用于使上述編碼對象的符號的代碼字為目標(biāo)代碼長度內(nèi)的編碼參數(shù)可取范圍內(nèi),還是超過上述范圍的上限,或是低于上述范圍的下限;以及更新單元,根據(jù)上述判斷單元的判斷結(jié)果更新上述編碼參數(shù)。
6.根據(jù)權(quán)利要求5所述的圖像編碼裝置,上述編碼單元是Golomb編碼單元。
7.根據(jù)權(quán)利要求5所述的圖像編碼裝置,上述符號生成單元包括預(yù)測值計算單元,根據(jù)位于關(guān)注像素數(shù)據(jù)的周圍、已經(jīng)編碼的至少1個像素數(shù)據(jù),計算關(guān)注像素數(shù)據(jù)的預(yù)測值;預(yù)測誤差計算單元,計算作為被計算出的預(yù)測值和關(guān)注像素數(shù)據(jù)的差的預(yù)測誤差;以及轉(zhuǎn)換單元,將所計算出的預(yù)測誤差的正負記號轉(zhuǎn)換成可判斷的非負的整數(shù)值;上述符號生成單元,生成由上述轉(zhuǎn)換單元轉(zhuǎn)換而成的非負的整數(shù)值,作為上述符號。
8.根據(jù)權(quán)利要求5所述的圖像編碼裝置,當(dāng)將由上述編碼單元對上述符號進行編碼時使用的編碼參數(shù)定義為K、將使上述符號的代碼長度為目標(biāo)代碼長度的編碼參數(shù)的范圍的下限和上限定義為K Smin和K Smax時,上述更新單元,在處于K<K Smin的關(guān)系時,使編碼參數(shù)K增大,在處于K Smax<K的關(guān)系時,使編碼參數(shù)K減小,在處于K Smin≤K≤K Smax的關(guān)系時,維持編碼參數(shù)K的值。
9.根據(jù)權(quán)利要求5所述的圖像編碼裝置,還包括狀態(tài)信息計算單元,根據(jù)已經(jīng)編碼的、位于關(guān)注像素X周圍的像素數(shù)據(jù),計算關(guān)注像素位置的狀態(tài)信息S;以及編碼參數(shù)存儲單元,存儲上述狀態(tài)信息S可取的范圍的編碼參數(shù)陣列K[];上述編碼單元,按照由關(guān)注像素數(shù)據(jù)的狀態(tài)信息S確定的編碼參數(shù)K[S]進行編碼;上述更新單元,更新編碼參數(shù)K[S]。
10.根據(jù)權(quán)利要求9所述的圖像編碼裝置,當(dāng)將由上述編碼單元對上述符號進行編碼時使用的編碼參數(shù)定義為K[S]、將上述符號的代碼長度為目標(biāo)代碼長度的編碼參數(shù)的范圍的下限和上限定義為K Smin和K Smax時,上述更新單元,在處于K[S]<K Smin的關(guān)系時,使編碼參數(shù)K[S]增大,在處于K Smax<K[S]的關(guān)系時,以小于1的概率使編碼參數(shù)K[S]減小,在處于K Smin≤K[S]≤K Smax的關(guān)系時,維持編碼參數(shù)K[S]的值。
11.根據(jù)權(quán)利要求5所述的圖像編碼裝置,還包括狀態(tài)信息計算單元,根據(jù)已經(jīng)編碼的、位于關(guān)注像素X周圍的像素數(shù)據(jù),計算關(guān)注像素位置的狀態(tài)信息S;索引存儲單元,存儲由上述狀態(tài)信息計算單元計算出的狀態(tài)信息S可取的范圍的索引陣列i[];以及編碼參數(shù)存儲單元,存儲上述索引陣列i[]可取的范圍的編碼參數(shù)陣列K[i];上述編碼單元,按照由關(guān)注像素數(shù)據(jù)的狀態(tài)信息S確定的編碼參數(shù)K[i[S]]進行編碼;上述更新單元,更新編碼參數(shù)K[i[S]]。
12.根據(jù)權(quán)利要求11所述的圖像編碼裝置,當(dāng)將由上述編碼單元對上述符號進行編碼時使用的編碼參數(shù)定義為K、將上述符號的代碼長度為目標(biāo)代碼長度的編碼參數(shù)的范圍的下限和上限定義為K Smin和K Smax時,上述更新單元,在處于K[i[S]]<K Smin的關(guān)系時,使編碼參數(shù)K[i[S]]增大預(yù)先設(shè)定的修正值α,在處于K Smax<K[i[S]]的關(guān)系時,使編碼參數(shù)K[i[S]]減小比上述修正值α小的修正值β,在處于K Smin≤K[i[S]]≤K Smax的關(guān)系時,維持編碼參數(shù)K[i[S]]的值。
13.一種基于動態(tài)概率分布模型對圖像數(shù)據(jù)進行編碼的圖像編碼裝置的控制方法,包括輸入步驟,按照像素單位輸入圖像數(shù)據(jù);符號生成步驟,從在上述輸入步驟所輸入的關(guān)注像素數(shù)據(jù),生成成為熵編碼對象的符號;編碼步驟,按照所給的編碼參數(shù)對在上述符號生成步驟所生成的符號進行編碼,生成編碼數(shù)據(jù);判斷步驟,判斷在對成為上述編碼步驟的編碼對象的符號進行編碼時使用的編碼參數(shù),是在用于使上述編碼對象的符號的代碼字為目標(biāo)代碼長度內(nèi)的編碼參數(shù)可取的范圍內(nèi),還是超過上述范圍的上限,或是低于上述范圍的下限;以及更新步驟,根據(jù)上述判斷步驟的判斷結(jié)果更新上述編碼參數(shù)。
14.一種對基于動態(tài)概率分布模型進行了編碼的圖像數(shù)據(jù)進行解碼的圖像解碼裝置,包括輸入單元,輸入像素單位的編碼數(shù)據(jù);解碼單元,按照所給的解碼參數(shù)對由上述輸入單元所輸入的編碼數(shù)據(jù)進行解碼,生成關(guān)注像素的符號;像素數(shù)據(jù)恢復(fù)單元,從解碼得到的符號恢復(fù)成關(guān)注像素的像素數(shù)據(jù);判斷單元,判斷在對由上述解碼單元得到的符號進行解碼時使用的解碼參數(shù),是在用于將上述符號的代碼字的代碼長度容納于目標(biāo)代碼長度內(nèi)的編碼參數(shù)可取的范圍內(nèi),還是超過上述范圍的上限,或是低于上述范圍的下限;以及更新單元,根據(jù)上述判斷單元的判斷結(jié)果更新上述解碼參數(shù)。
15.一種對基于動態(tài)概率分布模型進行了編碼的圖像數(shù)據(jù)進行解碼的圖像解碼裝置的控制方法,包括輸入步驟,輸入像素單位的編碼數(shù)據(jù);解碼步驟,按照所給的解碼參數(shù)對在上述輸入步驟所輸入的編碼數(shù)據(jù)進行解碼,生成關(guān)注像素的符號;像素數(shù)據(jù)恢復(fù)步驟,從解碼得到的符號恢復(fù)成關(guān)注像素的像素數(shù)據(jù);判斷步驟,判斷對在上述解碼步驟得到的符號進行解碼時使用的解碼參數(shù),是在用于將上述符號的代碼字的代碼長度容納于目標(biāo)代碼長度內(nèi)的編碼參數(shù)可取的范圍內(nèi),還是超過上述范圍的上限,或是低于上述范圍的下限;以及更新步驟,根據(jù)上述判斷步驟的判斷結(jié)果更新上述解碼參數(shù)。
全文摘要
本發(fā)明提供一種圖像編碼裝置、圖像解碼裝置及它們的控制方法,能夠用處理負荷和存儲成本較少的簡單方法確定編碼參數(shù),并且,能夠以良好的壓縮性能對圖像數(shù)據(jù)進行編碼。為此,本發(fā)明的編碼裝置的預(yù)測誤差生成部,計算關(guān)注像素和預(yù)測值的差(預(yù)測誤差)。預(yù)測順序轉(zhuǎn)換部將預(yù)測誤差轉(zhuǎn)換成非負的整數(shù),將其作為預(yù)測順序M(e)輸出。Golomb編碼部,按照從k參數(shù)更新部提供的k參數(shù)進行編碼。k參數(shù)更新部,根據(jù)關(guān)注像素的預(yù)測順序M(e)和提供給Golomb編碼部的k參數(shù),更新用于接下來的編碼的k參數(shù)。
文檔編號H04N1/41GK101039422SQ20071008836
公開日2007年9月19日 申請日期2007年3月16日 優(yōu)先權(quán)日2006年3月17日
發(fā)明者梶原浩 申請人:佳能株式會社