以下、本発明の実施形態について図面を参照しながら説明する。なお、以下の各実施形態や各変形例の説明において、一度説明した構成要素と同様の機能を有する構成要素については、同一の符号を付して説明を省略する。
<実施の形態1>
図1は、本発明の実施の形態1に係る画像符号化装置100と画像復号化装置110の構成を示すブロック図である。
(画像符号化装置における符号化処理)
まず、図1および図2、図3を参照し、画像符号化装置100が行なう画像を符号化するための処理(以下、画像符号化処理という)について説明する。
図2は、画像符号化処理のフローチャートである。図3は、画像符号化処理において行なわれる余剰ビットカウンタ更新処理のフローチャートである。
画像符号化装置100は、画素データ受信部101と、予測値算出部102と、差分算出部103と、量子化処理部108と、パッキング部106とを備える。
画素データ受信部101は、後述する撮像素子1312から、画素データを、順次、受信する。画素データ受信部101は、図示しないバッファを有する。バッファは、少なくとも1つの画素データを記憶可能なメモリであるとする。
図4は、一例としての撮像素子1312を示す図である。図4に示されるように、撮像素子1312には、複数の画素が行列状に配置される。ここで、撮像素子1312には、X方向にxa個の画素が配列され、Y方向にya個の画素が配列されているとする。
複数の画素の各々は、赤色(R)、緑色(G)、青色(B)のいずれかのカラーフィルターを有する。撮像素子1312が示すカラーフィルターの配列は、一例として、ベイヤ配列であるとする。この場合、1枚の画像(ピクチャ)を構成する複数の画素のうちの1つの画素は、たとえば、画素P1,P2,P21,P22により表現される。
たとえば、画素P1および画素P2は、それぞれ、緑色(G)および赤色(R)のカラーフィルターを有する。また、画素P21および画素P22は、それぞれ、青色(B)および緑色(G)のカラーフィルターを有する。
画素データ受信部101は、1行1列目の画素(画素P1)のデータ〜1行xa列目の画素のデータを、順次、受信する。すなわち、画素データ受信部101は、同一行の複数の画素において、1列目〜xa列目の画素のデータを、順次、受信する。たとえば、画素データ受信部101は、画素P1,P2,P3・・・のデータを、順次、受信する。
なお、画素データ受信部101が、同一行のxa列目の画素のデータを、受信した後には、画素データ受信部101は、次の行の1列目の画素のデータを受信する。以上の処理が繰り返されることにより、最終的に、画素データ受信部101は、ya行xa列目の画素のデータを受信する。
詳細は後述するが、複数の画素データは、固定ビット幅単位で符号化されるとする。固定ビット幅は、画素データを符合化することにより得られるデータ量(ビット)を示す。固定ビット幅は、s(s:自然数)ビットであるとする。詳細は後述するが、画像符号化装置100は、画素データを符号化した、固定ビット幅(sビット)のデータを、固定ビット幅単位で出力する。
以下においては、固定ビット幅(sビット)単位で画素データを符号化する際に、最初に処理される各色(例えば、赤、青、緑等)の画素データを、初期画素値データという。たとえば、図4に示される画素P1のデータは、緑色の初期画素値データである。また、画素P2のデータは、赤色の初期画素値データである。また、本実施の形態において、画素データ受信部101が受信する各画素データは12ビット長のデジタルデータ(N=12)であるとする。すなわち、画素データ受信部101が受信する各画素データは、画素値を12ビットで表現するとする。
画素データ受信部101は、受信した画素データを、内部のバッファに記憶させる。なお、画素データ受信部101は、内部のバッファに画素データが記憶されている状態で、新たな画素データを受信した場合、バッファに記憶されている画素データを、予測値算出部102へ送信する。また、画素データ受信部101は、受信した新たな画素データを、差分算出部103へ送信する。また、画素データ受信部101は、新たな画素データを内部のバッファに上書き記憶させる。
図1に示されるように、画素データ受信部101は、受信した画素データを、適切なタイミングで、予測値算出部102および差分算出部103へ送信する。以下においては、画素データ受信部101が受信したn番目の画素データを、単に、n番目の画素データという。
具体的には、画素データ受信部101は、n(n:2以上の自然数)番目の画素データを受信すると、n−1番目の画素データを、予測値算出部102へ送信するとともに、n番目の画素データを、差分算出部103へ送信する。
画素データ受信部101は、受信した画素データが初期画素値データである場合(図2:S114でYES)、当該入力画素データを、パッキング部106へ送信する。
以下においては、符号化の対象となる画素を、符号化対象画素という。また、符号化対象画素の画素値を、符号化対象画素値という。また、符号化対象画素値を示す画素データを、符号化対象画素データという。符号化対象画素データは、前述したn番目の画素データである。
予測値算出部102が受信する画素データは、以下の第1画素データ、第2画素データおよび第3画素データのいずれかである。
第1画素データは、符号化対象画素データよりも前に画素データ受信部101が受信した画素データである。第2画素データは、符号化対象画素データよりも前に画素データ受信部101が受信した複数の画素データから演算により算出された値を示す画素データである。第3画素データは、符号化対象画素データよりも前の画素データが画像符号化装置100により符号化されたデータが、画像復号化装置110により復号されることにより得られる画素データである。
予測値算出部102は、詳細は後述するが、受信した画素データを用いて符号化対象画素データの予測値を算出する(図2:S115)。
ここで、画素データの符号化方法には、予測符号化方法がある。予測符号化方法とは、符号化対象画素に対する後述する予測値を算出し、符号化対象画素の値と算出した予測値との差分値を量子化する符号化方法である。以下においては、符号化対象画素に対する予測値を、単に、符号化対象画素の予測値という。
符号化対象画素の予測値とは、符号化対象画素の近傍の1以上の画素の値から、符号化対象画素値を予測した値である。これは、符号化対象画素の近傍の画素の値が、符号化対象画素値と同じ値、または、符号化対象画素値に近い値である可能性が高いという特性を利用している。予測符号化方法では、符号化対象画素の予測値を利用することで、算出された差分値をできるだけ小さくして、量子化幅を抑えることができる。
図5は、予測値の算出に用いられる、符号化対象画素の近傍の画素の配置を示す図である。図5に示される“x”は符号化対象画素値を示す。又、図5に示される“a”,“b”,“c”は、符号化対象画素の予測値“y”を求めるための近傍の画素の画素値である。以下に、符号化対象画素の予測値を算出する際に一般的に用いられる予測式(1)〜(7)を示す。
y=a …(1)
y=b …(2)
y=c …(3)
y=a+b−c …(4)
y=a+(b−c)/2 …(5)
y=b+(a−c)/2 …(6)
y=(a+b)/2 …(7)
このように、予測値算出部102は、符号化対象画素の近傍の画素の画素値“a”,“b”,“c”を用いて、符号化対象画素の予測値“y”を求める。そして、この予測値“y”と符号化対象画素“x”との予測誤差Δ(=y−x)が算出され、この予測誤差Δが符号化される。
予測値算出部102は、入力される画素データから前述した予測式(1)〜(7)のいずれかの予測式を用いて、符号化対象画素の予測値を算出し、算出した予測値を差分算出部103へ送信する。
なお、符号化対象画素の予測値を算出する方法は、予測式(1)〜(7)のいずれかを使用した方法に限定されない。たとえば、圧縮処理における内部のメモリバッファが確保できる場合は、符号化対象画素に隣接している画素以外の周辺画素の値もメモリバッファに保持しておき、周辺画素の値を予測に使用することで予測精度を向上することも可能である。
画像符号化装置100は、さらに、量子化幅設定部104と、固定ビット幅設定部107と、余剰ビットカウント部105とを備える。なお、画像符号化装置100に含まれる複数の部位の全てまたは一部は、ハードウエアで構成されてもよい。また、画像符号化装置100に含まれる複数の部位の全てまたは一部は、CPU(Central Processing Unit)等により実行されるプログラムのモジュールであってもよい。
差分算出部103は、画素データ受信部101から送信された符号化対象画素の値と、予測値算出部102から送信された予測値との差分値を算出する。以下においては、差分算出部103が算出した差分値を、予測差分値という。予測差分値は、符号化対象画素の値から、予測値を減算することにより得られる値である。差分算出部103は、算出した予測差分値を、量子化幅設定部104へ送信する(図2:S116)。
固定ビット幅設定部107は、外部からの指示に応じて、前述した固定ビット幅を設定する。以下においては、固定ビット幅を示す情報を、固定ビット幅情報という。そして、固定ビット幅設定部107は、固定ビット幅情報を、パッキング部106、量子化幅設定部104および余剰ビットカウント部105へ送信する。
なお、固定ビット幅設定部107は、外部からの指示がなくても、固定ビット幅を設定してもよい。
本実施の形態では、前述したように、固定ビット幅はsビットであるとする。固定ビット幅は、たとえば、使用される集積回路のデータ転送のバス幅に設定される(図2:S111)。
量子化幅設定部104は、差分算出部103から送信される、各符号化対象画素に対応する予測差分値に基づき、当該予測差分値の量子化幅Qを設定する。量子化幅設定部104は、予測差分値と設定した量子化幅Qを、量子化処理部108に出力する。
以下においては、予測差分値の絶対値を、予測差分絶対値という。また、以下においては、予測差分絶対値を2進数で表現したバイナリデータの桁数を、予測差分バイナリ桁数(単位:ビット)という。また、以下においては、予測差分値を符号付2進数で表現したバイナリデータの桁数を、符号付予測差分バイナリ桁数(単位:ビット)という。
量子化幅Qは、符号付予測差分バイナリ桁数から基準ビット幅Mを減算することにより算出される値である。なお、当該算出される値が負の値の場合は、量子化幅Qの値は“0”とされる。ここで、基準ビット幅Mは、一画素を表現するのに使用されるビット量である。
基準ビット幅Mは、固定ビット幅設定部107から送信された固定ビット幅(sビット)に基づいて、以下の式(8)で得られる。なお、算出された基準ビット幅Mの値に小数点以下の値がある場合、基準ビット幅Mは、小数点以下の値を切り捨てた値となる。
M=(s−N×q)/(Pix−q)−Code ・・・(8)
式(8)において、sは、固定ビット幅を示す。Nは、画素データ受信部101に入力される画素データのデータ量(単位:ビット)である。qは、固定ビット幅(sビット)での符号化において、パッキング部106が受信する、初期画素値データとしての画素データの数を示す。Pixは、符号化後の固定ビット幅(sビット)のデータ内に含ませる画素の数を示す。Pixの値は、予め設定された値である。
式(8)において、Codeは、符号化対象画素が量子化されるときの量子化幅Qを示す量子化幅情報である。以下においては、Codeを量子化幅情報Codeという。量子化幅情報Codeは1個以上のビットで表現される。たとえば、量子化幅情報Codeが、3ビットで表現される場合、式(8)におけるCodeの値は“3”となる。
量子化幅情報Codeは、量子化された画素データと共にパッキング部106でパッキングされ、パッキングされたデータが出力される(図2:S136)。
このとき、複数の符号化対象画素の各々に対応する予測差分絶対値の最大値(以下、最大画素値差という)から量子化幅Qを求め、複数の符号化対象画素に対して同じ量子化幅Qで量子化してもよい。これにより、量子化幅情報Codeに割り振られるビット数を削減することができる。
しかし、一つのCodeに対応する符号化対象画素の画素数を増やした場合、特許文献1で示したように前述した最大画素値差を使用するため、画素単位における量子化決定精度が悪くなるというデメリットもある。
余剰ビットカウント部105は、余剰ビットの数を示す余剰ビットカウンタを有する。余剰ビットは、予測差分値または予測差分値が量子化された値を基準ビット幅Mで表現する場合において、使用されず余ったビットである。
余剰ビットカウンタは、初期状態では“0”を示す。余剰ビットカウント部105は、符号化対象画素に対応する符号付予測差分バイナリ桁数が、M(M:自然数)ビットより小さい場合、Mと符号付予測差分バイナリ桁数との差分値だけ、余剰ビットカウンタが示す値を増加させる(図3:S122)。
一方、符号付予測差分バイナリ桁数が、Mビットより大きい場合であって、かつ、余剰ビットカウンタが示す値が正の値である場合、余剰ビットカウント部105は、余剰ビットの数を示す情報を量子化幅設定部104に送信するとともに、余剰ビットカウンタが示す値を減少させる(図3:S124N)。
次に、基準ビット幅Mが8ビットの場合において、12ビットの画素データを符号化する場合における、各種データを示すデータテーブルDT100を示す。
図6は、一例としてのデータテーブルDT100を示す図である。データテーブルDT100に示される「予測差分絶対値」は、前述した予測差分値の絶対値である。「予測差分バイナリ桁数」、「符号付予測差分バイナリ桁数」および「量子化幅Q」は、前述したので詳細な説明は繰り返さない。
データテーブルDT100に示される量子化幅Qの値は、基準ビット幅Mが8ビットである場合に、符号付予測差分バイナリ桁数から基準ビット幅Mを減算することにより算出される値である。なお、当該算出される値が負の値の場合は、量子化幅Qの値は“0”とされる。
「余剰ビット数」は、余剰ビットの数を示す。余剰ビット数は、基準ビット幅Mから、符号付予測差分バイナリ桁数を減算することにより算出される値である。
ここで、固定ビット幅設定部107が設定した固定ビット幅が256ビットであるとする。また、画素データ受信部101に入力される画素データのデータ量は、12ビットであるとする。また、固定ビット幅(sビット)での符号化において、パッキング部106が受信する、初期画素値データとしての画素データの数を“2”とする。符号化後の固定ビット幅(sビット)のデータ内に含ませる画素の数を、“26”とする。また、量子化幅情報Codeは、1ビットで表現されるとする。
すなわち、式(8)における、s,N,q,Pix,Codeの値は、それぞれ、“256”,“12”,“2”,“26”,“1”であるとする。この場合、前述した式(8)より、M=(256−12×2)/(26−2)−1=26/3=8.7となる。
したがって、符号化後のデータ量を256ビット以下にするため、8.7の小数点以下の値を切り捨てることにより、基準ビット幅Mは、8となる。すなわち、基本的に、12ビットの画素データを8ビットの画素データに圧縮することになる。この場合、256/12=21.3より、データ圧縮前は256ビットのデータで21個の12ビットの画素データを示すことができていた。それ対し、データ圧縮後は、256ビットのデータで26個の画素データを示すことができることになる。
図6に示されるように、符号付予測差分バイナリ桁数が基準ビット幅M“8”より小さい場合(図3:S121でYES)、8−符号付予測差分バイナリ桁数により算出される値だけ、余剰ビットカウント部105が、余剰ビットカウンタの値を増加させる(図3:S122)。前述したように、余剰ビットカウンタは、余剰ビットの数を示す。なお、符号付予測差分バイナリ桁数が基準ビット幅M“8”以上の場合は、余剰ビットカウンタの値は増加されない。
量子化処理部108は、量子化幅設定部104によって設定された量子化幅Qにより、符号化対象画素に対応する予測差分値を量子化する量子化処理を行なう。そして、量子化処理部108は、量子化処理により得られた値を指定されたビット数で表現したデータ(以下、符号化画素データという)を、パッキング部106へ送信する。量子化幅Qによる量子化処理とは、符号化対象画素に対応する予測差分値を2のQ乗で除算する処理である。なお、量子化処理部108は、量子化幅Qが“0”である場合、量子化は行なわない。この場合、予測差分値を指定されたビット数で表現した画素データ(以下、符号化画素データという)を、パッキング部106へ送信する。
パッキング部106は、少なくとも1以上の初期画素値データと、複数の符号化画素データと、少なくとも一画素以上に対応する量子化幅情報Codeを結合させてsビットのデータにパッキングする(図2:S136)。
以下においては、パッキングにより得られるデータを、パッキングデータという。パッキング部106は、sビットのパッキングデータをSDRAM等のメモリに記憶させる処理、または、sビットのパッキングデータをアンパッキング部116に出力する処理を行なう。なお、sビットのパッキングデータにおいて、未使用ビットが存在する場合、パッキング部106は、未使用ビットを、ダミーデータに置き換える。
図7Aおよび図7Bは、余剰ビットを使用せずに符号化する処理を説明するための図である。
ここで、画素データ受信部101は、固定ビット幅(sビット)のデータ内に含ませる画素の数(26)と同じ数の画素データを、順次、受信するとする。また、画素データ受信部101が受信する画素データのデータ量は12ビットであるとする。すなわち、画素データのダイナミックレンジは12ビットであるとする。ここで、基準ビット幅Mは8ビットであるとする。また、量子化幅情報Codeは3ビットで表現されるとする。
図7Aには、一例として、画素データ受信部101に入力される、26個の画素データのうちの11個の画素データが示される。
画素データ受信部101には、画素P1,P2,・・・,P11の順で、各画素に対応する12ビットの画素データが入力されるとする。画素P1〜P11内に示される数値は、対応する画素データが示す画素値である。なお、画素P1,P2にそれぞれ対応する2つの画素データは、それぞれ、緑色および赤色の初期画素値データであるとする。
本実施の形態では、符号化対象画素の予測値は、一例として、予測式(1)により算出されるものとする。この場合、算出される符号化対象画素の予測値は、符号化対象画素の左隣の画素の値となる。すなわち、符号化対象画素の画素値は、一つ前に入力された画素と同一の画素値(レベル)になる可能性が高いと予測していることになる。
予測差分値は、n番目の画素の画素値から、(n−1)番目の画素の画素値を減算することにより得られる値である。
予測差分絶対値は、隣接する2つの画素の値の差分値の絶対値を示す。すなわち、予測差分絶対値は、予測差分値の絶対値である。たとえば、画素P1,P2の画素値が、それぞれ、“300”,“220”である場合、画素P1,P2の画素値により算出される予測差分絶対値は“80”となる。
予測差分絶対値が“80”である場合、“80”は、基準ビット幅M(8ビット)で表現可能なので、予測差分絶対値“80”は量子化されない。すなわち、予測差分絶対値“80”の量子化幅Qは“0”となる(図6参照)。
図7Aでは、固定ビット幅(sビット)単位で符号化対象画素値を符号化する際に、複数の符号化対象画素値のうち、初期画素値データに対応する画素を除いた複数の画素を、隣接する3つの画素単位で、グループ分けされる。
図7Aの例では、各グループに属する3画素にそれぞれ対応する3つの予測差分絶対値のうちの最大値(以下、最大予測差分絶対値という)を、当該グループに属する3画素の各々に対応する予測差分値を量子化するための量子化幅Qを求めるための値としている。また、図7Aの例では、同一のグループに属する画素値は、同じ量子化幅Qで量子化される。
たとえば、グループG1に属する画素P3,P4,P5にそれぞれ対応する3つの予測差分絶対値は、それぞれ、“40”,“20”,“40”である。この場合、最大予測差分絶対値は“40”となる。この場合、最大予測差分絶対値“40”が図6に示される“32”〜“63”の範囲の値に含まれるので、グループG1に属する画素P3,P4,P5を量子化するための量子化幅Qは“0”となる。
また、グループG2に属する画素P6,P7,P8にそれぞれ対応する3つの予測差分絶対値は、それぞれ、“270”,“500”,“66”である。この場合、最大予測差分絶対値は“500”となる。この場合、最大予測差分絶対値“500”が図6に示される“256”〜“511”の範囲の値に含まれるので、グループG2に属する画素P6,P7,P8を量子化するための量子化幅Qは“2”となる。すなわち、グループG2に属する画素P6,P7,P8に対応する全ての予測差分値は、量子化幅Q“2”で量子化されることになる。
図7Aに示される「使用ビット数」とは、対応する予測差分値が量子化されることにより得られる値を表現するために使用される画素データのビット数である。
たとえば、画素P3に対応する量子化幅Qは“0”であるので、画素P3に対応する予測差分値“40”は、量子化幅Q“0”で量子化される。すなわち、予測差分値“40”は、2の0乗(=1)で除算される。当該除算により得られる値は“40”である。すなわち、予測差分値“40”は量子化されてないことになる。この処理の例では、除算により得られる値“40”を表現するために8ビットのデータが使用される。
また、たとえば、画素P7に対応する量子化幅Qは“2”であるので、画素P7に対応する予測差分値“−500”は、量子化幅Q“2”で量子化される。すなわち、予測差分値“−500”は、2の2乗(=4)で除算される。当該除算により得られる値は“−125”である。この処理の例では、除算により得られる値“−125”を表現するために8ビットのデータが使用される。
図7Bは、図7Aにおいて説明した処理および演算が行なわれた場合に、画像符号化装置100から出力される、固定ビット幅(sビット)のデータを示す図である。図7Bにおいて、画素P1〜P2内に示される数値は、対応する画素データのビット数を示す。図7Bに示されるように、初期画素値データに対応する画素P1,P2の画素値は、12ビットの画素データで表現される。なお、各グループに含まれる3つの画素データの先頭には、3ビットの量子化幅情報Codeがパッキング部106により付加される。
なお、図7Bに示されるように、各グループに含まれる3つの画素の画素値は、8ビットの画素データで表現される。
本実施の形態では、基準ビット幅Mが8ビットであり、12ビットの画素データを符号化する場合および符号化されたデータを復号する場合において、以下のデータテーブルDT110を使用するとする。本実施の形態では、量子化幅情報Codeは、3ビットで表現されるとする。
図8は、一例としてのデータテーブルDT110を示す図である。図8に示されるように、データテーブルDT110は、図6のデータテーブルDT100と比較して、「Code」の項目が追加されている点が異なる。それ以外は、データテーブルDT100と同様なので詳細な説明は繰り返さない。
「Code」の項目には、3ビットの量子化幅情報Codeにより10進数の値として“0”〜“7”が表現される。これにより、3ビットの量子化幅情報Codeは、8つに分類した予測差分絶対値に対応する量子化幅Qを示すことが可能となる。具体的には、データテーブルDT110に示されるように、3ビットの量子化幅情報Codeが示す8種類のコード(“000”、“001”等)は、8つに分類した予測差分絶対値に対応する量子化幅Qに対応付けられる。
たとえば、データテーブルDT110では、量子化幅情報Codeが示すコード“000”を、予測差分絶対値が“0”〜“31”の範囲の値に対応づけている。これにより、量子化幅情報Codeが示すコード“000”は、量子化幅Q“0”を示すことになる。
また、たとえば、データテーブルDT110では、量子化幅情報Codeが示すコード“100”を、予測差分絶対値が“256”〜“511”の範囲の値に対応づけている。これにより、量子化幅情報Codeが示すコード“100”は、量子化幅Q“2”を示すことになる。
なお、データテーブルDT110は、画像符号化装置100および画像復号化装置110の各々に含まれる図示されないメモリ等の記憶装置に予め記憶させておく。すなわち、画像符号化装置100および画像復号化装置110の各々では、同一のデータテーブルを使用して各種処理が行なわれる。
(画像符号化処理)
次に、本実施の形態における画像符号化処理の詳細な説明を行なう。
図9Aおよび図9Bは、本実施の形態における、余剰ビットを使用した画像符号化処理を説明するための図である。
ここで、画素データ受信部101は、固定ビット幅(sビット)のデータ内に含ませる画素の数(26)と同じ数の画素データを、順次、受信するとする。また、画素データ受信部101が受信する画素データのデータ量は12ビットであるとする。すなわち、画素データのダイナミックレンジは12ビットであるとする。ここで、基準ビット幅Mは8ビットであるとする。また、量子化幅情報Codeは3ビットで表現されるとする。
図9Aには、一例として、画素データ受信部101に入力される、26個の画素データのうちの11個の画素データが示される。
画素データ受信部101には、画素P1,P2,・・・,P11の順で、各画素に対応する12ビットの画素データが入力されるとする。画素P1〜P11内に示される数値は、対応する画素データが示す画素値である。なお、画素P1,P2にそれぞれ対応する2つの画素データは、それぞれ、緑色および赤色の初期画素値データであるとする。
本実施の形態では、符号化対象画素の予測値は、一例として、予測式(1)により算出されるものとする。この場合、算出される符号化対象画素の予測値は、符号化対象画素の左隣の画素の値となる。すなわち、符号化対象画素の画素値は、一つ前に入力された画素と同一の画素値(レベル)になる可能性が高いと予測していることになる。
図9Aに示される「予測差分値」、「予測差分絶対値」、「量子化幅Q」、「使用ビット数」は、図7Aを使用して説明したので詳細な説明は繰り返さない。
「余剰ビット数」とは、対応する予測差分値または当該予測差分値が量子化された値を、基準ビット幅Mで表現する場合において、使用されず余ったビット(余剰ビット)の数である。
「累積余剰ビット数」とは、対応する使用ビット数で符号化が行なわれる場合における余剰ビットカウンタが示す値である。
図9Aでは、図7Aと同様に、固定ビット幅(sビット)単位で符号化対象画素値を符号化する際に、複数の符号化対象画素値のうち、初期画素値データに対応する画素を除いた複数の画素を、隣接する3つの画素単位で、グループ分けされる。各グループについては、図7Aを使用して説明したので詳細な説明は繰り返さない。
ここで、図1の画像符号化装置100内の量子化幅設定部104内には、データを記憶する図示しないメモリが設けられているとする。量子化幅設定部104内のメモリには、予め、図8のデータテーブルDT110が記憶されているとする。なお、データテーブルDT110を記憶するメモリは、量子化幅設定部104の外部に設けられていてもよい。
また、画像符号化装置100内のパッキング部106内には、データを記憶する図示しないメモリが設けられているとする。また、予測値算出部102には、データを記憶する図示しないメモリが設けられているとする。
図2の画像符号化処理では、まず、ステップS111の処理が行なわれる。
ステップS111では、固定ビット幅設定部107が、固定ビット幅(sビット)を設定する。固定ビット幅は、たとえば、使用される集積回路のデータ転送のバス幅に設定される。そして、固定ビット幅設定部107は、固定ビット幅(sビット)を示す固定ビット幅情報を、パッキング部106、量子化幅設定部104および余剰ビットカウント部105へ送信する。
ステップS112では、量子化幅設定部104が、前述したように、式(8)より基準ビット幅Mを算出する。ここで、算出された基準ビット幅Mは“8”であるとする。量子化幅設定部104は、算出した基準ビット幅Mを、余剰ビットカウント部105へ送信する。
ステップS113では、画素データ受信部101が画素データを受信する。
ステップS114では、画素データ受信部101が、受信した画像データが初期画素値データであるか否かを判定する。ステップS114において、YESならば、画素データ受信部101は、受信した画素データを内部のバッファに記憶させ、画素データ受信部101は、受信した画素データをパッキング部106へ送信する。そして、処理は後述するステップS135に移行する。一方、ステップS114において、NOならば、後述する処理が行なわれた後、処理はステップS115に移行する。
ここで、画素データ受信部101は、画素P1に対応する、初期画素値データとしての画素データを受信したとする。この場合、画素データ受信部101は、受信した画素データを内部のバッファに記憶させ、画素データ受信部101は、受信した画素データをパッキング部106へ送信する。なお、バッファに画素データが記憶されている場合、画素データ受信部101は、受信した画素データを内部のバッファに上書き記憶させる。
パッキング部106は、初期画素値データとしての画素データを受信すると、受信した画素データ(初期画素値データ)を、内部のメモリに記憶させる。そして、ステップS135の処理が行なわれる。
ステップS135では、パッキング部106が、受信した画素データの数が、所定値Pixと等しいか否かを判定する。受信した画素データは、初期画素値データまたは符号化対象画素データである。Pixは、前述したように、sビットの符号化データ(パッキングデータ)に含ませる画素の数を示す。Pixの値は、一例として、“26”であるとする。
ステップS135において、YESならば、受信した画素データの数が“0”とされる。なお、その後、たとえば、パッキング部106が1つの画素データを受信すると、受信した画素データの数は“1”となる。そして、処理はステップS136に移行する。
一方、ステップS135において、NOならば、再度、ステップS113の処理が行なわれる。ここでは、受信した画素データの数が、所定値Pixと等しくないとして、再度、ステップS113の処理が行なわれる。
次に、画素データ受信部101は、画素P2に対応する、初期画素値データとしての画素データを受信したとする(S113)。
この場合、ステップS114でYESと判定され、画素データ受信部101は、受信した画素データを内部のバッファに上書き記憶させ、画素データ受信部101は、受信した画素データをパッキング部106へ送信する。
そして、前述したステップS135の処理が行なわれ、再度、ステップS113の処理が行なわれる。
ここで、画素P3が符号化対象画素であるとする。この場合、画素データ受信部101は、画素P3に対応する画素データ(符号化対象画素データ)を受信したとする。符号化対象画素データが示す画素値は“260”であるとする。この場合、受信した画素データは初期画素値データでないので(S114でNO)、画素データ受信部101は、受信した画素データを差分算出部103へ送信する。
以下においては、初期画素値データに対応する画素でない符号化対象画素が属するグループを、処理対象グループという。たとえば、符号化対象画素が画素P3である場合、画素P3が属するグループG1は、処理対象グループとなる。
また、ステップS114でNOと判定された場合、画素データ受信部101は内部のバッファに記憶されている画素データを予測値算出部102へ送信する。ここで、送信される画素データは、画素P2の画素値“220”を示すとする。予測値算出部102は、画素データを受信する毎に、受信した画素データを内部のメモリに記憶させる。
また、画素データ受信部101は、受信した画素データを内部のバッファに上書き記憶させる。また、画素データ受信部101は、受信した画素データ(符号化対象画素データ)を、差分算出部103へ送信する。そして、処理は、ステップS115に移行する。
ステップS115では、予測値算出部102が、符号化対象画素の予測値を算出する。具体的には、予測値算出部102は、予測式(1)を使用して、予測値を算出する。この場合、受信した画素データが示す画素値(“220”)が予測値として算出される。予測値算出部102は、算出した予測値“220”を、差分算出部103へ送信する。
また、h番目の符号化対象画素の予測値を算出する際に、(h−1)番目の画素データが初期画素値データである場合、(h−1)番目の画素データが示す値を予測値とし、(h−1)番目の画素データが初期画素値データでない場合は、画像符号化装置100により符号化されたデータを、画像復号化装置110に入力させ復号化することにより得られる画素データが示す画素値を、符号化対象画素の予測値とする。これにより、量子化処理部108における量子化処理により誤差が生じるような場合でも、画像符号化装置100と画像復号化装置110において予測値を一致させることが可能となる。
ステップS116では、予測差分値が算出される。具体的には、差分算出部103が、受信した符号化対象画素データが示す画素値(“260”)から、受信した予測値“220”を減算することにより、予測差分値“40”を算出する。また、差分算出部103は、算出した予測差分値“40”を量子化幅設定部104へ送信する。
以下においては、処理対象グループに属する3つの画素の各々に対応する予測差分値を、処理対象予測差分値という。たとえば、処理対象グループがグループG1である場合、グループG1に属する画素P3,P4,P5の各々に対応する予測差分値は、処理対象予測差分値である。
量子化幅設定部104は、差分値カウンタを有する。差分値カウンタは、予測差分値を受信した数を示すカウンタである。差分値カウンタの初期値は“0”である。量子化幅設定部104は、予測差分値を受信する毎に、受信した予測差分値を内部のメモリに記憶させ、かつ、差分値カウンタが示す値を“1”増加させる。
ステップS117では、量子化幅設定部104が、予測差分値を3つ受信したか否かを判定する。すなわち、量子化幅設定部104は、差分値カウンタが示す値が“3”であるか否かを判定する。ステップS117において、YESならば、量子化幅設定部104は差分値カウンタの値を“0”に設定し、処理はステップS118に移行する。一方、ステップS117において、NOならば、再度、ステップS113の処理が行なわれる。ここでは、差分値カウンタが示す値は“1”であるとして、再度、ステップS113の処理が行なわれる。
そして、前述した、ステップS113〜S116の処理が2回行なわれることにより、量子化幅設定部104は、3つの予測差分値を受信したことになる。量子化幅設定部104が受信した3つの予測差分値は、グループに属する3画素にそれぞれ対応する3つの予測差分値である。この場合、内部のメモリに、3つの予測差分値が記憶されていることになる。量子化幅設定部104は、3つの予測差分値を受信すると(S117でYES)、差分値カウンタの値を“0”に設定する。
ステップS118では、量子化幅設定処理が行なわれる。量子化幅設定処理では、量子化幅設定部104が、内部のメモリに記憶されている3つの予測差分値の各々を符号付2進数で表現したバイナリデータの桁数(符号付予測差分バイナリ桁数)を算出する。ここで、3つの予測差分値は、図9AのグループG1に属する画素P3,P4,P5にそれぞれ対応する3つの予測差分値“40”,“20”,“40”であるとする。この場合、算出される3つの符号付予測差分バイナリ桁数は、それぞれ、“7”,“7”,“7”である。
また、量子化幅設定部104は、3つの予測差分値の絶対値(予測差分絶対値)を算出する。ここで、3つの予測差分値は、それぞれ、“40”,“20”,“40”であるとする。この場合、算出される3つの予測差分絶対値は、それぞれ、“40”,“20”,“40”である。
そして、量子化幅設定部104は、3つの予測差分絶対値のうちの最大値(以下、最大予測差分絶対値という)を算出する。この場合、最大予測差分絶対値は“40”となる。
そして、量子化幅設定部104は、内部のメモリに記憶されている図8のデータテーブルDT110と、最大予測差分絶対値(例えば“40”)とを使用して、量子化幅Qを設定する。
最大予測差分絶対値が“40”である場合、最大予測差分絶対値“40”は、データテーブルDT110に示される“32”〜“63”の範囲の値に含まれるので、量子化幅Qは“0”に設定される。設定された量子化幅Qは、処理対象グループに属する3つの画素に対応するように設定される。この場合、処理対象グループ(例えば、グループG1)に属する3つの画素(例えば、画素P3,P4,P5)にそれぞれ対応する3つの量子化幅Qが全て“0”に設定される。
また、量子化幅設定部104は、量子化幅情報Codeを、パッキング部106へ送信する。この場合、最大予測差分絶対値“40”は、データテーブルDT110に示される“32”〜“63”の範囲の値に含まれるので、量子化幅情報Codeはコード“001”を示す情報とされる。
なお、パッキング部106は、量子化幅情報Codeを受信すると、受信した量子化幅情報Codeを、内部のメモリに記憶させる。
ステップS119では、量子化幅設定部104が、処理対象グループ(例えば、グループG1)に属する3つの画素にそれぞれ対応する3つの符号付予測差分バイナリ桁数のうち、最大の符号付予測差分バイナリ桁数を、余剰ビットカウント部105へ送信する。
ステップS120では、余剰ビットカウンタ更新処理が行なわれる。
図3に示されるように、余剰ビットカウンタ更新処理では、まず、ステップS121の処理が行なわれる。
ステップS121では、余剰ビットカウント部105が、受信した符号付予測差分バイナリ桁数が、基準ビット幅Mより小さいか否かを判定する。ステップS121において、YESならば、処理はステップS122に移行する。一方、ステップS121において、NOならば、処理は後述するステップS123に移行する。ここで、受信した符号付予測差分バイナリ桁数が“7”であり、基準ビット幅Mが、8ビットであるとする。この場合、YESと判定され、ステップS122の処理が行なわれる。
ステップS122では、カウンタ値増加処理が行なわれる。カウンタ値増加処理では、余剰ビットカウント部105が、余剰ビットカウンタの示す値を、基準ビット幅M(例えば“8”)から、受信した符号付予測差分バイナリ桁数(例えば“7”)減算することにより得られた値(例えば“1”)だけ増加させる。この処理により、余剰ビットカウンタは“1”を示すとする。
そして、この余剰ビットカウンタ更新処理は終了し、再度、図2の画像符号化処理に戻り、処理はステップS130に移行する。
ステップS130では、データ送信処理が行なわれる。データ送信処理では、量子化幅設定部104が、処理対象グループ(例えば、グループG1)に属するp番目の画素に対応する量子化幅Qと、処理対象グループ(例えば、グループG1)に属するp番目の画素に対応する予測差分値とを、量子化処理部108へ送信する。なお、pの初期値は“1”である。たとえば、処理対象グループが、グループG1である場合、グループG1に属する画素P3,P4,P5は、それぞれ、1,2,3番目の画素である。
ステップS131では、量子化幅設定部104が、処理対象グループに属するp番目の画素に対応する量子化幅Qが“0”であるか否かを判定する。ステップS131において、YESならば、処理は、ステップS133に移行する。一方、ステップS131において、NOならば、処理は後述するステップS132に移行する。
ここでは、処理対象グループに属するp番目の画素に対応する量子化幅Qが“0”であるとして、処理はステップS133に移行する。
ステップS133では、符号化処理が行なわれる。符号化処理では、量子化処理部108が、量子化幅設定部104から受信した量子化幅Qが“0”であり、かつ、量子化処理部108が後述するカウンタ減少値情報を受信してない場合、以下の処理NAが行なわれる。
処理NAでは、量子化処理部108が、量子化幅設定部104から受信した予測差分値を、当該予測差分値に対応する符号付予測差分バイナリ桁数のビットで表現したデータ(以下、符号化画素データという)を生成する。そして、量子化処理部108は、生成した符号化画素データを、パッキング部106へ送信する。
ここで、受信した量子化幅Qが“0”であるとする。また、受信した予測差分値は、“40”であるとする。また、予測差分値“40”に対応する符号付予測差分バイナリ桁数は“7”であるとする。
この場合、量子化処理部108は、予測差分値“40”を、“7”ビットで表現した符号化画素データを生成する。すなわち、符号化画素データを生成するために使用されたビット数は、図9Aに示されるように、“7”となる。この場合、基準ビット幅Mが8ビットであるとすると、1つの余剰ビットが生じることになる。
そして、生成された符号化画素データが、パッキング部106へ送信される。なお、パッキング部106は、受信した符号化画素データを、内部のメモリに記憶させる。
また、符号化処理では、量子化処理部108が、量子化幅設定部104から受信した量子化幅Qが“0”であり、かつ、量子化処理部108が後述するカウンタ減少値情報を受信した場合、後述する処理NBが行なわれる。
また、符号化処理では、量子化処理部108が、量子化幅設定部104から受信した量子化幅Qが“1”以上であり、かつ、量子化処理部108が後述するカウンタ減少値情報を受信した場合、後述する処理NCが行なわれる。
ステップS134では、量子化幅設定部104が、処理対象グループに対応する算出した全て(3つ)の符号付予測差分バイナリ桁数を、余剰ビットカウント部105へ送信したか否かを判定する。ステップS134において、YESならば、量子化幅設定部104は、pの値を“1”に設定し、処理は、ステップS135に移行する。一方、ステップS134において、NOならば、量子化幅設定部104が、pの値を“1”増加させる。そして、再度、ステップS119の処理が行なわれる。
ここでは、NOであるとして、再度、前述したステップS119の処理が行なわれる。この処理により、画素P4に対応する符号付予測差分バイナリ桁数“7”が、余剰ビットカウント部105へ送信されるとする。
そして、再度、図3のステップS121,S122の処理が行なわれることにより、余剰ビットカウンタの示す値は“2”となったとする。
そして、この余剰ビットカウンタ更新処理は終了し、再度、図2のステップS130の処理が行なわれる。この処理により、処理対象グループに属するp番目の画素に対応する量子化幅Qと、処理対象グループに属する2番目の画素に対応する予測差分値とが、量子化処理部108へ送信されるとする。
そして、前述したステップS131,S133の処理が行なわれる。この処理により、“7”ビットで表現した符号化画素データが、パッキング部106へ送信される。なお、パッキング部106は、受信した符号化画素データを、内部のメモリに記憶させる。
そして、ステップS134でNOと判定され、量子化幅設定部104が、pの値を“1”増加させる。そして、再度、ステップS119の処理が行なわれる。この処理により、画素P5に対応する符号付予測差分バイナリ桁数“7”が、余剰ビットカウント部105へ送信されるとする。
そして、再度、図3のステップS121,S122の処理が行なわれることにより、余剰ビットカウンタの示す値は“3”となったとする。
そして、この余剰ビットカウンタ更新処理は終了し、再度、図2のステップS130の処理が行なわれる。この処理により、処理対象グループに属する3番目の画素に対応する量子化幅Qと、処理対象グループに属する3番目の画素に対応する予測差分値とが、量子化処理部108へ送信されるとする。
そして、前述したステップS131,S133の処理が行なわれる。この処理により、“7”ビットで表現した符号化画素データが、パッキング部106へ送信される。なお、パッキング部106は、受信した符号化画素データを、内部のメモリに記憶させる。
そして、ステップS134で、YESと判定され、量子化幅設定部104は、pの値を“1”に設定し、ステップS135の処理が行なわれる。
ステップS135では、前述したのと同様な処理が行なわれるので詳細な説明は繰り返さない。ここでは、ここでは、受信した画素データの数が、所定値Pixと等しくないとして、再度、ステップS113の処理が行なわれる。
なお、この時点で、パッキング部106は、図9Bに示されるように、画素P1,P2の各々に対応する初期画素値データ(12ビット)、量子化幅情報Code(3ビット)、画素P3,P4,P5の各々に対応する符号化画素データ(7ビット)を受信しているとする。この場合、パッキング部106内のメモリには、図9Bに示される、画素P1に対応する初期画素値データから画素P5に対応する符号化画素データまでが、図9Bに示されように連続して記憶されている。
次に、画素データ受信部101が、図9Aに示される、画素値“590”を有する画素P6に対応する画素データを受信したとする。
この場合、ステップS114でNOと判定され、前述したのと同様に、ステップS115,S116の処理が行なわれる。
前述したステップS115,S116の処理により、予測差分値“270”が算出される。また、差分算出部103は、算出した予測差分値“270”を量子化幅設定部104へ送信する。
ステップS117では、前述したのと同様な処理が行なわれるので詳細な説明は繰り返さない。ここでは、差分値カウンタが示す値は“1”であるとして、再度、ステップS113の処理が行なわれる。再度、ステップS113の処理が行なわれる。
そして、前述した、ステップS113〜S116の処理が2回行なわれることにより、量子化幅設定部104は、図9Aに示される、3つの予測差分値“270”,“−500”,“−66”を受信したとする。量子化幅設定部104は、3つの予測差分値を受信すると(S117でYES)、差分値カウンタの値を“0”に設定する。
ステップS118では、前述したのと同様に量子化幅設定処理が行なわれるので詳細な説明は繰り返さない。ここで、3つの予測差分値は、図9AのグループG2に属する画素P6,P7,P8にそれぞれ対応する3つの予測差分値“270”,“−500”,“−66”であるとする。この場合、算出される3つの符号付予測差分バイナリ桁数は、それぞれ、“10”,“9”,“8”である。この場合、算出された3つの符号付予測差分バイナリ桁数“10”,“9”,“8”は、それぞれ、画素P6,P7,P8に対応する。
また、量子化幅設定部104は、前述したのと同様に、3つの予測差分絶対値“270”,“500”,“66”を算出する。この場合、最大予測差分絶対値は“500”となる。
そして、量子化幅設定部104は、内部のメモリに記憶されている図8のデータテーブルDT110と、最大予測差分絶対値“500”とを使用して、量子化幅Qを設定する。
最大予測差分絶対値が“500”である場合、最大予測差分絶対値“500”は、データテーブルDT110に示される“256”〜“511”の範囲の値に含まれるので、量子化幅Qは“2”に設定される。設定された量子化幅Q“2”は、処理対象グループ(グループG2)に属する3つの画素に対応するように設定される。
また、量子化幅設定部104は、量子化幅情報Codeを、パッキング部106へ送信する。この場合、最大予測差分絶対値“500”は、データテーブルDT110に示される“256”〜“511”の範囲の値に含まれるので、量子化幅情報Codeはコード“100”を示す情報とされる。
なお、パッキング部106は、量子化幅情報Codeを受信すると、受信した量子化幅情報Codeを、内部のメモリに記憶させる。
そして、前述したステップS119の処理が行なわれる。この処理により、処理対象グループ(グループG2)に属する3つの画素にそれぞれ対応する3つの符号付予測差分バイナリ桁数のうち、最大の符号付予測差分バイナリ桁数“10”が、余剰ビットカウント部105へ送信されるとする。
そして、ステップS120の余剰ビットカウンタ更新処理が行なわれる。
ステップS121では、前述したのと同様な処理が行なわれるので詳細な説明は繰り返さない。ここで、受信した符号付予測差分バイナリ桁数が“10”であり、基準ビット幅Mが、8ビットであるとする。この場合、ステップS121において、NOと判定され、処理はステップS123に移行する。
ステップS123では、余剰ビットカウント部105が、受信した符号付予測差分バイナリ桁数が基準ビット幅Mより大きいという条件、および、余剰ビットカウンタの値が“0”より大きいという条件を満たすか否かを判定する。ステップS123において、YESならば、処理はステップS124に移行する。
ここで、受信した符号付予測差分バイナリ桁数(“10”)が基準ビット幅M“8”より大きいとする。また、前述した処理により、余剰ビットカウンタは“3”を示すとする。この場合、ステップS123において、YESと判定され、処理はステップS124に移行する。
ステップS124では、余剰ビットカウント部105が、余剰ビットカウンタの値が、処理対象グループ(例えば、グループG2)に属するp番目の画素に対応する量子化幅Qより大きいか否かを判定する。ステップS124において、YESならば、処理はステップS124Nに移行する。一方、ステップS124において、NOならば、処理は後述するステップS125に移行する。
ここで、余剰ビットカウンタが“3”を示すとする。また、処理対象グループに属するp番目の画素に対応する量子化幅Qは“2”に設定されているとする。この場合、ステップS124において、YESと判定され、処理はステップS124Nに移行する。
ステップS124Nでは、カウンタ値減少処理が行なわれる。カウンタ値減少処理では、余剰ビットカウント部105が、余剰ビットカウンタの示す値(例えば“3”)を、処理対象グループに属するp番目の画素に対応する量子化幅Qの値(例えば“2”)だけ減少させる。
また、余剰ビットカウント部105は、カウンタ減少値情報を、量子化幅設定部104へ送信する。カウンタ減少値情報は、余剰ビットカウンタの値を減少させた値(たとえば、“2”)を示す情報である。この場合、カウンタ減少値情報は、後述の処理で使用可能な余剰ビットの数を示す。
量子化幅設定部104は、カウンタ減少値情報を受信すると、受信したカウンタ減少値情報を、量子化処理部108へ送信する。
ステップS124NAでは、量子化幅零設定処理が行なわれる。量子化幅零設定処理では、余剰ビットカウント部105が、量子化幅零変更指示を、量子化幅設定部104へ送信する。量子化幅零変更指示は、処理対象グループに属するp番目の画素に対応する量子化幅Qを“0”に設定するための指示である。
そして、この余剰ビットカウンタ更新処理は終了し、再度、図2の画像符号化処理に戻り、処理はステップS130に移行する。
量子化幅設定部104は、量子化幅零変更指示を受信すると、量子化幅零変更指示により指定される画素(例えば画素P6)に対応する量子化幅Qの値(例えば“2”)を“0”に変更する。
ステップS130では、前述したのと同様な処理が行なわれるので詳細な説明は繰り返さない。この処理により、処理対象グループに属する1番目の画素に対応する量子化幅Q“0”と、処理対象グループに属する1番目の画素に対応する予測差分値とが、量子化処理部108へ送信されるとする。
ステップS131では、前述したのと同様な処理が行なわれるので詳細な説明は繰り返さない。ここでは、処理対象グループに属するp番目の画素に対応する量子化幅Qの値が“0”であるとして、処理はステップS133に移行する。
ステップS133では、前述した符号化処理が行なわれる。ここで、量子化処理部108が、量子化幅設定部104から受信した量子化幅Qが“0”であり、かつ、量子化処理部108がカウンタ減少値情報を受信したとする。この場合、符号化処理において、以下の処理NBが行なわれる。
処理NBでは、量子化処理部108が、量子化幅設定部104から受信した予測差分値を、(基準ビット幅M+カウンタ減少値情報が示す値)ビットで表現したデータ(以下、符号化画素データという)を生成する。
そして、量子化処理部108は、生成した符号化画素データを、パッキング部106へ送信する。
ここで、受信した予測差分値は“270”であるとする。基準ビット幅Mは8ビットであるとする。また、カウンタ減少値情報が示す値は“2”であるとする。この場合、量子化処理部108は、予測差分値“270”を、“10”ビットで表現した符号化画素データを生成する。すなわち、符号化画素データを生成するために使用されたビット数は、図9Aに示されるように、“10”となる。
前述したように、カウンタ減少値情報が示す値は、使用可能な余剰ビットの数である。したがって、カウンタ減少値情報が示す値が“2”である場合、生成される符号化画素データは、2つの余剰ビットを使用して生成されるデータである。
そして、ステップS134でNOと判定され、量子化幅設定部104が、pの値を“1”増加させる。そして、再度、ステップS119の処理が行なわれる。この処理により、画素P7に対応する符号付予測差分バイナリ桁数“10”が、余剰ビットカウント部105へ送信されるとする。
そして、ステップS120の余剰ビットカウンタ更新処理が行なわれる。
ステップS121では、前述したのと同様な処理が行なわれるので詳細な説明は繰り返さない。ここで、受信した符号付予測差分バイナリ桁数が“10”であり、基準ビット幅Mが8ビットであるとする。この場合、ステップS121において、NOと判定され、処理はステップS123に移行する。
ステップS123では、前述したのと同様な処理が行なわれるので詳細な説明は繰り返さない。ここで、受信した符号付予測差分バイナリ桁数(“10”)が基準ビット幅M“8”より大きいとする。また、余剰ビットカウンタは“1”を示すとする。この場合、ステップS123において、YESと判定され、処理はステップS124に移行する。
ステップS124では、前述したのと同様な処理が行なわれるので詳細な説明は繰り返さない。ここで、余剰ビットカウンタが“1”を示すとする。また、処理対象グループ(例えば、グループG2)に属するp(2)番目の画素に対応する量子化幅Qは“2”に設定されているとする。この場合、ステップS124でNOと判定され、処理はステップS125に移行する。
ステップS125では、量子化幅変更処理Nが行なわれる。量子化幅変更処理Nでは、余剰ビットカウント部105が、量子化幅変更指示Nを、量子化幅設定部104へ送信する。量子化幅変更指示Nは、処理対象グループに属するp番目の画素に対応する量子化幅Q(例えば“2”)を、余剰ビットカウンタの値(例えば“1”)だけ減算した値に変更するための指示である。
量子化幅設定部104は、量子化幅変更指示Nを受信すると、処理対象グループに属するp番目の画素に対応する量子化幅Q(例えば“2”)を、余剰ビットカウンタの値(例えば“1”)だけ減算した値(例えば“1”)に変更する。
ステップS125Nでは、余剰ビットカウント部105が、余剰ビットカウンタの示す値を、“0”に設定する。
また、余剰ビットカウント部105は、カウンタ減少値情報を、量子化幅設定部104へ送信する。カウンタ減少値情報は、余剰ビットカウンタの値を減少させた値(たとえば、“1”)を示す情報である。この場合、カウンタ減少値情報は、後述の処理で使用可能な余剰ビットの数を示す。
量子化幅設定部104は、カウンタ減少値情報を受信すると、受信したカウンタ減少値情報を、量子化処理部108へ送信する。
そして、この余剰ビットカウンタ更新処理は終了し、再度、図2の画像符号化処理に戻り、処理はステップS130に移行する。
ステップS130では、前述したのと同様な処理が行なわれるので詳細な説明は繰り返さない。この処理により、処理対象グループに属する2番目の画素に対応する量子化幅Q“1”と、処理対象グループに属する2番目の画素に対応する予測差分値とが、量子化処理部108へ送信されるとする。
ステップS131では、前述したのと同様な処理が行なわれるので詳細な説明は繰り返さない。ここでは、処理対象グループに属する2番目の画素に対応する量子化幅Qの値が“1”であるとして、処理はステップS132に移行する。
以下においては、1以上の値を示す量子化幅Qを、非零量子化幅Qという。
ステップS132では、量子化処理が行なわれる。量子化処理では、量子化処理部108が、処理対象グループに属するp番目の画素に対応する非零量子化幅Qに対応する予測差分値を、2のQ乗で除算することにより量子化する。以下においては、量子化により得られた値を、量子化済値という。
ここで、処理対象グループに属するp番目の画素は、画素P7であるとする。また、画素P7に対応する予測差分値“−500”に対応する量子化幅Qが“1”を示すとする。この場合、量子化処理部108は、予測差分値“−500”を、2の1乗(2)により除算することにより量子化済値“−250”を得る。
ステップS133では、前述した符号化処理が行なわれる。ここで、量子化処理部108が、量子化幅設定部104から受信した量子化幅Qが“1”であり、かつ、量子化処理部108がカウンタ減少値情報を受信したとする。この場合、符号化処理において、以下の処理NCが行なわれる。
処理NCでは、量子化処理部108が、量子化済値を、(基準ビット幅M+カウンタ減少値情報が示す値)ビットで表現したデータ(以下、符号化画素データという)を生成する。前述したように、カウンタ減少値情報が示す値は、使用可能な余剰ビットの数である。したがって、この処理により、生成される符号化画素データは、余剰ビットを使用して生成されるデータである。
そして、量子化処理部108は、生成した符号化画素データを、パッキング部106へ送信する。
ここで、量子化済値は“−250”であるとする。基準ビット幅Mは8ビットであるとする。また、カウンタ減少値情報が示す値は“1”を示すとする。この場合、量子化処理部108は、量子化済値“−250”を、“9”ビットで表現した符号化画素データを生成する。すなわち、生成された符号化画素データで、使用されたビット数は、図9Aに示されるように、“9”となる。
そして、ステップS134でNOと判定され、量子化幅設定部104が、pの値を“1”増加させる。そして、再度、ステップS119の処理が行なわれる。この処理により、符号付予測差分バイナリ桁数“10”が、余剰ビットカウント部105へ送信されるとする。
そして、ステップS120の余剰ビットカウンタ更新処理が行なわれる。
ステップS121では、前述したのと同様な処理が行なわれるので詳細な説明は繰り返さない。ここで、受信した符号付予測差分バイナリ桁数が“10”であり、基準ビット幅Mが8ビットであるとする。この場合、ステップS121においてNOと判定され、ステップS123でNOと判定され、そして、この余剰ビットカウンタ更新処理は終了し、再度、図2の画像符号化処理に戻り、処理はステップS130に移行する。
ステップS130では、前述したのと同様な処理が行なわれるので詳細な説明は繰り返さない。この処理により、処理対象グループに属する3番目の画素に対応する量子化幅Q“2”と、処理対象グループに属する3番目の画素に対応する予測差分値とが、量子化処理部108へ送信されるとする。
ステップS131では、前述したのと同様な処理が行なわれるので詳細な説明は繰り返さない。ここでは、処理対象グループに属するp番目の画素に対応する量子化幅Qの値が“2”であるとして、処理はステップS132に移行する。
ステップS132では、前述したのと同様な処理が行なわれるので詳細な説明は繰り返さない。
ここで、処理対象グループに属するp番目の画素は、画素P8であるとする。また、画素P8に対応する予測差分値“−66”に対応する量子化幅Qが“2”を示すとする。この場合、量子化処理部108は、予測差分値“−66”を、2の2乗(4)により除算することにより量子化済値“−16”を得る。
ステップS133では、前述した符号化処理が行なわれる。ここで、量子化処理部108が、量子化幅設定部104から受信した量子化幅Qが“2”であり、かつ、量子化処理部108がカウンタ減少値情報を受信してないとする。この場合、量子化処理部108が、量子化済値を、基準ビット幅Mビットで表現したデータ(以下、符号化画素データという)を生成する。
そして、量子化処理部108は、生成した符号化画素データを、パッキング部106へ送信する。
この場合、量子化処理部108は、予測差分値“−16”を、“8”ビットで表現した符号化画素データを生成する。すなわち、生成された符号化画素データで、使用されたビット数は、図9Aに示されるように、“8”となる。
そして、生成された符号化画素データが、パッキング部106へ送信される。なお、パッキング部106は、受信した符号化画素データを、内部のメモリに記憶させる。
そして、ステップS134で、YESと判定され、量子化幅設定部104は、pの値を“1”に設定し、ステップS135の処理が行なわれる。
ステップS135では、前述したのと同様な処理が行なわれるので詳細な説明は繰り返さない。ここでは、ここでは、受信した画素データの数が、所定値Pixと等しくないとして、再度、ステップS113の処理が行なわれる。
なお、この時点で、パッキング部106内のメモリには、図9Bに示される、画素P1に対応する初期画素値データから画素P8に対応する符号化画素データまでが、図9Bに示されように連続して記憶されている。
そして、ステップS135でYESと判定されるまで、ステップS113〜S134の処理の少なくとも一部が繰り返し行なわれる。
ステップS135でYESと判定されると、処理はステップS136に移行する。
ステップS136ではパッキング処理が行なわれる。パッキング処理では、パッキング部106が、内部のメモリに記憶されている複数のデータ(例えば、図9Bに示される複数のデータ)を含む、固定ビット幅(sビット)のデータ(符号化データ)を生成する。すなわち、パッキング部106は、所定符号量の符号化データを生成する。なお、sビットの符号化データにおいて、未使用ビットが存在する場合、パッキング部106は、未使用ビットを、ダミーデータに置き換える。
生成された符号化データには、たとえば、図9Bに示されるように、1つ以上の初期画素値データと、Pix個の符号化画素データと、複数の量子化幅情報Code(3ビット)とが含まれる。Pixは、前述したので詳細な説明は繰り返さない。
また、パッキング部106は、生成した固定ビット幅(sビット)の符号化データを、図示されない外部メモリに記憶させる。なお、ステップS136の処理が繰り返される毎に、パッキング部106は、すでに外部メモリに記憶されている符号化データと連続するように、生成した符号化データをメモリに記憶させる。
ステップS137では、余剰ビットカウント部105が、余剰ビットカウンタの示す値を“0”に設定する。
ステップS138では、パッキング部106が、処理の対象となる画像(ピクチャ)全体に対し、符号化の処理が終了したか否かを判定する。ステップS138において、YESならば、この画像符号化処理は終了する。一方、ステップS138において、NOならば、再度、ステップS113の処理が行なわれる。
そして、ステップS138でYESと判定されるまで、ステップS113〜S137の処理の少なくとも一部が繰り返し行なわれることにより、外部メモリに複数の固定ビット幅(sビット)の符号化データが連続して記憶される。この場合、外部メモリに記憶された複数の符号化データは、画像を復元するためのデータである。
以上の処理により、本実施の形態では、図7Aおよび図7Bで説明した余剰ビットを使用せずに符号化する処理(以下、余剰ビット不使用処理という)と比較して、以下の利点を得られる。
図7Aおよび図9Aに示されるように、たとえば、画素P6に対応する予測差分値“270”は、余剰ビット不使用処理では、量子化幅Q“2”(2の2乗=4)で量子化されていた。この場合、余剰ビット不使用処理では、量子化されることにより、量子化誤差が最大で“3”生じる。
一方、本実施の形態では、画素P6に対応する予測差分値“270”は、基準ビット幅M(8ビット)に加え、2つの余剰ビットを使用して、10ビットで表現可能となる。そのため、予測差分値“270”を量子化する処理が不要となる。したがって、量子化誤差が“0”に抑えられる。
また、たとえば、画素P7に対応する予測差分値“−500”は、余剰ビット不使用処理では、量子化幅Q“2”(2の2乗=4)で量子化されていた。この場合、余剰ビット不使用処理では、量子化されることにより、量子化誤差が最大で“3”生じる。
一方、本実施の形態では、画素P7に対応する予測差分値“−500”は、基準ビット幅M(8ビット)に加え、1つの余剰ビットを使用して、9ビットで表現する必要がある。この場合、予測差分値“−500”を、量子化幅Q“1”(2の1乗=2)で量子化すれば、量子化後の値“−250”を、9ビットで表現することができる。この場合、量子化誤差を、最大で“1”に抑えることができる。
すなわち、図7Aに示される量子化幅Q“2”で量子化されていた画素(たとえば、急峻なエッジ部分の画素)を符号化する場合、本実施の形態では、余剰ビットを使用して符号化する。そのため、本実施の形態では、量子化の処理をなくすことができたり、量子化する際の量子化幅Qを小さくすることができる(例えば、“2”を“1”にする)。したがって、量子化誤差による画像の画質の劣化を抑制することができる。すなわち、符号化による、画像の画質の劣化の度合いを小さくすることができる。
また、本実施の形態では、外部のメモリに複数の固定ビット幅(sビット)の符号化データが連続して記憶される。1つの符号化データには、画素を復元するための複数の符号化画素データを含む。したがって、ある符号化画素データにデータアクセスすることが要求される場合、当該符号化画素データを含む符号化データにデータアクセスするだけでよい。したがって、データに対するランダムアクセス性は維持することができる。
また、固定ビット幅(sビット)は、使用される集積回路のデータ転送のバス幅に設定される。なお、バス幅は固定長を保証できる。したがって、ランダムアクセス性を損なうことなく実現が可能となる。
以上により、本実施の形態によれば、ランダムアクセス性は維持したまま、画像の画質の劣化の度合いを小さくすることができる。
なお、本実施の形態における画像符号化処理は、LSI(Large Scale Integration)などのハードウェアで実現しても良い。
(画像復号化処理)
次に、本実施の形態における画像復号化処理の詳細な説明を行なう。
図1に示されるように、画像復号化装置110は、固定ビット幅設定部117と、アンパッキング部116と、量子化幅設定部114と、余剰ビットカウント部115と、出力部119と、逆量子化処理部118とを備える。画像復号化装置110に含まれる複数の部位の全てまたは一部は、ハードウエアで構成されてもよい。また、画像復号化装置110に含まれる複数の部位の全てまたは一部は、CPU等により実行されるプログラムのモジュールであってもよい。
余剰ビットカウント部115は、余剰ビットの数を示す余剰ビットカウンタRCを有する。余剰ビットカウンタRCは、初期状態では“0”を示す。
ここで、前述した図2の画像符号化処理により、図示されない外部メモリに複数の固定ビット幅(sビット)の符号化データが連続して記憶されているとする。また、画像復号化装置110内のアンパッキング部116内には、データを記憶する図示しないメモリが設けられているとする。
ここで、図1の画像復号化装置110内の量子化幅設定部114内には、データを記憶する図示しないメモリが設けられているとする。量子化幅設定部114内のメモリには、予め、図8のデータテーブルDT110が記憶されているとする。
図10は、画像復号化処理のフローチャートである。画像復号化処理では、まず、ステップS211の処理が行なわれる。
ステップS211では、固定ビット幅設定部117が、固定ビット幅(sビット)を設定する。固定ビット幅は、図2の画像符号化処理により生成された所定符号量の符号化データのビット量(例えば256ビット)に設定される。なお、固定ビット幅は、たとえば、使用される集積回路のデータ転送のバス幅に設定されてもよい。そして、固定ビット幅設定部117は、固定ビット幅(sビット)を示す固定ビット幅情報を、アンパッキング部116、量子化幅設定部114および余剰ビットカウント部115へ送信する。
ステップS212では、量子化幅設定部114が、前述したように、式(8)より基準ビット幅Mを算出する。ここで、算出された基準ビット幅Mは“8”であるとする。量子化幅設定部114は、算出した基準ビット幅Mを、余剰ビットカウント部115へ送信する。
ステップS213では、符号化データ取得処理が行なわれる。符号化データ取得処理では、アンパッキング部116が、外部メモリに連続して記憶されている複数の符号化データのうち、t番目の符号化データを読み出すことにより取得する。なお、tの初期値は“1”である。なお、外部メモリから符号化データを取得するのに限定されることなく、たとえば、パッキング部106が出力した符号化データを取得してもよい。
なお、t番目の符号化データが取得されると、アンパッキング部116は、tの値を“1”増加させる。
ステップS213Nでは、アンパッキング処理が行なわれる。アンパッキング処理では、アンパッキング部116が、取得したt番目の符号化データをアンパッキングする。すなわち、符号化データに含まれる複数のデータを取り出す。そして、アンパッキング部116は、取り出した複数のデータを、内部のメモリに記憶させる。この場合、内部のメモリには、図9Bに示されるように複数のデータが連続して記憶されるとする。
以降、画素データの取得方法としては、アンパッキング部116が、内部のメモリに記憶されている複数の画素データのうち、g番目の画素データを読み出すことにより取得する。なお、gの初期値は“1”である。なお、gは、アンパッキング部116が取得した画素データの数を示す。
例えば、1〜11番目の画素データは、図9Bに示される画素P1〜P11にそれぞれ対応する11個の画素データである。11個の画素データは、初期画素値データまたは符号化画素データである。
以下においては、アンパッキング部116が取得したg番目の画素データに対応する画素を、復号化対象画素という。復号化対象画素は、復号化の対象となる画素である。
ステップS214では、アンパッキング部116が、復号化対象画素に対応する画像データが初期画素値データであるか否かを判定する。ステップS214において、YESならば、処理はステップS213NAに移行する。
ステップS213NAでは、初期画素値データ取得処理が行なわれる。初期画素値データ取得処理では、アンパッキング部116が内部のメモリに記憶されている複数の画素データのうち、初期画素値データを読み出すことにより、初期画素値データを取得する。
アンパッキング部116は、初期画素値データとしての画素データを取得すると、取得した画素データを、出力部119へ送信する。そして、処理は後述するステップS235に移行する。一方、ステップS214において、NOならば、処理はステップS215に移行する。
なお、出力部119は、初期画素値データを受信すると、出力部119は受信した初期画素値データを外部のメモリに記憶させる。なお、出力部119は、受信した初期画素値データを、外部のメモリに記憶させるのではなく、外部の画像を処理する回路等に出力してもよい。
ここで、取得した画素データが初期画素値データであり、処理がステップS235に移行するとする。
ステップS235では、アンパッキング部116が、取得した画素データの数(g)が、所定値Pixと等しいか否かを判定する。取得した画素データは、初期画素値データまたは符号化画素データである。Pixは、前述したように、固定ビット幅(sビット)の符号化データ(パッキングデータ)に含ませる画素の数を示す。Pixの値は、一例として、“26”であるとする。
ステップS235において、YESならば、アンパッキング部116は、gの値を“1”に設定して、処理はステップS237に移行する。一方、ステップS235において、NOならば、アンパッキング部116は、gの値を“1”増加させる。そして、再度、ステップS214の処理が行なわれる。ここでは、取得した画素データの数(g)が、所定値Pixと等しくないとして、再度、ステップS214の処理が行なわれる。
ここで、復号化対象画素に対応する画像データが、画素P2に対応する、初期画素値データであるとする。
この場合、ステップS214でYESと判定され、ステップS213NAの処理により、アンパッキング部116は、初期画素値データとしての画素データ(画素P2に対応する画素データ)を取得する。そして、アンパッキング部116は、取得した初期画素値データとしての画素データを、出力部119へ送信し、処理はステップS235に移行する。
なお、出力部119は、初期画素値データを受信すると、出力部119は受信した初期画素値データを外部のメモリに記憶させる。
そして、前述したステップS235の処理が行なわれ、gの値が“1”増加された後、再度、ステップS214の処理が行なわれる。
次に、復号化対象画素に対応する画像データが、画素P3に対応する、符号化画素データとしての画素データであるとする。この場合、ステップS214でNOと判定され、処理はステップS215に移行する。
ステップS215では、復号化対象画素の予測値を算出するための予測値算出処理Rが行なわれる。予測値算出処理Rでは、(g−1)番目の画素データが初期画素値データである場合、以下の算出処理RAが行なわれる。
算出処理RAでは、アンパッキング部116が、図2の画像符号化処理のステップS115で予測値を算出するのに使用された予測式(1)と同じ意味を有する式を使用して、復号化対象画素の予測値を算出する。すなわち、アンパッキング部116は、g番目の画素データが処理対象である場合、(g−1)番目の画素データが示す値を、復号化対象画素の予測値とする。
ここで、処理対象の画素データが、画素p3に対応する画素データであるとする。この場合、画素P2に対応する画素データが示す値“220”が算出される予測値となる。
予測値算出処理Rでは、(g−1)番目の画素データが初期画素値データでない場合、後述する算出処理RBが行なわれる。
ステップS216では、アンパッキング部116が、復号化対象画素に対応する画素データが、グループ内1番目画素データであるか否かを判定する。グループ内1番目画素データは、アンパッキング部116の内部のメモリに記憶されている複数の画素データのうち、c番目のグループに属する3つの画素のうちの1番目の画素に対応する画素データである。cの初期値は“1”である。
例えば、1〜3番目のグループは、それぞれ、図9Bに示されるグループG1,G2,G3である。また、c番目のグループが、グループG1である場合、グループG1に属する1,2,3番目の画素は、それぞれ、画素P3,P4,P5である。
ステップS216において、YESならば、処理はステップS217に移行する。一方、ステップS216において、NOならば、処理は後述するステップS220に移行する。
ここでは、取得した画素データが、グループ内1番目画素データであるとする。この場合、処理は、ステップS217に移行する。
ステップS217では、アンパッキング部116が、内部のメモリに記憶されている複数のデータのうち、c番目のグループに対応する量子化幅情報Codeを、当該メモリから読み出すことにより取得する。そして、アンパッキング部116は、取得した量子化幅情報Codeを、量子化幅設定部114へ送信する。cの初期値は“1”である。
例えば、1〜3番目のグループは、それぞれ、図9Bに示されるグループG1,G2,G3である。ここでは、グループG1に対応する量子化幅情報Code(“001”)が取得されたとする。
ステップS218では、量子化幅設定処理Rが行なわれる。量子化幅設定処理Rでは、量子化幅設定部114が、内部のメモリに記憶されている図8のデータテーブルDT110と、アンパッキング部116から受信した量子化幅情報Codeが示すコードとを使用して、量子化幅Qを設定するとともに、余剰ビット数を算出する。
設定される量子化幅Qは、c番目のグループに属する3つの画素に対して設定される量子化幅である。また、算出される余剰ビット数は、c番目のグループに属する3つの画素の各々に対応する余剰ビット数である。
ここで、受信した量子化幅情報Codeは、コード“001”を示すとする。コード“001”は、データテーブルDT110に示される量子化幅Q“0”と、余剰ビット数“1”とに対応する。この場合、量子化幅Qは“0”に設定される。また、算出された余剰ビット数は“1”となる。
そして、量子化幅設定部114は、設定された量子化幅Qと、算出された余剰ビット数とを示す量子化情報を、余剰ビットカウント部115へ送信する。
ステップS220では、余剰ビットカウンタ更新処理Rが行なわれる。
図11は、余剰ビットカウンタ更新処理Rのフローチャートである。図11に示されるように、余剰ビットカウンタ更新処理Rでは、まず、ステップS221の処理が行なわれる。
ステップS221では、余剰ビットカウント部115が、受信した量子化情報が示す量子化幅Qが“0”であるという条件、および、受信した量子化情報が示す余剰ビット数が“0”より大きいという条件を満たすか否かが判定される。ステップS221において、YESならば、処理はステップS222に移行する。一方、ステップS221において、NOならば、処理は後述するステップS223に移行する。
ここで、受信した量子化情報が示す量子化幅Qは“0”であるとする。また、受信した量子化情報が示す余剰ビット数は“1”であるとする。この場合、ステップS221でYESと判定され、処理はステップS222に移行する。
ステップS222では、カウンタ値増加処理Rが行なわれる。カウンタ値増加処理Rでは、余剰ビットカウント部115が、余剰ビットカウンタRCの示す値を、受信した量子化情報が示す余剰ビット数だけ増加させる。この処理により、余剰ビットカウンタRCは“1”を示すとする。
そして、この余剰ビットカウンタ更新処理Rは終了し、再度、図10の画像復号化処理に戻り、処理はステップS219に移行する。
ステップS219では、符号化画素データ取得処理Rが行われる。符号化画素データ取得処理Rでは、アンパッキング部116が、後述するカウンタ減少値情報Rを、量子化幅設定部114から受信してない場合、以下の取得処理RAが行なわれる。
取得処理RAでは、アンパッキング部116が、内部のメモリに記憶されている図8のデータテーブルDT110と、取得した量子化幅情報Codeが示すコードとから余剰ビットを使用して符号化された画素データのビット数を画素毎に設定する。
ここで、受信した量子化幅情報Codeは、コード“001”を示すとする。コード“001”は、データテーブルDT110に示される符号付予測誤差分バイナリ桁数“7”に対応する。この場合、アンパッキング部116が内部のメモリから読み出す画素データに使用されているビット数は“7”となる。
すなわち、アンパッキング部116は、図9Bに示されるように、左側から複数の画素データが、内部のメモリに記憶されている場合、先頭から7ビット目までを画素P3の画素データとして読み出すことにより、画素データを取得する。そして、アンパッキング部116は、取得した画素データを、量子化幅設定部114へ送信する。
なお、符号化画素データ取得処理Rでは、アンパッキング部116が、量子化幅設定部114から後述するカウンタ減少値情報Rを受信した場合、後述する取得処理RBが行なわれる。
ステップS230では、データ送信処理Rが行なわれる。データ送信処理Rでは、量子化幅設定部114が、復号化対象画素に対応する量子化幅Qと、取得した画素データと、算出した復号化対象画素の予測値とを、逆量子化処理部118へ送信する。
ステップS231では、復号化処理が行なわれる。復号化処理では、逆量子化処理部118が、後述するカウンタ減少値情報Rを受信してない場合、以下の処理RAが行なわれる。
処理RAでは、逆量子化処理部118が、受信した画素データが示す値を、画素データ受信部101が受信する画素データのダイナミックレンジの符号付バイナリ桁数で表現したデータ(以下、復号データという)を生成する。すなわち、本実施例における画素データのダイナミックレンジは12ビットであるため、13ビットの復号データを生成する。
そして、逆量子化処理部118は、生成した復号データと算出した復号化対象画素の予測値とを、出力部119へ送信する。
ここで、受信した画素データが示す値は“40”であるとする。また、受信した画素データは7ビットであるとする。この場合、逆量子化処理部118は、受信した画素データが示す値“40”を13ビットで表現した復号データを生成する。
なお、復号化処理では、逆量子化処理部118が、後述するカウンタ減少値情報Rを受信した場合、後述する処理RBが行なわれる。
ステップS232では、量子化幅設定部114が、復号化対象画素に対応する量子化幅Qが“0”であるか否かを判定する。ステップS232において、YESならば、処理は、ステップS234に移行する。一方、ステップS232において、NOならば、処理は後述するステップS233に移行する。ここでは、復号化対象画素に対応する量子化幅Qが“0”であるとして、処理はステップS234に移行する。
ステップS234では、出力処理が行なわれる。出力処理では、出力部119が、復号データを受信すると、受信した復号データが示す値と、ステップS215の予測値算出処理Rによって算出された復号化対象画素の予測値とを加算した値を示す復号画素データを生成する。そして、出力部119は、生成した復号画素データを、外部のメモリに記憶させる。また、出力部119は、生成した復号画素データを、アンパッキング部116へ送信する。
なお、出力部119は、生成した復号画素データを、外部のメモリに記憶させるのではなく、外部の画像を処理する回路等に出力してもよい。
ここで、復号データが示す値は“40”であるとする。また、(g−1)番目の画素データが初期画素値データであるため、算出された復号化対象画素の予測値は、画素P2の画素値“220”であるとする。
すなわち、出力処理においては、出力部119が、受信した復号データが示す値と、予測値としての取得した画素データが示す値とを加算した値を示す復号画素データを生成する。
この場合、生成される復号画素データは“260”を示す。すなわち、生成される復号画素データは、図9Aに示される画素P3の画素値を示す画素データである。
そして、前述したステップS235の処理が行なわれ、gの値が“1”増加された後、再度、ステップS214の処理が行なわれる。
次に、復号化対象画素に対応する画像データが、画素P4に対応する、符号化画素データとしての画素データであるとする。この場合、ステップS214でNOと判定され、処理はステップS215に移行する。
次に、ステップS215の予測値算出処理Rが行なわれる。ここで、(g−1)番目の画素データが初期画素値データでないとする。この場合、予測値算出処理Rでは、以下の算出処理RBが行なわれる。
算出処理RBでは、アンパッキング部116が、出力部119から受信した復号画素データが示す画素値を、復号化対象画素の予測値とする。ここで、出力部119から受信した復号画素データは、図9Aに示される画素P3の画素値を示す画素データであるとする。この場合、復号化対象画素の予測値は“260”となる。
また、アンパッキング部116は、前述したc番目のグループに属する全ての画素の予測値を算出した場合、アンパッキング部116は、cの値を“1”増加させる。
ステップS216では、前述したのと同様な処理が行なわれるので詳細な説明は繰り返さない。ここでは、NOと判定され、処理は、ステップS220に移行するとする。
そして、再度、図11のステップS221,S222の処理が行なわれることにより、余剰ビットカウンタRCの示す値は“2”となったとする。
そして、この余剰ビットカウンタ更新処理Rは終了し、再度、図10の画像復号化処理に戻り、再度、ステップS230の処理が行なわれる。この処理により、復号化対象画素に対応する量子化幅Q“0”と、取得した画素データと、算出した復号化対象画素の予測値“260”とが、逆量子化処理部118へ送信される。
そして、ステップS219の符号化画素データ取得処理Rが行われる。ここでは、前述したのと同様に取得処理RAが行なわれるとする。
そして、ステップS231の復号化処理が行なわれる。ここでは、前述したのと同様に処理RAが行なわれるとする。
処理RAでは、逆量子化処理部118が、受信した画素データが示す値“20”を、画素データ受信部101が受信する画素データのダイナミックレンジの符号付バイナリ桁数(13)で表現した復号データを生成する。
そして、逆量子化処理部118は、生成した復号データを、出力部119へ送信する。
そして、ステップS232でYESと判定され、前述したのと同様にステップS234の処理が行なわれる。この処理により、出力部119は、画素P4の画素値“280”を示す復号画素データを生成し、生成した復号画素データを、外部のメモリに記憶させる。また、出力部119は、生成した復号画素データを、アンパッキング部116へ送信する。
そして、前述したステップS235の処理が行なわれ、gの値が“1”増加された後、再度、ステップS214の処理が行なわれる。
そして、ステップS215の処理が行なわれる。これらの処理により、復号化対象画素の予測値“280”が算出される。この時点で、グループG1に属する全ての画素の予測値が算出されたことになるので、アンパッキング部116は、cの値を“1”増加させる。ここで、cの値は“2”であるとする。
そして、ステップS216の処理、図11のステップS221,S222の処理が行なわれることにより、余剰ビットカウンタRCの示す値は“3”となったとする。
また、ステップS219,S230,S231,S232,S234の処理が前述したのと同様に行なわれる。この処理により、画素値“320”を示す復号画素データが生成され、生成された復号画素データが、アンパッキング部116へ送信される。
そして、前述したステップS235の処理が行なわれ、gの値が“1”増加された後、再度、ステップS214の処理が行なわれる。
そして、ステップS215の処理が行なわれる。これらの処理により、復号化対象画素の予測値“320”が算出される。
ここで、復号化対象画素に対応する画素データは、前述したグループ内1番目画素データである。当該画素データは、図9Bに示される画素P6に対応する10ビットの符号化画素データであるとする。すなわち、復号化対象画素に対応する画素データは、グループG2に属する1番目の画素に対応する画素データである。
この場合、ステップS216でYESと判定され、前述したステップS217の処理が行なわれる。この処理により、アンパッキング部116が、内部のメモリに記憶されている複数のデータのうち、2番目のグループ(グループG2)に対応する量子化幅情報Codeを、当該メモリから読み出すことにより取得する。取得された量子化幅情報Codeは、コード“100”を示すとする。
ステップS218の量子化幅設定処理Rでは、前述したのと同様な処理が行なわれるので詳細な説明は繰り返さない。この処理により、量子化幅Qは“2”に設定される。また、算出された余剰ビット数は“0”となる。
この場合、設定される量子化幅Qは、2番目のグループに属する3つの画素に対して設定される量子化幅である。また、算出される余剰ビット数は、2番目のグループに属する3つの画素の各々に対応する余剰ビット数である。
そして、量子化幅設定部114は、設定された量子化幅Qと、算出された余剰ビット数とを示す量子化情報を、余剰ビットカウント部115へ送信する。
そして、再度、図11のステップS221の処理が行なわれる。ここでは、ステップS221でNOと判定され、処理はステップS223に移行する。
ステップS223では、余剰ビットカウント部115が、余剰ビットカウンタRCの値が、受信した量子化情報が示す量子化幅Qより大きいか否かを判定する。ステップS223において、YESならば、処理はステップS224に移行する。一方、ステップS223において、NOならば、処理は後述するステップS226に移行する。
ここでは、余剰ビットカウンタRCの値は“3”であるとする。また、量子化情報が示す量子化幅Qは“2”であるとする。この場合、YESと判定され、処理はステップS224に移行する。
ステップS224では、カウンタ値減少処理Rが行なわれる。カウンタ値減少処理Rでは、余剰ビットカウント部115が、余剰ビットカウンタRCの値(例えば“3”)を、受信した量子化情報が示す量子化幅Q(例えば“2”)の値だけ減少させる。この処理により、余剰ビットカウンタRCの値は“1”になったとする。
また、余剰ビットカウント部115は、カウンタ減少値情報Rを、量子化幅設定部114へ送信する。カウンタ減少値情報Rは、余剰ビットカウンタRCの値を減少させた値(たとえば、“2”)を示す情報である。この場合、カウンタ減少値情報Rは、後述の処理で使用可能な余剰ビットの数を示す。
量子化幅設定部114は、カウンタ減少値情報Rを受信すると、受信したカウンタ減少値情報Rを、逆量子化処理部118およびアンパッキング部116へ送信する。
ステップS225では、量子化幅零設定処理Rが行なわれる。量子化幅零設定処理Rでは、余剰ビットカウント部115が、量子化幅零変更指示Rを、量子化幅設定部114へ送信する。量子化幅零変更指示Rは、復号化対象画素に対応する量子化幅Qを“0”に設定するための指示である。
そして、この余剰ビットカウンタ更新処理Rは終了し、再度、図10の画像復号化処理に戻り、処理はステップS219に移行する。
量子化幅設定部114は、量子化幅零変更指示Rを受信すると、復号化対象画素に対応する量子化幅Qを“0”に変更する。
ステップ219では、符号化画素データ取得処理Rが行われる。ここで、アンパッキング部116が、カウンタ減少値情報Rを受信したので、符号化画素データ取得処理Rでは、以下の取得処理RBが行なわれる。
取得処理RBでは、アンパッキング部116が、(基準ビット幅M+カウンタ減少値情報Rが示す値)ビットで表現した画素データ、すなわち、余剰ビットを消費して符号化された画素データを内部のメモリから読み出すことにより取得する。
ここで、基準ビット幅Mは8ビットであるとする。また、カウンタ減少値情報Rが示す値は“2”であるとする。この場合、アンパッキング部116は、復号化対象画素に対応する画素データが図9Bに示されるグループG2に属する1番目の画素に対応する画素であるため、その先頭から10ビット目までを画素P6に対応する画素データとして読み出すことにより取得する。そして、アンパッキング部116は、取得した画素データを、量子化幅設定部114へ送信する。
前述したように、カウンタ減少値情報Rが示す値は、使用可能な余剰ビットの数である。したがって、カウンタ減少値情報Rが示す値が“2”である場合、読み出すことにより取得する復号化対象画素に対応する画素データは、2つの余剰ビットを使用して生成されるデータである。
ステップS230では、前述したのと同様な処理が行なわれる。この処理により、復号化対象画素に対応する量子化幅Q“0”と、取得した画素データと、算出した復号化対象画素の予測値“320”とが、逆量子化処理部118およびアンパッキング部116へ送信される。
そして、ステップS231の復号化処理が行なわれる。ここで、量子化幅設定部114から受信した量子化幅Qが“0”であり、かつ、逆量子化処理部118が、後述するカウンタ減少値情報Rを受信したので、復号化処理では、以下の処理RBが行なわれる。
処理RBでは、逆量子化処理部118が、受信した(基準ビット幅M+カウンタ減少値情報Rが示す値)ビットで表現された画素データを、画素データ受信部101が受信する画素データのダイナミックレンジの符号付バイナリ桁数で表現したデータ(以下、復号データという)を生成する。
そして、逆量子化処理部118は、生成した復号データを、出力部119へ送信する。
ここで、受信した画素データが示す値は“270”であるとする。この場合、逆量子化処理部118は、受信した画素データが示す、10ビットで表現した値“270”を13ビットで表現した復号データを生成する。
そして、ステップS232でYESと判定され、前述したのと同様にステップS234の処理が行なわれる。この処理により、画素P5の画素値“320”を示す画素データが出力部119により取得され、画素P6の画素値“590”を示す復号画素データが生成される。また、生成した復号画素データが、外部のメモリに記憶される。また、出力部119は、生成した復号画素データを、アンパッキング部116へ送信する。
そして、前述したステップS235の処理が行なわれ、gの値が“1”増加された後、再度、ステップS214の処理が行なわれる。
そして、ステップS215の処理が行なわれる。これらの処理により、復号化対象画素の予測値“590”が算出される。
そして、ステップS216でNOと判定され、図11のステップS221の処理が行なわれる。ここでは、ステップS221でNOと判定され、処理はステップS223に移行する。
ここで、余剰ビットカウンタRCの値は“1”であるとする。また、受信した量子化情報が示す量子化幅Qは“2”であるとする。この場合、ステップS223において、NOと判定され、処理はステップS226に移行する。
ステップS226では、量子化幅変更処理Rが行なわれる。量子化幅変更処理Rでは、余剰ビットカウント部115が、量子化幅変更指示Rを、量子化幅設定部114へ送信する。量子化幅変更指示Rは、復号化対象画素に対応する量子化幅Q(例えば“2”)を、余剰ビットカウンタRCの値(例えば“1”)だけ減算した値に変更するための指示である。
量子化幅設定部114は、量子化幅変更指示Rを受信すると、復号化対象画素に対応する量子化幅Q(例えば“2”)を、余剰ビットカウンタRCの値(例えば“1”)だけ減算した値(例えば“1”)に変更する。
ステップS227では、余剰ビットカウント部115が、余剰ビットカウンタRCの値を“0”に設定する。
また、余剰ビットカウント部115は、カウンタ減少値情報Rを、量子化幅設定部114へ送信する。カウンタ減少値情報Rは、余剰ビットカウンタRCの値を減少させた値(たとえば、“1”)を示す情報である。この場合、カウンタ減少値情報Rは、後述の処理で使用可能な余剰ビットの数を示す。
量子化幅設定部114は、カウンタ減少値情報Rを受信すると、受信したカウンタ減少値情報Rを、逆量子化処理部118およびアンパッキング部116へ送信する。
そして、この余剰ビットカウンタ更新処理Rは終了し、再度、図10の画像復号化処理に戻り、処理はステップS219に移行する。
ステップ219では、前述したのと同様に取得処理RBが行われる。ここで、基準ビット幅Mは8ビットであるとする。また、カウンタ減少値情報Rが示す値は“1”であるとする。この場合、アンパッキング部116は、復号化対象画素に対応する画素データが図9Bに示されるグループG2に属する2番目の画素に対応する画素であるため、その先頭から9ビット目までを画素P7に対応する画素データとして読み出すことにより取得する。そして、アンパッキング部116は、取得した画素データを、量子化幅設定部114へ送信する。
前述したように、カウンタ減少値情報Rが示す値は、使用可能な余剰ビットの数である。したがって、カウンタ減少値情報Rが示す値が“1”である場合、読み出すことにより取得する復号化対象画素に対応する画素データは、1つの余剰ビットを使用して生成されるデータである。
ステップS230では、前述したのと同様な処理が行なわれる。この処理により、復号化対象画素に対応する量子化幅Q“1”と、取得した画素データと、算出した復号化対象画素の予測値“590”とが、逆量子化処理部118へ送信される。
ステップS231では、前述した復号化処理が行なわれる。ここで、逆量子化処理部118が、量子化幅設定部114から受信した量子化幅Qが“1”であり、かつ、逆量子化処理部118がカウンタ減少値情報Rを受信したとする。この場合、復号化処理において、以下の処理RBが行なわれる。
処理RBでは、前述したように、逆量子化処理部118が、受信した(基準ビット幅M+カウンタ減少値情報Rが示す値)ビットで表現されたデータを、画素データ受信部101が受信する画素データのダイナミックレンジの符号付バイナリ桁数で表現したデータ(以下、復号データという)を生成する。
ここで、受信した画素データが示す値は、“−250”であるとする。この場合、逆量子化処理部118は、受信した画素データが示す値“−250”を13ビットで表現した復号データを生成する。
そして、ステップS232でNOと判定されて、処理はステップS233に移行する。以下においては、1以上の値を示す量子化幅Qを、非零量子化幅Qという。
ステップS233では、逆量子化処理が行なわれる。逆量子化処理では、逆量子化処理部118が、復号データが示す値に、2のQ乗を乗算することにより逆量子化する。以下においては、逆量子化により得られた値を、逆量子化済値という。
ここで、復号データが示す値は“−250”であるとする。また、復号化対象画素に対応する量子化幅Qは“1”を示すとする。この場合、逆量子化処理部118は、取得した画素データが示す値は“−250”に、2の1乗(2)を乗算することにより逆量子化済値“−500”を得る。
そして、逆量子化処理部118は、逆量子化済値(例えば、“−500”)を示す復号データを、出力部119へ送信する。
そして、前述したのと同様にステップS234の処理が行なわれる。この処理により、画素P6の画素値“590”を示す画素データが出力部119により取得され、画素P7の画素値“90”を示す復号画素データが生成される。また、生成した復号画素データが、外部のメモリに記憶される。また、出力部119は、生成した復号画素データを、アンパッキング部116へ送信する。
そして、前述したステップS235の処理が行なわれ、gの値が“1”増加された後、再度、ステップS214の処理が行なわれる。
そして、ステップS235でYESと判定されるまで、ステップS214〜S234の処理の少なくとも一部の処理が繰り返し行なわれる。
ステップS235でYESと判定されると、処理はステップS237に移行する。
ステップS237では、余剰ビットカウント部105が、余剰ビットカウンタの示す値を“0”に設定する。
ステップS238では、アンパッキング部116が、処理の対象となる画像(ピクチャ)全体に対し、復号化の処理が終了したか否かを判定する。ステップS238において、YESならば、この画像復号化処理は終了する。一方、ステップS238において、NOならば、再度、ステップS213の処理が行なわれる。
そして、ステップS238でYESと判定されるまで、ステップS213〜S237の少なくとも一部の処理が繰り返し行なわれることにより、画像(ピクチャ)を復元するための複数の符号化データが全て復号化される。
なお、本実施の形態における画像復号化処理は、LSIなどのハードウェアで実現しても良い。
以上説明したように、本実施の形態の画像符号化処理では、画素の予測差分値を符号付2進数で表現したバイナリデータの桁数(符号付予測差分バイナリ桁数)が、基準ビット幅Mより小さい場合、ビットを余らせて当該予測差分値を符号化する。また、符号付予測差分バイナリ桁数が基準ビット幅Mより大きい場合であって、かつ、余剰ビットが存在する場合は、(基準ビット幅M+使用可能な余剰ビットの数が示す値)で表現する。
したがって、量子化の処理をなくすことができたり、量子化する際の量子化幅Qを小さくすることができる。その結果、量子化誤差による画像の画質の劣化を抑制することができる。すなわち、符号化による、画像の画質の劣化の度合いを小さくすることができる。
また、本実施の形態では、外部のメモリに複数の固定ビット幅(sビット)の符号化データが連続して記憶される。1つの符号化データには、画素を復元するための複数の符号化画素データを含む。したがって、ある符号化画素データにデータアクセスすることが要求される場合、当該符号化画素データを含む符号化データにデータアクセスするだけでよい。したがって、データに対するランダムアクセス性は維持することができる。
また、固定ビット幅(sビット)は、使用される集積回路のデータ転送のバス幅に設定される。なお、バス幅は固定長を保証できる。したがって、ランダムアクセス性を損なうことなく実現が可能となる。
以上により、本実施の形態によれば、ランダムアクセス性は維持したまま、画像の画質の劣化の度合いを小さくすることができる。
<実施の形態2>
実施の形態2では、実施の形態1で説明した、画像符号化装置100及び画像復号化装置110を備えたデジタルスチルカメラの例を説明する。
図12は、実施の形態2に係るデジタルスチルカメラ1300の構成を示すブロック図である。
図12に示されるように、デジタルスチルカメラ1300は、画像符号化装置100と、画像復号化装置110とを備える。画像符号化装置100および画像復号化装置110の構成および機能は、実施の形態1で説明したので詳細な説明は繰り返さない。
デジタルスチルカメラ1300は、さらに、撮像部1310と、画像処理部1320と、表示部1330と、圧縮変換部1340と、記録保存部1350と、SDRAM1360とを備える。
撮像部1310は、被写体を撮像して、その像に対応するデジタルの画像データを出力する。この例では、撮像部1310は、光学系1311と、撮像素子1312と、アナログフロントエンド1313(図中ではAFEと略記)と、タイミングジェネレータ1314(図中ではTGと略記)とを含む。
光学系1311は、レンズ等からなり、被写体を撮像素子1312上に結像させるようになっている。撮像素子1312は、光学系1311から入射した光を電気信号に変換する。撮像素子1312としては、CCD(Charge Coupled Device)を用いた撮像素子や、CMOSを用いた撮像素子等、種々の撮像素子を採用できる。
アナログフロントエンド1313は、撮像素子1312が出力したアナログ信号に対してノイズ除去、信号増幅、A/D変換などの信号処理を行なう。そして、アナログフロントエンド1313は、当該信号処理により得られたデータを示す画像データを出力する。出力される画像データは、複数の画素データから構成される。当該画素データは、RAWデータである。
タイミングジェネレータ1314は、撮像素子1312やアナログフロントエンド1313の動作タイミングの基準となるクロック信号を、撮像素子1312およびアナログフロントエンド1313へ供給する。
画像処理部1320は、撮像部1310が出力した画素データ(RAWデータ)に所定の画像処理を施す。そして、画像処理を行なうことにより得られた画素データ(RAWデータ)を、画像符号化装置100へ出力する。
図12に示すように、画像処理部1320は、一般的には、ホワイトバランス回路1321(図中ではWBと略記)と、輝度信号生成回路1322と、色分離回路1323と、アパーチャ補正処理回路1324(図中ではAPと略記)と、マトリクス処理回路1325と、画像の拡大・縮小を行うズーム回路1326(図中ではZOMと略記)とを備える。
ホワイトバランス回路1321は、白い被写体がどのような光源下でも白く撮影されるように、撮像素子1312のカラーフィルターによる色成分を正しい割合で補正する回路である。
輝度信号生成回路1322は、RAWデータから輝度信号(Y信号)を生成する。色分離回路1323は、RAWデータから色差信号(Cr/Cb信号)を生成する。
アパーチャ補正処理回路1324は、輝度信号生成回路1322が生成した輝度信号に高周波数成分を足し合わせて解像度を高く見せる処理を行う。マトリクス処理回路1325は、色分離回路1323から出力されるデータに対して、撮像素子の分光特性や画像処理で崩れた色相バランスの調整を行なう。
一般的に、画像処理部1320は、処理対象の画素データをSDRAM等のメモリに一時記憶させ、一時記憶されたデータに対して所定の画像処理や、YC信号(輝度信号または色差信号)の生成、ズーム処理等を行い、処理後のデータを再度SDRAMに一時記憶させることが多い。
そのため、画像処理部1320は、画像符号化装置100へデータを出力する処理および画像復号化装置110からデータを受信する処理を行なうことが考えられる。
表示部1330は、画像復号化装置110から出力される画像データ(画像復号化後の画像データ)を表示する。
圧縮変換部1340は、画像復号化装置110から出力される画像データをJPEG等の所定の規格で圧縮変換し、変換により得られたJPEG画像のデータを記録保存部1350へ出力する。また、圧縮変換部1340は、記録保存部1350によって読み出されたJPEG画像のデータを伸張変換して、変換後のデータを、画像符号化装置100へ出力する。
すなわち、圧縮変換部1340は、JPEG規格に基づくデータを処理可能である。このような圧縮変換部1340は、一般的にデジタルスチルカメラに搭載される。
記録保存部1350は、圧縮された画像データを受信して、当該画像データを記録媒体(例えば不揮発性メモリ等)に記録する。また、記録保存部1350は、記録媒体に記録されている、圧縮された画像データを読み出して、当該画像データを圧縮変換部1340に出力する。
本実施の形態における画像符号化装置100及び画像復号化装置110が処理対象とするデータは、RAWデータに限定されない。たとえば、画像符号化装置100及び画像復号化装置110が処理対象とするデータは、画像処理部1320によってRAWデータから生成されたYC信号(輝度信号または色差信号)のデータ、一旦JPEG等に圧縮変換されたJPEG画像のデータを伸張することにより得られるデータ(輝度信号または色差信号のデータ)等であってもよい。
このように、本実施の形態におけるデジタルスチルカメラ1300は、一般的にデジタルスチルカメラに搭載される圧縮変換部1340以外にも、RAWデータやYC信号を処理対象とする画像符号化装置100及び画像復号化装置110を備える。
これにより、本実施の形態におけるデジタルスチルカメラ1300は、同じメモリ容量で、同じ解像度の連写枚数を増やす高速撮像動作が可能となる。また、デジタルスチルカメラ1300は、同じ容量のメモリに記憶させる動画像の解像度を高めることが可能になる。
また、実施の形態2に示したデジタルスチルカメラ1300の構成は、デジタルスチルカメラ1300と同様に撮像部、画像処理部、表示部、圧縮変換部、記録保存部、及びSDRAMを備えるデジタルビデオカメラの構成に適用することもできる。
<実施の形態2の変形例1>
画像処理部1320が、画像符号化装置100に対し出力する画素データが、YC信号(輝度信号または色差信号)のデータである場合、図1の固定ビット幅設定部107が設定する固定ビット幅(sビット)のデータを生成する処理において、輝度信号のデータより色差信号のデータを優先して符号化するようにしてもよい。当該YC信号のデータは、画像処理部1320の内部で変換されたデータである。
色差信号は、画像処理部1320の内部で生成する段階で高周波成分が落ちており、輝度信号と比較すると急峻なエッジが存在しない。そのため、符号化対象画素に対応する予測値の予測精度も高く、量子化幅Qも低くなると想定できる。よって、余剰ビットカウンタの値が増加され易いと考えられる。
そのため、固定ビット幅(sビット)のデータを生成する処理において、輝度信号のデータより色差信号のデータを優先して符号化することにより、多くの余剰ビットを発生させておく。これにより、視覚的に敏感な輝度信号のデータの符号化においてビットを多く割り当てることが可能となる。その結果、視覚劣化を抑圧させた上で画素データを符号化することができる。
<実施の形態2の変形例2>
本変形例では、画像処理部1320が、画像符号化装置100に対し出力する画素データがYC信号(輝度信号または色差信号)のデータである場合、さらに、色差信号のデータをIQ軸変換して符号化する変形例を説明する。
IQ軸変換されたIQ信号とは、色差信号を変調させて得られるものであり、以下の式で表される。
I=0.6R−0.28G−0.32B ・・・(9)
Q=0.21R−0.52G+0.31B ・・・(10)
式(9)、式(10)において、Rは、色差信号の赤信号成分を示し、Gは色差信号の緑信号成分を示し、Bは色差信号の青信号成分を示す。
上記した変調で得られるIQ信号は、人間の視覚特性により色差信号を簡略化するために作られた信号である。色度図上において人間の目の分解能が一番良い「オレンジ−シアン軸」をI軸とした場合、I信号は細部まで対応するため広い帯域をもたせて伝送するために用いられる。また、色度図上においてI軸と直交し人間の目の分解能が一番悪い「黄色−マゼンタ軸」をQ軸とした場合、Q信号は狭帯域で伝送するために用いられる。
つまり、Q信号の情報量をある程度制限しても、視覚的な画質劣化を抑えて伝送することができる。従って、画像符号化装置100内で色差信号をIQ信号に変調することで、Q信号のビット数をできる限り減らし、人間の目が敏感な輝度信号にビットを割り当てることが可能となる。
具体的には、図13Aに示すように、グループG1にQ信号を割り当て、Q信号の符号化画素データに対しては、基準ビット幅Mから“1”減算したビット幅を確保しておく。余ったビットは、固定ビット幅設定部107により設定される固定ビット幅(sビット)のデータ中にパッキングするQ信号の画素数分、予め余剰ビットとして確保しておく。
さらに、実施の形態2の変形例1で示したように、固定ビット幅(sビット)のデータ内で色信号を第1優先順位で符号化する(グループG2にI信号を割り当てる)。これにより、余剰ビットの消費を防ぎ、余剰ビットをできる限り視覚的に敏感な輝度信号に割り当てる。
図13Aに示されるように、グループG2にI信号を割り当てた場合、余剰ビットの増減はないが、I信号の成分に急峻な変化が発生した場合は余剰ビットが消費(使用)されるし、変化がない場合は累積余剰ビット数が増えることも考えられる。
図13Aでは、I信号においては、余剰ビットカウンタの値が変化するような画素データの入力がなかったものとする。グループの後部に輝度信号を割り当てることで、増加する余剰ビットは全て輝度信号で使用することが可能になる。すなわち、余剰ビットを使用して輝度信号のデータを符号化する。そのため、視覚劣化を抑圧させた上で画素データを符号化することができる。
また、増減する余剰ビットと、消費された結果の符号化画素データのビット幅は入力される画素データに依存するため、図13Aでは「*」で示してある。
なお、Q信号の符号化画素データのビット幅を減らした分を、予め輝度信号の符号化画素データのビット幅に割り当てておいてもよい。具体的には、Q信号の符号化画素データのビット幅を基準ビット幅Mから“1”減算した場合であれば、同じ固定ビット幅(sビット)のデータ中にパッキングする輝度信号を(基準ビット幅M+1)のビット幅で表現することが可能となる。
このときの基準ビット幅Mを、図13Bに示す。図13Bに示すように、本変形例によれば、固定ビット幅(sビット)のデータ内で色信号を第1優先順位で符号化しなくても、予めビットを視覚的に敏感な輝度信号に多く割り当てることが可能になる。したがって、視覚劣化を抑圧させた上で画素データを符号化することができる。
<実施の形態3>
実施の形態3では、実施の形態1で説明した画像符号化装置および画像復号化装置の各々が、さらに、余剰ビット制御部を備える例を説明する。
図14は、実施の形態3における画像符号化装置100Aおよび画像復号化装置110Aの構成を示すブロック図である。
図14に示されるように、画像符号化装置100Aは、図1の画像符号化装置100と比較して、余剰ビット制御部109をさらに備える点が異なる。それ以外は、画像符号化装置100と同様なので詳細な説明は繰り返さない。また、画像復号化装置110Aは、図1の画像復号化装置110と比較して、余剰ビット制御部111をさらに備える点が異なる。それ以外は、画像復号化装置110と同様なので詳細な説明は繰り返さない。
(符号化処理)
まず、使用する余剰ビットの数を制御しない場合における画像符号化処理を説明する。
図15Aおよび図15Bは、使用する余剰ビットの数を制御しない場合における画像符号化処理を説明するための図である。
図15Aは、一例として、画素データ受信部101に入力される、26個の画素データのうちの11個の画素データが示される。なお、図15Aに示される各項目は、図9Aで説明したのと同様なので詳細な説明は繰り返さない。
画素データ受信部101には、画素P1,P2,・・・,P11の順で、各画素に対応する12ビットの画素データが入力されるとする。画素P1〜P11内に示される数値は、対応する画素データが示す画素値である。なお、画素P1,P2にそれぞれ対応する2つの画素データは、それぞれ、緑色および赤色の初期画素値データであるとする。
この例では、符号化対象画素の予測値は、前述した予測式(1)を使用して算出される。すなわち、符号化対象画素の予測値は、符号化対象画素の左隣の画素の画素値となる。また、この例では、符号化対象画素の画素値と、符号化対象画素の左隣の画素の画素値との差の値(予測差分値)を量子化する。
また、この例では、量子化幅情報Codeと、予測差分絶対値、量子化幅Qおよび余剰ビット数との関係についても、図8のデータテーブルDT110を使用する。
量子化幅Qは、実施の形態1と同様に、各グループに属する隣接する3画素の予測差分値から算出される最大予測差分絶対値から算出する。グループに属する3画素は同じ量子化幅Qで量子化する。
図15Bは、画像符号化装置100Aが符号化の処理を行なうことにより得られた画素データ(符号化画素データ)を示す図である。図15Bに示される、各符号化画素データ内の数値は、符号化画素データのビット数を示す。
この例における、画像符号化処理では、実施の形態1と同様な処理が行なわれることにより、グループG1に属する3画素に対応する量子化幅Qは“0”に設定される。そのため、量子化幅情報Codeは、コード“000”が選択される。そのため、グループG1に属する3画素に対応する予測差分値を符号化した後、6個の余剰ビットが発生する。符号化画素データは3画素とも6ビットで表現できる。
グループG2とグループG3においては、急峻な画素値のレベル変化が複数存在している。量子化幅QはグループG2およびグループG3の両方で、“4”に設定される。
しかし、画素P6(画素値“1590”)に対応する予測差分値を符号化する際に、4個の余剰ビットが使用(消費)される。また、次の画素P7(画素値“2000”)に対応する予測差分値を符号化する際に、2個の余剰ビットが使用(消費)されるため、その時点で累積余剰ビット数は“0”となってしまう。
そのため、以後、発生する急峻なエッジは全く救済されることなく、基準ビット幅Mで符号化されてしまう。
図16Aおよび図16Bは、本実施の形態における、使用する余剰ビットの数を制御する場合における画像符号化処理を説明するための図である。
図16Aは、一例として、画素データ受信部101に入力される、26個の画素データのうちの11個の画素データが示される。なお、図16Aに示される11個の画素データは、図15Aに示した11個の画素データと同じである。図16Aに示される画素P1,P2以外の複数の画素は、符号化の対象となる符号化対象画素である。
本実施の形態の処理では、グループG1において同じ条件で、6個の余剰ビットが発生する。本実施の形態では、余剰ビット制御部109を用いて使用する余剰ビットの数(余剰ビットカウンタの値)を制御することで、局所的な量子化誤差を分散させることを特徴とする。
本実施の形態において、使用する余剰ビットの数を制御するための処理を、余剰ビット制御処理という。まず、余剰ビット制御処理の前に、以下の処理が行なわれるとする。
まず、量子化幅設定部104は、固定ビット幅(sビット)のデータ内の各グループの量子化幅Qの情報を余剰ビット制御部109へ送信する。
余剰ビット制御部109は、受信した各グループの量子化幅Qの情報から予測誤差の出現頻度を測定する。この処理により、各グループにどれだけの余剰ビットを確保すればよいのかを推測する。
例えば、図16Aに示される複数の画素データが、画像符号化装置100Aに入力された場合、量子化幅設定部104は、量子化幅情報Codeであるコード"000","110"、"110"を、余剰ビット制御部109へ送信する。
そして、余剰ビット制御処理が行なわれる。
図17は、余剰ビット制御処理のフローチャートである。
余剰ビット制御部109では、量子化幅情報Codeであるコード“000”,“110”、“110”情報を受信し、グループG1では1画素辺り2つの余剰ビットが発生すると判断する。そのため、余剰ビットカウンタの値は、6まで増加する(S501、S502)。
グループG2およびグループG3では、対応する量子化幅Qが“0”より大きい。そのため、余剰ビット制御部109は、余剰ビットが使用(消費)されることが量子化前に先読みできる(S503)。そこで、余剰ビット制御処理は、6個の余剰ビットを、グループG2とグループG3で半分(3個)ずつ消費させるための命令を、余剰ビットカウント部105へ送る(S504)。
さらに、1回の符号化処理(量子化処理も含む)において消費できる余剰ビットの最大ビット数を決定しておくことにより、グループ内でも余剰ビットの消費を分散させることができる。具体的には、1回の符号化において消費できる余剰ビットの最大ビット数を2ビットと予め決めておく。この場合、図15Aの画素P6に対応する予測差分値を符号化する際において、最大ビット数である2個の余剰ビットが消費される。
画素P6の次の画素P7に対応する予測差分値を符号化する際は、4個の余剰ビットが存在しており、グループG2で消費できる余剰ビットの数は1つである。そのため、画素P7に対応する予測差分値を符号化する際に、1個の余剰ビットを使用(消費)する。
画素P8に対応する予測差分値を符号化する際は、3個の余剰ビットが存在している。しかしながら、グループG2内で消費可能な余剰ビットのビット数をオーバーしてしまうため、ここでは消費せずに量子化を行う。
グループG3においても、3個の余剰ビットが消費可能である。そのため、画素P9に対応する予測差分値を符号化する際は、最大ビット数である2個の余剰ビットが消費される。画素P10に対応する予測差分値を符号化する際は、余剰ビットは1つ存在するため、量子化幅Qを“1”低減させることができる。
グループG3に属する画素P11に対応する予測差分値を符号化する際は、余剰ビットが存在しないため、余剰ビットは使用せずに予測差分値を符号化することになる。
図16Aの例においては、グループG2およびグループG3に対応する量子化幅Qが同じであったため、発生した複数の余剰ビットを半分ずつ割り当てた。
なお、図17のステップS504の処理において、余剰ビットの割り振りは、余剰ビットを消費するグループにおける量子化幅を基準に、量子化幅が大きいほど余剰ビットを多く割り当てるように決定してもよい。
次に、実施の形態3における余剰ビットカウント部105が行なう余剰ビットカウンタを更新するための処理(以下、余剰ビットカウンタ更新処理Aという)について説明する。
余剰ビットカウンタ更新処理Aは、図2の画像符号化処理のステップS120の余剰ビットカウンタ更新処理の代わりに行なわれる処理である。
図18は、余剰ビットカウンタ更新処理Aのフローチャートである。図18に示されるように、余剰ビットカウンタ更新処理Aは、図3の余剰ビットカウンタ更新処理と比較して、ステップS123の代わりにステップS123Aの処理が行なわれる点と、ステップS123B,S123C,S123D,S123Eの処理がさらに行なわれる点とが異なる。
なお、図18において、図3のステップ番号と同じステップ番号の処理は、実施の形態1で説明した処理と同様な処理が行なわれるので詳細な説明は繰り返さない。
まず、余剰ビットの消費が必要となる場合に行なわれるステップS123Aの処理は、ステップS123の処理と比較して、同一グループ内で消費可能な余剰ビットが存在するかどうかの判定が追加されている。すなわち、ステップS123Aの処理により、グループ内で消費可能な余剰ビットの数をオーバーしないように制御される。
次に、ステップS123Bの処理では、余剰ビットの数が消費できる最大ビット数より大きいか否かが判定される。最大ビット数より大きい場合(S123BでYES)、余剰ビットカウント部105は、余剰ビットカウンタの値を、消費できる最大ビット数に更新する(S123C)。これにより、グループ内での余剰ビットの消費が分散するように制御される。
次に、ステップS123Dの処理では、余剰ビットカウント部105が、同一グループ内で消費可能な余剰ビット数のうち消費された余剰ビットの数だけ余剰ビットカウンタの値を減少させる。この処理により、同一グループ内の次の画素に対応する予測差分値の符号化時に、グループ内で消費可能な余剰ビットの数をオーバーしないように閾値が更新される。
次に、ステップS123Eの処理では、ステップS123Bの処理で、余剰ビットの数が消費できる最大ビット数より大きい場合(S123BでYES)、余剰ビットカウント部105が、消費できる最大ビット数に更新されている余剰ビットカウンタの値を、元の余剰ビット数(保有している総余剰ビット数)に更新する。
実施の形態1では、発生する順番で量子化誤差を抑制するようにしていた。しかしながら、実施の形態3では、余剰ビット制御部109により、固定ビット幅(sビット)のデータ内の画素データを先読みする。この処理により、量子化誤差を局所的に救済するのではなく、使用可能な余剰ビットの範囲内で量子化誤差をできる限り抑制し、かつ分散することができる。
(画像復号化装置110Aが行なう復号化処理)
本実施形態における復号化処理においては、アンパッキング部116が、所得したデータを、初期画素値データと、複数の符号化画素データと、量子化幅情報Codeに分離する。そのため、画像復号化装置110Aの余剰ビット制御部111は、量子化幅情報Codeのみを予め取得する。この処理により、余剰ビット制御部111は、各グループにどれだけの余剰ビットを確保すればよいのかを容易に推測することが可能である。
余剰ビット制御部111の制御処理は、図17で説明した余剰ビット制御部109の処理と同じになるので詳細な説明は繰り返さない。
<実施の形態3の変形例1>
実施の形態3では、余剰ビット制御部109が、固定ビット幅(sビット)のデータ内の各グループの量子化幅Qの情報を、量子化幅設定部104から取得する。この処理により、余剰ビット制御部109は、固定ビット幅のデータ内の各グループにどれだけの余剰ビットを確保すればよいのかを推測していた。
しかし、この方式では、図17に示したように、固定ビット幅のデータ内の量子化幅Qの先読み処理が全て終了していなければ、各グループに割り当てる余剰ビットを決定することができない。そのため、画像符号化処理において処理の遅延が生じてしまう。
そこで、固定ビット幅のデータ内の量子化幅Qの先読みはせずに、一回の量子化において消費できる最大ビット数のみを、予め決定しておいてもよい。これにより、固定ビット幅のデータ内における局所的な量子化誤差を分散させることが可能になる。
しかし、この変形例1によると、固定ビット幅のデータ内に含ませるための画素データに急峻な変化が一箇所しか見られない場合でも、消費する余剰ビット数が制限されてしまうというデメリットもある。
そのため、実施の形態3とその変形例1を必要に応じて切り替えるように符号化処理を行っても良い。
<実施の形態4>
本実施の形態では、デジタルスチルカメラに設けられる撮像素子が、画像符号化装置を含む場合のデジタルスチルカメラの構成の例を説明する。
図19は、実施の形態4における、デジタルスチルカメラ2000の構成を示すブロック図である。図19に示されるように、デジタルスチルカメラ2000は、図12のデジタルスチルカメラ1300と比較して、撮像部1310の代わりに撮像部1310Aを備える点と、画像処理部1320の代わりに画像処理部1320Aを備える点とが異なる。それ以外の構成は、デジタルスチルカメラ1300と同様なので詳細な説明は繰り返さない。
撮像部1310Aは、図12の撮像部1310と比較して、撮像素子1312の代わりに撮像素子1312Aを含む点が異なる。それ以外は、撮像部1310と同様なので詳細な説明は繰り返さない。撮像素子1312Aは、図1の画像符号化装置100を含む。
また、画像処理部1320Aは、図12の画像処理部1320と比較して、さらに、図1の画像復号化装置110を含む点が異なる。それ以外の構成は、画像処理部1320と同様なので詳細な説明は繰り返さない。
撮像素子1312Aに含まれる画像符号化装置100は、撮像素子1312Aにより撮像された画素信号を符号化し、符号化により得られたデータを、画像処理部1320A内の画像復号化装置110へ送信する。
画像処理部1320A内の画像復号化装置110は、画像符号化装置100から受信したデータを復号化する。この処理により、撮像素子1312Aと集積回路内の画像処理部1320A間のデータ転送効率を向上させることが可能となる。
したがって、本実施の形態のデジタルスチルカメラ2000は、実施の形態2のデジタルスチルカメラ1300よりも、同じメモリ容量で、同じ解像度の連写枚数を増やしたり、動画像の解像度を高める等といった高速撮像動作を実現することが可能になる。
<実施の形態5>
一般的に、プリンタ装置においては、印刷物を、いかに高精度でかつ高速で印刷するかが求められる。そのため、通常では以下の処理が行なわれる。
まず、パーソナルコンピュータ(以下、パソコンという)が、印刷対象であるデジタルの画像データを圧縮符号化し、符号化により得られた符号化データを、プリンタへ送る。そして、プリンタは、受信した符号化データを復号化する。
そこで、本実施の形態では、実施の形態1で説明した画像符号化装置100をパソコンに搭載し、画像復号化装置110をプリンタに搭載することで、印刷物の画質劣化の抑圧を図る。
図20は、実施の形態5における、パソコン3000およびプリンタ4000を示す図である。図20に示されるように、パソコン3000は、画像符号化装置100を備える。プリンタ4000は、画像復号化装置110を備える。
最近では、印刷対象となる画像データが示す画像には、ポスターや広告等のように、文字や図形、自然画像が混在している。このような画像においては、単色で表現された文字あるいは図形を示す画像のデータがパソコン3000内画像符号化装置100に入力されると、余剰ビットが生じる可能性が高い。
画像符号化装置100は、生じた余剰ビットを使用して画像を符号化する。これにより、固定ビット幅のデータ内において、文字あるいは図形と自然画像の境界となる、急峻な濃度変化が発生した場合の量子化誤差を抑制することが可能となる。
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。