(58)【調査した分野】(Int.Cl.,DB名)
画像のブロックごとにそのブロックに含まれる画素値の周波数解析結果である1つの直流成分の情報と直流成分以外の各周波数の成分の情報とを含む圧縮画像データを受け取り、受け取った圧縮画像データを先頭のブロックから順にブロックごとに、当該ブロックの前記直流成分以外の各周波数の成分が直前のブロックの前記直流成分以外の各周波数の成分と同一か否かを判定する判定手段と、
前記判定手段にて当該ブロックの前記直流成分以外の各周波数の成分が直前のブロックの前記直流成分以外の各周波数の成分と同一でないと判定された場合は、当該ブロックに含まれる直流成分と直流成分以外の各周波数の成分とに対して前記周波数解析の逆演算を行うことで当該ブロックの各画素値を生成する第1画素値生成手段と、
前記第1画素値生成手段が生成した前記ブロックの各画素値を、当該ブロックの次のブロックの各画素値が生成されるまで保持する保持手段と、
前記判定手段にて当該ブロックの前記直流成分以外の各周波数の成分が直前のブロックの前記直流成分以外の各周波数の成分と同一であると判定された場合は、前記保持手段に保持された前記直前のブロックの各画素値と、当該ブロックと前記直前のブロックの直流成分同士の差と、から当該ブロックの各画素値を生成する第2画素値生成手段と、
を備える画像データ復号装置。
【発明を実施するための形態】
【0012】
図1を参照して、実施形態の画像データ復号装置の構成例を説明する。ここでは、JPEG方式で圧縮されたデータを復号する装置を例にとって説明する。
図1の画像データ復号装置は、JPEG伸張処理部100、隣接ブロック同一性判定部1104、前ブロック符号保持部1106、前ブロックデータ保持部1108、及びDC補正部1110、出力セレクタ1112及びデータ出力部116を備える。
【0013】
JPEG伸張処理部100は、JPEG圧縮された圧縮画像データをJPEG方式に従って伸張する回路であり、JPEG伸張処理部100は、入力データ取り込み部102、ハフマンデコード部104、JPEGコード伸張部106、及び、8×8ブロックバッファ108を備える。
【0014】
入力データ取り込み部102は、復号対象であるJPEG圧縮された画像データを受信する回路である。
【0015】
周知のように、JPEG方式の画像圧縮では、大まかに言えば、ビットマップ画像データを8×8画素のブロック単位に分割し、ブロックに対してDCT(離散コサイン変換)を行って周波数領域での8×8の周波数成分へと変換する。これら各周波数成分のうち、最も低周波数(例えば周波数0)の成分が直流(DC)成分であり、これはブロック内の画素値の平均を表す。DC成分より高い63個の各周波数成分は交流(AC)成分と呼ばれる。このDCT結果の各周波数成分は量子化テーブルを用いて量子化される。1ブロック分の量子化後の各成分をジグザグスキャン順序で並べると、一般には、DC成分から始まり、その後にAC成分が続くデータとなる。そして、このジグザグスキャン順序の各成分の量子化結果の並びをハフマン符号化することで、最終的なJPEG圧縮画像データが得られる。ハフマン符号化処理では、DC成分は単独で(場合によっては直前のブロックのDC成分との差分が)ハフマン符号に変換される。DC成分の後に続くAC成分は、量子化により値が0の成分が多いため、連続する0の数(ゼロランと呼ばれる)とそのあとに続く非ゼロの成分値との組がハフマン符号化される。このように、1ブロックの画像は、最終的に、1つのDC成分のハフマン符号と、その後に続くゼロランと非ゼロAC成分の組のハフマン符号(0個以上)とからなるハフマン符号データに変換される。ここで、このハフマン符号化処理では、ジグザグスキャン順序である周波数成分(量子化結果)以降の全ての成分の値が0の場合、当該周波数成分以降の高周波成分をまとめて1つのブロック終端符号(EOBマーカと呼ぶ。EOBはEnd Of Blockの略)で表現することで、データ量の削減を図っている。
【0016】
ハフマンデコード部104は、このようなJPEG圧縮画像データを構成するハフマン符号を順に復号する。
図2にハフマンデコード部104による復号結果200の例を示す。この例に示すように、符号202などで示すデータが1ブロック分のデータである。1ブロックのデータは、上述のように一般には先頭にDC成分、末尾にEOBマーカを含む。通常のブロック202はDC成分とEOBマーカとの間に1以上のAC成分を含むが、AC成分をまったく含まないDC成分のみのブロックも存在し得る。このようなブロックでは、DC成分の値(DC係数とも呼ばれる)の直後にEOBマーカが続く。また、ブロック204と206のように、DC成分は異なるがAC成分が全部一致するブロックも存在し得る。
【0017】
JPEGコード伸張部106は、ハフマン復号結果のデータに対して逆量子化やIDCT(逆離散コサイン変換)を行い、1ブロック(8×8画素)の各画素の画素値を求める。
【0018】
JPEGコード伸張部106の内部構成の例を
図3に示す。図示のように、JPEGコード伸張部106のDC生成回路302は、ハフマン復号結果の各ブロックのデータの先頭からDC成分の値を取り出し、これを8×8ブロック(8×8の周波数成分を記憶する回路)306の左上隅の成分に書き込む。ACゼロラン展開回路304は、DC成分の後に続くゼロランと非ゼロAC成分を8×8ブロック306の対応する成分の記憶領域に書き込む。8×8逆量子化計算回路308は、8×8ブロック306に記憶されたDC成分と63個の各AC成分を、逆量子化テーブルを参照して逆量子化する。IDCT計算回路310は、その逆量子化結果をIDCT(逆離散コサイン変換)することで、1ブロック分すなわち8×8個の各画素の画素値を計算する。
【0019】
8×8ブロックバッファ108は、JPEGコード伸張部106の復号結果(IDCT計算回路310の出力)である1ブロック(8×8画素)分の画素値を一時的に保持する。8×8ブロックバッファ108に保持された1ブロックの各画素値は、出力セレクタ1112を介してデータ出力部116へと出力される。データ出力部116は、その各画素値を、例えばこの画像データ復号装置に対して復号処理を依頼した上位システム(例えば画像処理アプリケーションなど)などといった出力先システムに対して出力する。
【0020】
以上に説明したJPEG伸張処理部100(及びJPEGコード伸張部106)の構成は、従来のJPEG復号装置とほぼ同様のものでよい。ただし、本実施形態では、ハフマンデコード部104の出力は、直接JPEGコード伸張部106に入力されるのではなく、隣接ブロック同一性判定部1104を介することになる。
【0021】
隣接ブロック同一性判定部1104は、ハフマンデコード部104から供給される現ブロックのハフマン復号結果のうちのAC成分が、直前のブロック(前ブロックと呼ぶ)のAC成分と同一であるか否かを判定する。この判定では、ブロック内のAC成分全体(すなわち全周波数成分)が、現ブロックと前ブロックとで完全に一致しているかどうかを判定する。前ブロックと現ブロックとでAC成分全体が一致する場合、現ブロックは、DC成分以外の全ての周波数成分が前ブロックと同一である。また、隣接ブロック同一性判定部1104は、その判定の結果(「同一」又は「非同一」)を示す隣接ブロック同一性フラグを出力セレクタ1112に出力する。
【0022】
前ブロック符号保持部1106は、隣接ブロック同一性判定部1104の判定のために、前ブロックの符号(すなわちDC成分とAC成分(全周波数成分))を保持する。前ブロック符号保持部1106に保持される符号は、ブロックを復号するごとに逐次最新のものに更新される。
【0023】
前ブロックデータ保持部1108は、JPEGコード伸張部106が伸張して8×8ブロックバッファ108に保持された1ブロック分の画素値の組のコピーを保持する。前ブロックデータ保持部1108に保持される1ブロック分の画素値の組は、ブロックを復号するごとに逐次最新のものに更新される。
【0024】
DC補正部1110は、前ブロックデータ保持部1108に保持された前ブロックの各画素値を、隣接ブロック同一性判定部1104から供給されるDC差分の値に応じて補正することで、現ブロックの各画素の値を求めて出力する。補正は、例えば、前ブロックの各画素の値に対してそれぞれDC差分を加算することで行う。DC補正部1110の補正結果は、出力セレクタ1112に出力される。また、その補正結果が、前ブロックデータ保持部1108に上書きされる。
【0025】
出力セレクタ1112は、隣接ブロック同一性判定部1104から供給される隣接ブロック同一フラグに基づき、JPEG伸張処理部100とDC補正部1110という2つの復号系統のうちの1つを選択し、選択した系統の復号結果をデータ出力部116へと出力する。すなわち、隣接ブロック同一フラグが「同一」であれば、DC補正部1110からのデータを選択し、「非同一」であればJPEG伸張処理部100からのデータを選択する。
【0026】
図1の構成において、DC補正部1110の行う処理は、前ブロックデータ保持部1108が備える1ブロック64画素のデータに対してそれぞれ同一のDC差分値を加算するだけなので、1クロックで実行することができる。したがって、1画素当たり1クロックの時間を要するJPEGコード伸張部106よりもはるかに高速である。したがって、AC成分が同一のブロックがある程度連続する画像であれば、高速に復号される。また、ハードウエア回路として実装する場合の回路規模も、隣接ブロック同一性判定部1104、前ブロック符号保持部1106、前ブロックデータ保持部1108、DC補正部1110からなる復号系統は、通常のJPEG復号を行うJPEGコード伸張部106よりはるかに小さい。
図1の回路全体の規模は、JPEG伸張処理部100を2系統並列に配置する場合よりも小さい。
【0027】
次に、
図4を参照して、隣接ブロック同一性判定部1104の処理手順の一例を説明する。この手順では、隣接ブロック同一性判定部1104は、ハフマンデコード部104から1ブロック分の復号結果(現ブロック)を得るごとに、その復号結果におけるAC成分全体を、前ブロック符号保持部1106に保持された前ブロックのAC成分全体と比較する(402)。なお、この比較の後、前ブロック符号保持部1106内の符号を、現ブロックの復号結果(DC成分とAC成分全体)に置き換える。
【0028】
次に隣接ブロック同一性判定部1104は、ステップ402の比較の結果、現ブロックと前ブロックのAC成分全体(すなわち、すべてのDC成分を除く全ての周波数成分)同士が一致しているかどうかを判定する(404)。ステップ404で「一致」と判定した場合、前ブロック符号保持部1106に保持された前ブロックのDC成分と、現ブロックのDC成分との差分を求め、このDC差分をDC補正部1110に供給する(406)。DC補正部1110は、前ブロックデータ保持部1108に保持された前ブロックの各画素の値に対し、このDC差分の値を例えばそれぞれ加えることで、現ブロックの各画素の値を求めて出力する。また、出力セレクタ1112に対して現ブロックと前ブロックとのAC成分が「同一である」ことを示す値の隣接ブロック同一フラグを出力する(408)。なお、ステップ406と408の順序はこの例に限らない。
【0029】
また、ステップ404の判定結果が「不一致」の場合、隣接ブロック同一性判定部1104は、現ブロックのDC成分値及びAC成分値をJPEGコード伸張部106に供給する(410)と共に、出力セレクタ1112に対して現ブロックと前ブロックとのAC成分が「同一でない」ことを示す値の隣接ブロック同一フラグを出力する(412)(410と412はこの順でなくてもよい)。
【0030】
さて、本実施形態の画像データ復号装置をDRP(動的再構成可能プロセッサ:Dynamically Reconfigurable Processor)に実装する場合、リコンフィギュレーションにより実装規模を更に小さくすることも考えられる。なお、DRPは、周知のように、使用するPEの組合せやそれらPE間の配線構造を動的に(すなわち例えば1クロックの間で)切り替えることで、内部の論理回路構成を動的に再構成できるプロセッサのことである。この例を、
図5〜
図7を用いて説明する。
【0031】
この例では、
図1に示した構成を、
図5に示すコンフィギュレーション(以下「コンフィグ」と略す)Aと
図6に示すコンフィグBの2つのコンフィグの動的切替により実現する。コンフィグは、DRP上に同時に存在する回路のことである。
【0032】
図5に示すコンフィグAは、隣接ブロック間でAC成分が共通でない、一般的な場合に対応するための回路構成であり、
図1に示した装置構成のうち、JPEG伸張処理部100、隣接ブロック同一性判定部1104、前ブロック符号保持部1106、前ブロックデータ保持部1108からなる部分に相当する。
【0033】
隣接ブロック同一性判定部1104aは、
図1の隣接ブロック同一性判定部1104と同様、ハフマンデコード部104から供給される現ブロックのAC成分が前ブロックと「同一」か否かを判定すると共に、「同一でない」と判定した場合は、現ブロックのDC成分値及びAC成分値をJPEGコード伸張部106に供給する。この隣接ブロック同一性判定部1104aが、
図1の隣接ブロック同一性判定部1104と異なる点は、「同一である」と判定した場合に、隣接ブロック間でAC成分が共通する場合の復号系統であるコンフィグB(
図6。詳細は後述)への切替を求めるリコンフィグリクエストを、リコンフィグ制御部1008へと出力する点である。
【0034】
前ブロック符号保持部1106及び前ブロックデータ保持部1108は、
図1に示したものと同じであり、コンフィグBの回路に前ブロックのハフマン復号結果の符号及び各画素値を伝達するために設けられている。すなわち、前ブロック符号保持部1106及び前ブロックデータ保持部1108は、コンフィグAからコンフィグBに書き換えられる場合も、そこに記憶したデータを保持したまま維持される。
【0035】
隣接ブロック間でAC成分が共通する場合の復号系統は、
図6のコンフィグBとして実装される。コンフィグBは、入力データ取り込み部102、ハフマンデコード部104、隣接ブロック同一性判定部1104b、前ブロック符号保持部1106、前ブロックデータ保持部1108、及びDC補正部1110を備える。このうち、隣接ブロック同一性判定部1104b以外は、
図1に示した同一符号の要素と同じものでよい。隣接ブロック同一性判定部1104bは、
図1の隣接ブロック同一性判定部1104と同様、ハフマンデコード部104から供給される現ブロックのAC成分が前ブロックと「同一」か否かを判定すると共に、「同一である」と判定した場合は、現ブロックと前ブロックのDC成分の差分値をDC補正部1110に供給する。隣接ブロック同一性判定部1104bが、
図1の隣接ブロック同一性判定部1104と異なる点は、「同一でない」と判定した場合に、通常のJPEG復号系統であるコンフィグAへの切替を求めるリコンフィグリクエストを、リコンフィグ制御部1008へと出力する点である。
【0036】
なお、
図5及び
図6では省略したが、8×8ブロックバッファ108及びDC補正部1110の出力側には、
図1の例のように出力セレクタ1112を設けてもよい。また、出力セレクタ1112なしで、8×8ブロックバッファ108及びDC補正部1110の出力をデータ出力部116に直接接続するように構成してもよい。いずれの場合も、コンフィグAとBを切り替えたとしても、出力セレクタ1112又はデータ出力部116はリコンフィギュレーションしなくてよい。
【0037】
図7に、このようなコンフィグの切替機能を実現するためのDRP構成の例を示す。
【0038】
図7に示すDRPにおいて、再構成可能回路部1004は、内部の論理回路構成を動的に(すなわち当該プロセッサが動作中に)再構成できる回路である。再構成可能回路部1004としては、例えば、特開2009−3765号公報に紹介されているDNAなど、様々な既存の、又はこれから開発される回路を用いることができる。例えば、DNAは、多数の回路要素(PE)からなるアレイであり、それら回路要素間の接続構成をコンフィギュレーションデータに従って高速(例えば1クロックの間に)組み替え可能となっている。なお、その公報で紹介されたDAPDNAアーキテクチャをこの実施形態に採用した場合、リコンフィグ制御部1008及び次コンフィグデータ選択部1014は、DAPと呼ばれる汎用プロセッサコアで、後述する各機能を表すプログラムを実行することにより実現される。この場合、再構成可能回路部1004と汎用プロセッサコアとが、1つのDRPとして提供される。また、DRPは、RAM(ランダム・アクセス・メモリ)等のメモリと、外部装置との間でのデータの入出力など入出力回路と、を備える。これらハードウエア要素のうちのいくつかが1つの集積回路上に集積されていてももちろんよい。もちろん、これはあくまで一例に過ぎず、他の再構成可能プロセッサアーキテクチャを用いてもよい。
【0039】
データ入力部1002は、再構成可能回路部1004上に再構成(リコンフィグ)された処理回路に対して入力データを供給する手段である。例えば、再構成可能回路部1004に接続されたメモリ上に確保された入力データ用のバッファ領域が、データ入力部1002の一例である。この場合、ホストシステム(例えばこのDRPの装着先のコンピュータのCPU)は、この実施形態のDRPに圧縮画像の復号処理を実行させる場合、処理対象である圧縮画像データを入力データとしてそれら各バッファ領域に転送し、リコンフィグ制御部1008に対してその入力データの処理を指示する。これに応じ、リコンフィグ制御部1008は、その入力データをデータ入力部1002から再構成可能回路部1004上に構成された画像データ復号回路に供給する。また、別の例として、ホストシステムからこの実施形態のDRPに、DMA(ダイレクトメモリアクセス)によりデータを転送してもよく、この場合データ入力部1002は、例えば、データ処理装置内のDMAコントローラ(図示省略)により割り当てられるチャンネルに相当する。
【0040】
データ出力部1006は、再構成可能回路部1004上に再構成された画像データ復号回路から出力されたデータをホストシステムに対して出力する手段である。データ出力部1006も、上述のデータ入力部1002と同様、再構成可能回路部1004に接続されたメモリ上に確保された出力バッファ、或いはDMAコントローラから割り当てられた出力チャンネルなどがその具体例である。
【0041】
リコンフィグ制御部1008は、再構成可能回路部1004内の回路要素の接続関係を制御することで、再構成可能回路部1004上に各種データ処理のための回路を再構成する。また、リコンフィグ制御部1008は、再構成可能回路部1004上に再構成された回路に対してホストシステムからの指示に応じてデータ入力部1002経由で入力データを供給したり、その回路からの出力データをデータ出力部1006経由でホストシステムに返したりする制御を行う。
【0042】
再構成可能回路部1004内の回路の再構成は、コンフィグデータ格納部1010に記憶されたコンフィグデータに従って行われる。この例では、コンフィグデータ格納部1010には、
図5及び
図6に示したコンフィグA及びBをそれぞれ表すコンフィグデータA1012a及びコンフィグデータB1012bが記憶される。コンフィグデータ格納部1010は、例えばDRP内のRAM又は不揮発性メモリなどの記憶装置上に構成される。コンフィグデータ格納部1010には、ホストシステムからの制御により新たなコンフィギュグデータを追加したり、既存のコンフィグデータを削除したりすることができる。
【0043】
リコンフィグ制御部1008は、再構成可能回路部1004上に構成された回路からリコンフィグリクエストを受け取ると、そのリクエストに応じたコンフィグデータを選択する指示を次コンフィグデータ選択部1014に発する。
【0044】
次コンフィグデータ選択部1014は、再構成可能回路部1004上に次に再構成すべきコンフィグを規定するコンフィグデータを選択する手段である。コンフィグデータ格納部1010に記憶された各コンフィグデータを再構成可能回路部1004に適用する条件を示す制御情報が、あらかじめホストシステムから次コンフィグデータ選択部1014に設定されている。次コンフィグデータ選択部1014は、リコンフィグ制御部1008から指示を受けると、その制御情報に従い、その指示に応じたコンフィグデータをコンフィグデータ格納部1010から読み出し、再構成可能回路部1004上に現在構成されているコンフィグの処理が終わると、そのコンフィグデータを再構成可能回路部1004上に書き込むことで、再構成可能回路部1004を次の回路構成へと切り換える。
【0045】
なお、上述したDAPDNAアーキテクチャのように、再構成可能回路部1004に複数のバンクを備えるコンフィグメモリを設け、各バンクにコンフィグデータをそれぞれ記憶させ、使用するバンクを順次切り替えることで回路の再構成を行う構成としてもよい。例えばコンフィグメモリのバンク数より多いコンフィグデータを用いる場合などには、各バンク内のコンフィグデータを、コンフィグデータ格納部1010内のコンフィグデータにより順次書き替えていってもよい。
【0046】
このようなDRP構成において、復号開始時にはまずコンフィグAを再構成可能回路部1004内に構成する。そして、その後リコンフィグ制御部1008は、コンフィグAの隣接ブロック同一性判定部1104aからリコンフィグリクエストが到来すれば、再構成可能回路部1004内の回路をコンフィグBに書き換え、またコンフィグBの隣接ブロック同一性判定部1104bからリコンフィグリクエストが到来すれば、再構成可能回路部1004内の回路をコンフィグAに書き換える。これにより、
図1の装置と同等の機能がコンフィグAとBの切り替えにより実現される。
【0047】
以上、実施形態及びその変形例を説明した。以上の例では、実施形態及びその変形例の画像データ復号装置をDRPに実装する場合を例にとって説明したが、
図1の構成は、DRP以外にも、IC(集積回路)、LSI(大規模集積回路)、ASIC(特定用途向け集積回路)などの通常の集積回路、FPGA(Field Programmable Gate Array)等のプログラマブル論理回路などといった様々な形態の回路として実装可能である。
【0048】
以上では、画像データの圧縮方式としてJPEGが用いられる場合を例にとって説明した。しかし、この実施形態の方式は、JPEGのみならず、ブロックごとに1つの直流成分の情報と直流成分以外の各周波数の成分の情報とを含む圧縮画像データを扱う圧縮符号化方式一般に適用可能である。また、周波数解析には、JPEGにおいて用いられるDCTに限らず、ウェーブレット変換などの他の方式を用いてもよい。
【0049】
以上に説明した画像データ復号装置は、例えば、複写機、プリンタ、複合機(プリンタ、スキャナ、コピー機、ファクシミリ装置などの機能を兼ね備えた多機能装置)、デジタルカメラなどといった、静止画像の圧縮データを復号する機能を有する機器に組み込むことができる。