説明

画像符号化装置及び画像復号装置及びそれらの制御方法

【課題】 文字、線画、CG画像など、同一画素値の連続、または、同一パターンの連続を多く含む画像に対して高い圧縮率で符号化データを生成する。
【解決手段】 ブロック符号化部104は、初期の32×32画素のブロック内の全画素が同じ色であるか否かを判定し、同じ色であれば同一色であることを示す符号語とその色の情報を付加して出力する。また、同一色でない場合には、着目ブロックを複数のサブブロックに分割し、各サブブロックそれぞれを着目ブロックとして、同一色の判定、同一色のブロックがない場合には同一ブロックの判定を行なう。そして、この判定を着目ブロックのサイズが下限サイズである4×4画素ブロックになるまで行なう。着目ブロックのサイズが下限サイズとなり、尚且つ、着目ブロック内の全画素が同一色でなく、且つ、着目ブロックと同一のブロックが存在しない場合、着目ブロックをラスタースキャンし、予測誤差符号化を行なう。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像の符号化及び復号技術に関するものである。
【背景技術】
【0002】
従来、画像の符号化、復号を行う画像処理装置を構成する一手法として予測符号化をベースとするものがある。予測符号化は、画像データを予測変換により予測誤差へと変換する系列変換部と、系列変換部から出力される予測誤差をハフマン符号化等のエントロピー符号化を用いて、より冗長性の少ない符号化データへと変換するエントロピー符号化部とによって構成される。
【0003】
ISOとITU−Tから国際標準の静止画像符号化方式として勧告されるJPEGではLossless Processとして予測符号化をベースとした可逆符号化方式が規定されている(非特許文献1)。以下、これをJPEG可逆符号化モードと呼ぶ。
【0004】
JPEG可逆符号化モードでは、近傍画素から着目画素の値を予測する方法として7つの予測式を規定しており、画像に応じて予測方法を選択できるようになっている。JPEG可逆モードでは符号化対象の画像データをラスタースキャン順に符号化する。各画素を定められた予測方式により予測し、その予測誤差をハフマン符号、または算術符号により順次符号化していく。ハフマン符号化を用いる場合には予測誤差の1つに対して1ビット以上が出力されるため、文字、線画、CG画像など人工的で、同一画素や同一パターンの連続が多く見られる画像に対しては高い圧縮性能を得ることができない。
【0005】
一方、JPEG標準化の後、ISOとITU−Tから新たに国際標準勧告された可逆符号化方式JPEG−LS Baseline(非特許文献2)では、予測符号化とランレングス符号化とを組み合わせて符号化システムが勧告されている。これは、周囲画素の状態によって予測方法、確率モデルを変えるなどの工夫により、自然画像での圧縮性能を向上するものである。すなわち、ランレングス符号化の採用により、複数画素を一纏めにして符号化することができ、上述のような文字、線画、CG画像などに対しても、JPEG可逆符号化モードよりも高い符号化性能を得ることができる。
【非特許文献1】ITU−T T.81|ISO/IEC10918−1
【非特許文献2】ITU−T T.87|ISO/IEC14495−1
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、上述のJPEG−LSを用いた従来の装置では、水平方向に同じ値を持つ画素が連続する場合には効率良く圧縮きるが、垂直方向に同じ値を持つ画素が連続する場合にはランレングス符号化が適用されず、効率良く圧縮できない。
【0007】
また、同じパターンの繰り返しがある場合、画像の構成自体は単純であっても、効率良い圧縮性能を得ることはできない。
【0008】
本願発明は、上述の問題点に鑑みてなされたものであり、文字、線画、CG画像など、同一画素値や同一パターンの連続の多い画像に対しても効率良く符号化する技術、および復号する技術を提供しようとするものである。
【課題を解決するための手段】
【0009】
かかる課題を解決するため、例えば本発明の画像符号化装置は以下の構成を備える。すなわち、
画像データを符号化する画像符号化装置であって、
複数の画素で構成され、設定されたサイズのブロック単位に、画像データを入力する入力手段と、
着目ブロックの画像データの全画素が同一色である否かを判定し、同一色である場合には同一色であることを示す情報と前記色を特定する情報を符号化データとして出力し、着目ブロックの画像データが非同一色の画素を含んでいると判定した場合には非同一色を示す符号化データを出力する第1の符号化手段と、
該第1の符号化手段で出力される符号化データが、前記非同一色を示している場合、前記着目ブロックの画像データと同じ画像データが、既に符号化処理された画像データ領域内に存在するか否かを判定し、同じ画像データが存在しない場合には非存在を示す情報を符号化データとして出力し、同じ画像データが存在する場合には存在を示すと共に存在する位置を特定する情報を符号化データとして出力する第2の符号化手段と、
該第2の符号化手段で出力される符号化データが、前記着目ブロックの画像データと同じ画像データの非存在を示す場合、前記着目ブロックのサイズが、予め設定された下限サイズであるか否かを判定する判定手段と、
該判定手段で前記着目ブロックのサイズが、前記下限サイズであると判定した場合、当該着目ブロック内の各画素データを符号化し、符号化データを出力する第3の符号化手段と、
前記判定手段で前記着目ブロックのサイズが、前記下限サイズよりも大きいと判定した場合、当該着目ブロックが複数のサブブロックで構成されるものとし、当該サブブロックのサイズを新たなブロックのサイズとして前記入力手段に設定し、前記第1、第2の符号化手段による符号化を再帰的に実行する制御手段とを備える。
【発明の効果】
【0010】
本発明の構成によれば、文字、線画、CG画像など、同一画素値の連続、または、同一パターンの連続を多く含む画像に対して高い圧縮率で符号化データを生成することができる。
【発明を実施するための最良の形態】
【0011】
以下添付図面を参照して、本発明を好適な実施形態に従って詳細に説明する。
【0012】
<第1の実施形態>
図1は本実施形態に係る画像符号化装置のブロック構成図である。
【0013】
本実施形態の画像符号化装置は、画像入力部101、ストライプバッファ102、ブロック切り出し部103、ブロック符号化部104、符号列形成部105、符号出力部106、ブロック情報管理メモリ107、装置全体の制御を司る制御部110を備える。
【0014】
以下、図1を参照して、本実施形態の画像符号化装置の各構成要素とその処理内容を説明する。
【0015】
本実施形態に係る画像符号化装置の符号化対象とする画像データは、R、G、Bの3つのコンポーネント(成分)で構成されるカラー画像データとする。1画素を構成する各コンポーネントは、8ビット(256階調)とする。符号化対象の画像データの並びは点順次、即ち、ラスタースキャン順に各画素が並べられており、各画素のコンポーネントはR,G,B順に並べられて構成されるものとする。すなわち、R、G、B、R、G、B…のデータの並びで構成されているものとする。また、説明を簡単なものとするため、実施形態では、符号化対象の画像は水平方向W画素、垂直方向H画素により構成されるものとする。また、実施形態における画像符号化装置は、符号化対象画像データから水平方向Bw画素、垂直方向Bh画素のブロックに分割してブロック単位に符号化を行う。ブロックのサイズBw、Bhは様々な値とすることができるが、以下の説明ではBw=Bh=32として説明する。また、説明を簡易にするため、画像の水平方向画素数W、垂直方向画素数Hは、それぞれ32の整数倍の大きさであるとし、ブロックに分割した場合に不完全なブロックは発生しないものとして説明する。
【0016】
さて、画像入力部101は、符号化対象の画像データをラスタースキャンし、Bh個のライン(32ライン分)の画像データを入力し、ストライプバッファ102に出力(格納)する。1ラインはW画素で構成されるので、画像入力部101はBh×W画素分の画像データをストライプバッファ102に格納することになる。1画素は3バイトで表現されるので、結局のところ、ストライプバッファ102は、最低でも、32×W×3バイトの容量を備えることになる。以降、このストライプバッファ102に格納されるBhライン分の画像データをストライプデータと呼ぶ。
【0017】
ストライプバッファ102に32ライン分の画像データ(ストライプデータ)が格納されたとする。この場合、ブロック切り出し部103はストライプバッファ102に格納されるストライプデータについて、左端から右端に向かって、高さBh、幅Bwのブロックの画像データ(32×32画素)を順に切り出して、内部の不図示の記憶領域に格納する。この32×32画素のサイズは、後述する説明から明らかになるように、最大サイズでもある。
【0018】
ブロック情報管理メモリ107は、ブロック符号化部104におけるブロックデータの符号化の過程で必要となるブロック情報を管理するための記憶領域を有する。この記憶領域には、図2(a)乃至(d)に示すようにブロックサイズ“32”,“16”,“8”,“4”のそれぞれについてブロック管理テーブルが確保される。なお、ここで言うブロックサイズ“32”とは、32×32の正方ブロックの1辺の長さを示しているものである点に注意されたい。これは、他のブロックサイズも同様である。
【0019】
各ブロックサイズ毎のブロック管理テーブルのエントリ数はそれぞれに異なる。ブロックサイズ“32”のブロック管理テーブルのエントリ数は1つ、ブロックサイズ“16”のエントリ数は最大で4つ、ブロックサイズ“8”のエントリ数は最大で16、ブロックサイズ“4”のエントリ数は最大で64である。これは、32×32画素のブロックは、4つの16×16画素のブロック、または、16個の8×8画素のブロック、又は、64個の4×4画素のブロックに対応するためである。
【0020】
以降の説明では、現在着目するブロックサイズと同じブロックサイズのブロック管理テーブルを、着目ブロックリストと呼び、その1/2の大きさのブロックサイズのブロック管理テーブルをサブブロックリストと呼ぶ。また、ブロック管理テーブルに格納される情報については後述する。
【0021】
ブロック符号化部104は、ブロック切り出し部の内部に格納される32×32画素のブロックデータ(以降、初期ブロックと呼ぶ)を符号化する度に、ブロック情報管理メモリ107内の各サイズ別のブロックリストを初期化する。そして、ブロック符号化部104は、符号化過程でブロックリストの登録と、その登録したブロックリストを参照しながら、符号化データを生成し、出力する。
【0022】
図3はブロック符号化部104における符号化処理の流れを示すフローチャートである。以下、同図を参照して、ブロック符号化部104によるブロックデータの符号化処理の全体的な流れについて説明する。
【0023】
ブロック符号化部104はその内部に、着目ブロックの大きさ(水平/垂直方向画素数)を保持する変数SIZEと、着目ブロックの左上隅の座標(以降、始点座標と呼ぶ)ベクトルBを備える。着目ブロックは、このSIZEと始点座標のベクトルBの組で特定する。始点座標は初期ブロック(符号化単位となる32×32のブロック)の左上隅を原点(0,0)として、水平方向x画素、垂直方向y画素の位置をベクトル(x、y)で表現する。
【0024】
図4に示した太線の矩形は初期ブロックであり、このブロックの始点座標はB=(0,0)、大きさSIZE=32である。また、これを4分割して得られる斜線領域を着目ブロックとする場合、その始点座標B=(16,0)であり、SIZE=16となる。
【0025】
符号化の開始時には、先ず、ステップS1000にて、変数SIZEに“32”を設定する。次いで、ステップS1001において、変数Nmaxに“1”を設定する。この変数Nmaxは、変数SIZEで示されるエントリ数を格納するためのものである。SIZE=32の場合、エントリ数は“1”であるため、ステップS1001では変数SIZEに“1”を設定することになる。
【0026】
次に、ステップS1002にて、ブロック情報管理メモリ107に、SIZE=32のブロックリスト(エントリ数=1)を登録する。次いで、ステップS1003にて、変数iに初期値として“0”を設定し、ステップS1004にて、着目ブロックから派生するサブブロックのエントリ数を格納する変数SUBiを“0”で初期化する。
【0027】
ステップS1005では、ブロック切り出し部1003から、変数SIZEで示される第i番目のブロック(着目ブロック)を入力し、着目ブロック内の全画素が同一色を示しているか否かを判定する。換言すれば、着目ブロック内の色数が“1”である否かを判定すると言い換えても良い。なお、ここでは、全画素が同一色であるか否かを判断するものであるから、ブロック内をスキャンして、着目画素の色と直前の画素の色が異なった場合には、少なくとも2色以上存在することを示しているので、それ以降のスキャンは不要である。同一色(色数が“1”)である場合には二進データ“1”、非同一色(色数が“2”以上)である場合には二進データ“0”を出力する(ステップS1006)。
【0028】
この後、ステップS1007にて、変数iで示される着目ブロックの全画素が同一色(色数が“1”)であったか否か、すなわち、ステップS1006で出力した二進データが“1”であったか否かを判定する。同一色(色数が“1”)であった場合には、ステップS1008に進み、その色を示す画素データ(R、G、B値)を出力し、着目ブロックの処理を終えるため、ステップS1018に処理を進める。
【0029】
つまり、着目ブロック内の全画素が同一色を示している場合、ステップS1006、及び、ステップS1008によって生成される着目ブロックの符号化データは、
“1”+R、G、Bデータ(各8ビット)
のデータ構造(計25ビット)となる。
【0030】
一方、ステップS1007にて、着目ブロック内の色数が“2”以上であると判定した場合、処理をステップS1009に進める。このステップS1009では、変数iの値が“0”であるか否か、すなわち、着目ブロックが着目ブロックリストに登録した先頭ブロックであるか否かを判断する。
【0031】
着目ブロックが登録したブロックリストの先頭ブロックである場合には比較対象が存在しないので、処理はステップS1014に進める。
【0032】
ここで、変数iが“0”以外である場合に、すなわち、着目ブロックは、変数SIZEで定義されるブロックリストの2番目以降のブロックであるものとして説明する。この場合、ステップS1010にて、着目ブロックリストに登録された符号化処理済みのブロック(1つ又は複数)と着目ブロックとの比較処理を行ない、その結果をステップS1011にて出力する。
【0033】
例えば、着目ブロックリストが図5のような状態にあり、変数i=3、すなわち、着目ブロックがブロック番号「3」であったとする。この場合、ブロック番号「2」、「1」、「0」の順番(降順)で着目ブロックと同一ブロックか否かを判定する。
【0034】
ここで仮に、着目ブロックが、ブロック番号「2」のブロックとは同一でないが、ブロック番号「1」と同一であったとする。この場合には、先ず、着目ブロックと同一のブロックが存在したことを示す二進データ“1”を出力する。また、ブロック番号「2」、「1」、「0」の順番に、画像領域における既に符号化処理済みブロックと着目ブロックとを比較し、いずれとも一致しなかった場合には、同一ブロック無し(非存在)を示す二進データ“0”を出力する。
【0035】
ここまでの処理により出力されるデータを2分木構造にして示したのが図6(a),(b)である。
【0036】
着目ブロックが変数SIZEで示されるブロックリストの先頭にあるとき、図6(a)に従い、着目ブロック内の全画素が同一色(色数が“1”)を示すか否かの判定結果を出力する。特に、同一色である場合には、この判定結果に後続して同一色となった画素の各成分値を出力する。
【0037】
また、着目ブロックが変数SIZEで示されるブロックリストの2番目以降の場合、図6(b)に従い、着目ブロック内の全画素が同一色を示すか否かの判定結果を出力する。特に、同一色(色数が“1”)である場合には、この判定結果に後続して同一色となった画素の各成分値を出力するのは、図6(a)と同様である。また、非同一色(色数が“2”以上)である場合には、先ず、二進データ“0”を出力した後、既に処理済みのブロック内に着目ブロックと同一のブロックが存在するかを示す二進データ“0”か“1”かのいずれか一方を出力する。
【0038】
さて、ステップS1012に処理が進むと、着目ブロックと同一ブロックが処理済みブロック内に存在したか否か、すなわち、ステップS1011での出力が“1”であったか否かを判定する。着目ブロックと同一ブロックが処理済みブロック内に存在したと判断した場合には、ステップS1013に進み、同一であると判定したブロック番号を特定する情報を出力し、ステップS10189進む。
【0039】
このステップS1013の処理内容を図7の符号木を用いて説明する。図中、変数iは着目ブロックリストにおける着目ブロックの番号を表している。図に示すように、符号木は着目ブロックの番号iによって変化し、ブロック番号iの場合にはi個のリーフノードを持つ符号木が用いられる。着目ブロック番号を「i」とし、それに一致するブロック番が仮に「j」(0≦j<i)であるとした場合、「i−j−1」個の“0”を出力し、その後に“1”を出力する。
【0040】
例えば、図5におけるブロック番号「3」が着目ブロックであり、その着目ブロックと同一のブロックのブロック番号が「1」であるとする。この場合、ステップS1013で出力する二進データは“01”となる。ステップS1006で二進データ“0”、ステップS1011にて二進データ“1”を出力しているわけであるから、着目ブロックの符号化データは、結局のところ、二進データ“0101”となる。
【0041】
つまり、着目ブロック内の色数が2以上であり、尚且つ、着目ブロックと同一のブロックが存在する場合、着目ブロックの符号化データは、
“01”+同一ブロックを特定するデータ
のデータ構造となる。ここで、「同一ブロックを特定するデータ」は、0個以上の“0”+“1”のデータである。
【0042】
また、ステップS1009にて、変数iが“0”である場合には、着目ブロックはブロックリストの先頭ブロックであるので、比較対象の処理済みブロックは存在しない。そのため、ステップS1014にて、一致するブロックが存在しないことを示す“0”を出力し、ステップS1015に処理を進める。
【0043】
このステップS1015に処理が進んだ場合、ステップS1006で二進データ“0”が出力され、ステップS1011又はステップS1014で二進データ“0”が出力された場合である。すなわち、ステップS1015に処理が進むのは、着目ブロック内の色数が2以上であり、尚且つ、着目ブロックと同一のブロックが存在しない場合となる点に注意されたい。
【0044】
ステップS1015では、変数SIZEが“4”であるか否か、すなわち、着目ブロックリストがSIZE=4のブロックリストであるか否かを判断する。これは、着目ブロックが処理の下限サイズであるか否かを判断しているとも言える。
【0045】
変数SIZEが“4”以外(SIZEが8、16、32のいずれか)であると判断した場合には、着目ブロックは下限サイズよりも大きいことになる。そこで、ステップS1016にて、着目ブロックを構成する4つのサブブロックを、SIZE/2で示されるブロックリストに登録する。また、ステップS1017にて、サブブロックの個数を更新するため、変数SUBiを“4”だけ増加させる。そして、ステップS1019に処理を進める。
【0046】
例えば、図8に示すごとく、サイズSIZE=Lの着目ブロックの始点座標をB=(bx、by)としたとき、その着目ブロックを構成する4つのサブブロックの各始点座標B0〜B3は次のように定義できる。
B0=(bx、by)
B1=(bx+L/2、by)
B2=(bx、by+L/2)
B3=(bx+L/2、by+L/2)
これらブロックを、SIZE/2で示されるブロックリストに追加登録する。なお、登録する4つのサブブロックのサイズは、着目ブロックのサイズの水平、垂直方向の画素数の1/2である。また、このサブブロックを登録する以前に、既にいくつかのサブブロックが登録されている場合には、今回登録するサブブロック番号は、最後に登録したブロック番号+1から割り当てる。
【0047】
また、ステップS1015にて、変数SIZEが“4”であると判断した場合、すなわち、着目ブロックのサイズが下限サイズであると判断した場合、ステップS1108に進める。このステップS1018では、着目ブロック内の各画素データの符号化処理を行ない、その符号化データを出力する。そして、ステップS1019に処理を進める。
【0048】
ブロック内の画素の符号化方法としては予測符号化、変換符号化など様々な手法を用いて良い。本実施の形態ではその一例として簡易な予測符号化を用いる方法を示す。以下は、その予測符号化処理の説明である。
【0049】
まず、着目ブロック(4×4画素のサイズである)内(もしくは着目サブブロック内)の左上隅の画素の成分値をそのまま出力する。その後、着目ブロック内をラスタースキャンしていく。この過程での着目画素の色成分と、前置予測値(前符号化画素の同一成分値)との差分を予測誤差eとして算出し、その予測誤差eを符号化する。予測誤差eはJPEG可逆符号化モードと同様に、まず、図9から予測誤差eの属するカテゴリSSSSを得て、これを図10のハフマンテーブルで符号化する。続いて、カテゴリの中のどの値かを特定するための長さSSSSビットの付加ビットを出力する。予測誤差eが正である場合、付加ビットは予測誤差eの下位SSSSビットであり、負である場合には予測誤差e−1の下位SSSSビットを取り出したものである。以上のようにして、着目ブロック内の各画素の符号化が行われる。
【0050】
つまり、着目ブロック内の色数が“2”以上であり、着目ブロックと同一のブロックが存在せず、尚且つ、着目ブロックが下限サイズである場合の着目ブロックの符号化データは、
“00”+予測誤差符号化データ
のデータ構造となる。
【0051】
さて、処理がステップS1019に処理が進むと、着目ブロックを次のブロックに更新するあめ、変数iを“1”だけ増加する。そして、ステップS1020にて、変数iと変数Nmaxとを比較する。i<Nmaxである場合、着目ブロックリスト中に、未処理のブロックが存在することになるので、ステップS1005以降の処理を行なう。なお、SIZE=32の場合、Nmax=1であるので、ステップS1020の判定は必ず「No」となり、ステップS1021に処理が進む。
【0052】
ステップS1021では、登録したサブブロックの個数SUBiが“0”よりも多いか否かを判断する。SUBi=0であると判断した場合、処理すべきサブブロックが存在しないことになるので、本処理を終える。
【0053】
また、少なくとも1つのサブブロック(実際は4の整数倍)が登録されていると判断した場合、処理はステップS1022に進み、そのサブブロックの処理を行なうため、変数SIZEを1/2に設定する。すなわち、変更後の変数SIZEで示されるブロックリストを着目ブロックリストとして設定する。そして、ステップS1023にて、エントリの上限をSUBiとするため、変数NmaxにSUBiを代入し、ステップS1003以降の処理を行なう。
【0054】
以上、説明した処理により、ブロック符号化部104において、ブロック切り出し部103の内部に保持される初期ブロックの符号化が行われ、ブロックの符号化データが符号列形成部105へと出力される。
【0055】
符号列形成部105は画像の水平方向/垂直方向の画素数、画素を構成する成分の数、各成分の精度など、画像の復号に必要な付加情報を有するヘッダを先ず生成する。そして、符号列形成部105は、ブロック符号化部104から出力される符号化データをヘッダに後続するデータとして、所定のフォーマットの符号列を形成し、符号出力部106に出力する。図11に符号列形成部105から出力される符号列の構成の一例を示す。先頭のHeader部分に付加情報が格納され、続いてラスタースキャン順の各ブロックの符号化データが並ぶ。符号出力部106は符号列形成部105から出力される符号列を装置外部へと出力を行う。
【0056】
ここで、上記の符号化処理をより分かりやすく説明する。
【0057】
説明を簡単なものとするため、32×32画素の初期ブロックの画像が図12のようになっているものとする。また、ブロック情報管理メモリ107にブロックリストとして登録する各ブロックをBLK(SIZE,ブロック番号)として表現することとする。
【0058】
ここで32×32画素中、右上隅の幅4画素、高さ16画素の領域以外の領域(白色領域)では、全て同一色であるものとする。また、右上隅の幅4画素、高さ16画素の領域中のブロックBLK(4,1)、BLK(4,3)、BLK(4,5)は互いに異なる色又はパターンとなっており、ブロックBLK(4,5)とBLK(4,7)は互いに同じ色の同じパターンであるものとする。
【0059】
図13は、図12の32×32画素のブロックの符号化データのデータ構造を示している。この符号化データは、図11における1つのブロック(32×32画素)分の符号化データを示してもいる。
【0060】
以下、図12の32×32画素の画像データから、図13に示す1ブロック分の符号化データが生成される手順を説明する。
【0061】
<SIZE=32の処理>
初期サイズ(32×32画素)に着目すると、その内部の色数が“1”ではない。従って、SIZE=32の同一色判定の判定結果により出力される二進データは“0”(ステップS1006の出力)となる。また、初期サイズの場合、変数iが“0”の場合にだけ処理がなされる。すなわち、着目ブロックを処理する以前に処理されたブロックせず、ブロック間の一致判定も行なわない。従って、着目ブロックの符号化データは、同一色判定の判定結果である“0”のみとなる。
【0062】
なお、初期サイズの着目ブロックに対しては、4分割したサブブロックをSIZE=16に対応するサブブロックに登録する。このとき、登録する4つのサブブロックは、図12の場合、BLK(16,0)、BLK(16,1)、BLK(16,2)、BLK(16,4))である。なお、BLK(16,1)は、図12では示されていないが、右上隅の16×16画素の領域である。
【0063】
ところで、もし32×32画素の全てが同一色である場合、符号語は「“1”+R、G、Bの値」で計25ビットの符号化データを生成し、SIZE=16、8、4の符号化処理は行なわない。
【0064】
<SIZE=16の処理>
未符号化として登録されたSIZE=16のブロックをラスタースキャン順に評価する。すなわち、BLK(16、0)→BLK(16、1)→BLK(16、2)→BLK(16,3)の順番に判定処理を行なう。
【0065】
先ず、ブロックBLK(16,0)に着目する。このブロックBLK(16,0)内の全画素は同一色であるので、符号語「“1”+R、G、Bの値」を判定情報(符号化データ)を出力する。
【0066】
次に、ブロックBLK(16,1)に着目する。このブロックBLK(16,1)は、その内部の色数が“2”以上であり、既に処理したブロックBLK(16,0)とも一致しない。従って、着目ブロックBLK(16、1)については、判定情報として“00”を出力する。また、着目ブロックBLK(16、1)を構成する4つの8×8画素のサブブロックBLK(8,0)、BLK(8,1)、BLK(8,2),BLK(8、3)をSIZE=8のブロックリストに登録する。
【0067】
次に、ブロックBLK(16,2)に着目する。このブロックBLK(16,2)内の全画素は同一色であるので、「符号語“1”+R、G、Bの値」を判定情報(符号化データ)として出力する。
【0068】
次に、ブロックBLK(16,3)に着目する。このブロックBLK(16,3)内の全画素は同一色であるので、「符号語“1”+R、G、Bの値」を判定情報(符号化データ)を出力する。
【0069】
<SIZE=8の処理>
未符号化として登録されたSIZE=8のブロックをラスタースキャン順に評価する。すなわち、BLK(8、0)→BLK(8、1)→BLK(8、2)→BLK(8,3)の順番に判定処理を行なう。
【0070】
先ず、ブロックBLK(8,0)に着目する。このブロックBLK(8,0)内の全画素は同一色であるので、符号語「“1”+R、G、Bの値」を判定情報(符号化データ)を出力する。
【0071】
次に、ブロックBLK(8,1)に着目する。このブロックBLK(8,1)は、その内部の色数は“2”以上であり、既に処理したブロックBLK(8,0)とも一致しない。従って、着目ブロックBLK(8、1)については、判定情報として“00”を出力する。また、着目ブロックBLK(8、1)は分割対象とし決定し、それを構成する4つの4×4画素のサブブロックBLK(4,0)、BLK(4,1)、BLK(4,2),BLK(4、3)をSIZE=4のブロックリストに登録する。
【0072】
次に、ブロックBLK(8,2)に着目する。このブロックBLK(8,2)内の全画素データは同一色であるので、符号語「“1”+R、G、Bの値」を判定情報(符号化データ)を出力する。
【0073】
次に、ブロックBLK(8,3)に着目する。このブロックBLK(8,3)は、その内部の色数は“2”以上であり、既に処理したブロックBLK(8,2)、BLK(8,1)、BLK(8,0)のいずれとも一致しない。従って、着目ブロックBLK(8、3)については、判定情報として“00”を出力する。また、着目ブロックBLK(8、3)を構成する4つの4×4画素を、SIZE=4のブロックリストに登録する。SIZE=4のブロックリストには、ブロックBLK(8、1)に対する処理で、既に4つのブロックが登録されている。従って、着目ブロックBLK(8,3)を4分割して登録するブロックはBLK(4,4)、BLK(4,5)、BLK(4,6),BLK(4、7)となる。つまり、SIZE=4のブロックリストには、計8個のブロックが登録される。
【0074】
<SIZE=4の処理>
未符号化として登録されたSIZE=4のブロックをラスタースキャン順に評価する。すなわち、BLK(4、0)→BLK(4、1)→BLK(4、2)→…→BLK(4,6)→BLK(4,7)の順番に判定処理を行なう。
【0075】
BLK(4,0)、BLK(4,2)、BLK(4,4)、BLK(4,6)は、それぞれの内部の画素が同一色であるので、それぞれの判定情報は「“1”+R、G、Bの値」となるのは、これまでの説明から明らかである。従って以下では、BLK(4、1)、BLK(4,3)、BLK(4,5)、BLK(4,7)について説明する。
【0076】
ブロックBLK(4,1)に着目する。このブロックBLK(4,1)内の色数は“2”以上であり、且つ、既に処理したブロックBLK(4,0)とも一致しない。従って、着目ブロックBLK(4、1)については、判定情報として“00”を出力する。ただし、実施形態では、SIZE=4を下限としているので、後続して着目ブロックBLK(4,1)の可逆符号化データを生成し、出力する。
【0077】
ブロックBLK(4,3)に着目する。このブロックBLK(4,3)内の色数は“2”以上であり、且つ、既に処理したブロックBLK(4,2)、BLK(4,1)、BLK(4,0)のいずれとも一致しない。従って、着目ブロックBLK(4、3)については、判定情報として“00”を出力し、後続して着目ブロックBLK(4,1)の可逆符号化データを生成し、出力する。
【0078】
ブロックBLK(4,5)に着目する。このブロックBLK(4,5)内の色数は“2”以上であり、且つ、既に処理したブロックBLK(4,4)、BLK(4,3)、BLK(4,2)、BLK(4,1)、BLK(4,0)のいずれとも一致しない。従って、着目ブロックBLK(4、5)については、判定情報として“00”を出力し、後続して着目ブロックBLK(4,5)の可逆符号化データを生成し、出力する。
【0079】
ブロックBLK(4,7)に着目する。このブロックBLK(4,7)内の色数は“2”以上である。しかしながら、着目ブロックBLK(4,7)のパターンは、既に処理したブロックBLK(4,5)のパターンと一致する。従って、着目ブロックBLK(4、7)の判定情報(符号化データ)の先頭の2ビットは“01”となる。また、それに後続して、ブロックBLK(4、5)を特定する情報(図示の場合には、“01”)を付加する(図7参照)。
【0080】
以上の結果、32×32画素のブロックが、図12に示す状態である場合、図13に示す符号化データを生成することが可能になる。
【0081】
図14(a)乃至(d)は、図12に示す32×32画素のブロックの符号化処理が完了したときの、ブロック情報管理メモリ107に作成された各サイズ別の管理テーブルを示している。図14(a)は、SIZE=32のブロックリストを示し、1つのブロックだけが登録されている。図14(b)は、SIZE=16のブロックリストを示し、4つのブロックが登録されている。図14(c)は、SIZE=8のブロックリストを示し、4つのブロックが登録されている。図14(d)は、SIZE=4のブロックリストを示し、8つのブロックが登録されている。各サイズのブロックリストとそれらに登録されているブロック数は、図13の符号化データのデータ構造と一致している。
【0082】
図15は、本実施形態に係る画像符号化装置の制御部110による符号化対象画像データの符号化処理の手順を示すフローチャートである。
【0083】
まず、画像入力部101から符号化対象画像の32ライン分が入力され、ストライプバッファ102へと格納される(ステップS1701)。ブロック切り出し部103ではストライプバッファ102に格納されるストライプデータの左から右へ、順番に32×32の大きさのブロックを一つずつ取り出してブロック切り出し部の内部に格納する(ステップS1702)。続いて、ステップS1703ではブロック情報管理メモリ107に保持されている各サイズ毎のブロック管理テーブルを初期状態にする。初期状態において、各ブロック管理テーブルは空の状態である。ブロック管理情報の初期化が終了すると、ブロック符号化部104にて、ブロック情報管理メモリ内のブロック管理テーブルを更新しながらブロックの符号化が行われる。ステップS1704の処理の流れは、先に説明した図3の通りである。着目するブロックの符号化を終えると、符号化したブロックがストライプデータの最後のブロックであるか否かを判断し(ステップS1705)、最後のブロックでない場合(NO)にはステップS1702に処理を戻して次のブロックについて同様に処理を行う。最後のブロックである場合(YES)にはステップS1706へと処理を移す。ステップS1706では、符号化したストライプが画像の最終ストライプであるか否かを判断し、最後のストライプでない場合(NO)にはステップS1701へと処理を戻し、次のストライプについて同様に処理を継続する。最後のストライプであった場合(YES)にはステップS1707に移り、符号列形成部105から所定のフォーマットの符号化データが出力され、符号出力部106から装置外部へと出力される。
【0084】
以上の処理により、画像データの符号化処理が行われる。様々な大きさのブロックで周囲の符号化済みのブロックとの一致/不一致を符号化することにより、文字、線画、CG画像など、同じ画素配置のパターンが多く出現する画像に対し、高い圧縮性能の可逆符号化を実現できる。なお、本実施形態の画像処理装置ではブロック単位に独立の符号化が行われているため、部分的な復号や、並列符号化/復号をも可能になる。
【0085】
次に、上記の画像符号化装置で生成された符号化画像データを復号する復号装置について説明する。
【0086】
実施形態における画像復号装置のブロック構成図を図16に示す。本装置は、符号入力部201、符号バッファ202、ヘッダ解析部203、ブロック復号部204、ブロック情報管理メモリ205、ブロック書き出し部206、ストライプバッファ207、画像出力部208、及び、装置全体の制御を司る制御部210を備える。
【0087】
以下、図16を参照して、本実施形態に係る画像復号装置が行う処理について説明する。
符号入力部201は、復号対象となる符号化画像データを入力し、符号バッファ202に格納する。この符号化画像データは、記憶媒体に格納されていても構わないし、ネットワークを介して入力しても構わず、その入力源の種類は問わない。
【0088】
ヘッダ解析部203は符号バッファ202に格納される符号化データのヘッダ部分を解析し、画像の水平方向/垂直方向の画素数、画素を構成する成分の数、各成分の精度など、復号に必要な付加情報を抽出する。制御部210は、この付加情報に基づき、各構成要素に復号に必要な設定を行ない、復号処理を開始させる。
【0089】
ブロック復号部204は符号バッファ204から符号データを読み出して、32×32画素の画像データを復号を開始する度に、ブロック情報管理メモリ205を初期化する。そして、その初期化後に、ブロック情報管理メモリ205を更新しながら、ブロック書き出し部206内のメモリに格納された画像データを参照し、各サイズのブロックを復号していく。復号して得られた各サイズのブロックデータはブロック書き出し部206の内部バッファに格納する。そして、32×32画素の画像データが復号できたら、その画像データをストライプバッファ207に格納する。画像出力部208は、1ストライプ分の画像データが、ストライプバッファ207に格納される度に、そのストライプ画像データを復号結果として出力する。
【0090】
図17はブロック復号部204における復号処理の流れを示すフローチャートである。基本的に、復号処理は、符号化処理とは逆の処理となる。以下、同図を参照して、ブロック復号部204によるブロックデータの復号処理の全体的な流れについて説明する。
【0091】
ブロック復号部104は、図1におけるブロック符号化部104と同様に、その内部に、着目ブロックの大きさ(水平/垂直方向画素数)を保持する変数SIZEと、着目ブロックの左上隅の座標(以降、始点座標と呼ぶ)ベクトルBを備える。復号の開始時には、符号化時と同じく、ステップS401にて、変数SIZEを「32」で初期化する。次いで、ステップS402にて、変数Nmaxに“1”を設定する。
【0092】
次に、ステップS403にて、ブロック情報管理メモリ107に、SIZE=32のブロックリスト(エントリ数=1)を登録する。次いで、ステップS404にて、変数iに初期値として“0”を設定し、ステップS405にて、着目ブロックから派生するサブブロックのエントリ数を格納する変数SUBiを“0”で初期化する。以上で、符号化処理を開始する際の初期の処理が終了する。
【0093】
次に、ステップS406に進み、符号化バッファ202から先頭の1ビットである、同一色の判定情報を入力し、その判定情報が“1”であるか否かを判断する。同一色判定情報が“1”である場合、ステップS407に進み、同一色の判定情報に後続するRGBの各成分値を符号化バッファ202から入力する。そして、ステップS408にて、着目ブロックに含まれる個数分だけ、入力したRGBデータを繰り返し出力することで、着目ブロックの復号処理を行なう。この後、処理はステップS415に進める。
【0094】
また、ステップS406にて、同一色判定情報が“0”であると判定した場合、処理はステップS409に進む。このステップS409では、符号化バッファ202から、1ビットの同一パターン符号化データを入力し、それが“1”であるか否かを判断する。同一パターン符号化データが“1”であると判断した場合、同一パターン符号化データの直後のビットから、最初に“1”となるデータが、着目ブロックと同一パターンの位置を特定する情報である。従って、その間の“0”の個数で特定される位置の復号済みのブロックのデータを、ブロック書き出し部206から探し出し、そのブロックのデータを着目ブロックのデータとして出力する。この後、処理はステップS415に進める。
【0095】
また、ステップS409にて、同一パターン符号化データが“0”であると判断した場合、処理はステップS411に進める。このステップS411では、変数SIZEが“4”であるか否か、すなわち、着目ブロックが下限サイズであるか否かを判断する。
【0096】
変数SIZEが“4”以外(SIZE=8、16、32のいずれか)である場合には、ステップS412にて、着目ブロックを構成する4つのサブブロックを登録する。そして、変数SUBiを“4”だけ増加させる。
【0097】
また、ステップS411にて、変数SIZEが“4”であると判断した場合、処理はステップS414に進める。このステップS414では、同一パターン符号化データに後続するデータは、予測誤差符号化データであるものとして、符号化バッファ202から読込み、復号処理を行ない、その復号結果の4×4画素の画像データをブロック書き出し部206に出力する。そして、処理をステップS415に進める。
【0098】
ステップS414では、先に説明した符号化と逆の手順で着目ブロックの画素値を復号する。まず、左上隅の画素の各成分値をそのまま取り出し、その後、着目ブロック内をラスタースキャン順に、前置を予測値とした予測誤差を復号し、前置と加算することにより各画素値を復号する。予測誤差はJPEG可逆符号化モードの復号と同様に、まず、図9から予測誤差eの属するカテゴリSSSSを復号し、続いて、SSSSビットの付加ビットを取得して、カテゴリの中のどの値かを特定する。このように復号された各画素の値はブロック書き出し部206の内部の、着目ブロックに対応する記憶領域に順次格納される。
【0099】
さて、上記のようにして処理がステップS415に進むと、変数iを“1”だけ増加させる。そして、ステップS416にて、変数iと変数Nmaxとを比較する。i<Nmaxである場合、着目ブロックリスト中に、未処理のブロックが存在することになるので、ステップS406以降の処理を行なう。
【0100】
また、i=Nmaxであると判断した場合には、処理をステップS417に進める。ここのステップS417では、変数SUBiが“0”よりも多いか否かを判断する。SUBi>0であると判断した場合、処理はステップS418に進み、そのサブブロックの処理を行なうため、変数SIZEを1/2に設定する。すなわち、変更後の変数SIZEで示されるブロックリストを着目ブロックリストとして設定する。そして、ステップS419にて、エントリの上限をSUBiとするため、変数NmaxにSUBiを代入し、ステップS404以降の処理を行なう。
【0101】
また、ステップS417にて、変数SUBiが“0”であると判断した場合、32×32画素で構成されるブロックの復号処理が終了したものとし、本処理を終える。
【0102】
以上、説明した処理により、ブロック復号部204において、1つのブロックの復号が行われ、ブロック書き出し部206の内部にブロックのデータが格納される。
【0103】
ブロック書き出し部206は、その内部に、ブロック復号部204によるブロックの復号処理により生成された画像データを格納する内部メモリ(32×32画素分のメモリ)を有する。そして、内部メモリに32×32画素分の画像データが格納されると、その画像データをストライプバッファ207に出力する。
【0104】
図18は、本実施形態に係る画像復号置による制御部210による復号処理の全体の流れを示すフローチャートである。以下、同図を参照して、本実施形態に係る画像処理装置が行う画像符号化処理の全体的な流れについて説明する。
【0105】
まず、符号入力部201から復号対象となる符号化データが符号バッファ202に入力され、ヘッダ解析部203で符号化データのヘッダを解析して復号に必要な付加情報を取り出す(ステップS301)。ヘッダの解析が終了すると、ブロック情報管理メモリ205の内部に格納されているブロック管理テーブルを初期化する(ステップS302)。初期状態でブロック管理テーブルは空の状態である。ブロック復号部204は、符号バッファ202に格納されている符号を読み出して、ブロック情報管理メモリに格納されているブロック管理テーブルを更新しながら1つの32×32画素の画像データを復号する。そして、ブロック復号部204は、その画像データを、ブロック書き出し部206の内部バッファに書き込む(ステップS303)。ブロック復号部204の動作については先に図17を用いて説明した通りである。
【0106】
ブロック復号部206によるブロックデータの復号が終了し、ブロック書き出し部206の内部バッファにブロックデータが格納されると、ブロック書き出し部206はこれをストライプバッファ207へと転送する。ブロックデータは、ストライプバッファの左から右へ順に並べて書き込まれる。復号したブロックデータがストライプの最後のブロックであるか否かを判断し(ステップS305)、ストライプの最後のブロックでない場合(NO)は、処理をステップS302へと移して次のブロックの復号を行う。ストライプの最後のブロックであった場合(YES)にはストライプバッファ207に格納されたストライプデータをラスタースキャン順に読み出して、画像出力部208から装置外部へと出力する(ステップS306)。ステップS307では、出力したストライプデータが画像の最後のストライプデータであるか否かを判断する。最終ストライプでない場合(NO)はステップS302へと処理を移し、次のストライプの復号処理を継続して行う。このとき、ストライプバッファ207はクリアされており、また、左端から次のブロックデータを格納していく。
【0107】
以上の処理により、符号化データから元の画像データを完全に復元することができるようになる。
【0108】
以上説明したように本実施形態によれば、文字、線画、CG画像など、同一画素値や同一パターンの連続の多い画像に対しても効率良く可逆符号化することが可能になり、オリジナル画像を可逆復元することも可能になる。
【0109】
なお、実施形態では、符号化処理における初期のブロックサイズを32×32画素とし、サブブロックのサイズを16×16、8×8、4×4の4段階としたが、これらのサイズ、段階数によって本発明が限定されるものではない。また、各ブロック(サブブロック)のサイズも必ずしも正方である必要もない。また、1つのブロックが4つのサブブロックで構成されるものとしたが、必ずしも4つではなくても構わない。要するに、1つのブロックを、再帰的にp×q個(p,qは2以上の整数)のサブブロックに再帰的に分割できるようにすればよい。ただし、サブブロックのサイズの下限は、実施形態の如く4×4画素程度の、ある程度のサイズであることが望ましい。
【0110】
また、上記実施形態の場合、着目ブロック(または着目サブブロック)内の全画素が同一である場合、同一色であることを示す情報(実施形態では“1”)に後続して、その色を示す画素データ(R、G、Bの24ビット)を付加させた。この結果、着目する32×32画素の画像データが、図12に示すような場合、サブブロック
BLK(16,0)、BLK(16,2)、BLK(16,3)、BLK(8,0)、BLK(8,2)、BLK(4,0)、BLK(4,2)、BLK(4,4)、BLK(4,6)
の符号化データは、いずれも、
「“1”+R,G,B」
の形式となり、冗長となってしまう(図13参照)。
【0111】
そこで、同一色の画素のみで構成されると判断した最初のサブブロック(図12の場合にはBLK(16,0)の符号化データについては
「“1”+R,G,B」
という形式にする(以下、このサブブロックを同一色起源サブブロックという)。そして、それ以降で同一色の画素のみで構成されるサブブロックについては、そのサブブロック内の画素の各成分値と、同一色起源サブブロックの各成分値との差分を演算し、その差分を符号化すつようにしても構わない。
【0112】
図12の場合、サブブロックBLK(16,0)が同一色起源サブブロックとなり、それ以外の
BLK(16,2)、BLK(16,3)、BLK(8,0)、BLK(8,2)、BLK(4,0)、BLK(4,2)、BLK(4,4)、BLK(4,6)
の各成分は差分を符号化する。差分が小さいほど短い符号語を割り当てるようにすると、符号化効率は格段に高くなる。
【0113】
なお、上記実施形態では、1つのブロック内の画像データを符号化する際に、そのブロック内の全画素が同じ色を示すか否かを判定したが、この同一色判定とその符号化データの生成は省略しても構わない。ただし、この場合、各ブロックの符号化データの先頭には、着目ブロックの画像データと同一の画像データが既に符号化された画像データの領域内に存在するか否かを示す1ビットを配置するようにする。そして、同一ブロックが存在する場合には先頭の“1”に後続して、同一ブロックの位置を特定する符号語を格納すればよい。
【0114】
<第1の実施形態の変形例>
上記第1の実施形態と同様の処理は、コンピュータプログラムによって実現できる。以下、その例を第1の実施形態の変形例として説明する。
【0115】
図19は、本変形例における情報処理装置(例えばパーソナルコンピュータ)のブロック構成図である。
【0116】
図中、1401はCPUで、RAM1402やROM1403に記憶されているプログラムやデータを用いて本装置全体の制御を行うと共に、後述する画像符号化処理、復号処理のアプリケーションプログラムを実行する。1402はRAMで、外部記憶装置1407や記憶媒体ドライブ1408、若しくはI/F1409を介して外部装置からダウンロードされたプログラムやデータを記憶する為のエリアを備える。また、RAM1402は、CPU1401が各種の処理を実行する際に使用するワークエリアも備える。1403はROMで、ブートプログラムや本装置の設定プログラムやデータを格納する。1404、1405は夫々キーボード、マウスで、CPU1401に対して各種の指示を入力することができる。
【0117】
1406は表示装置で、CRTや液晶画面などにより構成されており、画像や文字などの情報を表示することができる。1407はハードディスクドライブ装置等の大容量の外部記憶装置である。この外部記憶装置1407には、OS(オペレーティングシステム)や後述する画像符号化、復号処理の為のプログラム、符号化対象の画像データ、復号対象画像の符号化データなどがファイルとして保存されている。また、CPU1401は、これらのプログラムやデータをRAM1402上の所定のエリアにロードし、実行することになる。
【0118】
1408は記憶媒体ドライブで、CD−ROMやDVD−ROMなどの記憶媒体に記録されたプログラムやデータを読み出してRAM1402や外部記憶装置1407に出力するものである。なお、この記憶媒体に後述する画像符号化、復号処理の為のプログラム、符号化対象の画像データ、復号対象の画像の符号化データなどを記録しておいても良い。この場合、記憶媒体ドライブ1408は、CPU1401による制御によって、これらのプログラムやデータをRAM1402上の所定のエリアにロードする。
【0119】
1409はI/Fで、このI/F1409によって外部装置を本装置に接続し、本装置と外部装置との間でデータ通信を可能にするものである。例えは符号化対象の画像データや、復号対象の画像の符号化データなどを本装置のRAM1402や外部記憶装置1407、あるいは記憶媒体ドライブ1408に入力することもできる。1410は上述の各部を繋ぐバスである。
【0120】
上記構成において、本装置の電源がONになると、CPU1401はROM1403のブートプログラムに従って、外部記憶装置1407からOSをRAM1402にロードする。この結果、キーボード1404、マウス1405の入力が可能となり、表示装置1406にGUIを表示することが可能になる。ユーザが、キーボード1404やマウス1405を操作し、外部記憶装置1407に格納された画像処理用アプリケーションプログラムの起動の指示を行なうと、CPU1401はそのプログラムをRAM1402にロードし、実行する。これにより、本装置が画像符号化装置又は画像復号装置として機能することになる。
【0121】
画像符号化装置として機能する場合には、図1に示した各種バッファ、テーブルはRAM1402に格納に確保し、各処理部に相当する機能はCPU1401が実行する関数やサブルーチンとして機能させればよい。そして、CPU1401は、上記第1の実施形態で示した各フローチャートに従った処理を行なえばよいのは明らかである。これは画像復号装置として機能させる場合にも言えることである。
【0122】
以上説明した様に、本変形例に従えば、第1の実施形態に相当する処理をコンピュータプログラムによっても実現できるのは明らかであろう。
【0123】
<第2の実施形態>
上記第1の実施形態の画像処理装置では、全てのブロックをブロック符号化部104で符号化する構成とした。文字、線画、CG画像では、或る領域について着目すると、その領域内の全画素が同一画素値である確率が高いし、同一画素配置パターンが繰り返し出現する確率も高い。従って、上記第1の実施形態は、文字、線画、CG画像については効率の良い可逆符号化データを生成することができる。
【0124】
しかしながら、自然画像(風景画や人物画)の場合、隣接する2画素の間の差は小さくなる可能性が高いものの、隣接する2画素が完全に一致することはむしろ希である。従って、着目ブロック内の全画素が同一色となる確率、及び、着目ブロックと同一パターンを持つ処理済みブロックの存在する確率は共に小さなものとなる。つまり、上記第1の実施形態の技術を自然画に適用した場合、初期ブロックサイズ(32×32画素)の多くの部分が下限サイズ(4×4画素)にまで分割した後、可逆符号化することになり、符号化効率が下がる可能性が高い。
【0125】
そこで、第3の実施形態としてブロック単位に画像の特性を判定し、ブロックの一致判定を用いた符号化と、これを用いない画素単位の予測符号化とを切り替える例を説明する。これにより、文字、線画、CG画像と自然画像が混在するような画像でも効率良く符号化することを目指す。
【0126】
本第2の実施形態の画像符号化装置の構成を図20に示す。第1の実施形態の構成である図1と異なる点は、色数判定部1801、スイッチ1802、ブロック予測符号化部1803が追加された点と、符号列形成部105に代わって符号列形成部1804となった点である。それ以外の構成要素は、第1の実施形態と同じであるので、同参照番号を付し、その説明は省略する。
【0127】
なお、図20に示す構成はハードウェアにより実現しても良いが、本第2の実施形態では、先に説明した第1の実施形態の変形例と同様に、図20に示す各部の機能をコンピュータに実現させるプログラムによって実現しても構わない。この場合、そのプログラムは図19の外部記憶装置1407や記憶媒体ドライブ1408、もしくはI/F1409を介して外部装置からRAM1402にロードされ、CPU1401が実行することになる。
【0128】
以下、図20を参照して、本第2の実施形態に係る画像符号化装置が行う画像符号化処理について説明する。
本第2の実施形態に係る画像処理装置の符号化対象とする画像データは、第1の実施形態と同じく、RGBの多値のカラー画像データであり、各コンポーネント(色成分)は8ビット(256階調)の輝度値を表現した画素データにより構成されるものとする。符号化対象の画像データの並びは点順次、即ち、ラスタースキャン順に各画素を並べ、その各画素はR、G、Bの順番のデータで構成されるものとする。また、画像は水平方向W画素、垂直方向H画素により構成されるものとする。
【0129】
以下、第1の実施形態と同じ動作のブロックについては説明を省略し、本第2の実施形態で特徴的な処理部についてのみ説明する。
【0130】
色数判定部1801はブロック切り出し部103の内部に格納される32×32画素のブロックデータについて、そのブロック内の出現する色の種類数を色数Ncとして計数する。そして、色数判定部1801は、色数Ncと予め定められた閾値Thとを比較し、Nc>Thである場合(色数が閾値よりも大きい場合)には「1」、Nc≦Thである場合(色数が閾値以下の場合)には「0」の判定信号を生成し、その判定信号をスイッチ1802及び符号列形成部1804に出力する。なお、閾値Thの値は、符号化対象の画像のサイズに応じて設定することが望ましい。本第2の実施形態ではTh=32として説明する。
【0131】
この色数判定部1801の目的は、ブロックの特性に応じて、後述するブロック予測符号化部1803とブロック符号化部104とを切り替えることにある。すなわち、文字、線画、CG画像では使用されている色数は少ない傾向にあり、また、自然画像では多くの色数が使用される傾向にある。判定部1801は、この性質を利用して、符号化対象のブロックが文字、線画、CGの画像であるか、自然画であるかを判定していると言うこともできる。本第2の実施形態の画像処理装置では色数によって処理対象ブロックが、文字、線画、CGの画像であるか、自然画であるかを判断するものとしているが、この判断は一例であることに留意願いたい。例えば、別の実施形態として、ブロック内での同一画素値の連続数や、ブロック内画素のヒストグラムの形状から判別してもよいであろう。
【0132】
スイッチ1802は色数判定部1801から出力される制御信号によって、ブロック単位に画像データの供給先を切り替える。色数判定部1801からの制御信号が「0」である場合、すなわち、着目している32×32画素の画像が文字、線画、CGの属性を持つと判断した場合、スイッチを端子b側に接続し、画像データをブロック符号化部104に供給する。
【0133】
また、色数判定部1801からの制御信号が「1」である場合、すなわち、着目している32×32画素の画像が自然画属性を持つと判断した場合、スイッチを端子a側に接続し、画像データをブロック予測符号化部1803に供給する。
【0134】
ブロック予測部1803はスイッチ1802が端子a側に接続された場合に、ブロック切り出し部103に格納される32×32画素のブロックデータを、サブブロックに分割すること無しに、符号化する。従って、各サブブロックの同一色判定情報、同一パターンの有無情報が無くなる。ブロック予測符号化部1803におけるブロックデータの符号化には予測符号化が用いられる。ブロック切り出し部103に格納されるブロックデータの各画素をラスタースキャン順に、各画素R,G,Bの順番で成分値を読み出して順番に符号化していく。着目する画素を符号化する場合には、着目画素の近傍に位置し、既に符号化された複数の近傍画素を参照し、着目画素の着目色成分の予測値pを求める。そしして、着目画素の成分値と予測値pとの差分値を算出し、その差分値を符号化する。
【0135】
着目画素の水平方向(右方向)の座標値x、垂直(下方向)の座標値yとし、着目画素の座標を(x,y)と定義したとき、3つの近傍画素を利用する場合、それら近傍画素の座標は(x−1,y)、(x,y−1)、(x−1,y−1)とする。そして、着目画素の着目色成分C(CはR、G、Bのいずれか)の値をP(x、y、C)と表現したとき、予測値pは例えば次のようにして求める。
p=P(x-1,y,C)+P(x,y-1,C)−P(x-1,y-1,C)
【0136】
従って、予測誤差eは、
e=P(x,y)−p
=P(x,y)−{P(x-1,y,C)+P(x,y-1,C)−P(x-1,y-1,C)}
となる。なお、着目画素が、ブロックデータの最初のライン上にある場合、予測値p=aとする。また、着目画素が、ブロックデータの左端位置にある場合にはp=bとする。そして、着目画素が、ブロックの最初の画素(最初のラインの左端位置)ではp=128とする。ただし、これらの取り決めは、復号処理と同じすればよく、ここで示されるのは一例である点に留意願いたい。
【0137】
予測誤差はJPEG可逆符号化モードと同様に、まず、図9から予測誤差eの属するカテゴリSSSSを得て、これを図10のハフマンテーブルで符号化する。続いて、カテゴリの中のどの値かを特定するための長さSSSSビットの付加ビットを出力する。予測誤差eが正である場合、付加ビットは予測誤差eの下位SSSSビットであり、負である場合には予測誤差e−1の下位SSSSビットを取り出したものである。
【0138】
本第2の実施形態の場合、32×32画素の符号化データは、ブロック予測符号化部1803、ブロック符号化部104のいずれか一方の符号化データとなる。従って、いずれの符号化データであるかを示す識別情報がないと、正しく復号できない。それ故、符号列形成部1804は、色数判定部1801からの判定信号(1ビットで良い)を、ブロックのヘッダに挿入する。
【0139】
符号列形成部1804は画像データの符号化処理を開始する際に、所定のフォーマットのヘッダ符号列を形成し、符号出力部106に出力する。ヘッダ符号列には、画像の水平方向/垂直方向の画素数、画素を構成する成分の数、各成分の精度など、画像の復号に必要な付加情報が含まれる。また、各ブロック毎に色数判定部1801から出力される判定結果をブロックヘッダとし、それに後続してブロック予測符号化部1803かブロック符号化部104のどちらか一方から出力されるブロックの符号化データを出力する。図21に符号列形成部105から出力される符号列の構成の一例を示す。先頭のヘッダに付加情報が格納され、続いてラスタースキャン順の各ブロックの符号化データが並ぶが、その先頭(図中、斜線部分)に色数判定部1801から出力される判定結果が付与される。これにより復号側でも、2種類の符号化データを正しく復号することができる。
【0140】
図22は、本第2の実施形態に係る画像符号化装置の制御部110の処理内容を示すフローチャートである。以下、同図を参照して、本実施形態に係る画像処理装置が行う画像符号化処理の全体的な流れについて説明する。
【0141】
まず、画像入力部101から符号化対象画像の32ライン分が入力され、ストライプバッファ102へと格納される(ステップS2001)。ブロック切り出し部103ではストライプバッファ102に格納されるストライプデータの左から右へ、順番に32×32の大きさのブロックを一つ取り出して、ブロック切り出し部103の内部メモリに格納する(ステップS2002)。
【0142】
ブロック切り出し部103にブロックデータが格納されると、色数判定部1801によりブロック内の画素の種類の数を色数Ncとして計数し(ステップS2003)、Nc>Thであるか否かを判定する(ステップS2003)。
【0143】
Nc>Thである場合(YES)、スイッチ1802が端子a側に接続され、ブロック予測符号化部1803によりブロック切り出し部103の内部に格納されている32×32画素のブロックデータの符号化が行われる(ステップS2005)。
【0144】
一方、Nc≦Thである場合(NO)、スイッチ1802が端子b側に接続される。その後、ブロック情報管理メモリ107を初期状態に設定し(ステップS2006)、ブロック符号化部104によりブロックデータの符号化が行われる(ステップS2007)。このステップS2007の符号化処理は、先に説明した第1の実施形態と同じである。
【0145】
ステップS2005又はS2007にて生成される符号化データは符号列形成部1804へと出力される。符号列形成部1804は、色数判定部1801の色数判定結果、すなわち、Nc>Thであるか、Nc≦Thであるかを示す1ビットの信号をブロックヘッダとして出力する。そして、符号列形成部1804は、それに後続して、ブロック予測符号化部1803又はブロック符号化部104のいずれか一方からの符号化データを出力する。
【0146】
ステップS2008では符号化したブロックがストライプの最後のブロックであるか否かを判定し、最後のブロックでない場合(NO)にはステップS2002へと処理を移し、次のブロックについて処理を行う。また、最後のブロックである場合(YES)、ステップS2009へと処理を移す。このステップS2009では、符号化したストライプが画像の最終ストライプであるか否かを判断し、最後のストライプでない場合(NO)にはステップS2001へと処理を戻し、次のストライプについて同様に処理を継続する。
【0147】
また、最後のストライプであった場合(YES)にはステップS2010に移り、符号列形成部1804から所定のフォーマットの符号化データが出力され、符号出力部106から装置外部へと出力される。
【0148】
以上の処理により、画像データの符号化処理が行われる。自然画特性のブロックに対しては32×32画素のブロックで予測符号化を適用し、文字、線画、CG特性のブロックについては、様々な大きさのブロックで周囲の符号化済みのブロックとの一致/不一致を符号化することになる。この結果、2つの特性の混在する画像においても高い圧縮性能の可逆符号化を実現できる。なお、本実施形態の画像処理装置ではブロック単位に独立の符号化が行われているため、部分的な復号や、並列符号化/復号が可能という特徴がある。
【0149】
次に、第2の実施形態における画像復号装置について説明する。
【0150】
図23は第2の実施形態における画像復号装置のブロック構成図である。本第2の実施形態における画像復号装置は、符号入力部201、符号バッファ202、ヘッダ解析部203、ブロック復号部204、ブロック情報管理メモリ205、ブロック書き出し部206、ストライプバッファ207を備える。また、画像出力部208、ブロック判定部2101、スイッチ2102、ブロック予測復号部2103、及び、装置全体の制御を司る制御部210とを備える。
【0151】
図23の画像復号装置と、先に説明した第1の実施形態における図19の画像復号装置との違いは、図19の構成に、復号方式選択部2101、スイッチ2102、ブロック予測復号部2103が追加された点である。
【0152】
以下、図23を参照して、本第2の実施形態に係る画像復号装置が行う処理について説明する。
【0153】
第1の実施形態と同様、符号入力部201は復号対象となる符号化データを入力し、その符号化データを符号バッファ202に適宜格納する。ヘッダ解析部203は、付加情報の取得を、復号に必要な情報を取得し、制御部210に出力する。制御部210は、この情報に基づき、各処理部に復号に必要な情報を設定する。
【0154】
ブロック判定部2101は、各ブロック(32×32画素の符号化データ)のヘッダに含まれる符号化データの種類を示す信号が“0”か“1”かを判定し、制御信号としてスイッチ2102に出力する。
【0155】
スイッチ2102は、ブロック判定部2101により出力されるを制御信号により、端子aと端子bの何れかを選択接続する。
【0156】
制御信号が「0」である場合、端子b側に接続し、符号化データをブロック復号部204に出力する。ブロック復号部204は、スイッチ2102が端子bを選択した場合に復号処理を開始する。そして、ブロック復号部204は、入力した符号化データを復号し、ブロック書き出し部206に復号結果である32×32画素の画像データを出力する。このブロック復号部204は第1の実施形態で説明した通りである。
【0157】
一方、制御信号が「1」である場合、スイッチ2102は端子aを選択接続し、符号化データをブロック予測符号化復号部2103に出力する。ブロック予測復号部2103は、スイッチ2102が端子a側に接続される場合に処理を開始する。そして、入力した符号化データを復号し、32×32画素の画像データを生成し、ブロック書き出し部206に出力する。ブロック予測復号部2103のブロック復号処理は、第2の実施形態におけるブロック予測符号化部1803の逆の処理を行なう。ブロック予測符号化部1803の動作から、その復号処理は明らかであり、また、JPEG可逆符号化モードの復号処理と基本的に同じであるので、ここでは説明を省略する。
【0158】
ブロック書き出し部206は、上記の2つの復号部のいずれか一方から32×32画素分の画像データを入力した場合、その画像データをストライプバッファ207に格納する。この後の処理は第1の実施形態と同様である。
【0159】
図24は、本第2の実施形態に係る画像復号装置の制御部210の処理手順を示すフローチャートである。以下、同図を参照して、本第2の実施形態に係る画像復号処理を説明する。
【0160】
まず、制御部210は、符号入力部201を制御して、復号対象となる符号化データを符号バッファ202に格納させる。そして、ヘッダ解析部203に、符号化データのヘッダを解析して復号に必要な付加情報を取り出させる(ステップS2201)。ヘッダの解析が終了すると、制御部210は、各ブロックの復号処理に必要な設定を行なう。
【0161】
次いで、制御部210は、ブロック判定部2101に、ブロック符号化データの先頭に格納される符号化データの種別を示す情報(Nc>Thである場合には“1”、Nc≦Thである場合には“0”)を取り出させる(ステップS2202)。そして、その情報を判定して、制御部210は、スイッチ2102の切り替えを行う(ステップS2203)。取り出した情報が“0”である場合には、後続符号化データは、画像符号化装置が有するブロック符号化部104により生成されたデータであることになる。従って、スイッチ2102は端子bへ接続し、処理はステップS2204に進む。また、取り出した情報が“1”である場合には、後続符号化データは、画像符号化装置が有するブロック予測符号化部1803により生成されたデータであることになる。従って、スイッチ2102は端子aへ接続し、処理はステップS2206に進む。
【0162】
ステップS2204に処理が進むと、ブロック情報管理メモリ205の内部に格納されているブロック管理テーブル205を初期化する。初期状態でブロック管理テーブル205は空の状態である。続いて、ステップS2205にて、ブロック復号部204は、スイッチ2102を介して入力した符号化データを、ブロック情報管理メモリ205に格納されているブロック管理テーブルを更新しながら32×32画素の画像データを復元する。ブロック復号部204は、このようにして復元した画像データを、ブロック書き出し部206の内部メモリに書き込む。ブロック復号部204の動作については第1の実施形態と同様である。
【0163】
一方、ステップS2206に処理が進んだ場合には、ブロック予測復号部2103が、スイッチ2102を介して入力した符号化データを復号し、32×32画素の画像データを生成し、それをブロック書き出し部206の内部メモリに書き込む。
【0164】
ブロック復号部206、またはブロック予測復号部2103によるブロックデータの復号が終了し、ブロック書き出し部206の内部メモリに1ブロック分の画像データが格納されると、処理はステップS2207に進む。このステップS2207に処理が進むと、ブロック書き出し部206はこれをストライプバッファ207へと転送する(ステップS2207)。ブロックデータは、ストライプバッファの左から右へ順に並べて書き込まれる。
【0165】
復号したブロックデータがストライプの最後のブロックであるか否かを判断し(ステップS2208)、ストライプの最後のブロックでない場合(NO)は、処理をステップS2202へと移して次のブロックの復号を行う。
【0166】
また、ストライプの最後のブロックであった場合(YES)にはストライプバッファ207に格納されたストライプデータをラスタースキャン順に読み出して、画像出力部208から装置外部へと出力する(ステップS2209)。
【0167】
ステップS2210では、出力したストライプデータが画像の最後のストライプデータであるか否かを判断し、最終ストライプでない場合(NO)はステップS2202へと処理を移し、次のストライプの復号処理を継続して行う。このとき、ストライプバッファ207はクリアされており、また再び、左端から次のブロックデータを格納していく。最終ストライプであった場合(YES)には復号処理を終了する。
【0168】
以上の説明した本第2の実施形態の処理により、符号化データから完全に元の画像データを復元することができる。また、本第2の実施形態によれば、自然画の場合、ブロック分割を行なわないで予測符号化を行なうから、ブロック分割した各サブブロックの先頭に同一色判定情報、同一パターンの有無を示す情報が不要となり、高い符号化効率が期待できる。
【0169】
<第1、第2の実施形態の変形例>
上記第1の実施形態(その変形例も含む)及び第2の実施形態では、着目ブロックと同一ブロックを探し出す際、着目サイズのブロックリストに登録されたブロックを検索対象とした。例えば着目ブロックのサイズが4であり、図25(a)のb(n)のブロックを着目ブロックとする場合、符号化済みのb(n−1)、b(n−2)、b(n−3)…との比較を行った。しかしながら、これに限らず、例えば、符号化済みの領域から自由にブロックを取り出して一致判定に用いることができる。例えば、図25(b)のようにブロックbxとも比較するようにすれば、符号化済みの領域の中に同一のブロックを検出できる確率が高くなる。
【0170】
第1の実施形態では同一のブロックをブロック番号で特定したが、上記のようにする場合には、初期サイズである32×32画素の領域全域を検索対象とする(ブロックリストは参照しない)。そして、着目ブロックとその同一ブロック(図25(b)の場合にはbx)が見つかった場合には、その同一ブロックと判定したブロックの左上隅の画素の相対座標を符号化するすれば良い。
【0171】
また、第2の実施形態では初期ブロックの色数Ncに応じて、ブロックの各画素の負符号化と、ブロック単位の分割符号化を選択的に実施する構成を示した。また、第2の実施形態では、同一画素値、または同一パターンの連続する領域に対してはブロック単位の分割符号化を適用し、それ以外では画素単位の符号化を適用することで符号化の効率改善を図るものであり、色数を2つの符号化方式選択の指標として用いた。この変形例として、色数以外の指標を用いて方式選択しても良いし、実際に2つの符号化方式を実施してみて発生符号量の少なくなる方を選択するよう構成しても良い。
【0172】
また、上記実施形態では、前値を予測値とした単純な予測符号化の例を示したが、これに限らず、自然画向きの符号化方式であれば良い。予測符号化を用いる場合においても、成分値の予測方法、予測誤差のエントロピ符号化方式など、様々な手法を用いることができる。例えば、着目する成分値の予測方法としては、幾つかの予測方法を用意して、適応的に切り換えても構わないし、符号化済みの各成分値に発生した予測誤差の平均値を着目する成分の予測にフィードバックするなど、非線形な予測を用いても構わない。
【0173】
また、予測誤差のエントロピ符号化としてハフマン符号化を用いる例について示したが、Golomb符号化や算術符号など、これ以外のエントロピ符号化を用いも良い。
【0174】
また、上述の実施形態ではRGB画像の符号化を例に説明したが、モノクロ画像、CMYK画像や、Lab画像や、YCrCb画像など、各種の画像データに適用可能である。
【0175】
また、上述の実施形態では、符号化装置と復号装置を別々の装置であるものとして説明したが、符号化、及び復号にかかる構成を一つの機器に収容し、共通部分を統合しても構わない。
【0176】
<第3の実施形態>
上記第1、第2の実施形態及びその変形例では、処理済のブロック中に着目ブロックと同一のものがあるか否かを判断した。本第3の実施形態では、この同一ブロック判定に、更に、着目ブロックを0度、90度、180度、270度の回転を行なう処理を含めた例を説明する。
【0177】
本第3の実施形態では、符号化対象画像データから24×24画素の画像データを抜き出す。以下、この24×24画素の画像データをタイルと表現する。本第3の実施形態では、このタイル毎に符号化し、符号化データを生成する。また、1つのタイルを符号化する際には、そのタイルを垂直方向4画素、水平方向24画素のサイズの複数のストライプに更に分割する。そして、1つのストライプに含まれる4×4画素のブロックを着目ブロックとし、当該着目ブロックとその近傍のブロックとに基づき、符号化処理を行なう。図26は、タイルとストライプとの関係を示している。1つのタイルは、図26に示すように6つのストライプで構成されることになる。なお、本第3の実施形態における表現のタイル、ストライプは、共に垂直、水平方向の画素数で定義されるものであるので、第1、第2の実施形態で用いたブロック、サブブロックと技術的に同義のものである。
【0178】
図27に第3の実施の形態における画像符号化装置のブロック構成図を示す。本装置は、入力部1201、ストライプメモリA1202、ストライプメモリB1203、符号列メモリ1204、2つのブロック符号化部1205、1206、画素符号化部1207、出力部1208、及び、装置全体の制御を司る制御部1209とを備える。ブロック符号化部1205は、4×4画素の画像データを、符号化部1206は2×2画素の画像データを符号化するものである。ストライプメモリA1202は、ストライプ中の4×4画素の着目ブロックを格納するために用いられ、ストライプメモリB1203は1つ前のストライプを格納するために用いられる。
【0179】
図28は、1つのタイル(24×24画素の画像データ)の符号化処理を示すフローチャートである。この処理は、制御部1209の処理手順でもある。以下、図28のフローチャートに従い、本第3の実施形態における画像符号化装置の処理内容を説明する。
【0180】
先ず、制御部1209は、ストライプカウンタiを“0”にセットする(ステップS1301)。このストライプカウンタiは、1タイル(24×24画素)内に含まれるストライプの1つを特定するためのものである。ストライプの番号は、タイル中の最上部のストライプの番号を「0」とし、下方向に向かって“1”、“2”、…、“5”を割り当てる。
【0181】
入力部201は、符号化対象の画像データから、1タイル分の画像データを入力し、入力部201内のメモリに1タイル分のデータを格納する。そして、制御部1209からのストライプカウンタiで示されるストライプのデータを、ストライプメモリA1202に格納する(ステップS1302)。なお、ストライプカウンタiが“0”である場合、制御部1209は、ストライプメモリB1203をゼロクリア(4×24=86画素分のデータをゼロクリア)する。
【0182】
次いで、ステップS1303にて、制御部1209は、ストライプカウンタiが“0”であるか否かを判断する。ストライプカウンタiが“0”である場合、着目ストライプが先頭のストライプを符号化することを示している。それ故、ストライプカウンタiが“0”である場合、ステップS1304に処理を進め、制御部1209は画素符号化部1207に対し、着目ストライプの先頭の4×4画素のブロックについて符号化するように指示する。この画素符号化部1207は、第1の実施形態における前置予測誤差を用いた符号化処理と同じであるとし、その説明については省略する。画素符号化部1207は、先頭ストライプの先頭の4×4画素ブロックの符号化データを生成し、その符号化データを符号列メモリ1204に一時的に記憶する。この後、処理はステップS1305に進める。
【0183】
ステップS1305に処理が進むと、制御部1209は、ブロック符号化部1205に対し、着目ストライプの未処理の4×4画素ブロックについて符号化処理を行なせる。ストライプカウンタiが“0”の場合、図30に示すように未処理の4×4画素ブロックの数が5つ、ストライプカウンタiが“0”以外の場合には未処理の4×4画素ブロックの数が6つである。
【0184】
このブロック符号化部1205の符号化処理の詳細は後述するが、概要を説明すれば次の通りである。
1.着目ストライプ中の未処理の4×4画素ブロックのうち、最も左に位置するブロックから右方向に向かう順番に、各ブロックの符号化データを生成する。
2.符号化対象の1つの4×4画素ブロックを着目ブロックとしたとき、相対的に左、上、左上の処理済みブロック(近傍ブロック)の中に、着目ブロックと同一のブロックが存在するかを判定する。そして、存在する場合には、存在することを示すと共に、着目ブロックを何度回転させた場合に一致するかを示す判定情報を符号化データとして、符号列メモリ1204に出力する。着目ブロックの上、及び、左上のブロックは、ストライプメモリB1203に格納されている。
【0185】
ステップS1306では、制御部1209は、ブロック符号化部1206に対し、符号化処理を行なわせる。但し、ブロック符号化部1206の符号化対象は、ステップS1305にて、着目ブロックと同一のブロックが近傍ブロック内に存在しないと判定された4×4画素ブロックである。つまり、着目ストライプ中の全4×4画素ブロックが、それぞれの近傍ブロックと同一であった場合、このステップS1306の処理は行なわない。ブロック符号化部1206の符号化処理は次の通りである。
1.符号化対象の4×4画素のブロックを4つの2×2画素のブロックに分割する。誤解を招かないようにするため、この2×2画素のブロックを以降、サブブロックと呼ぶ。
2.4つのサブブロックをラスタースキャン順に符号化していく。
3.符号化対象の1つの2×2画素のサブブロックを着目サブブロックとしたとき、相対的に左、上、左上の処理済みサブブロック(近傍サブブロック)の中に、着目サブブロックと同一のブロックが存在するかを判定する。そして、存在する場合には、存在することを示すと共に、着目サブブロックを何度回転させた場合に一致するかを示す判定情報を符号化データとして、符号列メモリ1204に出力する。着目ブロックの上、及び、左上のブロックは、ストライプメモリA1202、B1203に格納されている。
【0186】
ステップS1307では、制御部1209は、画素符号化部1207に対し、符号化処理を行なわせる。但し、画素符号化部1207の符号化対象は、ステップS1306にて、着目サブブロックと同一のサブブロックが近傍サブブロック内に存在しないと判定された2×2画素のサブブロックである。また、画素符号化部1207は生成した符号化データを符号列メモリ1204に格納する。なお、画素符号化部1207は、既に説明したように予測誤差符号化処理である。
【0187】
ステップS1308では、ストライプカウンタiが“5”であるか否か、すなわち、着目ストライプが着目タイルの最後のストライプであるか否かを判定する。否の場合には、ステップS1309にて、制御部1209は、ストライプメモリA1202内のデータを、ストライプメモリB1203にコピーする。そして、制御部1209は、ステップS1310にて、ストライプカウンタiを“1”だけ増加させ、ステップS1302の処理に戻る。
【0188】
一方、着目タイルの全ストライプの符号化処理が終了したと判断した場合、処理はステップS1311に進む。制御部1209は、符号列メモリ1204に格納された1タイル中の4×4画素のブロック(全部で36個)の判定情報の符号化データ、2×2画素のサブブロックの判定情報の符号化データ、及び、画素符号化部1207で生成された符号化データを連結する。この連結により、符号列を形成する。そして、ステップS1312にて、生成された符号列を、着目タイルの符号化データとして出力する。
【0189】
次に、上記ステップS1305の処理の詳細を図29のフローチャートに従って説明する。同図は、制御部1209のブロック符号化部1205に対する処理手順でもある。
【0190】
先ず、ステップS1401にて、4×4画素のブロックの初期位置を設定する。着目ストライプがタイルの先頭ストライプである場合には、2つ目の画素ブロックが初期位置となる。また、着目ストライプが2番目以降のストライプの場合には、左端を着目ブロックの初期値として設定する。
【0191】
次に、ステップS1402にて、着目ブロックと、その近傍の処理済のブロックとを、着目ブロックを回転させながら順次比較し、着目ブロックと同じブロックが近傍ブロック内にあるか否かをサーチする。図31の「*」印が着目ブロックの位置とした場合、近傍のブロックはBa(着目ブロックの左側のブロック)、Bb(着目ブロックの真上のブロック)、Bc(着目ブロックの左上のブロック)の3つである。
【0192】
なお、着目ブロックが、タイルの先頭ストライプ内にあるとき、近傍ブロックBb,Bcはタイル外となる。この場合、着目ブロックと比較する対象はブロックBaのみとする。また、着目ブロックがストライプの左端にある場合、ブロックBaはタイル外となる。この場合、着目ブロックと比較する対象はブロックBbのみとする。
【0193】
また、着目ブロックを回転する際の回転角は0度(回転無し)、90度、180度、270の4通りである。
【0194】
さて、ステップS1403では、ステップS1402のサーチ処理の結果、着目ブロックと同一ブロックが近傍ブロック内に存在したか否かを判定する。存在しなかった場合には、ステップS1404にて、着目ブロックのブロック符号化情報(判定情報)として1ビットの“0”を出力する。
【0195】
また、ステップS1403にて、着目ブロックと同一のブロックが近傍ブロック内に存在すると判定した場合には、処理はステップS1406、S1407の処理を行なう。すなわち、着目ブロックと一致すると判定した近傍ブロックの位置(方向)を示す情報を生成するとともに、着目ブロックを何度回転させた場合に一致するのかを示す情報を生成し、これらの情報を着目ブロックのブロック符号化情報(判定情報)としてを出力する。
【0196】
ここで、ステップS1403、S1406,S1407において生成される符号化データは、図32(a),(b)に示すテーブルに従って決定される。
【0197】
図32(a)は、着目ブロックと同一のブロックが近傍ブロックBa,Bb,Bc内に存在するか否か、存在する場合にはどの近傍ブロックであるかを示す符号語テーブルである。
【0198】
着目ブロックと同一のブロックが存在しない場合には、図32(a)に従い“0”を出力し、着目ブロックの処理を終える。
【0199】
一方、着目ブロックと同一のブロックが近傍ブロックBa,Bb,Bc内に存在する場合、その近傍ブロックを特定する図32(a)の符号語を出力する。次いで、その一致すると判定した近傍ブロックに対し、回転後の着目ブロックの回転角を示す符号語を図32(b)の符号語テーブルを参照して出力する。例えば、着目ブロックを如何なる回転角で回転させても近傍ブロックBaと等しくはならず、着目ブロックを90度回転させた場合に近傍ブロックBbと等しくなったとする。この場合、ステップS1406、S1407で生成される着目ブロックの符号化データは、二進で“10101”となる。
【0200】
さて、上記のようにして着目ブロックについてのブロック判定処理に基づく符号化データの出力を終えると、ステップS1408にて、着目ブロックがストライプの右端にあるか否かを判断する。否の場合にはステップS1409にて、着目ブロックの位置を4画素分だけ右方向に移動し、ステップS1402の処理を行なう。
【0201】
一方、着目ブロックがストライプの右端位置あると判断した場合には、1ストライプ分の処理が終了したことになるので、本処理を終える。
【0202】
以上のようにして画像データの符号化処理が行われる。ここで、1つのタイルの符号化データのデータ構造の一例を図33に示す。同図は、先に示した図11における1ブロック分の符号化データの内容に相当するものでもある。
【0203】
実施形態では、1タイルのサイズを24×24画素としているので、その中には4×4画素のブロックが36個存在する。従って、先ず、36個の4×4画素のブロックの符号化データが配置される。図30に示した様に、1タイルの最初(左上隅)の4×4画素のブロックについては、予測誤差符号化処理が行われる。従って、図33に示すように、最初の4×4画素の符号化データは、予測誤差符号化データとなる。2番目以降の4×4画素のブロックの符号化データは、近傍ブロックに一致するか否か、一致する場合にはどの近傍ブロックであり、回転角は何度であるかを示す判定情報が格納される。この4×4画素の符号化データに後続して、2×2画素のサブブロックの符号化データが配置される。2×2画素のサブブロックの数は、4×4画素ブロックについて近傍ブロック内に一致すブロックが発見できなかった数×4である。そして、最後に、2×2画素のサブブロック内の予測誤差符号化データが配置される。
【0204】
以上説明したように本第3の実施形態によれば、ブロック単位に符号化する際に、着目ブロックを回転させた上で、符号化済みの画像データ領域内に同一の画像が存在するか否かを判定する。この結果、着目ブロックと一致するブロックが発見できる可能性がくなり、圧縮率を向上させることが可能になる。
【0205】
なお、第3の実施形態では、ブロックのサイズを4×4画素、2×2画素の2種類の例を示したが、この数に限定されるものではない。例えば、8×8画素、4×4画素、2×2画素としても構わない。要するに、下限サイズにまで分割され、且つ、その下限サイズの着目ブロックと同じ画像が、符号化済みの画像データ領域内に存在しない場合に、着目ブロックを画素単位の符号化を行なうようにすればよい。
【0206】
また、本第3の実施形態における着目ブロックと同一の画像が、符号化済みの画像データ領域に内に存在するか否かを示す符号語の生成を、第1、第2の実施形態に適用しても構わないのは、明らかである。
【0207】
さらにまた、本第3の実施形態における復号装置は、第1の実施形態における復号装置とほぼ同じである。異なる点は、着目ブロックと着目ブロックと一致するブロックが存在する場合、符号化データにはその一致するブロックを特定する情報と回転角が含まれる。従って、符号化済みの画像データから該当サイズと位置の画像データを読出し、回転角だけ逆に回転した結果を、復号結果として出力すればよい。
【0208】
また、本第3の実施形態は、先の第1の実施形態の変形例と同様、コンピュータプログラムでもって実現することができることも明らかである。
【0209】
以上本発明に係る実施形態を説明した。
【0210】
上記実施形態によれば、例えば、画像データを符号化する画像符号化装置は、以下の構成を備える。即ち、ブロック単位に画像データを入力する入力手段を備える。また、着目ブロックの全画素が同一色かを判定し、同一色の場合にはそれを示す情報と前記色を特定する情報を符号化データとして出力し、着目ブロックが非同一色の画素を含む場合には非同一色を示す符号化データを出力する第1の符号化手段を備える。また、上記非同一色を示す場合、着目ブロックと同じ画像が、既に符号化処理された画像領域内に存在するか判定し、非存在を示す情報か、存在を示すと共に存在位置の情報を符号化データとして出力する第2の符号化手段を備える。また、該第2の符号化手段で出力される符号化データが、前記着目ブロックの画像データと同じ画像データの非存在を示す場合、前記着目ブロックのサイズが、予め設定された下限サイズであるか否かを判定する判定手段を備える。また、着目ブロックのサイズが、下限サイズであると判定した場合、着目ブロック内の各画素データを符号化し、符号化データを出力する第3の符号化手段を備える。また、着目ブロックが下限サイズよりも大きいと判定した場合、着目ブロックが複数のサブブロックで構成されるものとし、サブブロックのサイズを新たなブロックのサイズとして設定し、第1、第2の符号化手段による符号化を再帰的に実行する制御手段を備える。
【0211】
また、例えば、上記入力手段で入力するブロックのサイズが初期の最大サイズである場合、入力したブロック内に含まれる色数を判定する色数判定手段を備える。また、初期サイズのブロック内の画像データをラスタースキャンし、予測誤差符号化を行い、符号化データの生成及び出力を行なう第4の符号化手段を備える。また、判定した色数が予め設定された閾値よりも大きい場合には、入力したブロックを第4の符号化手段に供給し、色数が予め設定された閾値である場合、判定手段、第1、第2の符号化手段による符号化データの生成と出力を行なわせるスイッチ手段を備える。
【0212】
また、例えば、画像符号化装置で生成された符号化データを復号する画像復号装置は、以下の構成を備える。即ち、符号化データを入力する第2の入力手段を備える。また、入力した符号化データが着目ブロック内の全画素が同一色を示している場合、後続する符号化データは前記着目ブロック内の色を示す情報とし、着目ブロックを構成する全画素データが前記色を持つものとして出力する第1の復号手段を備える。また、符号化データが着目ブロック内の全画素が非同一色を示し、後続符号化データが、復号済み画像データの領域内に着目ブロックと同一のブロックが存在することを示す場合、前記同一のブロックの画像データを出力する第2の復号手段を備える。また、前記符号化データが、既に復号済みの画像データの領域内に着目ブロックと同一のブロックが存在しない示している場合、前記着目ブロックのサイズが、予め設定された下限サイズであるか否かを判定する第2の判定手段を備える。また、第2の判定手段が、前記着目ブロックのサイズが、予め設定された下限サイズであると判定した場合、後続する符号化データは前記着目ブロック内の各画素の符号化データであるものとし、復号して出力する第3の復号手段を備える。また、着目ブロックが下限サイズより大きいと判定した場合、着目ブロックが複数のサブブロックで構成されるものとし、サブブロックのサイズを新たなブロックのサイズとし、第1、第2の符号化手段による符号化を再帰的に実行する第2の制御手段を備える。
【0213】
また、これらの中には、コンピュータに、コンピュータプログラムを実行させる例も説明した。通常、コンピュータプログラム等のソフトウェアは、CD−ROM等のコンピュータ可読記憶媒体に格納されている。そして、そのコンピュータ可読記憶媒体を、コンピュータが読取り可能なデバイスにセットし、その上で、システムにコピーもしくはインストールという手順を踏む。従って、このようなコンピュータ可読記憶媒体も本発明の範疇にあることは明らかである。
【図面の簡単な説明】
【0214】
【図1】第1の実施形態に係る画像符号化装置のブロック構成図である。
【図2】ブロック情報管理メモリ107に格納されるブロック管理テーブルのデータ構造を示す図である。
【図3】図1におけるブロック符号化部104でのブロック符号化の処理手順を示すフローチャートである。
【図4】第1の実施形態における初期ブロックと、分割されたブロックとの関係を示す図である。
【図5】着目ブロックリストの一例を示す図である。
【図6】同一色判定と、同一ブロックの判定に用いる符号木を示す図である。
【図7】同一ブロックの位置を符号化する際に用いる符号木を示す図である。
【図8】着目ブロックを4つのサブブロックに分割した際の、着目ブロックと各サブブロックの座標との関係を示す図である。
【図9】予測誤差eとグループ番号SSSSとの対応テーブルを示す図である。
【図10】グループ番号SSSSと符号語との対応テーブルを示す図である。
【図11】符号列形成部105から出力される符号化画像データのデータ構造を示す図である。
【図12】第1の実施形態における符号化対象の画像ブロックの一例を示す図である。
【図13】図12の画像ブロックの符号化データの例を示す図である。
【図14】図12の画像ブロックを符号化する際に、ブロック情報管理メモリ107に構築されたブロック管理テーブルの例を示す図である。
【図15】第1の実施形態における画像符号化処理のメイン処理を示すフローチャートである。
【図16】第1の実施形態における画像復号装置のブロック構成図である。
【図17】図16におけるブロック復号部204でのブロック復号の処理手順を示すフローチャートである。
【図18】第1の実施形態における画像復号装置のメイン処理を示すフローチャートである。
【図19】第1の実施形態の変形例におけるコンピュータのブロック構成図である。
【図20】第2の実施形態における画像符号化装置のブロック構成図である。
【図21】第2の実施形態の画像符号化装置が生成する符号化データのデータ構造を示す図である。
【図22】第2の実施形態における画像符号化処理のメイン処理を示すフローチャートである。
【図23】第2の実施形態における画像復号装置のブロック構成図である。
【図24】第2の実施形態における画像復号装置のメイン処理を示すフローチャートである。
【図25】第1、第2の実施形態におけるブロック比較の変形例を示す図である。
【図26】第3の実施形態における画像データの符号化対象のタイルとストライプとの関係を示す図である。
【図27】第3の実施形態における画像符号化装置のブロック構成図である。
【図28】第3の実施形態における画像符号化処理のメイン処理を示すフローチャートである。
【図29】図28のステップS1305の詳細を示すフローチャートである。
【図30】第3の実施形態における1つのタイルに含まれる4×4画素のブロックの配列とストライプ番号との関係を示す図である。
【図31】第3の実施形態におけるブロック符号化を行なう際の着目ブロックと参照する近傍ブロックの相対位置関係を示す図である。
【図32】第3の実施形態のブロック符号化の際に参照する符号化テーブルを示す図である。
【図33】第3の実施形態における1タイルの符号化データのデータ構造を示す図である。

【特許請求の範囲】
【請求項1】
画像データを符号化する画像符号化装置であって、
複数の画素で構成され、設定されたサイズのブロック単位に、画像データを入力する入力手段と、
着目ブロックの画像データの全画素が同一色である否かを判定し、同一色である場合には同一色であることを示す情報と前記色を特定する情報を符号化データとして出力し、着目ブロックの画像データが非同一色の画素を含んでいると判定した場合には非同一色を示す符号化データを出力する第1の符号化手段と、
該第1の符号化手段で出力される符号化データが、前記非同一色を示している場合、前記着目ブロックの画像データと同じ画像データが、既に符号化処理された画像データ領域内に存在するか否かを判定し、同じ画像データが存在しない場合には非存在を示す情報を符号化データとして出力し、同じ画像データが存在する場合には存在を示すと共に存在する位置を特定する情報を符号化データとして出力する第2の符号化手段と、
該第2の符号化手段で出力される符号化データが、前記着目ブロックの画像データと同じ画像データの非存在を示す場合、前記着目ブロックのサイズが、予め設定された下限サイズであるか否かを判定する判定手段と、
該判定手段で前記着目ブロックのサイズが、前記下限サイズであると判定した場合、当該着目ブロック内の各画素データを符号化し、符号化データを出力する第3の符号化手段と、
前記判定手段で前記着目ブロックのサイズが、前記下限サイズよりも大きいと判定した場合、当該着目ブロックが複数のサブブロックで構成されるものとし、当該サブブロックのサイズを新たなブロックのサイズとして前記入力手段に設定し、前記第1、第2の符号化手段による符号化を再帰的に実行する制御手段と
を備えることを特徴とする画像符号化装置。
【請求項2】
前記第2の符号化手段は、
前記入力手段で入力した着目ブロックを回転させる回転手段を含み、
符号化処理済みの画像データの領域内に、前記回転後の着目ブロックと一致するブロックが存在するか否かを判定し、前記着目ブロックと一致するブロックが存在する場合には、回転角を特定する情報を含む符号化データを生成し、出力する
ことを特徴とする請求項1に記載の画像符号化装置。
【請求項3】
前記第3の符号化手段は、着目ブロック内をラスタースキャンし、着目画素の値と予測値との差分値を求め、当該差分値を符号化する可逆符号化手段であることを特徴とする請求項1又は2に記載の画像符号化装置。
【請求項4】
前記第2の符号化手段による符号化処理は、前記入力手段で入力するブロックのサイズが初期の最大サイズよりも小さい場合に実行されることを特徴とする請求項1乃至3のいずれか1項に記載の画像符号化装置。
【請求項5】
更に、前記入力手段で入力するブロックのサイズが初期の最大サイズである場合、入力したブロック内に含まれる色数を判定する色数判定手段と、
前記初期サイズのブロック内の画像データをラスタースキャンし、予測誤差符号化を行い、符号化データの生成及び出力を行なう第4の符号化手段と、
前記色数判定手段で判定した色数が予め設定された閾値よりも大きい場合には、前記入力手段で入力したブロックの画像データを前記第4の符号化手段に供給し、
前記色数判定手段で判定した色数が予め設定された閾値以下である場合、前記第1、第2、第3の符号化手段のいずれかによって符号化データの生成と出力を行なわせるスイッチ手段と
を備えることを特徴とする請求項1乃至4のいずれか1項に記載の画像符号化装置。
【請求項6】
画像データを符号化する画像符号化装置であって、
複数の画素で構成され、設定されたサイズのブロック単位に、画像データを入力する入力手段と、
入力したブロックを複数のサブブロックに分割する分割手段と、
着目サブブロックの画像データと同じ画像データが既に符号化処理された画像領域に存在するか否かを判定し、同じ画像データが存在しない場合には非存在を示す符号化データを出力し、同じ画像データが存在する場合には存在を示すと共に存在する位置を特定する情報を符号化データとして出力する第1の符号化手段と、
該第1の符号化手段で出力される符号化データが非存在を示す場合、前記着目サブブロックのサイズが、予め設定された下限サイズであるか否かを判定する判定手段と、
該判定手段で前記着目サブブロックのサイズが、前記下限サイズであると判定した場合、当該着目サブブロック内の各画素データを符号化し、符号化データを出力する第2の符号化手段と、
前記判定手段で前記着目サブブロックのサイズが、前記下限サイズよりも大きいと判定した場合、前記着目サブブロックを、当該着目サブブロックのサイズよりも更に小さい複数のサブブロックに分割し、当該分割したサブブロックのサイズを前記入力手段が入力するブロックのサイズとして設定して、前記第1の符号化手段による符号化処理を再び実行させる制御手段と
を備えることを特徴とする画像符号化装置。
【請求項7】
更に、前記入力手段で入力したブロック内の画像データの全画素が同一色を示すか否かを判定する色判定手段と、
該色判定手段が、前記同一色と判定した場合、着目ブロックが同一色であることを示すと共に、前記色を示す情報を符号化データとして出力する第3の符号化手段とを備え、
前記分割手段は、前記色判定手段が、非同一色と判定した場合、着目ブロックを分割対象とすることを特徴とする請求項6に記載の画像符号化装置。
【請求項8】
前記第1の符号化手段は、
前記着目サブブロックを回転させる回転手段を含み、
符号化処理済みの画像データの領域内に、前記回転後の着目サブブロックと一致するブロックが存在するか否かを判定し、前記着目サブブロックと一致するブロックが存在する場合には、回転角を特定する情報を含む符号化データを生成し、出力する
ことを特徴とする請求項6又は7に記載の画像符号化装置。
【請求項9】
前記第2の符号化手段は、着目サブブロック内をラスタースキャンし、着目画素の値と、当該着目画素の近傍の1又は複数の画素から求めた予測値との差分値を求め、当該差分値を符号化する可逆符号化手段であることを特徴とする請求項6至8のいずれか1項に記載の画像符号化装置。
【請求項10】
更に、
前記入力手段で入力するブロックのサイズが初期の最大サイズである場合、入力したブロック内に含まれる色数を判定する色数判定手段と、
前記初期サイズのブロック内の画像データをラスタースキャンし、予測誤差符号化を行い、符号化データの生成及び出力を行なう第4の符号化手段と、
前記色数判定手段で判定した色数が予め設定された閾値よりも大きい場合には、前記入力手段で入力したブロックの画像データを前記第4の符号化手段に供給し、
前記色数判定手段で判定した色数が予め設定された閾値である場合、前記判定手段、前記第1、第2の符号化手段による符号化データの生成と出力を行なわせるスイッチ手段と
を備えることを特徴とする請求項6乃至9のいずれか1項に記載の画像符号化装置。
【請求項11】
画像データを符号化する画像符号化装置の制御方法であって、
複数の画素で構成され、設定されたサイズのブロック単位に、画像データを入力する入力工程と、
着目ブロックの画像データの全画素が同一色である否かを判定し、同一色である場合には同一色であることを示す情報と前記色を特定する情報を符号化データとして出力し、着目ブロックの画像データが非同一色の画素を含んでいると判定した場合には非同一色を示す符号化データを出力する第1の符号化工程と、
該第1の符号化工程で出力される符号化データが、前記非同一色を示している場合、前記着目ブロックの画像データと同じ画像データが、既に符号化処理された画像データ領域内に存在するか否かを判定し、同じ画像データが存在しない場合には非存在を示す情報を符号化データとして出力し、同じ画像データが存在する場合には存在を示すと共に存在する位置を特定する情報を符号化データとして出力する第2の符号化工程と、
該第2の符号化工程で出力される符号化データが、前記着目ブロックの画像データと同じ画像データの非存在を示す場合、前記着目ブロックのサイズが、予め設定された下限サイズであるか否かを判定する判定工程と、
該判定工程で前記着目ブロックのサイズが、前記下限サイズであると判定した場合、当該着目ブロック内の各画素データを符号化し、符号化データを出力する第3の符号化工程と、
前記判定工程で前記着目ブロックのサイズが、前記下限サイズよりも大きいと判定した場合、当該着目ブロックが複数のサブブロックで構成されるものとし、当該サブブロックのサイズを新たなブロックのサイズとして前記入力工程に設定し、前記第1、第2の符号化工程による符号化を再帰的に実行する制御工程と
を備えることを特徴とする画像符号化装置の制御方法。
【請求項12】
画像データを符号化する画像符号化装置の制御方法であって、
複数の画素で構成され、設定されたサイズのブロック単位に、画像データを入力する入力工程と、
入力したブロックを複数のサブブロックに分割する分割工程と、
着目サブブロックの画像データと同じ画像データが既に符号化処理された画像領域に存在するか否かを判定し、同じ画像データが存在しない場合には非存在を示す符号化データを出力し、同じ画像データが存在する場合には存在を示すと共に存在する位置を特定する情報を符号化データとして出力する第1の符号化工程と、
該第1の符号化工程で出力される符号化データが非存在を示す場合、前記着目サブブロックのサイズが、予め設定された下限サイズであるか否かを判定する判定工程と、
該判定工程で前記着目サブブロックのサイズが、前記下限サイズであると判定した場合、当該着目サブブロック内の各画素データを符号化し、符号化データを出力する第2の符号化工程と、
前記判定工程で前記着目サブブロックのサイズが、前記下限サイズよりも大きいと判定した場合、前記着目サブブロックを、当該着目サブブロックのサイズよりも更に小さい複数のサブブロックに分割し、当該分割したサブブロックのサイズを前記入力工程が入力するブロックのサイズとして設定して、前記第1の符号化工程による符号化処理を再び実行させる制御工程と
を備えることを特徴とする画像符号化装置の制御方法。
【請求項13】
コンピュータが読込み実行することで、前記コンピュータを請求項1乃至10のいずれか1項に記載の画像符号化装置として機能させるコンピュータプログラム。
【請求項14】
請求項1に記載の画像符号化装置で生成された符号化データを復号する画像復号装置であって、
符号化データを入力する第2の入力手段と、
入力した符号化データが着目ブロック内の全画素が同一色を示している場合、後続する符号化データは前記着目ブロック内の色を示す情報とし、着目ブロックを構成する全画素データが前記色を持つものとして出力する第1の復号手段と、
前記入力した符号化データが着目ブロック内の全画素が非同一色を示している場合であって、後続する符号化データが、既に復号済みの画像データの領域内に着目ブロックと同一のブロックが存在することを示す符号化データである場合、前記同一のブロックの画像データを着目ブロックの復号結果として出力する第2の復号手段と、
前記符号化データが、既に復号済みの画像データの領域内に着目ブロックと同一のブロックが存在しないことを示している場合、前記着目ブロックのサイズが、予め設定された下限サイズであるか否かを判定する第2の判定手段と、
該第2の判定手段が、前記着目ブロックのサイズが、予め設定された下限サイズであると判定した場合、後続する符号化データは前記着目ブロック内の各画素の符号化データであるものとし、復号して出力する第3の復号手段と、
前記第2の判定手段で前記着目ブロックのサイズが、前記下限サイズよりも大きいと判定した場合、当該着目ブロックが複数のサブブロックで構成されるものとし、当該サブブロックのサイズを新たなブロックのサイズとして前記第2の入力手段に設定し、前記第1、第2の符号化手段による符号化を再帰的に実行する第2の制御手段と
を備えることを特徴とする画像復号装置。
【請求項15】
請求項6に記載の画像符号化装置で生成された符号化データを復号する画像復号装置であって、
符号化データを入力する第2の入力手段と、
入力した符号化データが、既に復号済みの画像データの領域内に着目ブロックと同一のブロックが存在することを示す符号化データである場合、前記同一のブロックの画像データを着目ブロックの復号結果として出力する第1の復号手段と、
前記符号化データが、既に復号済みの画像データの領域内に着目ブロックと同一のブロックが存在しないことを示している場合、前記着目ブロックのサイズが、予め設定された下限サイズであるか否かを判定する第2の判定手段と、
該第2の判定手段が、前記着目ブロックのサイズが、予め設定された下限サイズであると判定した場合、後続する符号化データは前記着目ブロック内の各画素の符号化データであるものとし、復号して出力する第2の復号手段と、
前記第2の判定手段で前記着目ブロックのサイズが、前記下限サイズよりも大きいと判定した場合、当該着目ブロックが複数のサブブロックで構成されるものとし、当該サブブロックのサイズを新たなブロックのサイズとして前記第2の入力手段に設定し、前記第1の符号化手段による符号化を再帰的に実行する第2の制御手段と
を備えることを特徴とする画像復号装置。
【請求項16】
請求項1に記載の画像符号化装置で生成された符号化データを復号する画像復号装置の制御方法であって、
符号化データを入力する第2の入力工程と、
入力した符号化データが着目ブロック内の全画素が同一色を示している場合、後続する符号化データは前記着目ブロック内の色を示す情報とし、着目ブロックを構成する全画素データが前記色を持つものとして出力する第1の復号工程と、
前記入力した符号化データが着目ブロック内の全画素が非同一色を示している場合であって、後続する符号化データが、既に復号済みの画像データの領域内に着目ブロックと同一のブロックが存在することを示す符号化データである場合、前記同一のブロックの画像データを着目ブロックの復号結果として出力する第2の復号工程と、
前記符号化データが、既に復号済みの画像データの領域内に着目ブロックと同一のブロックが存在しないことを示している場合、前記着目ブロックのサイズが、予め設定された下限サイズであるか否かを判定する第2の判定工程と、
該第2の判定工程が、前記着目ブロックのサイズが、予め設定された下限サイズであると判定した場合、後続する符号化データは前記着目ブロック内の各画素の符号化データであるものとし、復号して出力する第3の復号工程と、
前記第2の判定工程で前記着目ブロックのサイズが、前記下限サイズよりも大きいと判定した場合、当該着目ブロックが複数のサブブロックで構成されるものとし、当該サブブロックのサイズを新たなブロックのサイズとして前記第2の入力工程に設定し、前記第1、第2の符号化工程による符号化を再帰的に実行する第2の制御工程と
を備えることを特徴とする画像復号装置の制御方法。
【請求項17】
請求項6に記載の画像符号化装置で生成された符号化データを復号する画像復号装置の制御方法であって、
符号化データを入力する第2の入力工程と、
入力した符号化データが、既に復号済みの画像データの領域内に着目ブロックと同一のブロックが存在することを示す符号化データである場合、前記同一のブロックの画像データを着目ブロックの復号結果として出力する第1の復号工程と、
前記符号化データが、既に復号済みの画像データの領域内に着目ブロックと同一のブロックが存在しないことを示している場合、前記着目ブロックのサイズが、予め設定された下限サイズであるか否かを判定する第2の判定工程と、
該第2の判定工程が、前記着目ブロックのサイズが、予め設定された下限サイズであると判定した場合、後続する符号化データは前記着目ブロック内の各画素の符号化データであるものとし、復号して出力する第2の復号工程と、
前記第2の判定工程で前記着目ブロックのサイズが、前記下限サイズよりも大きいと判定した場合、当該着目ブロックが複数のサブブロックで構成されるものとし、当該サブブロックのサイズを新たなブロックのサイズとして前記第2の入力工程に設定し、前記第1の符号化工程による符号化を再帰的に実行する第2の制御工程と
を備えることを特徴とする画像復号装置の制御方法。
【請求項18】
コンピュータが読込み実行することで、前記コンピュータを請求項14又は15に記載の画像復号装置として機能させるコンピュータプログラム。
【請求項19】
請求項13又は18に記載のコンピュータプログラムを格納したことを特徴とするコンピュータ可読記憶媒体。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate

【図32】
image rotate

【図33】
image rotate


【公開番号】特開2008−301373(P2008−301373A)
【公開日】平成20年12月11日(2008.12.11)
【国際特許分類】
【出願番号】特願2007−147419(P2007−147419)
【出願日】平成19年6月1日(2007.6.1)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】