画像符号化装置及びその制御方法
【課題】 高解像度画像を、効率良く符号化する技術を提供する。
【解決手段】 タイルを構成する2×2画素の各ブロックから1/2縮小タイルを生成する手段、2×2画素の各ブロックを復元するための補間方法を示す補間データを生成する手段、前記1/2縮小タイルを可逆符号化する手段、前記1/2縮小タイルから前記タイルと同解像度の画像を復元してから非可逆符号化する手段、前記補間データに基づいて、可逆、非可逆符号化手段のいずれか一方を選択する手段、前記可逆符号化データと前記補間データ、または前記非可逆符号化データを、前記タイルの符号化データとして出力する手段を備え、前記補間方法は、各ブロックにおける非代表3画素を1/2縮小画像の画素値を用いて求める第1補間方法と、各ブロックにおける非代表3画素を1/2縮小画像の画素値を用いずに画素データから求める第2補間方法を含む。
【解決手段】 タイルを構成する2×2画素の各ブロックから1/2縮小タイルを生成する手段、2×2画素の各ブロックを復元するための補間方法を示す補間データを生成する手段、前記1/2縮小タイルを可逆符号化する手段、前記1/2縮小タイルから前記タイルと同解像度の画像を復元してから非可逆符号化する手段、前記補間データに基づいて、可逆、非可逆符号化手段のいずれか一方を選択する手段、前記可逆符号化データと前記補間データ、または前記非可逆符号化データを、前記タイルの符号化データとして出力する手段を備え、前記補間方法は、各ブロックにおける非代表3画素を1/2縮小画像の画素値を用いて求める第1補間方法と、各ブロックにおける非代表3画素を1/2縮小画像の画素値を用いずに画素データから求める第2補間方法を含む。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、高解像度の画像データを符号化する技術に関する。
【背景技術】
【0002】
従来、画像をタイルに分割し、このタイルを可逆符号化する構成と、非可逆符号化する構成を備え、いずれか一方の符号化結果をタイルの最終的な符号化データとして出力する画像符号化技術が知られている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平08−167030号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
近年、画像入出力機器の高精度化に伴い、画像データの高解像度化が進んでいる。高解像度の画像データを高速に処理するためには、それ以前より多くのハードウェアリソースや、処理時間が必要である。たとえば、1200dpiの解像度の画像を扱う符号化装置が、それ以前の600dpiの画像を符号化する装置と同等の時間内で、符号化処理を行なう場合には、内部の演算処理能力を4倍にする必要がある。本願発明は、上述点に鑑みてなされたものであり、高解像度画像を、効率良く符号化する技術を提供することを目的とする。
【課題を解決するための手段】
【0005】
かかる課題を解決するため、本発明の画像符号化装置は以下の構成を備える。すなわち、画像を構成するタイルを符号化する画像符号化装置であって、タイルを構成する2×2画素の各ブロックについて、代表1画素を出力することにより、1/2縮小タイルを生成する縮小手段と、前記1/2縮小タイルの各1画素から前記2×2画素の各ブロックを復元するための補間方法を示す補間データを生成する生成手段と、前記1/2縮小タイルを可逆符号化することにより、可逆符号化データを生成する可逆符号化手段と、前記補間データを用いて前記1/2縮小タイルから前記タイルと同じ解像度の画像を復元し、復元された画像を非可逆符号化することにより、非可逆符号化データを生成する非可逆符号化手段と、前記生成手段で生成された補間データに基づいて、前記可逆符号化手段、前記非可逆符号化手段のいずれか一方を選択して実行させる選択手段と、前記可逆符号化手段が選択された場合には、前記可逆符号化データおよび前記補間データを前記タイルの符号化データとして出力し、前記非可逆符号化手段が選択された場合には、前記非可逆符号化データを前記タイルの符号化データとして出力する出力手段とを備え、前記補間方法は、各ブロックにおける非代表3画素を1/2縮小画像の画素値を用いて求める第1の補間方法と、ブロックにおける非代表3画素を1/2縮小画像の画素値を用いずに画素データから求める第2の補間方法を含むことを特徴とする。
【発明の効果】
【0006】
本発明によれば、高解像度画像を、効率良く符号化することが可能となる。
【図面の簡単な説明】
【0007】
【図1】画像符号化装置の構成図
【図2】画像符号化の処理手順を示すフローチャート
【図3】タイルデータと2×2画素ブロックとの関係図
【図4】2×2画素の画素ブロックを示す図
【図5】画像符号化装置の構成図
【図6】1タイル分の符号化データの構造を示す図
【図7】JPEGベースライン符号化データの構成図
【図8】符号化対象画像とストライプ、タイルの関係を示す図
【図9】複数タイル分の符号化データの構造を示す図
【図10】タイルとブロックラインの関係を示す図
【図11】フラット/ノンフラットの判定結果を示す図
【図12】補間データ生成部の内部構成図
【図13】フラット判定部1201の処理手順を示す図
【図14】情報処理装置のブロック構成図
【図15】ノンフラットブロック符号化処理の手順を示す図
【図16】2×2画素のパターンを示す図
【図17】画像符号化装置の構成図
【図18】画像符号化装置の構成図
【発明を実施するための形態】
【0008】
以下添付図面に従って本発明に係る実施形態を詳細に説明する。
【0009】
[第1の実施形態]
図1は、本実施形態における画像符号化装置の構成図である。本実施形態では、画像符号化装置における縮小手段が、装置外部からの入力画像データ中の着目N画素(Nは2以上の整数)に対応する1画素を出力することで縮小画像データを生成する。すなわち、入力画像データの総画素数をMとしたとき、縮小画像生成手段は、着目N画素に対応する1画素を出力する処理をM/N回繰り返すことで、M/N画素からなる縮小画像を生成する。例えば、総画素数を4096画素(64×64画素)としたとき、着目4画素(2×2画素)に対応する1画素を出力する処理を1024回繰り返すことで、1024画素(32×32画素)からなる縮小画像を生成する。そして、補間データ生成手段が、元解像度の画像を復元するための着目N画素の補間方法を複数種類の補間手法から特定する、補間データを生成する。そして、この補間データと縮小画像の可逆符号化データとからなる符号列、あるいは縮小画像を元の解像度に復元した画像の非可逆符号化データからなる符号列を生成し、出力するものである。なお、入力画像データの入力源は、イメージスキャナとするが、画像データをファイルとして格納している記憶媒体等であっても良いし、印刷データ等の情報に基づいてレンダリングするレンダリング部であっても良い。なお、以降の実施形態では、上記の「N」で表わされる画素数が2×2個(=4画素)として説明する。本実施形態に係る画像符号化装置の符号化対象とする画像データは、RGBカラー画像データであり、各コンポーネント(色成分)は8ビットで0〜255の範囲の輝度値を表現した画素データにより構成されるものとする。符号化対象の画像データの並びは点順次、即ち、ラスタースキャン順に各画素を並べ、その各画素はR,G,Bの順番でデータを並べて構成されるものとする。画像は水平方向W画素、垂直方向H画素により構成されるものとする。また、説明を簡易にするため、W、Hは後述する符号化の処理単位、タイルのサイズ(本実施形態では水平、垂直方向とも32画素)の整数倍であるとして説明する。但し、入力画像データはRGB以外の色空間、例えば、YCbCrやCMYKでも構わず、その色空間の種類、成分の数は問わない。さらに、1成分のビット数も8ビットに限らず、8ビットを超えるビット数でも構わない。
【0010】
以下、図1に示す画像符号化装置における符号化処理を説明する。図中、115は図1の画像符号化装置全体の動作を制御する制御部である。各処理部は制御部115の制御によって協調して動作する。まず、画像入力部101は符号化対象となる画像データを順に入力し、ラインバッファ102に出力する。ここでの画像データの入力順序は、先に説明したとおりラスタースキャン順とする。ラインバッファ102は画像データを所定のライン数(Th)分格納する領域を持ち、画像入力部101から入力される画像データを順次格納していく。ここで、Thは後述するタイル分割部103で切り出されるタイルの垂直方向の画素数であり、本実施形態では32画素とする。以降、符号化対象画像データをThラインの幅で分割したデータをストライプと呼ぶ。ラインバッファ102に必要とされる容量、即ち1ストライプのデータ量はW×Th×3(RGB分)バイトである。先に述べた通り、説明の便宜上、垂直方向画素数HはThの整数倍であるとし、画像の末尾で不完全なストライプが発生しないものとする。さて、ラインバッファ102に1ストライプ(Thライン分)の画像データが格納されると、タイル分割部103はラインバッファ102に格納されるThライン分の画像データから、水平方向Tw画素、垂直方向Th画素で構成されるタイルに分割する。そして、このタイル単位に読み出してタイルバッファ104へと格納する。上述したように、符号化対象の画像の水平方向画素数WはTwの整数倍としているので、タイルに分割した場合に不完全なタイルが発生しないものとする。なお、実施形態では、Tw=Th=32としているので、1タイルのサイズは32×32画素となる。図8に符号化対象の画像データとストライプ、タイルの関係を図示する。図のように画像中、水平方向i番目、垂直方向j番目のタイルをT(i,j)と記す。タイルバッファ104は1タイル分の画素データを格納する領域を持ち、タイル分割部103から出力されるタイルデータを順次格納していく。タイルバッファ104に必要とされる容量はTw×Th×3(RGB分)バイトである。解像度変換部105は、タイルバッファ104に格納されるタイルデータについて2×2画素の領域から1画素を抽出するサブサンプリングを行い、1/2縮小タイルを生成する。ここで1/2縮小タイルとはタイルバッファ104に格納されるタイルデータを、水平、垂直両方向の画素数を1/2としたタイルを表す。また、2×2画素の領域の画像データを、これ以降、単に画素ブロックと呼ぶ。図3にタイルデータと2×2画素の画素ブロックBnの関係を図示する。また、注目する画素ブロックBnの中の4つの画素を、同図のように、Bn(0,0)、Bn(0,1)、Bn(1,0)、Bn(1,1)と表す。また、注目ブロックBnの前(左隣)の画素ブロックをBn−1、Bnの次(右隣)の画素ブロックをBn+1と表現し、Bnの下のブロックをBn+bと表す。ここで“b”はタイル内の水平方向のブロック数であり、タイルの水平方向画素数Twを用いて表せば、b=Tw/2である。実施形態では、Tw=32であるので、b=16となる。本実施形態の解像度変換部105は、着目画素ブロックBnのうち、左上隅の位置の画素Bn(0,0)を、1/2縮小タイルの1画素として抽出する。タイルデータ中の全ての画素ブロックB0〜Bm(m=Tw/2×Th/2−1=16×16−1=255)についてサブサンプリングを行い、オリジナルタイルに対し、水平、垂直方向とも1/2の画素数の1/2縮小タイルを生成する。解像度変換部105は、生成した1/2縮小タイルデータを1/2縮小タイルバッファ106へ格納する。従って、実施形態の場合、W×H画素で構成されるオリジナルの画像データのから、W×H/4画素数の縮小画像を生成する縮小画像生成手段として機能することになる。補間データ生成部110は、1/2縮小タイルから元のタイルデータ(初期タイル)を復元するために必要な情報を生成する。即ち、画素ブロック内のサブサンプリング対象となった画素Bn(0,0)を除く、非サンプリング対象の3画素{Bn(0,1),Bn(1,0),Bn(1,1)}を、どのように補間すればよいかを示す補間データを生成するものである。
【0011】
図12は、本実施形態に係る補間データ生成部110の内部のブロック構成図を示す。生成部110は、「各ブロックにおける非代表3画素を1/2縮小画像の画素値を用いて求める第1の補間方法」または「各ブロックにおける非代表3画素を1/2縮小画像の画素値を用いずに画素データから求める第2の補間方法」に属する補間データを出力する。この補間データ生成部110は、フラット判定部1201、ノンフラットブロック解析部1202で構成される。フラット判定部1201は、タイル内の画像データが、縮小タイルデータの画素から単純拡大(画素繰り返し)処理して復元可能であるかどうかを判定する“フラット判定”を行う。フラット判定の最小単位は2×2画素の画素ブロックである。以下、この画素ブロックが単純拡大で再現できるブロックである場合、それをフラットブロックと呼び、そうでないブロックをノンフラットブロックと呼ぶこととする。図3において、着目画素ブロックBnがフラットブロックであるのは、以下の式(1)が成り立つ場合である。
Bn(0,0)=Bn(0,1)=Bn(1,0)=Bn(1,1)…(1)
【0012】
フラット判定部1201の役割は、タイルを構成する各画素ブロックについてフラットブロックかノンフラットブロックかを表す情報を生成する。以下、図13のフローチャートに従い、フラット判定部1201の処理手順を説明する。なお、図13は、1つのタイルに対する処理である点に注意されたい。また、タイルに含まれる全ての画素ブロックがフラットブロックである場合、そのタイルをフラットタイルと呼び、そうでない場合には、ノンフラットタイルと呼ぶ。同様に、タイル内で水平方向に連続するTw/2個(実施形態では16個)のブロック群を以降、ブロックラインと呼ぶ。そして、ブロックライン内の全ブロックがフラットブロックであるとき、そのブロックラインをフラットブロックラインと呼び、少なくとも1つのノンフラットブロックが含まれる場合にはノンフラットブロックラインと呼ぶ。まず、フラット判定部1201はTw×Th画素のタイルデータを入力する(ステップS1301)。各タイルは独立に処理を行うものとし、タイルの外部の画素(周囲画素)を参照する場合には、各色成分の値が255であるものとして処理する。フラット判定部1201は、次に、ステップS1302にて、フラット/ノンフラットの判定を、Tw×Th画素のタイルを構成する2×2画素の画素ブロックが全てに対して行なう。すなわち、着目タイルがフラットタイルであるか否かを判定する。着目タイルがフラットタイルであると判定した場合、処理をステップS1303へ移し、1ビットのフラグ“1”をノンフラットブロック解析部1202に出力し、本処理を終える。一方、着目タイル内に少なくとも1つのノンフラットブロックが存在する場合(ステップS1302がNO)には、フラット判定部1201は、処理をステップS1304へ移す。そして、1ビットのフラグ“0”をノンフラットブロック解析部1202に出力し、ステップS1305へ処理を移す。ステップS1305では、水平方向に連続するb(=Tw/2=16)個の画素ブロックからなるブロックラインのひとつに着目し、ステップS1302と同様に、フラットブロックラインかノンフラットブロックラインかの判定を行う。フラットブロックラインである場合(YES)は、ステップS1306へ処理を移し、1ビットのフラグ“1”をノンフラットブロック解析部1202に出力する。一方、着目ブロックラインがノンフラットブロックラインであると判定した場合(ステップS1305がNO)には、処理をステップS1307へ移し、1ビットのフラグ“0”をノンフラットブロック解析部1202に出力して、処理をステップS1308へ移す。ステップS1308に至る場合には、着目するブロックライン内に、少なくとも1つのノンフラットブロックが存在することになる。このため、着目するブロックラインを構成するb(=Tw/2=16)個のブロックそれぞれについて、フラット/ノンフラットブロックの判定結果を示すフラグの配列が必要となる。ここで、ブロックのフラグは1ビットで良く、フラットブロックの場合は“1”、ノンフラットブロックの場合は“0”とする。本実施形態の場合、ブロックラインはb(=16)個の画素ブロックで構成されるので、ノンフラットブロックラインのフラグ配列はb個、すなわち、16ビットとなる。ステップS1308では、着目するブロックラインのフラグ配列を以前のノンフラットブロックラインのフラグ配列と比較し、一致するか否かを判定する。なお、着目ブロックラインが着目タイルの最初のブロックラインである場合には、それ以前のブロックラインは存在しない。そこで、フラット判定部1201は、着目タイルのブロックラインの判定に先立ち、内部のメモリに、ブロックラインの全ブロックがノンフラットブロックであることを示す情報を予め用意しておく。つまり、フラットブロックを“1”、ノンフラットブロックを“0”と定義したとき、初期値としてb個(bビット)の“0”を用意しておく。以降、このbビットを“参照ノンフラットブロックライン情報”と呼ぶ。勿論、復号装置でも1タイルの復元する際には、“参照ノンフラットブロックライン情報”を用意しておく。従って、ステップS1308では、着目ブロック内の各ブロックのフラットブロック/ノンフラットブロックの判定結果の並びが、参照ノンフラットブロックライン情報と一致するか否かを判定することになる。
【0013】
ここで、図10のタイルデータを例にして、ステップS1308の判定処理を説明する。このタイルデータはは、先頭から4番目までのブロックラインがフラットブロックラインであり、5番目のブロックラインがノンフラットブロックラインの例である。図10のタイルに対する画素ブロックのフラット/ノンフラットの判定結果は、図11に示す通りとなる。今、5番目のブロックラインが着目ブロックラインであるとする。着目ブロックラインは5番目のブロックラインであるから、そのブロックラインは着目タイル内の最初のノンフラットブロックラインであると判定される。従って、その着目ブロックラインに含まれる画素ブロックの判定結果と、参照ノンフラットブロックライン情報(16ビットの“000…000”)と比較され、一致すると判定される。このように、着目ブロックラインの判定結果と参照ノンフラットブロックライン情報とが一致したと判定した場合には、ステップS1309に進む。そして、着目ブロックライン内の各ブロックの判定結果が、参照ノンフラットブロックライン情報と一致したことを示す1ビットのフラグ“1”をノンフラットブロック解析部1202に出力する。この場合、ブロック毎のフラット/ノンフラット判定結果を示すb(=Tw/2)bitのフラグは出力しなくてよい。一方、着目ブロックラインのフラット/ノンフラット判定結果を示すフラグの配列が、参照ノンフラットブロックラインと一致しない場合(ステップS1308がNO)は、ステップS1310へ処理を移す。ここでは、フラット判定部1201は先ず、1ビットのフラグ”0”をノンフラットブロック解析部1202に出力する。そして、それに後続して着目ブロックラインのフラット/ノンフラット判定結果を示すフラグ配列(Tw/2ビット)をノンフラットブロック解析部1202に出力する。この後、フラット判定部1201は、ステップS1311にて、着目ブロックラインのフラットブロック/ノンフラットブロックの判定結果(bビット)で、参照ノンフラットブロックライン情報を更新する。注目しているブロックラインに対して、フラット/ノンフラット判定が終了したら、ステップS1312へ処理を移し、注目ブロックラインが、着目タイル内の最終ブロックラインであるか否かの判定を行う。最終ブロックラインではない場合(NO)は、着目するブロックラインを次のブロックラインへ移す(ステップS1313)。そして、ステップS1305へ処理を戻して同様の処理を繰り返す。最終ブロックラインであった場合(YES)は、タイルデータに対するフラット判定処理を終了する。フラット判定部1201は、以上の処理を、着目するタイルデータについて行い、フラット/ノンフラットの判定結果をノンフラットブロック解析部1202へ出力する。次に、ノンフラットブロック解析部1202の処理を説明する。このノンフラットブロック解析部1202は、フラット判定部1201と同様に、1タイルに相当する処理の開始時に、1ブロックラインの全ブロックがノンフラットブロックを示す「参照ノンフラットブロックライン情報」を設定しておく。そして、ノンフラットブロック解析部1202は、フラット判定部1201からの判定結果を解析しつつ、そのまま通過させ、補間データバッファ112に出力する。上記ステップS1310で、1ビットのフラグ“0”が出力されたブロックラインが存在する場合、解析部1202は、それに後続する各ブロックのフラットブロック/ノンフラットブロックを示す判定結果で、参照ノンフラットブロックライン情報を更新する。もし、着目ブロックラインに対し図13のステップS1309の処理が行われた場合には、その際の参照ノンフラットブロックラインを参照することで、どのブロックがノンフラットブロックであるのかを判定できる。また、着目ブロックラインに対し、図13のステップS1310の処理が行われていると判断した場合には先頭の1ビットのフラグ“0”に後続するbビットの値を調べれば、ブロックがノンフラットブロックであるのかを判定できる。すなわち、ノンフラットブロック解析部1202は、着目タイル中の全てのノンフラットブロックの位置と個数を判定できることになる。そして、ノンフラットブロック解析部1202は、縮小タイルの画素の単純拡大では再現できない2×2画素で構成される画素ブロック(ノンフラットブロック)に対して、その画素ブロック内の色数や配置を解析して、付加情報を生成し、出力する。すなわち、ノンフラットブロック解析部1202は、フラット判定部1201から出力される、フラット/ノンフラットの判定結果を受け取り、ノンフラットブロックについて、解析を行い、ノンフラットブロックを復元するための情報を生成し、出力する。ノンフラットブロック解析部1202は、ノンフラットブロックと判定されたブロックにつき、図15のフローチャートに従ったノンフラットブロック符号化処理を行なう。以下、図15に従って、ノンフラットブロック解析部1202の処理を説明する。先ず、ステップS1501にて、1個のノンフラットブロックBnを着目ブロックとし、2×2画素の画素ブロックデータを入力する。そして、ステップS1502にて、着目画素ブロックBnが、以下の式(2)が成立するブロックであるかどうかの判定を行う。
Bn(0,1)=Bn+1(0,0)
且つ
Bn(1,0)=Bn+b(0,0)
且つ
Bn(1,1)=Bn+b+1(0,0) …(2)
【0014】
上記式(2)が成り立つブロックBnを、以降、「周囲3画素一致ブロック」と定義する。上記式(2)に示すように、ペア{Bn(0,1)、Bn+1(0,0)}、{Bn(1,0)、Bn+b(0,0)}、及び、{Bn(1,1)とBn+b+1(0,0)}との一致/不一致を判定するのには、理由がある。一般に、着目画素と、その着目画素に隣接する画素間の相関度は高いし、そのような画像が多い。そのため、着目画素の画素値を予測する場合には、その隣接する画素を予測のための参照画素として使用することが多い。ブロック内の4画素が全て同一ではない、即ちフラットブロックではない場合には、ペア{Bn(0,1)、Bn+1(0,0)}、{Bn(1,0)、Bn+b(0,0)}、及び、{Bn(1,1)とBn+b+1(0,0)}とが一致する可能性が高い。この理由で、Bn(0,1)とBn+1(0,0)とが一致するか否かを判定するようにした。他のペア{Bn(1,0)、Bn+b(0,0)}、及び、{Bn(1,1)とBn+b+1(0,0)}を比較するのも同じ理由である。そして、先に示した式(2)が満たされる場合(3つのペアが互いに等しい場合)、短い符号語を割り当てることで情報量の削減できた。なお、実施形態では、各画素ブロックの左上隅の位置の画素をサブサンプリングして縮小画像を生成した。従って、式(2)における、画素Bn+1(0,0)、Bn+b(0,0)、Bn+b+1(0,0)は、着目画素ブロックBnに隣接する画素ブロック内のサブサンプリング対象画素でもある点に注意されたい。さて、注目ブロックBnが、式(2)の成立するブロックである場合には、Bn(0,1)、Bn(1,0)、Bn(1,1)の位置の3画素が、周囲の画素から再現可能であると判断できる。但し、ブロックが画像の右端もしくは、画像の下端に位置する場合には、ブロックの外側の画素を参照することができない。そのため、外側の画素の各成分を仮想的に、予め任意の値を設定しておき、その画素値との一致/不一致判定を行うこととする。本実施形態では、仮想的に、各成分値を“255”を設定しておく。しかし、“255”に限らず、符号化側と復号側で同じ値を用いるように定めておけばこれ以外の値でも構わない。
【0015】
図4に、注目する2×2画素の画素ブロックを示す。図4に示す画素Xが縮小画像生成のためにサブサンプリングされた画素(非代表1画素)を示し、着目画素ブロックBn内の画素Bn(0,0)に相当するものである。また、画素Xa,Xb,Xcは着目ブロックBn内の画素(0,1),Bn(1,0),Bn(1,1)の画素(非代表3画素)を示している。以下、画素X、Xa,Xb,Xcについて説明する。さて、ステップS1502にて、式(2)の成立すると判定した場合、着目ブロックBn内の画素Xa、Xb、Xcは、縮小画像の画素を用いて再現できることになる。従って、ステップS1503へ処理を移し、再現できることを示す1ビットのフラグ“1”を出力する。一方、着目ブロックが式(2)を満足しないブロックあると判定された場合、ステップS1504へ処理を移し、1ビットのフラグ“0”を出力する。次に、処理はステップS1505に進み、着目ブロックに含まれる色数が“2”か、それ以上(3、もしくは4色)かを判定する。なお、着目ブロックはノンフラットブロックであるので、色数が“1”となることは有り得ない。着目ブロックに含まれる色数が“2”より大きい(3、もしくは4色)と判定した場合、ステップS1512にて、1ビットのフラグ“0”を出力する。そして、ステップS1513にて、非代表3画素Xa,Xb,Xcの画素値そのものを、1/2縮小画像の画素値とは関わりの無い画素データとして更に出力する。実施形態では、1画素がR、G、Bの3コンポーネントであり、1コンポーネントが8ビットとしているので、3画素Xa,Xb,Xcの合計ビット数は3×8×3=72ビットとなる。一方、着目ブロックに含まれる色数が“2”であると判定した場合、ステップS1506にて出現色数が“2”であることを示す1ビットのフラグ“1”を出力する。そして、ステップS1507にて、着目ブロック内の、縮小画像に利用されている図4の画素X(代表1画素)を除く3画素Xa,Xb,Xc(非代表3画素)が、図16のパターン1601乃至1607のいずれであるのかを示す画素配置情報を出力する。図16に示すようにパターン数は全部で7つあるので、画素配置情報は3ビットであれば1つのパターンを特定できる。ただし、実施形態では、縮小画像に利用されている画素と同じ色の画素は“1”、異なる色の画素を“0”と表わし、図4の画素Xa,Xb,Xcに相当する各ビットをその順番に出力するようにした(この場合も3ビットとなる)。例えば、図16のパターン1601に一致する場合、画素Xa,Xb,Xcは同色であり、且つ、縮小画像に利用されている画素Xの色とは異なるので、画素配置情報の3ビットは“000”となる。また、パターン1602の場合は、“100”、パターン1603の場合には“010”、パターン1604の場合には“001”となる。他は説明するまでもないであろう。次いで、ステップS1508にて、着目ブロックBn内の縮小画像に利用された画素Xを除く画素Xa,Xb,Xcのうち、画素Xと異なる色の画素と同じ色の画素が、近傍に存在するか否かを判断する。本実施形態では、比較する近傍の画素は以下の3画素とし、かつ以下に記す順番に比較する。着目ブロックの右隣のブロックBn+1の画素Bn+1(0,0)、着目ブロックの直下のブロックBn+bの画素Bn+b(0,0)、着目ブロックの右下に隣接するブロックBn+b+1の画素Bn+b+1(0,0)。なお、3画素のいずれかと一致するかを示せば良いので、この比較結果は2ビットとした。そして、一致するのが、Bn+1(0,0)であった場合には2ビットの“11”、Bn+b(0,0)と一致するなら2ビットの“01”、Bn+b+1(0,0)とが一致するなら2ビットの“10”を出力する(ステップS1509)。また、周辺の3画素のいずれとも一致しない場合(NO)には、処理をステップS1510へ移し、2ビットのフラグ“00”を出力する。そして、第2色の画素値を出力し(ステップS1511)、注目ブロックBnに対する処理を終了する。本実施形態では符号化対象画像が、各色8ビットのRGBデータであるからステップS1511においては24ビットが出力される。こうして、注目ブロックBnの処理が終了したら、ステップS1514により、着目ブロックが着目タイル中の最後のノンフラットブロックであるか否かの判定を行う。否の場合には、次のノンフラットブロックの処理に移る(ステップS1515)。次のノンフラットブロックに対しても、ステップS1501からの処理を同様に行う。また、着目ブロックが最後のノンフラットブロックであると判定した場合には、本処理を終了する。以上のようにして、ノンフラットブロック解析部1202からは、フラット/ノンフラット判定結果と、ノンフラットブロックの解析結果により生成された補間データが出力される。これらのデータは補間データバッファ112に格納される。なお、2×2画素で表わされる画素ブロックは、これまでの説明からわかるように、以下の(a)乃至(e)の5種類に分類できる。
(a)フラットブロック
(b)ノンフラットブロック、かつ、周囲3画素一致ブロック
(c)ノンフラットブロック、かつ、そのブロック内に出現する色数が“2”であり、周辺画素に第2色と同じ色の画素が存在するブロック、
(d)ノンフラットブロック、かつ、そのブロック内に出現する色数が“2”であり、周辺画素に第2色と同じ色の画素が存在しないブロック、
(e)ノンフラットブロック、かつ、そのブロック内に出現する色数が“2”より多い(3色、もしくは4色)ブロック
【0016】
上記種類(a)乃至(e)は「各ブロックにおける非代表3画素を1/2縮小画像の画素値を用いて求める第1の補間方法」に相当する。また、上記種類(d),(e)は「各ブロックにおける非代表3画素を1/2縮小画像の画素値を用いずに画素データから求める第2の補間方法」に相当する。補間データ生成部110は、上記の処理を行なっている最中に、画素ブロックが上記(a)乃至(e)のいずれに該当するかを判定し、それぞれのブロックの出現数を計数する。以降、上記種類(a)乃至(e)のブロック数をNa、Nb、Nc,Nd、Neと表わす。補間データ生成部110は、1タイルに対して補間データを生成するに先立って、Na乃至Neを“0”で初期化し、1タイルに対する補間データの生成及び出力が完了したとき、計数したブロック数Na乃至Neを符号化方式選択部111に出力する。実施形態では、1タイルが32×32画素で構成されるので、その中には16×16個の画素ブロックが存在することになる。従って、補間データ生成部110が、仮に図13のステップS1303の処理を行なった場合、注目タイル内の全画素ブロックは、フラットブロックであることになり、Na=256となり、Na以外のブロック数Nb乃至Neは“0”として決定できる。また、ステップS1306の処理を行なった場合には、それまでに計数したNaに“16”を加算すればよい。そして、図15のステップS1503の処理を行なった場合には、Naに“1”を加算する。また、ステップS1512の処理を行なった場合にはNeに“1”を加算する。それ以外については、これまでの説明から十分に理解できよう。さて、符号化方式選択部111は、補間データ生成部110が計数したブロック数Na乃至Neの頻度分布に基づき、1/2縮小タイルバッファ106に格納される1/2縮小タイルデータの符号化方法を決定する。そして、その決定結果を2値(1ビット)の制御信号として非可逆符号化部107、可逆符号化部108、及び、符号列形成部113に出力する。この結果、非可逆符号化部107、可逆符号化部108のいずれか一方が、1/2縮小タイルバッファ106に格納された1/2縮小タイルデータの符号化処理を行なう。
【0017】
なお、非可逆符号化部107が選択された場合には、1/2縮小タイルバッファ106に格納された1/2縮小タイルデータは、解像度変換部116により、一旦、元の解像度の画像に復元(拡大)される。具体的には、解像度変換部116は、補間データバッファ112に格納されている補間データを用いて解像度変換(1/2縮小タイルデータから元の解像度の画像を復元する処理)を行う。そして、ここで解像度が復元された画像データが非可逆符号化部107で符号化され、符号化データバッファ109へ出力される。
【0018】
以上で生成された符号化データは、符号列形成部113に出力される。これ以降の実施形態では、符号化方式選択部111(または後述する符号化方式選択部504)からの制御信号が“0”の場合には非可逆符号化部107が非可逆符号化処理を行なう。また、制御信号が“1”の場合には、可逆符号化部108が可逆符号化処理を行なう。
【0019】
一般に、文字、線画、クリップアート画像などでは、先に示したブロックの種類(a)乃至(c)が多い傾向が見られる。言い換えれば、文字、線画、クリップアート画像などの場合、ブロック数Na乃至Ncの値が大きくなる。一方、複雑なCG画像や自然画像などでは、ブロック数Nd、Neの値が大きくなる傾向が見られる。また、文字、線画、クリップアートなどでは、非可逆符号化による画質劣化が目に付きやすく、可逆符号化により高い圧縮性能を得られる傾向にある。一方、複雑なCGや自然画像では、逆に非可逆符号化による画質劣化が目に付きにくく、かつ、可逆符号化では高い圧縮性能を得られない傾向がある。更には、ブロックの種類(a)乃至(c)の画素ブロックは、1/2縮小画像の画素値を用いて元の画像を復元することになる。従って、仮に、縮小画像に画素変化(劣化)が生じた場合、復号時に元の解像度の画像(初期タイル)を復元する際にその劣化を広げる方向に作用する。このため、縮小画像符号化時の画質劣化の影響を受け易い。一方で、ブロックの種類(d),(e)の画素ブロックは、3画素Xa,Xb,Xcの画素値そのものを、1/2縮小画像の画素値とは関わりの無い画素データとして指定するため、画質劣化の影響が少ない。
【0020】
上記の考えから、符号化方式選択部111は、Na,Nb,Ncの値が大きい場合は、1/2縮小タイルデータを可逆符号化するよう、制御信号“1”を出力する。また、符号化方式選択部111は、Nd、Neの値が大きい場合は、1/2縮小タイルデータを元の解像度の画像に復元してから非可逆符号化するよう、制御信号“0”を出力する。具体的には、符号化方式選択部111は、予め設定された閾値TH1と、Na+Nb+Ncの合算値とを比較し、次式(3)を満たすとき、制御信号“1”を出力し、満たさない場合には制御信号“0”を出力する。
Na+Nb+Nc>TH1 …(3)
上記式(3)の代りに、次式(4)を採用しても良い。これら式(3)、(4)は互いに等価のものであるのは理解できよう。
Nd+Ne≦TH1 …(4)
なお、閾値TH1は、ユーザが適宜設定できるようにするものとするが、典型的には、タイルに含まれるブロック数の1/2を示す値が好適である。実施形態では、1タイルには16×16個の画素ブロックが含まれるので、TH1=128となる。
【0021】
さて、非可逆符号化部107は、符号化方式選択部111から出力される制御信号が“0”の場合に、バッファ106に格納される1/2縮小タイルデータを、バッファ112に格納されている補間データを用いて、解像度変換部116で解像度復元する。そして、解像度復元された画像データを非可逆符号化して符号化データを生成し、生成された符号化データを符号化データバッファ109に格納する。
【0022】
なお、非可逆符号化部107における非可逆符号化処理としては様々な手法が適用可能である。ここでは静止画像符号化の国際標準方式として勧告されているJPEG(ITU−T T.81|ISO/IEC10918−1)のベースライン方式を適用するものとする。JPEGについては勧告書等に詳細な説明があるのでここでは説明を省略する。なお、JPEG符号化で用いるハフマンテーブル、量子化テーブルは全タイルで同じものを使用することとする。また、全タイルで共通となるフレームヘッダや、スキャンヘッダ、各種テーブルなどについては符号化データバッファ109に格納せず、符号化データ部分のみを格納する。即ち、図7に示した一般的なJPEGベースライン符号化データの構成のうち、スキャンヘッダの直後からEOIマーカの直前までのエントロピ符号化データセグメントのみが格納される。なお、ここでは説明簡略化のため、DRI、RSTマーカによるリスタートインターバルの定義や、DNLマーカによるライン数の定義などは行わないものとする。可逆符号化部108は、符号化方式選択部111から出力される制御信号が“1”である場合に、1/2縮小タイルバッファ106に格納される1/2縮小タイルデータを可逆符号化して符号化データを生成する。そして、可逆符号化部108は、生成した符号化データを符号化データバッファ109に格納する。可逆符号化部108が実行する可逆符号化にも様々なものがあるが、ここではその一例として、国際標準方式としてISOとITU−Tから勧告されるJPEG−LS(ITU−T T.87|ISO/IEC14495−1)を用いるものとする。しかしながら、JPEG(ITU−T T.81|ISO/IEC10918−1)のロスレスモードなど、他の可逆符号化手法を用いても構わない。JPEG−LSの詳細についても勧告書等に記載されているので、ここでは説明を省略する。また、JPEGと同様にヘッダ等はバッファに格納せず、符号化データ部分のみを格納することとする。符号列形成部113は、符号化方式選択部111から出力される制御信号と、補間データバッファ112に格納される補間データ、符号化データバッファ109に格納される1/2縮小タイルの符号化データを結合させる。そして、必要な付加情報を加えて本画像符号化装置の出力となる符号列を、オリジナル画像データに対応する符号化画像データとして形成する。また、非可逆符号化方式が選択された場合には、補間データを用いて1/2縮小タイルは元の解像度の画像(初期タイル)に復元しているので、補間データを含まない「元の解像度のタイルを表す符号化データ」となる。このとき、符号列形成部113は、符号化方式選択部111から出力される制御信号に基づき、どのタイルが可逆符号化され、どのタイルが非可逆符号化されているのかを示す情報も付加して、出力する。符号出力部114は符号列形成部113により生成された出力符号列を装置外部へと出力する。出力対象が記憶装置であれば、ファイルとして出力することになる。以上のように、本実施形態の画像符号化装置では、複数の画素で構成されるタイル(実施形態では32×32画素のサイズ)を単位に符号化処理を行う。各タイルについて、縮小画像と、縮小画像から元の画像(初期タイル)を復元するための補間データを生成し、縮小画像を可逆符号化、または、補間データを用いて縮小画像を元の画像に復元した画像を非可逆符号化により符号化する。補間データの生成は単純、簡易な処理であり、高度な演算処理を要するビットマップ符号化処理(可逆符号化部108による符号化処理)を縮小画像に限定することにより、画像全体をビットマップ符号化する場合に比べて、簡易・高速に符号化処理を実現できる。縮小画像の符号化には可逆と非可逆符号化のいずれかを選択して適用するが、補間データの構造に基づいて非可逆符号化を適用した場合の画質への影響が大きい場合には可逆符号化を適用することになる。よって、復号時に解像度を元に戻した場合に画質劣化が拡大することを防止できる。
【0023】
また、非可逆符号化部107による符号化処理を行う際には、先に縮小されている画像を、一旦、拡大(高解像度の画像に復元)してから処理することにより、非可逆符号化による画質の劣化を極力抑えることができる。これにより、可逆符号化されるタイルと隣接する、非可逆符号化されるタイルなどの画質劣化(画質の差異)が目立ち難い。
【0024】
[第1の実施形態の変形例]
上記第1の実施形態の変形例として、上述と同等の処理を、コンピュータプログラムによって実現する例を説明する。図14は、本変形例における情報処理装置(例えばパーソナルコンピュータ)のブロック構成図である。図中、1401はCPUで、RAM1402やROM1403に記憶されているプログラムやデータを用いて本装置全体の制御を行うと共に、後述する画像符号化処理、復号処理を実行する。1402はRAMで、外部記憶装置1407や記憶媒体ドライブ1408、若しくはI/F1409を介して外部装置からダウンロードされたプログラムやデータを記憶する為のエリアを備える。また、RAM1402は、CPU1401が各種の処理を実行する際に使用するワークエリアも備える。1403はROMで、ブートプログラムや本装置の設定プログラムやデータを格納する。1404、1405は夫々キーボード、マウスで、CPU1401に対して各種の指示を入力することができる。1406は表示装置で、CRTや液晶画面などにより構成されており、画像や文字などの情報を表示することができる。1407はハードディスクドライブ装置等の大容量の外部記憶装置である。この外部記憶装置1407には、OS(オペレーティングシステム)や後述する画像符号化、復号処理の為のプログラム、符号化対象の画像データ、復号対象画像の符号化データなどがファイルとして保存されている。また、CPU1401は、これらのプログラムやデータをRAM1402上の所定のエリアにロードし、実行することになる。1408は記憶媒体ドライブで、CD−ROMやDVD−ROMなどの記憶媒体に記録されたプログラムやデータを読み出してRAM1402や外部記憶装置1407に出力するものである。なお、この記憶媒体に後述する画像符号化、復号処理の為のプログラム、符号化対象の画像データ、復号対象の画像の符号化データなどを記録しておいても良い。この場合、記憶媒体ドライブ1408は、CPU1401による制御によって、これらのプログラムやデータをRAM1402上の所定のエリアにロードする。1409はI/Fで、このI/F1409によって外部装置を本装置に接続し、本装置と外部装置との間でデータ通信を可能にするものである。例えは符号化対象の画像データや、復号対象の画像の符号化データなどを本装置のRAM1402や外部記憶装置1407、あるいは記憶媒体ドライブ1408に入力することもできる。1410は上述の各部を繋ぐバスである。上記構成において、本装置の電源がONになると、CPU1401はROM1403のブートプログラムに従って、外部記憶装置1407からOSをRAM1402にロードする。この結果、キーボード1404、マウス1405の入力が可能となり、表示装置1406にGUIを表示することが可能になる。ユーザが、キーボード1404やマウス1405を操作し、外部記憶装置1407に格納された画像符号化処理用アプリケーションプログラムの起動の指示を行なうと、CPU1401はそのプログラムをRAM1402にロードし、実行する。これにより、本装置が画像符号化装置として機能することになる。
【0025】
図2のフローチャートに従って、CPU1401が実行する画像符号化用のアプリケーションプログラムの処理手順を説明する。基本的に、このプログラムは、図1に示す各構成要素に相当する関数(もしくはサブルーチン)を備えることになる。ただし、図1におけるラインバッファ102、タイルバッファ104、1/2縮小タイルバッファ106、符号化データバッファ109、補間データバッファ112等の各領域はRAM1402内に予め確保することになる。まず、ステップS200において、符号化を開始する前の初期化処理が行われる。ここでは、符号化対象となる画像データについて符号列に含めるべきヘッダ情報を準備したり、各種メモリ、変数等の初期化処理が行われる。初期化処理の後、ステップS201では、I/F1409によって接続される外部装置から符号化対象の画像データを順次入力し、RAM1402に符号化対象となる画像データの1ストライプ分のデータが格納される(画像入力部101の処理に相当)。次に、ステップS202では、RAM1402に格納されるストライプについて、着目するタイルデータを切り出し、RAM1402の別のアドレス位置に格納する(タイル分割部103の処理に相当)。続いて、ステップS203において、着目するタイルデータ中の各画素ブロック中の左上隅の画素をサブサンプリングすることで1/2縮小タイルデータを生成し、RAM1402内に格納する(解像度変換部105の処理に相当)。ステップS204では、1/2縮小タイルデータから元の解像度のタイルデータ(初期タイル)を復元するための補間データを生成する(補間データ生成部110の処理に相当)。ステップS205では、補間データの構造情報から、1/2縮小タイルデータについて可逆と非可逆のどちらの符号化方式を適用するかを決定する(符号化方式選択部111の処理に相当)。ステップS206において選択された符号化方式が可逆符号化である場合にはステップS207に進み、非可逆符号化である場合にはステップS213に進む。ステップS207では、1/2縮小タイルデータを可逆符号化して符号化データを生成し、RAM1402に格納する(可逆符号化部108の処理に相当)。ステップS213では、1/2縮小タイルデータを上述した補間データを用いて元の解像度の画像に復元する(解像度変換部116に相当)。ステップS208では、元の解像度に復元されたタイルデータ(初期タイル)を非可逆符号化することにより、符号化データを生成し、RAM1402に格納する(非可逆符号化部107の処理に相当)。ステップS209では、着目するタイルについて、タイルヘッダ、可逆/非可逆を識別する情報、補間データ、1/2縮小タイルまたは元の解像度のタイル符号化データを結合させて、タイル符号化データを形成する(符号列形成部113の処理に相当)。ステップS210では、符号化処理を行ったタイルが現在読み込まれているストライプの最後のタイルであるか否かを判定する。最後のタイルでない場合には次のタイルについてステップS202から処理を繰り返す。ストライプの最後のタイルである場合には、処理をステップS211へと移す。ステップS211では、現在読み込まれているストライプが画像の最終ストライプであるか否かを判定する。最終ストライプでない場合にはステップS201に戻り、次のストライプデータを読み込み、処理を継続する。最終ストライプの場合には、ステップS212へと処理を移す。処理がステップS212に移ったときには、符号化対象画像データのすべてのタイルについて符号化処理が終了している。そして、RAM1402に格納された全タイルの符号化データから、最終的な符号化データを生成して、I/F1409を解して外部装置へと出力する(符号列形成部113、符号出力部114の処理に相当)。以上説明したように本変形例によっても、第1の実施形態と同様の作用効果を奏することが可能となるのは明らかであろう。
【0026】
以上のように、符号化対象となる画像を縮小画像と補間データに分解し、縮小画像を補間データの構造によって可逆符号化か非可逆符号化を切り替える。そして、非可逆符号化選択の場合には、縮小画象を、一旦、元の解像度の画像(初期タイル)に復元してから符号化するにより、高解像度画像の符号化であっても、出来るだけ画質劣化を抑えることができる。
【0027】
なお、図2に示した処理フローの処理順序は必ずしもこれに限定されるものではなく、処理順序に依存関係が無いもの同士は処理タイミングを入れ替えても良いし、並列にそれら処理を動作させても良いであろう。例えば、1/2縮小タイルデータを生成する処理(ステップS203)、補間データを生成する処理(ステップS204)、符号化方式を選択する処理(ステップS205)などは、補間データの生成を先に行っても良い。また例えば、ステップS205の符号化方式の決定と同時またはその前に、予めステップS213における解像度の復元処理を行っても良い。
【0028】
[第2の実施形態]
上記実施形態では、補間データを用いて元の解像度の画像を復元する際に適用される補間手法の分布に基づいて、縮小画像を可逆符号化するか、非可逆符号化するかを選択した。しかしながら、補間データの符号量などから、補間手法の分布を推定し、その推定結果に基づいて可逆、非可逆符号化のいずれを実行するかを決定するようにしても、同様の効果を得ることができる。そこで、本第2の実施形態として、補間データの符号量に基づいて、符号化方式を選択する手法について説明する。なお、本第2の実施形態でも、対象の画像データは、RGB各色8ビットで構成される画像データとするが、CMYKカラー画像データなど、他の形式の画像データに適用しても良い。また、画像は水平方向W画素、垂直方向H画素により構成されるものとし、タイルのサイズTw,Thは、も第1の実施形態と同じく“32”であるとする。本第2の実施形態の画像符号化装置の補間データ生成部110、符号化方式選択部111の処理内容が、第1の実施形態のそれらと異なるだけであり、図1のブロック構成図と基本的に同じであるので、新たに図示はしない。以下、第2の実施形態の処理について、第1の実施形態と動作が異なる補間データ生成部110、符号化方式選択部111の処理内容について説明する。上述の第1の実施形態では、補間データ生成部110における補間データ生成の過程でタイル内の各画素ブロックの種類の頻度分布を示すブロック数Na乃至Neを算出し、これを符号化方式選択部111へと提供するとした。これに対し、本実施形態においては、補間データ生成部110は頻度分布の代わりに、着目タイルについての補間データの符号量Lを求め、それを符号化方式選択部111へと提供する。符号化方式選択部111は補間データ生成部110から提供される補間データの符号量Lを所定の閾値TH2と比較する。そしてL<TH2ならば可逆符号化を適用するよう、制御信号“1”を出力する。また、L≧TH2ならば非可逆符号化を適用するよう、制御信号“0”を出力する。1タイルは32×32画素であるので、そのデータ量は32×32×3(RGB成分の数)=3072バイトである。本第2の実施形態では、閾値TH2は、3072バイトの1/8(=384バイト)として説明する。ここで、第1の実施形態の符号化方式選択部111の説明で述べた、2×2画素の画素ブロックについての種類(a)乃至(e)の5つの種別を考える。これまでの説明から明らかなように、文字、線画、クリップアート画像などで多く出現する種類(a)乃至(c)の場合、補間データとして出力される符号長は短い。一方で、複雑なCGや自然画像で多く見られる種類(d),(e)の場合には、色の情報をそのまま補間データに含めるためのその符号長は大きくなる。これを別な表現で示すと、注目タイルに種類(a)〜(c)のブロックが多く存在する場合には着目タイルの補間データの符号量は少なくなり、逆に種類(d),(e)のブロックが多く含まれる場合には補間データの符号量は多くなる。よって補間データの符号量の量によって第1の実施形態で頻度を参照したのと同様の効果を得ることが可能となる。なお、本実施形態と同等の処理をコンピュータプログラムでもって実現できることは、先に説明した第1の実施形態の変形例から明らかであるので、その説明については省略する。
【0029】
[第3の実施形態]
上記第1、第2の実施形態の画像符号化装置では、符号化対象となる画像データを水平、垂直方向共に1/2に縮小し、これを可逆、または、非可逆符号化の対象とした。しかしながら、1/2の縮小に限らず、より小さい画像を生成してビットマップ符号化の対象としても構わない。本第3の実施形態では、その一例として1/2の縮小処理を再帰的に所定回数実行する。そして1回の縮小処理の生成するたびに、縮小元の画像から補間データを生成する例を説明する。ただし、以下では、説明を簡単なものとするため、再帰処理回数を2回とする具体例を説明する。
【0030】
図5に本実施形態における画像符号化装置のブロック構成図を示す。第1、第2の実施形態と異なるのは、解像度変換部501、1/4縮小タイルバッファ502、補間データ生成部503が追加された点と、符号化方式選択部111が符号化方式選択部504に変更された点である。以下、第2の実施形態と動作の異なる部分について説明する。
【0031】
解像度変換部501は、解像度変換部105と同様の処理により、1/2縮小タイルバッファ106に格納される1/2縮小タイルデータを、更に水平、垂直1/2に縮小し、1/4縮小タイルデータを生成する。そして、この1/4縮小タイルデータを、1/4縮小タイルバッファ502へ格納する。
【0032】
補間データ生成部503は、1/4縮小タイルバッファに格納される縮小タイルデータから、1/2縮小タイルバッファに格納される1/2縮小タイルデータを復元するために必要な補間データを生成する。ここでの処理は、補間データ生成部110がタイルバッファ104に格納されるタイルデータに対して行うのと同様である。以降、補間データ生成部110が生成する補間データと補間データ生成部503が生成する補間データを区別するため、前者をレベル1補間データと呼び、後者をレベル2補間データと呼ぶ。補間データバッファ112にはレベル1補間データとレベル2補間データの両方が格納される。
【0033】
符号化方式選択部504には、補間データ生成部110、503からそれぞれ、レベル1補間データの符号量L1とレベル2補間データの符号量L2が提供される。符号化方式選択部504は、入力したL1とL2の和を所定のしきい値TH3と比較する。すなわち、L1+L2<TH3ならば可逆符号化を適用するよう、制御信号“1”を出力する。一方、L1+L2≧TH3ならば非可逆符号化を適用するよう、制御信号“0”を出力する。本第3の実施形態では閾値TH3は、元のタイルデータ量3072バイトの1/4、即ち、“768”(バイト)とする。
【0034】
なお、本実施形態の解像度変換部116は、1/4縮小タイルデータを、レベル2補間データを用いて解像度変換(1/2縮小タイルデータへ復元)を行い、更に、1/2縮小タイルデータをレベル1補間データを用いて元の解像度(初期タイル)の画像に復元する。
【0035】
以上によれば、非可逆符号化部107では、元の解像度まで変換された画像(初期タイル)を非可逆符号化を行うので、上記実施形態よりも画質の劣化を抑えることができる。なお、本実施形態に相当する処理をコンピュータプログラムでもって実現できることは、先に説明した第1の実施形態の変形例と同様、明らかであるので説明を省略する。また、高度な演算処理を要するビットマップ符号化処理(可逆符号化部108による符号化処理)を適用する画素数が元画像データの1/16にまで限定されているため、上記実施形態よりも処理の負荷が軽減される。
【0036】
[第4の実施形態]
上述の第2、第3の実施形態では、補間データの符号量から補間手法の構成を推定して、可逆、非可逆符号化を選択する方法を示した。補間手法の構成を推定は、補間データの一部の符号量からでも可能ある。本第4の実施形態としてこのような例について説明する。第4の実施形態は、先に説明した第2の実施形態と基本的に同じであるが、補間データ生成部110、符号化方式選択部111の動作が若干異なる。以下、動作の異なる部分について説明する。上述の第2の実施形態では、補間データ生成部110において、着目するタイルの補間データ量Lを符号化方式選択部111へと提供した。本第4の実施形態では、第1の実施形態で説明した種類(a)乃至(e)の5種のブロックのうち、種類(d)にかかわる補間データの符号量Ldと、種類(e)にかかわる符号量Leの和を符号化方式選択部111へと提供する。ここでは、種類(d)にかかわる補間データとは、図15の処理フローにおいて、ステップS1510、S1511で処理がなされるノンフラットブロックについて出力される符号を指す。より具体的に述べるならば、ステップS1510、1511に至るノンフラットブロックについて、ステップS1504、S1506、S1507、S1510、S1511で出力される符号である。また種類(e)にかかわる補間データとは、同図、ステップS1512、S1513で処理がなされるノンフラットブロックについて出力される符号を指す。これは、ステップS1512、1513に至るノンフラットブロックについて、ステップS1504、S1512、S1513で出力される符号である。符号化方式選択部111は補間データ生成部110から提供される補間データの符号量Ld+Leを所定のしきい値TH4と比較する。Ld+Le<TH4ならば可逆符号化を適用するよう制御信号“1”を出力し、Ld+Le≧TH4ならば非可逆符号化を適用するよう、制御信号“0”を出力する。複雑なCGや自然画では、LdとLeの和が大きくなる傾向にあり、非可逆符号化の歪が目に付きにくく、元の解像度に戻すときにも縮小画像の劣化の影響を受けにくい。よって、本実施形態においても、高画質、高圧縮、簡易・高速という効果を得ることができる。
【0037】
[第5の実施形態]
前記第1の実施形態では、非可逆符号化方式を選択した場合には、補間データから元の解像度の画像に復元して、非可逆符号化処理を行うことを説明した。本実施の形態では、非可逆符号化処理を選択した場合に、補間データから元の解像度画像(初期タイル)に復元するかしないかを選択することで、非可逆符号化処理を行う画素数を減らすことが可能になり、軽い処理を実現することも可能である。そこで、非可逆符号化の前に解像度を復元するかしないかを制御する方法に関して説明する。
【0038】
図17は、第5の実施形態における画像符号化装置のブロック構成図を示す。第1の実施形態と異なるのは、解像度変換選択部1701が追加された点である。以下、第1の実施形態と動作の異なる部分について説明する。解像度変換選択部1701では、元の解像度に復元して非可逆符号化処理を行うか、1/2縮小タイルで非可逆符号化処理を行うかを選択する処理である。元の解像度に復元するかしないかの判断は、非可逆符号化処理する際のパラメータに基づいて決定する。ここでのパラメータとは、例えば、JPEGの場合、量子化ステップ、量子化テーブルと呼ばれる、離散コサイン変換した係数を除算するところで用いるものである。ここでは、非可逆符号化部107がJPEG符号化を実行する場合を例に説明する。以下の例では、JPEG符号化で用いる量子化ステップが上記パラメータに相当する。
【0039】
例えば、非可逆符号化部107によるJPEG符号化で適用される量子化ステップが細かいものであれば、元の解像度に復元する処理は行わない。一方、そこで適用される量子化ステップが粗いものであれば、元の解像度に復元する処理を行う。これにより、JPEG符号化における量子化において大きな画質劣化が生じそうな場合には、符号化の前段で元の解像度に復元することで全体的な画質劣化を抑制できる。
【0040】
また例えば、非可逆符号化部107によるJPEG符号化で適用される量子化ステップが粗いものであれば、元の解像度の画像に復元する処理は行わない。一方、そこで適用される量子化ステップが細かいものであれば、元の解像度の画像に復元する処理を行う。これにより、JPEG符号化における量子化において画質劣化を抑えたいタイルについては、符号化の前段で元の解像度の画像(初期タイル)に復元することで、よりよい画質で符号化することができる。
【0041】
なお、上記量子化ステップが細かいか粗いのかの判断としては、例えば、量子化ステップ全ての値の平均値が閾値(例えば20)以下であれば細かく、閾値を超えるものが粗いと判断する。あるいは、量子化ステップのすべての値の最大値が閾値(例えば20)以下であれば、量子化ステップは細かいと判断し、閾値を超えるものは粗いと判断すれば良い。なお、上記閾値はユーザが任意に設定可能である。
【0042】
以上では、JPEG符号化を例にあげて説明したが、JPEG2000やJPEGXRなどの符号化方式でも圧縮率あるいは画質に影響する符号化パラメータが各種存在している。よって、それら符号化パラメータを基準にして、非可逆符号化の前に解像度を復元するか否かを判断することは有効である。
【0043】
[第6の実施形態]
上記第3の実施形態では、非可逆符号化方式を選択した場合には、レベル1補間データとレベル2補間データを用いて、縮小画象(1/4縮小タイルデータ)を元の解像度の画像にまで復元して、非可逆符号化処理を行っていた。本実施の形態では、非可逆符号化処理を行う前に、以下の3つの選択肢から処理を選択する。
「非可逆符号化の対象画像を、1/4縮小タイルデータとする(解像度を復元しない)」
「非可逆符号化の対象画像を、1/2縮小タイルデータとする(解像度を1段階復元する)」「非可逆符号化の対象画像を、元の解像度の画像とする(解像度を2段階復元する)」
【0044】
図18は、第5の実施形態における画像符号化装置のブロック構成図を示す。第3の実施形態でのブロック図と異なるのは、解像度変換選択部1801が追加された点と、解像度変換部1802が変更になった点である。以下、第3の実施形態と動作の異なる部分について説明する。解像度変換選択部1801では、上述した3つの選択肢の1つを選択する処理である。本実施形態では、上記選択は、非可逆符号化処理する際のパラメータに基づいて行われる。ここでのパラメータとは、第5実施形態で述べたものと同様である。以下、JPEG符号化を行う場合であって、上記パラメータを量子化ステップとして例示する。本実施形態では、量子化ステップの細かさを予め3つの範囲(値域)に分けておく。量子化ステップの1番細かい範囲、2番目に細かい範囲、3番目に細かい範囲と徐々に量子化ステップが粗くなっていくように、量子化ステップに相当するパラメータの値域を予め設定しておく。
【0045】
例えば、非可逆符号化部107によるJPEG符号化で適用される量子化ステップが1番細かい範囲に相当するものであれば、高解像度の画像に復元する処理は行わない。一方、そこで適用される量子化ステップが2番目に細かい範囲に相当するものであれば、解像度を1段階復元する。一方、そこで適用される量子化ステップが3番目に細かいものであれば、解像度を2段階復元する。これにより、JPEG符号化における量子化において画質劣化が生じそうな場合には、符号化の前段で、1/2縮小タイルデータあるいは元の解像度の画像(初期タイル)に復元することで全体的な画質劣化を抑制できる。
【0046】
なお、第5実施形態で述べた変形例と同様、非可逆符号化部107による量子化ステップが3番目に細かい時、高解像度の画像に復元する処理は行わず、量子化ステップが1番、2番目に細かい時、1/2縮小タイルデータや元の解像度の画像に復元しても良い。これにより、JPEG符号化における量子化において画質劣化を抑えたいタイルについては、符号化の前段で高解像度の画像に復元することで、よりよい画質で符号化することができる。また、第5実施形態と同様に、上記量子化ステップの細かさの判断方法や閾値などはユーザが任意に設定可能である。また、JPEG2000やJPEGXRなどの符号化方式の場合に適用しても良い。
【0047】
[符号化データの構造]
図6は、上記各実施形態において生成される1タイル分の符号化データの構造を示したものである。よって、複数のタイルを符号化する場合には、後述するように、図6の符号化データがタイルの数だけ連結されることになる。図6(a)は、1/4縮小タイルを可逆符号化することになった場合の符号化データ構造である。ここでは、1/4縮小タイル符号化データとレベル2補間データとレベル1補間データが含まれる。図6(b)は、1/2縮小タイルを非可逆符号化することになった場合、あるいは1/2縮小タイルを可逆符号化することになった場合の符号化データ構造である。ここでは、1/2縮小タイル符号化データとレベル1補間データが含まれ、レベル2補間データは含まれない。図6(c)は、元の解像度の画像(初期タイル)を非可逆符号化することになった場合の符号化データ構造である。ここでは、タイルの符号化データが含まれ、レベル1補間データとレベル2補間データは含まれない。
【0048】
図9は、複数のタイルを符号化した場合の符号化データ構造を示す図である。符号列の先頭には、画像を復号するために必要となる情報、例えば、画像の水平方向画素数、垂直方向画素数、コンポーネント数、各コンポーネントのビット数やタイルの幅、高さなどの付加情報がヘッダとして付与される。また、このヘッダ部分には、画像データそのものについての情報のみでなく、各タイルに使用するハフマン符号化テーブルや、量子化テーブルなどの符号化に関する情報も含まれる。このヘッダに続いて、上述した各タイルの符号化データが連結される。
【0049】
[その他の実施形態]
上記各実施形態では可逆符号化としてJPEG−LS、非可逆符号化としてJPEGを利用するとして説明したが、それぞれが、同様の性質を有する別の符号化手法を適用しても構わない。また、上記各実施形態では、1/2縮小画像を生成する際、2×2画素の画素ブロック内の左上隅に位置する画素Bn(0,0)を縮小画像の画素としてサンプリングし、他の3画素Bn(1,0)、Bn(0,1)、Bn(1,1)の補間データの生成を行った。しかし、縮小画像の利用する画素は必ずしも2×2画素のブロックの左上隅の画素でなくても構わず、Bn(1,0)、Bn(0,1)、Bn(1,1)のいずれであっても構わない。要するに、Bn(1,0)、Bn(0,1)、Bn(1,1)のいずれか1つをサンプリング対象の画素Xとした場合であっても、残りの3画素がXa,Xb,Xcと定義できる。この場合、以下の様に、
X1:画素Xaを復元するために参照する隣接画素ブロック内の前記画素Xaに隣接するサンプリング対象となる画素
X2:画素Xbを復元するために参照する隣接ブロック内の前記画素Xbに隣接するサンプリング対象となる画素
X3:画素Xcを復元するために参照する隣接ブロック内の前記画素Xcに隣接するサンプリング対象となる画素を
と定義したとき、「Xa=X1 且つ、Xb=X2 且つ、Xc=X3」を満たす場合に、その着目画素ブロックは周囲3画素一致ブロックと判定すればよい。また、画素ブロックのサイズは3×3画素とし、その中から1画素を抽出することで、水平、垂直ともオリジナルの1/3の画素数の縮小画像を生成しても構わない。また、画素ブロック中の1画素を抽出するだけでなく、その画素ブロックの平均色を求めて縮小画像を生成するなどしても良い。このような場合、縮小画像の生成方法に応じて、元の解像度の画像データを復元できるように補間データの構成方法を工夫すれば良い。また、補間データの構成方法として、元の解像度の画像データが完全に元に戻せるような構成例について示したが、必ずしもこれに限らない。例えば、画素ブロックに含める色数が3色以上である場合には、減色するなどして、元の解像度には戻るものの、画素値としては多少変化することを許容するような補間データとしても良い。また、上述の実施形態では32×32画素のタイルに分割して処理を行ったがタイルの大きさはこれに限定されるものではなく、画素ブロックの整数倍であれば良い。従って。16×16、64×64、128x128など、別のブロックサイズとしても良いし、正方である必要もない。また、実施形態では、画像の色空間はRGBであるとしたが、CMYK、Lab、YCrCbなど様々なタイプの画像データに適用可能であるのは明らかであるので、色成分の数や色空間の種類によって本発明が限定されるものではない。また、通常、コンピュータプログラムは、CD−ROM等のコンピュータ可読記憶媒体に格納されていて、それをコンピュータの読取り装置(CD−ROMドライブ)にセットし、システムにコピーもしくはインストールすることで実行可能になる。従って、このようなコンピュータ可読記憶媒体も本発明の範疇に入ることも明らかである。
【技術分野】
【0001】
本発明は、高解像度の画像データを符号化する技術に関する。
【背景技術】
【0002】
従来、画像をタイルに分割し、このタイルを可逆符号化する構成と、非可逆符号化する構成を備え、いずれか一方の符号化結果をタイルの最終的な符号化データとして出力する画像符号化技術が知られている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平08−167030号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
近年、画像入出力機器の高精度化に伴い、画像データの高解像度化が進んでいる。高解像度の画像データを高速に処理するためには、それ以前より多くのハードウェアリソースや、処理時間が必要である。たとえば、1200dpiの解像度の画像を扱う符号化装置が、それ以前の600dpiの画像を符号化する装置と同等の時間内で、符号化処理を行なう場合には、内部の演算処理能力を4倍にする必要がある。本願発明は、上述点に鑑みてなされたものであり、高解像度画像を、効率良く符号化する技術を提供することを目的とする。
【課題を解決するための手段】
【0005】
かかる課題を解決するため、本発明の画像符号化装置は以下の構成を備える。すなわち、画像を構成するタイルを符号化する画像符号化装置であって、タイルを構成する2×2画素の各ブロックについて、代表1画素を出力することにより、1/2縮小タイルを生成する縮小手段と、前記1/2縮小タイルの各1画素から前記2×2画素の各ブロックを復元するための補間方法を示す補間データを生成する生成手段と、前記1/2縮小タイルを可逆符号化することにより、可逆符号化データを生成する可逆符号化手段と、前記補間データを用いて前記1/2縮小タイルから前記タイルと同じ解像度の画像を復元し、復元された画像を非可逆符号化することにより、非可逆符号化データを生成する非可逆符号化手段と、前記生成手段で生成された補間データに基づいて、前記可逆符号化手段、前記非可逆符号化手段のいずれか一方を選択して実行させる選択手段と、前記可逆符号化手段が選択された場合には、前記可逆符号化データおよび前記補間データを前記タイルの符号化データとして出力し、前記非可逆符号化手段が選択された場合には、前記非可逆符号化データを前記タイルの符号化データとして出力する出力手段とを備え、前記補間方法は、各ブロックにおける非代表3画素を1/2縮小画像の画素値を用いて求める第1の補間方法と、ブロックにおける非代表3画素を1/2縮小画像の画素値を用いずに画素データから求める第2の補間方法を含むことを特徴とする。
【発明の効果】
【0006】
本発明によれば、高解像度画像を、効率良く符号化することが可能となる。
【図面の簡単な説明】
【0007】
【図1】画像符号化装置の構成図
【図2】画像符号化の処理手順を示すフローチャート
【図3】タイルデータと2×2画素ブロックとの関係図
【図4】2×2画素の画素ブロックを示す図
【図5】画像符号化装置の構成図
【図6】1タイル分の符号化データの構造を示す図
【図7】JPEGベースライン符号化データの構成図
【図8】符号化対象画像とストライプ、タイルの関係を示す図
【図9】複数タイル分の符号化データの構造を示す図
【図10】タイルとブロックラインの関係を示す図
【図11】フラット/ノンフラットの判定結果を示す図
【図12】補間データ生成部の内部構成図
【図13】フラット判定部1201の処理手順を示す図
【図14】情報処理装置のブロック構成図
【図15】ノンフラットブロック符号化処理の手順を示す図
【図16】2×2画素のパターンを示す図
【図17】画像符号化装置の構成図
【図18】画像符号化装置の構成図
【発明を実施するための形態】
【0008】
以下添付図面に従って本発明に係る実施形態を詳細に説明する。
【0009】
[第1の実施形態]
図1は、本実施形態における画像符号化装置の構成図である。本実施形態では、画像符号化装置における縮小手段が、装置外部からの入力画像データ中の着目N画素(Nは2以上の整数)に対応する1画素を出力することで縮小画像データを生成する。すなわち、入力画像データの総画素数をMとしたとき、縮小画像生成手段は、着目N画素に対応する1画素を出力する処理をM/N回繰り返すことで、M/N画素からなる縮小画像を生成する。例えば、総画素数を4096画素(64×64画素)としたとき、着目4画素(2×2画素)に対応する1画素を出力する処理を1024回繰り返すことで、1024画素(32×32画素)からなる縮小画像を生成する。そして、補間データ生成手段が、元解像度の画像を復元するための着目N画素の補間方法を複数種類の補間手法から特定する、補間データを生成する。そして、この補間データと縮小画像の可逆符号化データとからなる符号列、あるいは縮小画像を元の解像度に復元した画像の非可逆符号化データからなる符号列を生成し、出力するものである。なお、入力画像データの入力源は、イメージスキャナとするが、画像データをファイルとして格納している記憶媒体等であっても良いし、印刷データ等の情報に基づいてレンダリングするレンダリング部であっても良い。なお、以降の実施形態では、上記の「N」で表わされる画素数が2×2個(=4画素)として説明する。本実施形態に係る画像符号化装置の符号化対象とする画像データは、RGBカラー画像データであり、各コンポーネント(色成分)は8ビットで0〜255の範囲の輝度値を表現した画素データにより構成されるものとする。符号化対象の画像データの並びは点順次、即ち、ラスタースキャン順に各画素を並べ、その各画素はR,G,Bの順番でデータを並べて構成されるものとする。画像は水平方向W画素、垂直方向H画素により構成されるものとする。また、説明を簡易にするため、W、Hは後述する符号化の処理単位、タイルのサイズ(本実施形態では水平、垂直方向とも32画素)の整数倍であるとして説明する。但し、入力画像データはRGB以外の色空間、例えば、YCbCrやCMYKでも構わず、その色空間の種類、成分の数は問わない。さらに、1成分のビット数も8ビットに限らず、8ビットを超えるビット数でも構わない。
【0010】
以下、図1に示す画像符号化装置における符号化処理を説明する。図中、115は図1の画像符号化装置全体の動作を制御する制御部である。各処理部は制御部115の制御によって協調して動作する。まず、画像入力部101は符号化対象となる画像データを順に入力し、ラインバッファ102に出力する。ここでの画像データの入力順序は、先に説明したとおりラスタースキャン順とする。ラインバッファ102は画像データを所定のライン数(Th)分格納する領域を持ち、画像入力部101から入力される画像データを順次格納していく。ここで、Thは後述するタイル分割部103で切り出されるタイルの垂直方向の画素数であり、本実施形態では32画素とする。以降、符号化対象画像データをThラインの幅で分割したデータをストライプと呼ぶ。ラインバッファ102に必要とされる容量、即ち1ストライプのデータ量はW×Th×3(RGB分)バイトである。先に述べた通り、説明の便宜上、垂直方向画素数HはThの整数倍であるとし、画像の末尾で不完全なストライプが発生しないものとする。さて、ラインバッファ102に1ストライプ(Thライン分)の画像データが格納されると、タイル分割部103はラインバッファ102に格納されるThライン分の画像データから、水平方向Tw画素、垂直方向Th画素で構成されるタイルに分割する。そして、このタイル単位に読み出してタイルバッファ104へと格納する。上述したように、符号化対象の画像の水平方向画素数WはTwの整数倍としているので、タイルに分割した場合に不完全なタイルが発生しないものとする。なお、実施形態では、Tw=Th=32としているので、1タイルのサイズは32×32画素となる。図8に符号化対象の画像データとストライプ、タイルの関係を図示する。図のように画像中、水平方向i番目、垂直方向j番目のタイルをT(i,j)と記す。タイルバッファ104は1タイル分の画素データを格納する領域を持ち、タイル分割部103から出力されるタイルデータを順次格納していく。タイルバッファ104に必要とされる容量はTw×Th×3(RGB分)バイトである。解像度変換部105は、タイルバッファ104に格納されるタイルデータについて2×2画素の領域から1画素を抽出するサブサンプリングを行い、1/2縮小タイルを生成する。ここで1/2縮小タイルとはタイルバッファ104に格納されるタイルデータを、水平、垂直両方向の画素数を1/2としたタイルを表す。また、2×2画素の領域の画像データを、これ以降、単に画素ブロックと呼ぶ。図3にタイルデータと2×2画素の画素ブロックBnの関係を図示する。また、注目する画素ブロックBnの中の4つの画素を、同図のように、Bn(0,0)、Bn(0,1)、Bn(1,0)、Bn(1,1)と表す。また、注目ブロックBnの前(左隣)の画素ブロックをBn−1、Bnの次(右隣)の画素ブロックをBn+1と表現し、Bnの下のブロックをBn+bと表す。ここで“b”はタイル内の水平方向のブロック数であり、タイルの水平方向画素数Twを用いて表せば、b=Tw/2である。実施形態では、Tw=32であるので、b=16となる。本実施形態の解像度変換部105は、着目画素ブロックBnのうち、左上隅の位置の画素Bn(0,0)を、1/2縮小タイルの1画素として抽出する。タイルデータ中の全ての画素ブロックB0〜Bm(m=Tw/2×Th/2−1=16×16−1=255)についてサブサンプリングを行い、オリジナルタイルに対し、水平、垂直方向とも1/2の画素数の1/2縮小タイルを生成する。解像度変換部105は、生成した1/2縮小タイルデータを1/2縮小タイルバッファ106へ格納する。従って、実施形態の場合、W×H画素で構成されるオリジナルの画像データのから、W×H/4画素数の縮小画像を生成する縮小画像生成手段として機能することになる。補間データ生成部110は、1/2縮小タイルから元のタイルデータ(初期タイル)を復元するために必要な情報を生成する。即ち、画素ブロック内のサブサンプリング対象となった画素Bn(0,0)を除く、非サンプリング対象の3画素{Bn(0,1),Bn(1,0),Bn(1,1)}を、どのように補間すればよいかを示す補間データを生成するものである。
【0011】
図12は、本実施形態に係る補間データ生成部110の内部のブロック構成図を示す。生成部110は、「各ブロックにおける非代表3画素を1/2縮小画像の画素値を用いて求める第1の補間方法」または「各ブロックにおける非代表3画素を1/2縮小画像の画素値を用いずに画素データから求める第2の補間方法」に属する補間データを出力する。この補間データ生成部110は、フラット判定部1201、ノンフラットブロック解析部1202で構成される。フラット判定部1201は、タイル内の画像データが、縮小タイルデータの画素から単純拡大(画素繰り返し)処理して復元可能であるかどうかを判定する“フラット判定”を行う。フラット判定の最小単位は2×2画素の画素ブロックである。以下、この画素ブロックが単純拡大で再現できるブロックである場合、それをフラットブロックと呼び、そうでないブロックをノンフラットブロックと呼ぶこととする。図3において、着目画素ブロックBnがフラットブロックであるのは、以下の式(1)が成り立つ場合である。
Bn(0,0)=Bn(0,1)=Bn(1,0)=Bn(1,1)…(1)
【0012】
フラット判定部1201の役割は、タイルを構成する各画素ブロックについてフラットブロックかノンフラットブロックかを表す情報を生成する。以下、図13のフローチャートに従い、フラット判定部1201の処理手順を説明する。なお、図13は、1つのタイルに対する処理である点に注意されたい。また、タイルに含まれる全ての画素ブロックがフラットブロックである場合、そのタイルをフラットタイルと呼び、そうでない場合には、ノンフラットタイルと呼ぶ。同様に、タイル内で水平方向に連続するTw/2個(実施形態では16個)のブロック群を以降、ブロックラインと呼ぶ。そして、ブロックライン内の全ブロックがフラットブロックであるとき、そのブロックラインをフラットブロックラインと呼び、少なくとも1つのノンフラットブロックが含まれる場合にはノンフラットブロックラインと呼ぶ。まず、フラット判定部1201はTw×Th画素のタイルデータを入力する(ステップS1301)。各タイルは独立に処理を行うものとし、タイルの外部の画素(周囲画素)を参照する場合には、各色成分の値が255であるものとして処理する。フラット判定部1201は、次に、ステップS1302にて、フラット/ノンフラットの判定を、Tw×Th画素のタイルを構成する2×2画素の画素ブロックが全てに対して行なう。すなわち、着目タイルがフラットタイルであるか否かを判定する。着目タイルがフラットタイルであると判定した場合、処理をステップS1303へ移し、1ビットのフラグ“1”をノンフラットブロック解析部1202に出力し、本処理を終える。一方、着目タイル内に少なくとも1つのノンフラットブロックが存在する場合(ステップS1302がNO)には、フラット判定部1201は、処理をステップS1304へ移す。そして、1ビットのフラグ“0”をノンフラットブロック解析部1202に出力し、ステップS1305へ処理を移す。ステップS1305では、水平方向に連続するb(=Tw/2=16)個の画素ブロックからなるブロックラインのひとつに着目し、ステップS1302と同様に、フラットブロックラインかノンフラットブロックラインかの判定を行う。フラットブロックラインである場合(YES)は、ステップS1306へ処理を移し、1ビットのフラグ“1”をノンフラットブロック解析部1202に出力する。一方、着目ブロックラインがノンフラットブロックラインであると判定した場合(ステップS1305がNO)には、処理をステップS1307へ移し、1ビットのフラグ“0”をノンフラットブロック解析部1202に出力して、処理をステップS1308へ移す。ステップS1308に至る場合には、着目するブロックライン内に、少なくとも1つのノンフラットブロックが存在することになる。このため、着目するブロックラインを構成するb(=Tw/2=16)個のブロックそれぞれについて、フラット/ノンフラットブロックの判定結果を示すフラグの配列が必要となる。ここで、ブロックのフラグは1ビットで良く、フラットブロックの場合は“1”、ノンフラットブロックの場合は“0”とする。本実施形態の場合、ブロックラインはb(=16)個の画素ブロックで構成されるので、ノンフラットブロックラインのフラグ配列はb個、すなわち、16ビットとなる。ステップS1308では、着目するブロックラインのフラグ配列を以前のノンフラットブロックラインのフラグ配列と比較し、一致するか否かを判定する。なお、着目ブロックラインが着目タイルの最初のブロックラインである場合には、それ以前のブロックラインは存在しない。そこで、フラット判定部1201は、着目タイルのブロックラインの判定に先立ち、内部のメモリに、ブロックラインの全ブロックがノンフラットブロックであることを示す情報を予め用意しておく。つまり、フラットブロックを“1”、ノンフラットブロックを“0”と定義したとき、初期値としてb個(bビット)の“0”を用意しておく。以降、このbビットを“参照ノンフラットブロックライン情報”と呼ぶ。勿論、復号装置でも1タイルの復元する際には、“参照ノンフラットブロックライン情報”を用意しておく。従って、ステップS1308では、着目ブロック内の各ブロックのフラットブロック/ノンフラットブロックの判定結果の並びが、参照ノンフラットブロックライン情報と一致するか否かを判定することになる。
【0013】
ここで、図10のタイルデータを例にして、ステップS1308の判定処理を説明する。このタイルデータはは、先頭から4番目までのブロックラインがフラットブロックラインであり、5番目のブロックラインがノンフラットブロックラインの例である。図10のタイルに対する画素ブロックのフラット/ノンフラットの判定結果は、図11に示す通りとなる。今、5番目のブロックラインが着目ブロックラインであるとする。着目ブロックラインは5番目のブロックラインであるから、そのブロックラインは着目タイル内の最初のノンフラットブロックラインであると判定される。従って、その着目ブロックラインに含まれる画素ブロックの判定結果と、参照ノンフラットブロックライン情報(16ビットの“000…000”)と比較され、一致すると判定される。このように、着目ブロックラインの判定結果と参照ノンフラットブロックライン情報とが一致したと判定した場合には、ステップS1309に進む。そして、着目ブロックライン内の各ブロックの判定結果が、参照ノンフラットブロックライン情報と一致したことを示す1ビットのフラグ“1”をノンフラットブロック解析部1202に出力する。この場合、ブロック毎のフラット/ノンフラット判定結果を示すb(=Tw/2)bitのフラグは出力しなくてよい。一方、着目ブロックラインのフラット/ノンフラット判定結果を示すフラグの配列が、参照ノンフラットブロックラインと一致しない場合(ステップS1308がNO)は、ステップS1310へ処理を移す。ここでは、フラット判定部1201は先ず、1ビットのフラグ”0”をノンフラットブロック解析部1202に出力する。そして、それに後続して着目ブロックラインのフラット/ノンフラット判定結果を示すフラグ配列(Tw/2ビット)をノンフラットブロック解析部1202に出力する。この後、フラット判定部1201は、ステップS1311にて、着目ブロックラインのフラットブロック/ノンフラットブロックの判定結果(bビット)で、参照ノンフラットブロックライン情報を更新する。注目しているブロックラインに対して、フラット/ノンフラット判定が終了したら、ステップS1312へ処理を移し、注目ブロックラインが、着目タイル内の最終ブロックラインであるか否かの判定を行う。最終ブロックラインではない場合(NO)は、着目するブロックラインを次のブロックラインへ移す(ステップS1313)。そして、ステップS1305へ処理を戻して同様の処理を繰り返す。最終ブロックラインであった場合(YES)は、タイルデータに対するフラット判定処理を終了する。フラット判定部1201は、以上の処理を、着目するタイルデータについて行い、フラット/ノンフラットの判定結果をノンフラットブロック解析部1202へ出力する。次に、ノンフラットブロック解析部1202の処理を説明する。このノンフラットブロック解析部1202は、フラット判定部1201と同様に、1タイルに相当する処理の開始時に、1ブロックラインの全ブロックがノンフラットブロックを示す「参照ノンフラットブロックライン情報」を設定しておく。そして、ノンフラットブロック解析部1202は、フラット判定部1201からの判定結果を解析しつつ、そのまま通過させ、補間データバッファ112に出力する。上記ステップS1310で、1ビットのフラグ“0”が出力されたブロックラインが存在する場合、解析部1202は、それに後続する各ブロックのフラットブロック/ノンフラットブロックを示す判定結果で、参照ノンフラットブロックライン情報を更新する。もし、着目ブロックラインに対し図13のステップS1309の処理が行われた場合には、その際の参照ノンフラットブロックラインを参照することで、どのブロックがノンフラットブロックであるのかを判定できる。また、着目ブロックラインに対し、図13のステップS1310の処理が行われていると判断した場合には先頭の1ビットのフラグ“0”に後続するbビットの値を調べれば、ブロックがノンフラットブロックであるのかを判定できる。すなわち、ノンフラットブロック解析部1202は、着目タイル中の全てのノンフラットブロックの位置と個数を判定できることになる。そして、ノンフラットブロック解析部1202は、縮小タイルの画素の単純拡大では再現できない2×2画素で構成される画素ブロック(ノンフラットブロック)に対して、その画素ブロック内の色数や配置を解析して、付加情報を生成し、出力する。すなわち、ノンフラットブロック解析部1202は、フラット判定部1201から出力される、フラット/ノンフラットの判定結果を受け取り、ノンフラットブロックについて、解析を行い、ノンフラットブロックを復元するための情報を生成し、出力する。ノンフラットブロック解析部1202は、ノンフラットブロックと判定されたブロックにつき、図15のフローチャートに従ったノンフラットブロック符号化処理を行なう。以下、図15に従って、ノンフラットブロック解析部1202の処理を説明する。先ず、ステップS1501にて、1個のノンフラットブロックBnを着目ブロックとし、2×2画素の画素ブロックデータを入力する。そして、ステップS1502にて、着目画素ブロックBnが、以下の式(2)が成立するブロックであるかどうかの判定を行う。
Bn(0,1)=Bn+1(0,0)
且つ
Bn(1,0)=Bn+b(0,0)
且つ
Bn(1,1)=Bn+b+1(0,0) …(2)
【0014】
上記式(2)が成り立つブロックBnを、以降、「周囲3画素一致ブロック」と定義する。上記式(2)に示すように、ペア{Bn(0,1)、Bn+1(0,0)}、{Bn(1,0)、Bn+b(0,0)}、及び、{Bn(1,1)とBn+b+1(0,0)}との一致/不一致を判定するのには、理由がある。一般に、着目画素と、その着目画素に隣接する画素間の相関度は高いし、そのような画像が多い。そのため、着目画素の画素値を予測する場合には、その隣接する画素を予測のための参照画素として使用することが多い。ブロック内の4画素が全て同一ではない、即ちフラットブロックではない場合には、ペア{Bn(0,1)、Bn+1(0,0)}、{Bn(1,0)、Bn+b(0,0)}、及び、{Bn(1,1)とBn+b+1(0,0)}とが一致する可能性が高い。この理由で、Bn(0,1)とBn+1(0,0)とが一致するか否かを判定するようにした。他のペア{Bn(1,0)、Bn+b(0,0)}、及び、{Bn(1,1)とBn+b+1(0,0)}を比較するのも同じ理由である。そして、先に示した式(2)が満たされる場合(3つのペアが互いに等しい場合)、短い符号語を割り当てることで情報量の削減できた。なお、実施形態では、各画素ブロックの左上隅の位置の画素をサブサンプリングして縮小画像を生成した。従って、式(2)における、画素Bn+1(0,0)、Bn+b(0,0)、Bn+b+1(0,0)は、着目画素ブロックBnに隣接する画素ブロック内のサブサンプリング対象画素でもある点に注意されたい。さて、注目ブロックBnが、式(2)の成立するブロックである場合には、Bn(0,1)、Bn(1,0)、Bn(1,1)の位置の3画素が、周囲の画素から再現可能であると判断できる。但し、ブロックが画像の右端もしくは、画像の下端に位置する場合には、ブロックの外側の画素を参照することができない。そのため、外側の画素の各成分を仮想的に、予め任意の値を設定しておき、その画素値との一致/不一致判定を行うこととする。本実施形態では、仮想的に、各成分値を“255”を設定しておく。しかし、“255”に限らず、符号化側と復号側で同じ値を用いるように定めておけばこれ以外の値でも構わない。
【0015】
図4に、注目する2×2画素の画素ブロックを示す。図4に示す画素Xが縮小画像生成のためにサブサンプリングされた画素(非代表1画素)を示し、着目画素ブロックBn内の画素Bn(0,0)に相当するものである。また、画素Xa,Xb,Xcは着目ブロックBn内の画素(0,1),Bn(1,0),Bn(1,1)の画素(非代表3画素)を示している。以下、画素X、Xa,Xb,Xcについて説明する。さて、ステップS1502にて、式(2)の成立すると判定した場合、着目ブロックBn内の画素Xa、Xb、Xcは、縮小画像の画素を用いて再現できることになる。従って、ステップS1503へ処理を移し、再現できることを示す1ビットのフラグ“1”を出力する。一方、着目ブロックが式(2)を満足しないブロックあると判定された場合、ステップS1504へ処理を移し、1ビットのフラグ“0”を出力する。次に、処理はステップS1505に進み、着目ブロックに含まれる色数が“2”か、それ以上(3、もしくは4色)かを判定する。なお、着目ブロックはノンフラットブロックであるので、色数が“1”となることは有り得ない。着目ブロックに含まれる色数が“2”より大きい(3、もしくは4色)と判定した場合、ステップS1512にて、1ビットのフラグ“0”を出力する。そして、ステップS1513にて、非代表3画素Xa,Xb,Xcの画素値そのものを、1/2縮小画像の画素値とは関わりの無い画素データとして更に出力する。実施形態では、1画素がR、G、Bの3コンポーネントであり、1コンポーネントが8ビットとしているので、3画素Xa,Xb,Xcの合計ビット数は3×8×3=72ビットとなる。一方、着目ブロックに含まれる色数が“2”であると判定した場合、ステップS1506にて出現色数が“2”であることを示す1ビットのフラグ“1”を出力する。そして、ステップS1507にて、着目ブロック内の、縮小画像に利用されている図4の画素X(代表1画素)を除く3画素Xa,Xb,Xc(非代表3画素)が、図16のパターン1601乃至1607のいずれであるのかを示す画素配置情報を出力する。図16に示すようにパターン数は全部で7つあるので、画素配置情報は3ビットであれば1つのパターンを特定できる。ただし、実施形態では、縮小画像に利用されている画素と同じ色の画素は“1”、異なる色の画素を“0”と表わし、図4の画素Xa,Xb,Xcに相当する各ビットをその順番に出力するようにした(この場合も3ビットとなる)。例えば、図16のパターン1601に一致する場合、画素Xa,Xb,Xcは同色であり、且つ、縮小画像に利用されている画素Xの色とは異なるので、画素配置情報の3ビットは“000”となる。また、パターン1602の場合は、“100”、パターン1603の場合には“010”、パターン1604の場合には“001”となる。他は説明するまでもないであろう。次いで、ステップS1508にて、着目ブロックBn内の縮小画像に利用された画素Xを除く画素Xa,Xb,Xcのうち、画素Xと異なる色の画素と同じ色の画素が、近傍に存在するか否かを判断する。本実施形態では、比較する近傍の画素は以下の3画素とし、かつ以下に記す順番に比較する。着目ブロックの右隣のブロックBn+1の画素Bn+1(0,0)、着目ブロックの直下のブロックBn+bの画素Bn+b(0,0)、着目ブロックの右下に隣接するブロックBn+b+1の画素Bn+b+1(0,0)。なお、3画素のいずれかと一致するかを示せば良いので、この比較結果は2ビットとした。そして、一致するのが、Bn+1(0,0)であった場合には2ビットの“11”、Bn+b(0,0)と一致するなら2ビットの“01”、Bn+b+1(0,0)とが一致するなら2ビットの“10”を出力する(ステップS1509)。また、周辺の3画素のいずれとも一致しない場合(NO)には、処理をステップS1510へ移し、2ビットのフラグ“00”を出力する。そして、第2色の画素値を出力し(ステップS1511)、注目ブロックBnに対する処理を終了する。本実施形態では符号化対象画像が、各色8ビットのRGBデータであるからステップS1511においては24ビットが出力される。こうして、注目ブロックBnの処理が終了したら、ステップS1514により、着目ブロックが着目タイル中の最後のノンフラットブロックであるか否かの判定を行う。否の場合には、次のノンフラットブロックの処理に移る(ステップS1515)。次のノンフラットブロックに対しても、ステップS1501からの処理を同様に行う。また、着目ブロックが最後のノンフラットブロックであると判定した場合には、本処理を終了する。以上のようにして、ノンフラットブロック解析部1202からは、フラット/ノンフラット判定結果と、ノンフラットブロックの解析結果により生成された補間データが出力される。これらのデータは補間データバッファ112に格納される。なお、2×2画素で表わされる画素ブロックは、これまでの説明からわかるように、以下の(a)乃至(e)の5種類に分類できる。
(a)フラットブロック
(b)ノンフラットブロック、かつ、周囲3画素一致ブロック
(c)ノンフラットブロック、かつ、そのブロック内に出現する色数が“2”であり、周辺画素に第2色と同じ色の画素が存在するブロック、
(d)ノンフラットブロック、かつ、そのブロック内に出現する色数が“2”であり、周辺画素に第2色と同じ色の画素が存在しないブロック、
(e)ノンフラットブロック、かつ、そのブロック内に出現する色数が“2”より多い(3色、もしくは4色)ブロック
【0016】
上記種類(a)乃至(e)は「各ブロックにおける非代表3画素を1/2縮小画像の画素値を用いて求める第1の補間方法」に相当する。また、上記種類(d),(e)は「各ブロックにおける非代表3画素を1/2縮小画像の画素値を用いずに画素データから求める第2の補間方法」に相当する。補間データ生成部110は、上記の処理を行なっている最中に、画素ブロックが上記(a)乃至(e)のいずれに該当するかを判定し、それぞれのブロックの出現数を計数する。以降、上記種類(a)乃至(e)のブロック数をNa、Nb、Nc,Nd、Neと表わす。補間データ生成部110は、1タイルに対して補間データを生成するに先立って、Na乃至Neを“0”で初期化し、1タイルに対する補間データの生成及び出力が完了したとき、計数したブロック数Na乃至Neを符号化方式選択部111に出力する。実施形態では、1タイルが32×32画素で構成されるので、その中には16×16個の画素ブロックが存在することになる。従って、補間データ生成部110が、仮に図13のステップS1303の処理を行なった場合、注目タイル内の全画素ブロックは、フラットブロックであることになり、Na=256となり、Na以外のブロック数Nb乃至Neは“0”として決定できる。また、ステップS1306の処理を行なった場合には、それまでに計数したNaに“16”を加算すればよい。そして、図15のステップS1503の処理を行なった場合には、Naに“1”を加算する。また、ステップS1512の処理を行なった場合にはNeに“1”を加算する。それ以外については、これまでの説明から十分に理解できよう。さて、符号化方式選択部111は、補間データ生成部110が計数したブロック数Na乃至Neの頻度分布に基づき、1/2縮小タイルバッファ106に格納される1/2縮小タイルデータの符号化方法を決定する。そして、その決定結果を2値(1ビット)の制御信号として非可逆符号化部107、可逆符号化部108、及び、符号列形成部113に出力する。この結果、非可逆符号化部107、可逆符号化部108のいずれか一方が、1/2縮小タイルバッファ106に格納された1/2縮小タイルデータの符号化処理を行なう。
【0017】
なお、非可逆符号化部107が選択された場合には、1/2縮小タイルバッファ106に格納された1/2縮小タイルデータは、解像度変換部116により、一旦、元の解像度の画像に復元(拡大)される。具体的には、解像度変換部116は、補間データバッファ112に格納されている補間データを用いて解像度変換(1/2縮小タイルデータから元の解像度の画像を復元する処理)を行う。そして、ここで解像度が復元された画像データが非可逆符号化部107で符号化され、符号化データバッファ109へ出力される。
【0018】
以上で生成された符号化データは、符号列形成部113に出力される。これ以降の実施形態では、符号化方式選択部111(または後述する符号化方式選択部504)からの制御信号が“0”の場合には非可逆符号化部107が非可逆符号化処理を行なう。また、制御信号が“1”の場合には、可逆符号化部108が可逆符号化処理を行なう。
【0019】
一般に、文字、線画、クリップアート画像などでは、先に示したブロックの種類(a)乃至(c)が多い傾向が見られる。言い換えれば、文字、線画、クリップアート画像などの場合、ブロック数Na乃至Ncの値が大きくなる。一方、複雑なCG画像や自然画像などでは、ブロック数Nd、Neの値が大きくなる傾向が見られる。また、文字、線画、クリップアートなどでは、非可逆符号化による画質劣化が目に付きやすく、可逆符号化により高い圧縮性能を得られる傾向にある。一方、複雑なCGや自然画像では、逆に非可逆符号化による画質劣化が目に付きにくく、かつ、可逆符号化では高い圧縮性能を得られない傾向がある。更には、ブロックの種類(a)乃至(c)の画素ブロックは、1/2縮小画像の画素値を用いて元の画像を復元することになる。従って、仮に、縮小画像に画素変化(劣化)が生じた場合、復号時に元の解像度の画像(初期タイル)を復元する際にその劣化を広げる方向に作用する。このため、縮小画像符号化時の画質劣化の影響を受け易い。一方で、ブロックの種類(d),(e)の画素ブロックは、3画素Xa,Xb,Xcの画素値そのものを、1/2縮小画像の画素値とは関わりの無い画素データとして指定するため、画質劣化の影響が少ない。
【0020】
上記の考えから、符号化方式選択部111は、Na,Nb,Ncの値が大きい場合は、1/2縮小タイルデータを可逆符号化するよう、制御信号“1”を出力する。また、符号化方式選択部111は、Nd、Neの値が大きい場合は、1/2縮小タイルデータを元の解像度の画像に復元してから非可逆符号化するよう、制御信号“0”を出力する。具体的には、符号化方式選択部111は、予め設定された閾値TH1と、Na+Nb+Ncの合算値とを比較し、次式(3)を満たすとき、制御信号“1”を出力し、満たさない場合には制御信号“0”を出力する。
Na+Nb+Nc>TH1 …(3)
上記式(3)の代りに、次式(4)を採用しても良い。これら式(3)、(4)は互いに等価のものであるのは理解できよう。
Nd+Ne≦TH1 …(4)
なお、閾値TH1は、ユーザが適宜設定できるようにするものとするが、典型的には、タイルに含まれるブロック数の1/2を示す値が好適である。実施形態では、1タイルには16×16個の画素ブロックが含まれるので、TH1=128となる。
【0021】
さて、非可逆符号化部107は、符号化方式選択部111から出力される制御信号が“0”の場合に、バッファ106に格納される1/2縮小タイルデータを、バッファ112に格納されている補間データを用いて、解像度変換部116で解像度復元する。そして、解像度復元された画像データを非可逆符号化して符号化データを生成し、生成された符号化データを符号化データバッファ109に格納する。
【0022】
なお、非可逆符号化部107における非可逆符号化処理としては様々な手法が適用可能である。ここでは静止画像符号化の国際標準方式として勧告されているJPEG(ITU−T T.81|ISO/IEC10918−1)のベースライン方式を適用するものとする。JPEGについては勧告書等に詳細な説明があるのでここでは説明を省略する。なお、JPEG符号化で用いるハフマンテーブル、量子化テーブルは全タイルで同じものを使用することとする。また、全タイルで共通となるフレームヘッダや、スキャンヘッダ、各種テーブルなどについては符号化データバッファ109に格納せず、符号化データ部分のみを格納する。即ち、図7に示した一般的なJPEGベースライン符号化データの構成のうち、スキャンヘッダの直後からEOIマーカの直前までのエントロピ符号化データセグメントのみが格納される。なお、ここでは説明簡略化のため、DRI、RSTマーカによるリスタートインターバルの定義や、DNLマーカによるライン数の定義などは行わないものとする。可逆符号化部108は、符号化方式選択部111から出力される制御信号が“1”である場合に、1/2縮小タイルバッファ106に格納される1/2縮小タイルデータを可逆符号化して符号化データを生成する。そして、可逆符号化部108は、生成した符号化データを符号化データバッファ109に格納する。可逆符号化部108が実行する可逆符号化にも様々なものがあるが、ここではその一例として、国際標準方式としてISOとITU−Tから勧告されるJPEG−LS(ITU−T T.87|ISO/IEC14495−1)を用いるものとする。しかしながら、JPEG(ITU−T T.81|ISO/IEC10918−1)のロスレスモードなど、他の可逆符号化手法を用いても構わない。JPEG−LSの詳細についても勧告書等に記載されているので、ここでは説明を省略する。また、JPEGと同様にヘッダ等はバッファに格納せず、符号化データ部分のみを格納することとする。符号列形成部113は、符号化方式選択部111から出力される制御信号と、補間データバッファ112に格納される補間データ、符号化データバッファ109に格納される1/2縮小タイルの符号化データを結合させる。そして、必要な付加情報を加えて本画像符号化装置の出力となる符号列を、オリジナル画像データに対応する符号化画像データとして形成する。また、非可逆符号化方式が選択された場合には、補間データを用いて1/2縮小タイルは元の解像度の画像(初期タイル)に復元しているので、補間データを含まない「元の解像度のタイルを表す符号化データ」となる。このとき、符号列形成部113は、符号化方式選択部111から出力される制御信号に基づき、どのタイルが可逆符号化され、どのタイルが非可逆符号化されているのかを示す情報も付加して、出力する。符号出力部114は符号列形成部113により生成された出力符号列を装置外部へと出力する。出力対象が記憶装置であれば、ファイルとして出力することになる。以上のように、本実施形態の画像符号化装置では、複数の画素で構成されるタイル(実施形態では32×32画素のサイズ)を単位に符号化処理を行う。各タイルについて、縮小画像と、縮小画像から元の画像(初期タイル)を復元するための補間データを生成し、縮小画像を可逆符号化、または、補間データを用いて縮小画像を元の画像に復元した画像を非可逆符号化により符号化する。補間データの生成は単純、簡易な処理であり、高度な演算処理を要するビットマップ符号化処理(可逆符号化部108による符号化処理)を縮小画像に限定することにより、画像全体をビットマップ符号化する場合に比べて、簡易・高速に符号化処理を実現できる。縮小画像の符号化には可逆と非可逆符号化のいずれかを選択して適用するが、補間データの構造に基づいて非可逆符号化を適用した場合の画質への影響が大きい場合には可逆符号化を適用することになる。よって、復号時に解像度を元に戻した場合に画質劣化が拡大することを防止できる。
【0023】
また、非可逆符号化部107による符号化処理を行う際には、先に縮小されている画像を、一旦、拡大(高解像度の画像に復元)してから処理することにより、非可逆符号化による画質の劣化を極力抑えることができる。これにより、可逆符号化されるタイルと隣接する、非可逆符号化されるタイルなどの画質劣化(画質の差異)が目立ち難い。
【0024】
[第1の実施形態の変形例]
上記第1の実施形態の変形例として、上述と同等の処理を、コンピュータプログラムによって実現する例を説明する。図14は、本変形例における情報処理装置(例えばパーソナルコンピュータ)のブロック構成図である。図中、1401はCPUで、RAM1402やROM1403に記憶されているプログラムやデータを用いて本装置全体の制御を行うと共に、後述する画像符号化処理、復号処理を実行する。1402はRAMで、外部記憶装置1407や記憶媒体ドライブ1408、若しくはI/F1409を介して外部装置からダウンロードされたプログラムやデータを記憶する為のエリアを備える。また、RAM1402は、CPU1401が各種の処理を実行する際に使用するワークエリアも備える。1403はROMで、ブートプログラムや本装置の設定プログラムやデータを格納する。1404、1405は夫々キーボード、マウスで、CPU1401に対して各種の指示を入力することができる。1406は表示装置で、CRTや液晶画面などにより構成されており、画像や文字などの情報を表示することができる。1407はハードディスクドライブ装置等の大容量の外部記憶装置である。この外部記憶装置1407には、OS(オペレーティングシステム)や後述する画像符号化、復号処理の為のプログラム、符号化対象の画像データ、復号対象画像の符号化データなどがファイルとして保存されている。また、CPU1401は、これらのプログラムやデータをRAM1402上の所定のエリアにロードし、実行することになる。1408は記憶媒体ドライブで、CD−ROMやDVD−ROMなどの記憶媒体に記録されたプログラムやデータを読み出してRAM1402や外部記憶装置1407に出力するものである。なお、この記憶媒体に後述する画像符号化、復号処理の為のプログラム、符号化対象の画像データ、復号対象の画像の符号化データなどを記録しておいても良い。この場合、記憶媒体ドライブ1408は、CPU1401による制御によって、これらのプログラムやデータをRAM1402上の所定のエリアにロードする。1409はI/Fで、このI/F1409によって外部装置を本装置に接続し、本装置と外部装置との間でデータ通信を可能にするものである。例えは符号化対象の画像データや、復号対象の画像の符号化データなどを本装置のRAM1402や外部記憶装置1407、あるいは記憶媒体ドライブ1408に入力することもできる。1410は上述の各部を繋ぐバスである。上記構成において、本装置の電源がONになると、CPU1401はROM1403のブートプログラムに従って、外部記憶装置1407からOSをRAM1402にロードする。この結果、キーボード1404、マウス1405の入力が可能となり、表示装置1406にGUIを表示することが可能になる。ユーザが、キーボード1404やマウス1405を操作し、外部記憶装置1407に格納された画像符号化処理用アプリケーションプログラムの起動の指示を行なうと、CPU1401はそのプログラムをRAM1402にロードし、実行する。これにより、本装置が画像符号化装置として機能することになる。
【0025】
図2のフローチャートに従って、CPU1401が実行する画像符号化用のアプリケーションプログラムの処理手順を説明する。基本的に、このプログラムは、図1に示す各構成要素に相当する関数(もしくはサブルーチン)を備えることになる。ただし、図1におけるラインバッファ102、タイルバッファ104、1/2縮小タイルバッファ106、符号化データバッファ109、補間データバッファ112等の各領域はRAM1402内に予め確保することになる。まず、ステップS200において、符号化を開始する前の初期化処理が行われる。ここでは、符号化対象となる画像データについて符号列に含めるべきヘッダ情報を準備したり、各種メモリ、変数等の初期化処理が行われる。初期化処理の後、ステップS201では、I/F1409によって接続される外部装置から符号化対象の画像データを順次入力し、RAM1402に符号化対象となる画像データの1ストライプ分のデータが格納される(画像入力部101の処理に相当)。次に、ステップS202では、RAM1402に格納されるストライプについて、着目するタイルデータを切り出し、RAM1402の別のアドレス位置に格納する(タイル分割部103の処理に相当)。続いて、ステップS203において、着目するタイルデータ中の各画素ブロック中の左上隅の画素をサブサンプリングすることで1/2縮小タイルデータを生成し、RAM1402内に格納する(解像度変換部105の処理に相当)。ステップS204では、1/2縮小タイルデータから元の解像度のタイルデータ(初期タイル)を復元するための補間データを生成する(補間データ生成部110の処理に相当)。ステップS205では、補間データの構造情報から、1/2縮小タイルデータについて可逆と非可逆のどちらの符号化方式を適用するかを決定する(符号化方式選択部111の処理に相当)。ステップS206において選択された符号化方式が可逆符号化である場合にはステップS207に進み、非可逆符号化である場合にはステップS213に進む。ステップS207では、1/2縮小タイルデータを可逆符号化して符号化データを生成し、RAM1402に格納する(可逆符号化部108の処理に相当)。ステップS213では、1/2縮小タイルデータを上述した補間データを用いて元の解像度の画像に復元する(解像度変換部116に相当)。ステップS208では、元の解像度に復元されたタイルデータ(初期タイル)を非可逆符号化することにより、符号化データを生成し、RAM1402に格納する(非可逆符号化部107の処理に相当)。ステップS209では、着目するタイルについて、タイルヘッダ、可逆/非可逆を識別する情報、補間データ、1/2縮小タイルまたは元の解像度のタイル符号化データを結合させて、タイル符号化データを形成する(符号列形成部113の処理に相当)。ステップS210では、符号化処理を行ったタイルが現在読み込まれているストライプの最後のタイルであるか否かを判定する。最後のタイルでない場合には次のタイルについてステップS202から処理を繰り返す。ストライプの最後のタイルである場合には、処理をステップS211へと移す。ステップS211では、現在読み込まれているストライプが画像の最終ストライプであるか否かを判定する。最終ストライプでない場合にはステップS201に戻り、次のストライプデータを読み込み、処理を継続する。最終ストライプの場合には、ステップS212へと処理を移す。処理がステップS212に移ったときには、符号化対象画像データのすべてのタイルについて符号化処理が終了している。そして、RAM1402に格納された全タイルの符号化データから、最終的な符号化データを生成して、I/F1409を解して外部装置へと出力する(符号列形成部113、符号出力部114の処理に相当)。以上説明したように本変形例によっても、第1の実施形態と同様の作用効果を奏することが可能となるのは明らかであろう。
【0026】
以上のように、符号化対象となる画像を縮小画像と補間データに分解し、縮小画像を補間データの構造によって可逆符号化か非可逆符号化を切り替える。そして、非可逆符号化選択の場合には、縮小画象を、一旦、元の解像度の画像(初期タイル)に復元してから符号化するにより、高解像度画像の符号化であっても、出来るだけ画質劣化を抑えることができる。
【0027】
なお、図2に示した処理フローの処理順序は必ずしもこれに限定されるものではなく、処理順序に依存関係が無いもの同士は処理タイミングを入れ替えても良いし、並列にそれら処理を動作させても良いであろう。例えば、1/2縮小タイルデータを生成する処理(ステップS203)、補間データを生成する処理(ステップS204)、符号化方式を選択する処理(ステップS205)などは、補間データの生成を先に行っても良い。また例えば、ステップS205の符号化方式の決定と同時またはその前に、予めステップS213における解像度の復元処理を行っても良い。
【0028】
[第2の実施形態]
上記実施形態では、補間データを用いて元の解像度の画像を復元する際に適用される補間手法の分布に基づいて、縮小画像を可逆符号化するか、非可逆符号化するかを選択した。しかしながら、補間データの符号量などから、補間手法の分布を推定し、その推定結果に基づいて可逆、非可逆符号化のいずれを実行するかを決定するようにしても、同様の効果を得ることができる。そこで、本第2の実施形態として、補間データの符号量に基づいて、符号化方式を選択する手法について説明する。なお、本第2の実施形態でも、対象の画像データは、RGB各色8ビットで構成される画像データとするが、CMYKカラー画像データなど、他の形式の画像データに適用しても良い。また、画像は水平方向W画素、垂直方向H画素により構成されるものとし、タイルのサイズTw,Thは、も第1の実施形態と同じく“32”であるとする。本第2の実施形態の画像符号化装置の補間データ生成部110、符号化方式選択部111の処理内容が、第1の実施形態のそれらと異なるだけであり、図1のブロック構成図と基本的に同じであるので、新たに図示はしない。以下、第2の実施形態の処理について、第1の実施形態と動作が異なる補間データ生成部110、符号化方式選択部111の処理内容について説明する。上述の第1の実施形態では、補間データ生成部110における補間データ生成の過程でタイル内の各画素ブロックの種類の頻度分布を示すブロック数Na乃至Neを算出し、これを符号化方式選択部111へと提供するとした。これに対し、本実施形態においては、補間データ生成部110は頻度分布の代わりに、着目タイルについての補間データの符号量Lを求め、それを符号化方式選択部111へと提供する。符号化方式選択部111は補間データ生成部110から提供される補間データの符号量Lを所定の閾値TH2と比較する。そしてL<TH2ならば可逆符号化を適用するよう、制御信号“1”を出力する。また、L≧TH2ならば非可逆符号化を適用するよう、制御信号“0”を出力する。1タイルは32×32画素であるので、そのデータ量は32×32×3(RGB成分の数)=3072バイトである。本第2の実施形態では、閾値TH2は、3072バイトの1/8(=384バイト)として説明する。ここで、第1の実施形態の符号化方式選択部111の説明で述べた、2×2画素の画素ブロックについての種類(a)乃至(e)の5つの種別を考える。これまでの説明から明らかなように、文字、線画、クリップアート画像などで多く出現する種類(a)乃至(c)の場合、補間データとして出力される符号長は短い。一方で、複雑なCGや自然画像で多く見られる種類(d),(e)の場合には、色の情報をそのまま補間データに含めるためのその符号長は大きくなる。これを別な表現で示すと、注目タイルに種類(a)〜(c)のブロックが多く存在する場合には着目タイルの補間データの符号量は少なくなり、逆に種類(d),(e)のブロックが多く含まれる場合には補間データの符号量は多くなる。よって補間データの符号量の量によって第1の実施形態で頻度を参照したのと同様の効果を得ることが可能となる。なお、本実施形態と同等の処理をコンピュータプログラムでもって実現できることは、先に説明した第1の実施形態の変形例から明らかであるので、その説明については省略する。
【0029】
[第3の実施形態]
上記第1、第2の実施形態の画像符号化装置では、符号化対象となる画像データを水平、垂直方向共に1/2に縮小し、これを可逆、または、非可逆符号化の対象とした。しかしながら、1/2の縮小に限らず、より小さい画像を生成してビットマップ符号化の対象としても構わない。本第3の実施形態では、その一例として1/2の縮小処理を再帰的に所定回数実行する。そして1回の縮小処理の生成するたびに、縮小元の画像から補間データを生成する例を説明する。ただし、以下では、説明を簡単なものとするため、再帰処理回数を2回とする具体例を説明する。
【0030】
図5に本実施形態における画像符号化装置のブロック構成図を示す。第1、第2の実施形態と異なるのは、解像度変換部501、1/4縮小タイルバッファ502、補間データ生成部503が追加された点と、符号化方式選択部111が符号化方式選択部504に変更された点である。以下、第2の実施形態と動作の異なる部分について説明する。
【0031】
解像度変換部501は、解像度変換部105と同様の処理により、1/2縮小タイルバッファ106に格納される1/2縮小タイルデータを、更に水平、垂直1/2に縮小し、1/4縮小タイルデータを生成する。そして、この1/4縮小タイルデータを、1/4縮小タイルバッファ502へ格納する。
【0032】
補間データ生成部503は、1/4縮小タイルバッファに格納される縮小タイルデータから、1/2縮小タイルバッファに格納される1/2縮小タイルデータを復元するために必要な補間データを生成する。ここでの処理は、補間データ生成部110がタイルバッファ104に格納されるタイルデータに対して行うのと同様である。以降、補間データ生成部110が生成する補間データと補間データ生成部503が生成する補間データを区別するため、前者をレベル1補間データと呼び、後者をレベル2補間データと呼ぶ。補間データバッファ112にはレベル1補間データとレベル2補間データの両方が格納される。
【0033】
符号化方式選択部504には、補間データ生成部110、503からそれぞれ、レベル1補間データの符号量L1とレベル2補間データの符号量L2が提供される。符号化方式選択部504は、入力したL1とL2の和を所定のしきい値TH3と比較する。すなわち、L1+L2<TH3ならば可逆符号化を適用するよう、制御信号“1”を出力する。一方、L1+L2≧TH3ならば非可逆符号化を適用するよう、制御信号“0”を出力する。本第3の実施形態では閾値TH3は、元のタイルデータ量3072バイトの1/4、即ち、“768”(バイト)とする。
【0034】
なお、本実施形態の解像度変換部116は、1/4縮小タイルデータを、レベル2補間データを用いて解像度変換(1/2縮小タイルデータへ復元)を行い、更に、1/2縮小タイルデータをレベル1補間データを用いて元の解像度(初期タイル)の画像に復元する。
【0035】
以上によれば、非可逆符号化部107では、元の解像度まで変換された画像(初期タイル)を非可逆符号化を行うので、上記実施形態よりも画質の劣化を抑えることができる。なお、本実施形態に相当する処理をコンピュータプログラムでもって実現できることは、先に説明した第1の実施形態の変形例と同様、明らかであるので説明を省略する。また、高度な演算処理を要するビットマップ符号化処理(可逆符号化部108による符号化処理)を適用する画素数が元画像データの1/16にまで限定されているため、上記実施形態よりも処理の負荷が軽減される。
【0036】
[第4の実施形態]
上述の第2、第3の実施形態では、補間データの符号量から補間手法の構成を推定して、可逆、非可逆符号化を選択する方法を示した。補間手法の構成を推定は、補間データの一部の符号量からでも可能ある。本第4の実施形態としてこのような例について説明する。第4の実施形態は、先に説明した第2の実施形態と基本的に同じであるが、補間データ生成部110、符号化方式選択部111の動作が若干異なる。以下、動作の異なる部分について説明する。上述の第2の実施形態では、補間データ生成部110において、着目するタイルの補間データ量Lを符号化方式選択部111へと提供した。本第4の実施形態では、第1の実施形態で説明した種類(a)乃至(e)の5種のブロックのうち、種類(d)にかかわる補間データの符号量Ldと、種類(e)にかかわる符号量Leの和を符号化方式選択部111へと提供する。ここでは、種類(d)にかかわる補間データとは、図15の処理フローにおいて、ステップS1510、S1511で処理がなされるノンフラットブロックについて出力される符号を指す。より具体的に述べるならば、ステップS1510、1511に至るノンフラットブロックについて、ステップS1504、S1506、S1507、S1510、S1511で出力される符号である。また種類(e)にかかわる補間データとは、同図、ステップS1512、S1513で処理がなされるノンフラットブロックについて出力される符号を指す。これは、ステップS1512、1513に至るノンフラットブロックについて、ステップS1504、S1512、S1513で出力される符号である。符号化方式選択部111は補間データ生成部110から提供される補間データの符号量Ld+Leを所定のしきい値TH4と比較する。Ld+Le<TH4ならば可逆符号化を適用するよう制御信号“1”を出力し、Ld+Le≧TH4ならば非可逆符号化を適用するよう、制御信号“0”を出力する。複雑なCGや自然画では、LdとLeの和が大きくなる傾向にあり、非可逆符号化の歪が目に付きにくく、元の解像度に戻すときにも縮小画像の劣化の影響を受けにくい。よって、本実施形態においても、高画質、高圧縮、簡易・高速という効果を得ることができる。
【0037】
[第5の実施形態]
前記第1の実施形態では、非可逆符号化方式を選択した場合には、補間データから元の解像度の画像に復元して、非可逆符号化処理を行うことを説明した。本実施の形態では、非可逆符号化処理を選択した場合に、補間データから元の解像度画像(初期タイル)に復元するかしないかを選択することで、非可逆符号化処理を行う画素数を減らすことが可能になり、軽い処理を実現することも可能である。そこで、非可逆符号化の前に解像度を復元するかしないかを制御する方法に関して説明する。
【0038】
図17は、第5の実施形態における画像符号化装置のブロック構成図を示す。第1の実施形態と異なるのは、解像度変換選択部1701が追加された点である。以下、第1の実施形態と動作の異なる部分について説明する。解像度変換選択部1701では、元の解像度に復元して非可逆符号化処理を行うか、1/2縮小タイルで非可逆符号化処理を行うかを選択する処理である。元の解像度に復元するかしないかの判断は、非可逆符号化処理する際のパラメータに基づいて決定する。ここでのパラメータとは、例えば、JPEGの場合、量子化ステップ、量子化テーブルと呼ばれる、離散コサイン変換した係数を除算するところで用いるものである。ここでは、非可逆符号化部107がJPEG符号化を実行する場合を例に説明する。以下の例では、JPEG符号化で用いる量子化ステップが上記パラメータに相当する。
【0039】
例えば、非可逆符号化部107によるJPEG符号化で適用される量子化ステップが細かいものであれば、元の解像度に復元する処理は行わない。一方、そこで適用される量子化ステップが粗いものであれば、元の解像度に復元する処理を行う。これにより、JPEG符号化における量子化において大きな画質劣化が生じそうな場合には、符号化の前段で元の解像度に復元することで全体的な画質劣化を抑制できる。
【0040】
また例えば、非可逆符号化部107によるJPEG符号化で適用される量子化ステップが粗いものであれば、元の解像度の画像に復元する処理は行わない。一方、そこで適用される量子化ステップが細かいものであれば、元の解像度の画像に復元する処理を行う。これにより、JPEG符号化における量子化において画質劣化を抑えたいタイルについては、符号化の前段で元の解像度の画像(初期タイル)に復元することで、よりよい画質で符号化することができる。
【0041】
なお、上記量子化ステップが細かいか粗いのかの判断としては、例えば、量子化ステップ全ての値の平均値が閾値(例えば20)以下であれば細かく、閾値を超えるものが粗いと判断する。あるいは、量子化ステップのすべての値の最大値が閾値(例えば20)以下であれば、量子化ステップは細かいと判断し、閾値を超えるものは粗いと判断すれば良い。なお、上記閾値はユーザが任意に設定可能である。
【0042】
以上では、JPEG符号化を例にあげて説明したが、JPEG2000やJPEGXRなどの符号化方式でも圧縮率あるいは画質に影響する符号化パラメータが各種存在している。よって、それら符号化パラメータを基準にして、非可逆符号化の前に解像度を復元するか否かを判断することは有効である。
【0043】
[第6の実施形態]
上記第3の実施形態では、非可逆符号化方式を選択した場合には、レベル1補間データとレベル2補間データを用いて、縮小画象(1/4縮小タイルデータ)を元の解像度の画像にまで復元して、非可逆符号化処理を行っていた。本実施の形態では、非可逆符号化処理を行う前に、以下の3つの選択肢から処理を選択する。
「非可逆符号化の対象画像を、1/4縮小タイルデータとする(解像度を復元しない)」
「非可逆符号化の対象画像を、1/2縮小タイルデータとする(解像度を1段階復元する)」「非可逆符号化の対象画像を、元の解像度の画像とする(解像度を2段階復元する)」
【0044】
図18は、第5の実施形態における画像符号化装置のブロック構成図を示す。第3の実施形態でのブロック図と異なるのは、解像度変換選択部1801が追加された点と、解像度変換部1802が変更になった点である。以下、第3の実施形態と動作の異なる部分について説明する。解像度変換選択部1801では、上述した3つの選択肢の1つを選択する処理である。本実施形態では、上記選択は、非可逆符号化処理する際のパラメータに基づいて行われる。ここでのパラメータとは、第5実施形態で述べたものと同様である。以下、JPEG符号化を行う場合であって、上記パラメータを量子化ステップとして例示する。本実施形態では、量子化ステップの細かさを予め3つの範囲(値域)に分けておく。量子化ステップの1番細かい範囲、2番目に細かい範囲、3番目に細かい範囲と徐々に量子化ステップが粗くなっていくように、量子化ステップに相当するパラメータの値域を予め設定しておく。
【0045】
例えば、非可逆符号化部107によるJPEG符号化で適用される量子化ステップが1番細かい範囲に相当するものであれば、高解像度の画像に復元する処理は行わない。一方、そこで適用される量子化ステップが2番目に細かい範囲に相当するものであれば、解像度を1段階復元する。一方、そこで適用される量子化ステップが3番目に細かいものであれば、解像度を2段階復元する。これにより、JPEG符号化における量子化において画質劣化が生じそうな場合には、符号化の前段で、1/2縮小タイルデータあるいは元の解像度の画像(初期タイル)に復元することで全体的な画質劣化を抑制できる。
【0046】
なお、第5実施形態で述べた変形例と同様、非可逆符号化部107による量子化ステップが3番目に細かい時、高解像度の画像に復元する処理は行わず、量子化ステップが1番、2番目に細かい時、1/2縮小タイルデータや元の解像度の画像に復元しても良い。これにより、JPEG符号化における量子化において画質劣化を抑えたいタイルについては、符号化の前段で高解像度の画像に復元することで、よりよい画質で符号化することができる。また、第5実施形態と同様に、上記量子化ステップの細かさの判断方法や閾値などはユーザが任意に設定可能である。また、JPEG2000やJPEGXRなどの符号化方式の場合に適用しても良い。
【0047】
[符号化データの構造]
図6は、上記各実施形態において生成される1タイル分の符号化データの構造を示したものである。よって、複数のタイルを符号化する場合には、後述するように、図6の符号化データがタイルの数だけ連結されることになる。図6(a)は、1/4縮小タイルを可逆符号化することになった場合の符号化データ構造である。ここでは、1/4縮小タイル符号化データとレベル2補間データとレベル1補間データが含まれる。図6(b)は、1/2縮小タイルを非可逆符号化することになった場合、あるいは1/2縮小タイルを可逆符号化することになった場合の符号化データ構造である。ここでは、1/2縮小タイル符号化データとレベル1補間データが含まれ、レベル2補間データは含まれない。図6(c)は、元の解像度の画像(初期タイル)を非可逆符号化することになった場合の符号化データ構造である。ここでは、タイルの符号化データが含まれ、レベル1補間データとレベル2補間データは含まれない。
【0048】
図9は、複数のタイルを符号化した場合の符号化データ構造を示す図である。符号列の先頭には、画像を復号するために必要となる情報、例えば、画像の水平方向画素数、垂直方向画素数、コンポーネント数、各コンポーネントのビット数やタイルの幅、高さなどの付加情報がヘッダとして付与される。また、このヘッダ部分には、画像データそのものについての情報のみでなく、各タイルに使用するハフマン符号化テーブルや、量子化テーブルなどの符号化に関する情報も含まれる。このヘッダに続いて、上述した各タイルの符号化データが連結される。
【0049】
[その他の実施形態]
上記各実施形態では可逆符号化としてJPEG−LS、非可逆符号化としてJPEGを利用するとして説明したが、それぞれが、同様の性質を有する別の符号化手法を適用しても構わない。また、上記各実施形態では、1/2縮小画像を生成する際、2×2画素の画素ブロック内の左上隅に位置する画素Bn(0,0)を縮小画像の画素としてサンプリングし、他の3画素Bn(1,0)、Bn(0,1)、Bn(1,1)の補間データの生成を行った。しかし、縮小画像の利用する画素は必ずしも2×2画素のブロックの左上隅の画素でなくても構わず、Bn(1,0)、Bn(0,1)、Bn(1,1)のいずれであっても構わない。要するに、Bn(1,0)、Bn(0,1)、Bn(1,1)のいずれか1つをサンプリング対象の画素Xとした場合であっても、残りの3画素がXa,Xb,Xcと定義できる。この場合、以下の様に、
X1:画素Xaを復元するために参照する隣接画素ブロック内の前記画素Xaに隣接するサンプリング対象となる画素
X2:画素Xbを復元するために参照する隣接ブロック内の前記画素Xbに隣接するサンプリング対象となる画素
X3:画素Xcを復元するために参照する隣接ブロック内の前記画素Xcに隣接するサンプリング対象となる画素を
と定義したとき、「Xa=X1 且つ、Xb=X2 且つ、Xc=X3」を満たす場合に、その着目画素ブロックは周囲3画素一致ブロックと判定すればよい。また、画素ブロックのサイズは3×3画素とし、その中から1画素を抽出することで、水平、垂直ともオリジナルの1/3の画素数の縮小画像を生成しても構わない。また、画素ブロック中の1画素を抽出するだけでなく、その画素ブロックの平均色を求めて縮小画像を生成するなどしても良い。このような場合、縮小画像の生成方法に応じて、元の解像度の画像データを復元できるように補間データの構成方法を工夫すれば良い。また、補間データの構成方法として、元の解像度の画像データが完全に元に戻せるような構成例について示したが、必ずしもこれに限らない。例えば、画素ブロックに含める色数が3色以上である場合には、減色するなどして、元の解像度には戻るものの、画素値としては多少変化することを許容するような補間データとしても良い。また、上述の実施形態では32×32画素のタイルに分割して処理を行ったがタイルの大きさはこれに限定されるものではなく、画素ブロックの整数倍であれば良い。従って。16×16、64×64、128x128など、別のブロックサイズとしても良いし、正方である必要もない。また、実施形態では、画像の色空間はRGBであるとしたが、CMYK、Lab、YCrCbなど様々なタイプの画像データに適用可能であるのは明らかであるので、色成分の数や色空間の種類によって本発明が限定されるものではない。また、通常、コンピュータプログラムは、CD−ROM等のコンピュータ可読記憶媒体に格納されていて、それをコンピュータの読取り装置(CD−ROMドライブ)にセットし、システムにコピーもしくはインストールすることで実行可能になる。従って、このようなコンピュータ可読記憶媒体も本発明の範疇に入ることも明らかである。
【特許請求の範囲】
【請求項1】
画像を構成するタイルを符号化する画像符号化装置であって、
タイルを構成する2×2画素の各ブロックについて、代表1画素を出力することにより、1/2縮小タイルを生成する縮小手段と、
前記1/2縮小タイルの各1画素から前記2×2画素の各ブロックを復元するための補間方法を示す補間データを生成する生成手段と、
前記1/2縮小タイルを可逆符号化することにより、可逆符号化データを生成する可逆符号化手段と、
前記補間データを用いて前記1/2縮小タイルから前記タイルと同じ解像度の画像を復元し、復元された画像を非可逆符号化することにより、非可逆符号化データを生成する非可逆符号化手段と、
前記生成手段で生成された補間データに基づいて、前記可逆符号化手段、前記非可逆符号化手段のいずれか一方を選択して実行させる選択手段と、
前記可逆符号化手段が選択された場合には、前記可逆符号化データおよび前記補間データを前記タイルの符号化データとして出力し、前記非可逆符号化手段が選択された場合には、前記非可逆符号化データを前記タイルの符号化データとして出力する出力手段とを備え、
前記補間方法は、各ブロックにおける非代表3画素を1/2縮小画像の画素値を用いて求める第1の補間方法と、各ブロックにおける非代表3画素を1/2縮小画像の画素値を用いずに画素データから求める第2の補間方法を含むことを特徴とする画像符号化装置。
【請求項2】
前記選択手段は、前記生成手段で生成される補間データが示す補間方法の分布に基づいて、前記可逆符号化手段、前記非可逆符号化手段のいずれか一方を選択することを特徴とする請求項1に記載の画像符号化装置。
【請求項3】
前記選択手段は、前記生成手段で生成される補間データのデータ量に基づいて、前記可逆符号化手段、前記非可逆符号化手段のいずれか一方を選択することを特徴とする請求項1に記載の画像符号化装置。
【請求項4】
前記選択手段は、前記生成手段で生成される補間データのデータ量Lを所定の閾値THと比較し、L≦THであれば可逆符号化手段を選択し、L>THであれば非可逆符号化手段を選択することを特徴とする請求項1に記載の画像符号化装置。
【請求項5】
コンピュータに読み込み込ませ実行させることで、前記コンピュータを請求項1乃至4のいずれか1項に記載の画像符号化装置として機能させるコンピュータプログラム。
【請求項6】
請求項5に記載のコンピュータプログラムを格納したことを特徴とするコンピュータ可読記憶媒体。
【請求項7】
画像を構成するタイルを符号化する画像符号化装置の制御方法であって、該制御方法には、
縮小手段により、タイルを構成する2×2画素の各ブロックについて、代表1画素を出力することにより、1/2縮小タイルを生成する縮小工程と、
生成手段により、前記1/2縮小タイルの各1画素から前記2×2画素の各ブロックを復元するための補間方法を示す補間データを生成する生成工程と、
可逆符号化手段により、前記1/2縮小タイルを可逆符号化することにより、可逆符号化データを生成する可逆符号化工程と、
非可逆符号化手段により、前記補間データを用いて前記1/2縮小タイルから前記タイルと同じ解像度の画像を復元し、復元された画像を非可逆符号化することにより、非可逆符号化データを生成する非可逆符号化工程と、
選択手段により、前記生成手段で生成された補間データに基づいて、前記可逆符号化手段、前記非可逆符号化手段のいずれか一方を選択して実行させる選択工程と、
出力手段により、前記可逆符号化手段が選択された場合には、前記可逆符号化データおよび前記補間データを前記タイルの符号化データとして出力し、前記非可逆符号化手段が選択された場合には、前記非可逆符号化データを前記タイルの符号化データとして出力する出力工程とを備え、
前記補間方法は、各ブロックにおける非代表3画素を1/2縮小画像の画素値を用いて求める第1の補間方法と、各ブロックにおける非代表3画素を1/2縮小画像の画素値を用いずに画素データから求める第2の補間方法を含むことを特徴とする制御方法。
【請求項1】
画像を構成するタイルを符号化する画像符号化装置であって、
タイルを構成する2×2画素の各ブロックについて、代表1画素を出力することにより、1/2縮小タイルを生成する縮小手段と、
前記1/2縮小タイルの各1画素から前記2×2画素の各ブロックを復元するための補間方法を示す補間データを生成する生成手段と、
前記1/2縮小タイルを可逆符号化することにより、可逆符号化データを生成する可逆符号化手段と、
前記補間データを用いて前記1/2縮小タイルから前記タイルと同じ解像度の画像を復元し、復元された画像を非可逆符号化することにより、非可逆符号化データを生成する非可逆符号化手段と、
前記生成手段で生成された補間データに基づいて、前記可逆符号化手段、前記非可逆符号化手段のいずれか一方を選択して実行させる選択手段と、
前記可逆符号化手段が選択された場合には、前記可逆符号化データおよび前記補間データを前記タイルの符号化データとして出力し、前記非可逆符号化手段が選択された場合には、前記非可逆符号化データを前記タイルの符号化データとして出力する出力手段とを備え、
前記補間方法は、各ブロックにおける非代表3画素を1/2縮小画像の画素値を用いて求める第1の補間方法と、各ブロックにおける非代表3画素を1/2縮小画像の画素値を用いずに画素データから求める第2の補間方法を含むことを特徴とする画像符号化装置。
【請求項2】
前記選択手段は、前記生成手段で生成される補間データが示す補間方法の分布に基づいて、前記可逆符号化手段、前記非可逆符号化手段のいずれか一方を選択することを特徴とする請求項1に記載の画像符号化装置。
【請求項3】
前記選択手段は、前記生成手段で生成される補間データのデータ量に基づいて、前記可逆符号化手段、前記非可逆符号化手段のいずれか一方を選択することを特徴とする請求項1に記載の画像符号化装置。
【請求項4】
前記選択手段は、前記生成手段で生成される補間データのデータ量Lを所定の閾値THと比較し、L≦THであれば可逆符号化手段を選択し、L>THであれば非可逆符号化手段を選択することを特徴とする請求項1に記載の画像符号化装置。
【請求項5】
コンピュータに読み込み込ませ実行させることで、前記コンピュータを請求項1乃至4のいずれか1項に記載の画像符号化装置として機能させるコンピュータプログラム。
【請求項6】
請求項5に記載のコンピュータプログラムを格納したことを特徴とするコンピュータ可読記憶媒体。
【請求項7】
画像を構成するタイルを符号化する画像符号化装置の制御方法であって、該制御方法には、
縮小手段により、タイルを構成する2×2画素の各ブロックについて、代表1画素を出力することにより、1/2縮小タイルを生成する縮小工程と、
生成手段により、前記1/2縮小タイルの各1画素から前記2×2画素の各ブロックを復元するための補間方法を示す補間データを生成する生成工程と、
可逆符号化手段により、前記1/2縮小タイルを可逆符号化することにより、可逆符号化データを生成する可逆符号化工程と、
非可逆符号化手段により、前記補間データを用いて前記1/2縮小タイルから前記タイルと同じ解像度の画像を復元し、復元された画像を非可逆符号化することにより、非可逆符号化データを生成する非可逆符号化工程と、
選択手段により、前記生成手段で生成された補間データに基づいて、前記可逆符号化手段、前記非可逆符号化手段のいずれか一方を選択して実行させる選択工程と、
出力手段により、前記可逆符号化手段が選択された場合には、前記可逆符号化データおよび前記補間データを前記タイルの符号化データとして出力し、前記非可逆符号化手段が選択された場合には、前記非可逆符号化データを前記タイルの符号化データとして出力する出力工程とを備え、
前記補間方法は、各ブロックにおける非代表3画素を1/2縮小画像の画素値を用いて求める第1の補間方法と、各ブロックにおける非代表3画素を1/2縮小画像の画素値を用いずに画素データから求める第2の補間方法を含むことを特徴とする制御方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【公開番号】特開2011−223462(P2011−223462A)
【公開日】平成23年11月4日(2011.11.4)
【国際特許分類】
【出願番号】特願2010−92506(P2010−92506)
【出願日】平成22年4月13日(2010.4.13)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成23年11月4日(2011.11.4)
【国際特許分類】
【出願日】平成22年4月13日(2010.4.13)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]