画像処理装置、画像処理方法
【課題】 異なる符号化方法が混在して適用された符号化ストリームを、回路規模を増加させることなくより高速に復号すること。
【解決手段】 着目ブロックの符号化ストリームの先頭位置として指定された位置から可変長符号ストリームを読み出して復号する。着目ブロックの可変長符号ストリームの復号が完了すると、着目ブロックの準固定長データストリームのデータ長を計算する。準固定長データストリームの先頭位置からデータ長のぶんだけ後方の位置を、着目ブロックの次に復号する次ブロックの符号化ストリームの先頭位置として指定し、次ブロックの可変長符号ストリームの復号を開始させる。
【解決手段】 着目ブロックの符号化ストリームの先頭位置として指定された位置から可変長符号ストリームを読み出して復号する。着目ブロックの可変長符号ストリームの復号が完了すると、着目ブロックの準固定長データストリームのデータ長を計算する。準固定長データストリームの先頭位置からデータ長のぶんだけ後方の位置を、着目ブロックの次に復号する次ブロックの符号化ストリームの先頭位置として指定し、次ブロックの可変長符号ストリームの復号を開始させる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像の復号技術に関するものである。
【背景技術】
【0002】
近年の半導体技術の進歩は目覚ましく、多くのデジタルカメラで高精細な画像を撮影することが可能となり、これに伴い、撮影した画像のデータ量も増大してきている。デジタルカメラで撮影した画像の多くは、JPEG等の符号化方式で圧縮符号化後、記録メディアに記録される。そのため、撮影画像をデジタルカメラ本体のディスプレイなどで確認するためには、符号化された画像データを所定の手順で復号する必要がある。
【0003】
静止画の符号化方式はJPEG 符号化方式をはじめ、種々存在する。JPEG符号化では、画像データは予め定められたサイズの複数のブロックに分割される。このブロックを符号化の処理単位とし、ブロックを構成するデータには直交変換が施される。この直交変換後の変換係数には量子化、係数予測が順に施される。さらに、係数予測後のデータにはスキャン変換が施されることで、2次元データから有意係数(非零データ:レベル、Level)と非有意係数(零データ:ラン、Run)の零ランレングスとからなる1次元データへと変換される。このようにして並びかえられた1次元データからは、複数のシンタックス要素が生成され、各シンタックス要素がエントロピー符号化される。最後に、エントロピー符号化によって生成された符号を、所定の順序で連結することで符号化ストリームが生成される。
【0004】
近年、国際標準化されたJPEG XR符号化方式(以降は、JPEG XRと呼称する)の符号化では、図4に示すように、係数予測後の予測誤差(変換係数予測誤差)は、Signビット(フラグ)と絶対値に分割される。この絶対値はさらに上位データと下位データに分割され、それぞれが別々の方法で符号化される。
【0005】
上位データについては、適応スキャン変換を施してからRun/Levelシンタックス要素を生成し、その後、各シンタックス要素を可変長符号化し、符号化ストリームとして連結する。下位データには、適応固定長符号化がなされる。JPEG XRにおいて、直交変換後の変換係数は、DC係数、Low-pass(LP)係数、High-pass(HP)係数で構成されている。DC係数若しくはlowpass(LP)係数の下位データの適応固定長符号化部分はFLC refinementと呼称され、highpass(HP)係数の下位データの適応固定長符号化部分はflexbitsと呼称される。ここでは、FLC refinement及びflexbitsの両方を準固定長データとする。下位データは、準固定長データとして符号化ストリームに連結される。
【0006】
そのため、JPEG XRの復号においては、まずは可変長符号を復号し、そして準固定長データも復号しなければ、1ブロック分の変換係数予測誤差を得ることができない。また、可変長復号が完了するまで準固定長データの符号化ストリーム中の開始位置が特定できず、加えて準固定長データのデータ長(図4におけるModelbits)も可変長復号結果に応じて変化するため、可変長符号と準固定長データとを並列に復号することが困難であった。上記JPEG XRのような、複数の符号化方法が混在する符号化ストリームを、高速に復号する技術として、特許文献1、特許文献2が挙げられる。
【0007】
特許文献1に記載の復号装置は、複数の可変長符号復号部と、単一のFlexbits復号部を有し、可変長符号とFlexbitsとを並列に復号することで、復号処理を高速化している。しかしながら、JPEG XRでは、可変長符号化におけるシンタックス要素が多数存在するため、可変長符号復号部(以降は可変長復号部と呼称する)の回路規模は大きくなる。この可変長復号部を複数持つことは、その処理性能の向上と同時に、非常に大きな回路規模の増加をもたらすこととなる。
【0008】
また、特許文献2に記載の復号装置は、可変長復号部とFlexbits復号部をそれぞれ1つ有する。さらに符号化ストリーム中に含まれるタイルヘッダのスタートコードを識別し、この情報から可変長符号の開始位置とFlexbitsの開始位置を特定し、両者を並列に復号することで、復号処理を高速化している。しかしながらこれは、JPEG XRにおいて、2種類存在する符号化モード(Spatial : 空間モードとFrequency : 周波数モード)のうち、周波数モードで符号化された符号化ストリームの復号を前提としている。空間モードで符号化された符号化ストリームの場合、可変長符号とFlexbitsのそれぞれの開始位置を識別するためのヘッダが存在しないため、各符号の開始位置を特定することができない。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開2010-093522号公報
【特許文献2】特開2009-273106号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
以上のことから、従来技術をJPEG XR符号化ストリームの復号に適用した場合、可変長符号とFlexbitsの並列復号処理は可能となる。しかし、大きな回路規模の増加をもたらしてしまうか、或いは特定の符号化モードに限定されてしまうという問題がある。
【0011】
本発明はこのような問題に鑑みてなされたものであり、異なる符号化方法が混在して適用された符号化ストリームを、回路規模を増加させることなくより高速に復号する為の技術を提供することを目的とする。
【課題を解決するための手段】
【0012】
本発明の目的を達成するために、例えば、本発明の画像処理装置は、符号化データ配列の少なくとも一部において、可変長符号ストリームに後続して準固定長データストリームが配列された入力符号化ストリームをエントロピー復号する画像処理装置であって、前記入力符号化ストリーム中の着目可変長符号ストリームの先頭位置として指定された位置から、該着目可変長符号ストリームを読み出して復号する第1の復号手段と、前記着目可変長符号ストリームの復号の後、前記着目可変長符号ストリームに後続する着目準固定長データストリームを、前記入力符号化ストリームから読み出して復号する第2の復号手段と、前記着目可変長符号ストリームの復号の後、該復号結果を用いて前記着目準固定長データストリームのデータ長を決定する決定手段と、前記着目準固定長データストリームの先頭位置から前記データ長のぶんだけ後方の位置を、前記着目可変長符号ストリームの次に復号する次可変長符号ストリームの先頭位置とし、前記第1の復号手段に前記次可変長符号ストリームの復号を開始させる制御手段とを備えることを特徴とする。
【発明の効果】
【0013】
本発明の構成により、異なる符号化方法が混在して適用された符号化ストリームを、回路規模を増加させることなくより高速に復号することができる。
【図面の簡単な説明】
【0014】
【図1】第1の実施形態に係る画像処理装置の機能構成例を示すブロック図。
【図2】第1の実施形態に係る処理のタイミングチャート。
【図3】第1の実施形態の変形例に係る処理のタイミングチャート。
【図4】係数予測誤差の構成例を示す図。
【図5】spatial modeにおける符号化ストリームの構成を示す図。
【図6】JPEG XRにおけるブロックの構成の一例を示す図。
【図7】適応スキャン変換のスキャン変換順序(ScanOrder)の一例を示す図。
【図8】準固定長データストリームを示す図。
【図9】第2の実施形態に係る画像処理装置の機能構成例を示すブロック図。
【図10】第2の実施形態に係る処理のタイミングチャート。
【図11】第3の実施形態に係る画像処理装置の機能構成例を示すブロック図。
【図12】第4の実施形態に係る復号処理のフローチャート。
【図13】第4の実施形態に係る処理のタイミングチャート。
【図14】デジタルカメラの構成例を示す図。
【図15】復号部1413の機能構成例を示すブロック図。
【発明を実施するための形態】
【0015】
以下、添付図面を参照し、本発明の好適な実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載した構成の具体的な実施例の一つである。
【0016】
[各実施形態に共通の構成について]
以下の各実施形態が産業上利用され得る形態として、デジタルカメラやデジタルカムコーダが挙げられる。然るに、以下の各実施形態では、図14に示す構成を有するデジタルカメラ用LSIに内蔵される画像復号装置(画像処理装置)を例にとり説明する。
【0017】
被写体を含む外界からの光はレンズ142を介して撮像素子143に結像される。撮像素子143は、受光した光の強度に応じた電気信号(画像信号)を現像処理部1411に対して送出する。
【0018】
現像処理部1411は、この画像信号に対して画像補間処理や色変換処理等の周知の画像処理を施し、画像データとして符号化部1412に送出する。
【0019】
符号化部1412は、この画像データを符号化して符号化ストリームを生成する。そして符号化部1412は、この生成した符号化ストリームを、内部バス1418を介してメモり制御部1416もしくは外部記憶インターフェース部1417に対して送出する。
【0020】
メモり制御部1416は、主記憶部145に対するデータの読み書きを行うものであり、符号化部1412から符号化ストリームを受けると、この符号化ストリームを主記憶部145に書き込む。
【0021】
外部記憶インターフェース部1417は、外部記憶部146との間のインターフェースとして機能するものであり、符号化部1412から符号化ストリームを受けると、この符号化ストリームを外部記憶部146に書き込む。
【0022】
ここで、主記憶部145に書き込んだ符号化ストリームを復号して画像表示部144に表示する旨の指示が不図示の操作部から入力されたとする。この場合、メモり制御部1416は、指定された符号化ストリームを読み出し、内部バス1418を介して復号部1413に転送する。
【0023】
一方、外部記憶部146に書き込んだ符号化ストリームを復号して画像表示部144に表示する旨の指示が不図示の操作部から入力されたとする。この場合、外部記憶インターフェース部1417は、指定された符号化ストリームを読み出し、内部バス1418を介して復号部1413に転送する。
【0024】
復号部1413はメモり制御部1416もしくは外部記憶インターフェース部1417から受けた符号化ストリームを復号し、復号画像を画像表示制御部1414に対して送出する。
【0025】
画像表示制御部1414は、復号部1413から受けた復号画像をアナログ信号に変換し、変換したアナログ信号を画像表示部144に送出する。画像表示部144は液晶画面などにより構成されており、画像表示制御部1414から受けたアナログ信号に応じた画像、即ち本装置において復号された画像を表示する。
【0026】
上記の各部の動作制御はメインCPU1415によって行われる。もちろん、上記の各部のうち一部の機能部による処理(もしくはその一部)をメインCPU1415が担当するようにしてもよい。
【0027】
次に、復号部1413の機能構成例について、図15のブロック図を用いて説明する。上記の通り、復号部1413には内部バス1418を介して符号化ストリームが入力される。この符号化ストリームは先ず、エントロピー復号部151に入力される。
【0028】
エントロピー復号部151は、この入力された符号化ストリームをエントロピー復号し、エントロピー復号の結果として得られる変換係数予測誤差を逆スキャン変換部152に入力する。
【0029】
逆スキャン変換部152は、エントロピー復号部151から入力された変換係数予測誤差に対して周知の逆スキャン変換を行い、この変換した結果を、変換係数予測誤差として係数予測復号部153に入力する。
【0030】
係数予測復号部153は、逆スキャン変換部152から入力された変換係数予測誤差に予測誤差を加味して変換量子化係数を生成し、生成した変換量子化係数を逆量子化部154に入力する。
【0031】
逆量子化部154は、係数予測復号部153から入力された変換量子化係数に対して逆量子化を行い、逆量子化の結果として得られる変換係数を、逆直交変換部155に入力する。
【0032】
逆直交変換部155は、逆量子化部154から入力された変換係数に対して逆直交変換を行うことで画像を生成する。このように、復号部1413を構成する各部により、符号化ストリームから画像を復号することができる。
【0033】
ここで、図15において、係数予測が行われない場合、エントロピー復号部151の出力は変換量子化係数に相当する。さらに、逆量子化も行われない場合、エントロピー復号部151の出力は変換係数に相当する。すなわち、エントロピー復号部151は後段の処理に対応したデータを復号する。
【0034】
以下の各実施形態では、このエントロピー復号部151に適用可能な画像処理装置について説明する。また、以下の各実施形態では、主記憶部145、外部記憶部146、符号化部1412、等から得られる符号化ストリームを復号する場合について説明する。
【0035】
[第1の実施形態]
先ず、本実施形態に係る画像処理装置の機能構成例について、図1のブロック図を用いて説明する。
【0036】
読み出し部101には、JPEG XR符号化方式に従って符号化された入力符号化ストリームが入力される。読み出し部101は、着目ブロックの符号化ストリームの先頭位置として指定された入力符号化ストリーム中の位置から、変換係数予測誤差毎の上位データである可変長符号ストリームを読み出して可変長復号部102に出力する(読み出し部 出力1)。そして読み出し部101は着目ブロックの可変長符号ストリームの復号が完了すると、可変長符号ストリームに後続して隣接する、変換係数予測誤差毎の下位データである準固定長データストリームを入力符号化ストリームから読み出す。そして読み出し部101は、この読み出した準固定長データストリームを準固定長データ復号部103に出力する(読み出し部 出力2)。
【0037】
なお、読み出し部101は、リードポート、ライトポートを1つずつ有する構成を有してもよいし、2つずつ有する構成を有してもよい。即ち、読み出し部101は、上記のように、ブロックごとに可変長符号ストリーム、準固定長データストリームを読み出して出力することができるのであれば、如何なる構成を採用してもよい。
【0038】
可変長復号部102は、読み出し部101から送出された、着目ブロックの変換係数予測誤差毎の上位データ(図4における上位データ)である可変長符号ストリームを復号する(第1の復号)。そして可変長復号部102は、復号した変換係数予測誤差毎の上位データを出力すると共に、着目ブロックについて復号した変換係数予測誤差毎の上位データの符号長を読み出し部101に出力する。符号長は、該上位データを復号するたびに出力してもよいし、着目ブロックの全ての該上位データを復号し終わってからその合計符号長を出力してもよい。可変長復号部102は着目ブロックの可変長符号ストリームの復号が完了すると該復号により得られる該上位データの個数m、該変換係数予測誤差の上位データのうち有意の上位データの個数n(個数情報)を準固定長データストリーム長算出部104に出力する。
【0039】
変換係数予測誤差の有意の上位データの個数の計数は、着目ブロックの全ての上位データを復号し終わってから計数してもよいし、有意の上位データが登場するたびに計数してもよい。また、可変長復号部102は、有意の上位データを復号すると、着目ブロックにおける該有意の上位データの位置情報を準固定長データ復号部103に出力する。ここで、着目ブロックの可変長符号ストリームの復号によって得られる該上位データの個数mが、既知あるいは固定の場合は、準固定長データ復号部103に出力しなくともよい。
【0040】
準固定長データストリーム長算出部104は、可変長復号部102からの個数m及び個数n、そして1つの変換係数予測誤差の下位データのビット数Modelbits (0≦Modelbits≦15)(図4)を用いて以下の式を計算する。
【0041】
L=0 … Modelbits=0
L=Modelbits×m+(m−n) … Modelbits≠0
この計算式により、読み出し部101が準固定長データ復号部103に送出した、着目ブロックの準固定長データストリームのデータ長Lを計算することができる。そして準固定長データストリーム長算出部104は、この計算したデータ長(準固定長データストリーム長)Lを読み出し部101に対して出力する。
【0042】
これにより読み出し部101は、着目ブロックの準固定長データストリームの先頭位置からデータ長Lのぶんだけ後方の位置を、着目ブロックの次に復号する次ブロックの符号化ストリームの先頭位置として指定することができる。然るに読み出し部101は、この指定位置から入力符号化ストリームを読み出し、可変長符号ストリームについては可変長復号部102に出力し、可変長復号部102に次ブロックの可変長符号ストリームの復号を開始させる。
【0043】
次に、準固定長データ復号部103についての説明を行う。以下では一例として、入力符号化ストリームの構成が、spatial modeにおける符号化ストリームの構成である場合における準固定長データ復号部103の動作(第2の復号)について説明する。spatial modeにおける符号化ストリームの構成を図5に示す。
【0044】
JPEG XRでは、画像を複数のタイル(Tile)に分割し、このタイルを複数のマクロブロック(MacroBlock : MB)に分割する。各MB(MB1,MB2,MB3,…)の符号化ストリームはさらに、画像を直交変換することで得られるDC成分、LP(Lowpass)成分、HP(Highpass)成分、のそれぞれの符号化ストリームから構成される。HP成分はブロック(Block1,Block2,Block3,…)単位の符号化ストリームから構成される。各ブロックの符号化ストリームは、上位データを可変長符号化した可変長符号群からなる可変長符号ストリームと、下位データ群(準固定長データ、Flexbits)の符号化ストリームから構成される。CBP(Coded Block Pattern)は、ブロック単位に上位データの有意係数の有無を判別するための情報である。1ブロックの上位データがすべて非有意係数の場合、そのブロックの可変長符号ストリームは存在しない。そのため、どのブロックの可変長符号ストリームが符号化ストリーム中に存在するかはCBPを基に判別される。
【0045】
下位データの符号化ストリーム(準固定長データストリーム)は、準固定長データ(図5中の係数値)と、これに対応するSignビットと、が交互に連結される符号化ストリームの構成となっている。JPEG XRでは、有意な上位データに対しては、符号化した可変長データにSignビットをつけているため、非有意な上位データに対応する準固定長データにのみ、このSignビットがつく。
【0046】
したがって、準固定長データ復号部103は、Modelbitsの値と上位データの有意係数位置情報に基づき、上位データが非有意である場合は、準固定長データとSignフラグの両方を復号する。上位データが有意である場合は、準固定長データのみを復号する。復号したデータ長はその都度、読み出し部101へと出力する。なお、図1に示した各部は、不図示の制御部によって制御される。
【0047】
図1に示した各部の動作について、図2のタイミングチャートを例にとり説明する。
【0048】
時刻T1において、読み出し部101はブロック#1における可変長符号(VLC: Variable Length Code)#1の読み出しを開始し、「読み出し部 出力1」として可変長復号部102に出力する。これにより可変長復号部102は、この可変長符号#1の復号を開始する。
【0049】
時刻T2において、可変長復号部102は、復号した上位データの出力を開始し、時刻T3の時点で可変長復号部102は、可変長符号#1の全ての上位データの復号及び出力を完了する。また、時刻T3の時点で可変長復号部102は、可変長符号#1の復号で得られた上位データの数及びそのうちの有意な上位データ(有意係数)の数を準固定長データストリーム長算出部104に対して出力する。そして準固定長データストリーム長算出部104は、上記の通り、ブロック#1の準固定長データストリーム長Lを計算し、「ストリーム長算出部 出力」として読み出し部101に対して出力する。
【0050】
時刻T4において、読み出し部101は、ブロック#1における準固定長データ#1の読み出しを開始し、「読み出し部 出力2」として準固定長データ復号部103に出力する。これにより準固定長データ復号部103は、この準固定長データ#1の復号を開始する。また、読み出し部101は、ブロック#1の準固定長データ#1の先頭位置から準固定長データストリーム長Lのぶんだけ後方の位置を、ブロック#2の可変長符号#2の先頭位置として指定する。
【0051】
そして時刻T5において読み出し部101は、この指定位置からブロック#2の可変長符号#2の読み出しを開始し、「読み出し部 出力1」として可変長復号部102に出力する。これにより可変長復号部102は、この可変長符号#2の復号を開始する。
【0052】
時刻T6において、準固定長データ復号部103は、復号した準固定長データ#1の出力を開始する。時刻T7において、可変長復号部102は、復号した可変長符号#2の上位データの出力を開始する。
【0053】
そして時刻T7以降は、ブロック#1の準固定長データ#1と、ブロック#2の可変長符号#2とが並列に復号されるため、高速に復号を行うことができる。即ち、可変長復号部102と準固定長データ復号部103とは並列動作可能である。同様に、ブロック#2の準固定長データ#2と、ブロック#3の可変長符号#3とが並列に復号されるため、高速に復号を行うことができる。以降のブロックについても同様であるため、説明は省略する。
【0054】
このように、上記の構成によれば、ブロック#N(N番目のブロック)の準固定長データと、ブロック#(N+1)の可変長符号と、を並列に読み出して復号することが可能であるため、復号処理(エントロピー復号処理)を高速化することができる。
【0055】
なお、図1の構成において、準固定長データ復号部103を実質的に停止させて、可変長符号ストリームのみを復号するようにしてもかまわない。可変長符号ストリームのみを復号する場合における、図1の各部の動作を、図3のタイミングチャートに示す。
【0056】
図3のタイミングチャートでは、ブロック#1における可変長符号#1の復号が完了すると、準固定長データストリーム長算出部104は、ブロック#1の準固定長データストリーム長Lを計算する。そして、読み出し部101は、ブロック#1の準固定長データ#1の先頭位置から準固定長データストリーム長Lのぶんだけ後方の位置を、ブロック#2の可変長符号#2の先頭位置として指定する。可変長復号部102は、この指定位置からブロック#2の可変長符号#2を復号する。即ち、この場合、読み出し部101は、ブロック#1の可変長符号#1の読み出し後、準固定長データ#1の読み出しをスキップしてブロック#2の可変長符号#2を読み出すことになる。なお、読み出し部101は準固定長データを読み出して準固定長データ復号部103に送出するものの、準固定長データ復号部103は動作しない、という形態を採用してもよい。
【0057】
また、以上の説明では、簡略化のため、スキャン変換順序が既知の場合(有意係数位置情報が速やかに得られる場合)を説明した。しかし、JPEG XRの符号化においては、係数(図4の上位データ)の符号化順序を、有意係数の発生頻度に依存して、適宜入れ替えている。すなわち、係数をスキャンする(並び替える)順序を、この発生頻度に応じて適応的に変化させ、符号化効率を上げる工夫をしている。この手法を、適応スキャンと呼んでいる。
【0058】
然るに準固定長データ復号部103は、この適応スキャンに対応した復号を行う必要があるが、図2に示したタイミングと同一のタイミングで復号することが可能である。符号化時に行う、スキャン変換順序の決定方法はJPEG XRの勧告書に詳細に記載されているため、ここでは説明を省略し、ブロック毎のスキャン変換順序の情報に基づき、どのように準固定長データ復号部103で復号を行うのかについて説明する。
【0059】
JPEG XRにおけるブロックの構成の一例を図6(a)に示す。図6(a)に示す如く、1つのブロックは15個の変換係数から構成される。有意係数の位置情報は、図6(a)のブロックにおいて、何番目のアドレスに有意係数が存在するかを示す情報である。有意係数の位置情報は、可変長復号部102による復号結果である上位データに対して実施される適応スキャン変換(不図示)の順序を用いて生成する。
【0060】
適応スキャン変換のスキャン変換順序(ScanOrder)の一例を図7に示す。復号におけるスキャン変換順序は、係数復号順序情報に相当する。また、可変長復号によって図6(b)に示す復号結果が得られた場合に着目する。図6(b)において、有意係数のアドレスに1、非有意係数のアドレスに0を割り当てたものを図6(c)に示す。図6(c)をさらに図7のスキャン変換順序に基づいて並び替えることで、図6(d)に示す有意係数位置情報を生成する。
【0061】
一連の処理は後続するブロック#(N+1)の可変長符号の復号とも並行して実施可能である。すなわち、復号済みの上位データから、順次有意・非有意の判定をし、スキャン変換順序を考慮したアドレスに1,0を設定することが可能である。ここで、有意係数の位置情報を生成する機能は、可変長復号部102の外部に独立して設けてもよく、準固定長データ復号部103に設けてもよい。
【0062】
準固定長データ復号部103は、Modelbitsの値と、有意係数の位置情報に基づき、準固定長データを復号する。図6(d)に示す有意係数の位置情報を参照した場合、図8に示す準固定長データストリームを復号することとなる。図6(d)において、上位データが非有意であるアドレス(アドレス2、7、8、10、11、13、14、15)については、Signビット有りの準固定長データを復号する。上位データが有意であるその他のアドレスについては、Signビット無しの準固定長データを復号する。
【0063】
このような処理により、第1の実施形態は、適応スキャン変換の有無にかかわらず適用可能であることは明らかである。また、ブロックの復号完了から有意係数の位置情報の生成・出力までに数サイクルを要したとしても、第1の実施形態の効果がなんら損なわれることがないことも、また明らかである。
【0064】
また、第1の実施形態においては、準固定長データストリーム長算出部104を独立して設けている。しかしながら、準固定長データストリーム長算出部104と同等の機能を可変長復号部102や準固定長データ復号部103、読み出し部101に設けてもよい。
【0065】
なお、図1に示した構成は、HP(flexbitsを含む)のみの復号や、DC/LP(FLC refinementを含む)のみの復号に適用しても良い。いうまでもないが、この構成は、この両方の復号に適用してもかまわない。
【0066】
[第2の実施形態]
本実施形態に係る画像処理装置の機能構成例について、図9のブロック図を用いて説明する。図9に示す如く、本実施形態に係る画像処理装置は、準固定長データストリームを復号する復号部がk(≧2)個である点、変換係数予測誤差の有意の上位データの位置情報を記憶するための保持部を有する点が、第1の実施形態に係る画像処理装置と異なる。また、準固定長データストリームを復号する復号部がk個であるが故に、読み出し部901は、どの復号部に準固定長データストリームを送出するのかの切り替え制御を行うことになる。
【0067】
可変長復号部902、準固定長データストリーム長算出部904のそれぞれは、可変長復号部102、準固定長データストリーム長算出部104と同様の動作を行うものであるため、説明は省略する。
【0068】
有意係数位置情報保持部905は、可変長復号部902が1ブロック分の復号を完了すると、このブロック内における変換係数予測誤差の有意の上位データの位置を示す位置情報を格納するためのものである。この有意係数位置情報保持部905は、kブロック分の位置情報が格納可能な容量を有しているものとする。
【0069】
準固定長データ復号部903は、準固定長データ復号部1〜準固定長データ復号部kからなり、準固定長データ復号部1〜準固定長データ復号部kはそれぞれ、準固定長データ復号部103と同様の動作を行うもので、何れも並列動作可能である。
【0070】
例えば、ブロック#Nの準固定長データストリームと、ブロック#(N+1)の可変長符号ストリームとを並列に復号している場合に可変長復号が先に終了したとする。このような場合に、本実施形態によれば、ブロック#Nの準固定長データストリームの復号完了を待たずに、ブロック#(N+1)の準固定長データストリームの復号を開始する。
【0071】
以下ではk=2の場合、即ち準固定長データ復号部903が準固定長データ復号部1と準固定長データ復号部2とから成る場合に、図9の各部の動作について、図10のタイミングチャートを用いて説明する。なお、以下では、第1の実施形態と異なる点について重点的に説明し、同じ点については説明は省略する。
【0072】
時刻T1の時点で可変長復号部902はブロック#1の可変長符号#1を復号して出力完了しており、準固定長データストリーム長算出部904はブロック#1の準固定長データストリーム#1のデータ長Lを計算している。そして時刻T1にて読み出し部901は準固定長データ復号部1に対する準固定長データストリーム#1の出力を開始する。
【0073】
時刻T2にて読み出し部901は、可変長復号部902へのブロック#2の可変長符号#2の出力を開始する。時刻T1にて準固定長データ復号部1が復号を開始した準固定長データストリーム#1の復号結果は時刻T3から出力される。
【0074】
時刻T4から可変長復号部902による可変長符号#2の復号結果の出力が開始され、時刻T5にてこの出力は完了する。この時点で、準固定長データストリーム#1の復号及び出力は完了していない。
【0075】
そこで読み出し部901は、時刻T6から、準固定長データストリーム#2を、非動作中の復号部である準固定長データ復号部2に対して出力する。そして時刻T7にて準固定長データ復号部2は、準固定長データストリーム#2の復号結果の出力を開始する。また、ブロック#1,#2の準固定長データストリームの復号と並行して、ブロック#3の可変長符号も復号される。
【0076】
このように、k=2であれば、ブロック#Nの準固定長データストリーム、ブロック#(N+1)の準固定長データストリーム、ブロック#(N+2)の可変長符号を並列に復号することができ、第1の実施形態よりもさらに処理性能を高速化することができる。
【0077】
ここで、CBPによって各ブロックの可変長符号が存在しないことが明らかな場合、可変長復号部902の復号結果を待たずに、準固定長データの復号を開始することも可能である。可変長符号が存在しない場合、上位データの有意係数はすべて0であるので、準固定長データストリームのデータ長が算出可能となるからである。
【0078】
なお、以上の説明が、kが任意の値であったとしても同様に適用することができることは、いうまでもない。また、有意係数位置情報保持部905を準固定長データ復号部1〜準固定長データ復号部kのそれぞれに組み込んでもよい。
【0079】
[第3の実施形態]
本発明は、JPEG XR符号化の符号化フォーマットに限られるものではない。本実施形態に係る画像処理装置の機能構成例について、図11のブロック図を用いて説明する。本実施形態では、JPEG XR符号化以外の符号化方式に従って生成された符号化ストリームを復号する。例えば、ブロック#Nがすべて可変長符号化、続くブロック#(N+1)がすべて準固定長データとして符号化されている符号化ストリームの復号を行う。ここで準固定長データストリームのストリーム長(データ長)を計算するための情報(図11の準固定長データストリーム長算出情報)は、可変長符号を復号することで得られるものとする。例えば、ブロック#Nを復号することにより得られる準固定長データストリーム長算出情報は、これに続くブロック#(N+1)の準固定長データのデータ長を直接的に示すものであってもよい。何れにしろ、可変長符号データを復号した結果に基づいて、その可変長データに後続する準固定長データのデータ長を導き出せるような関係になっている符号化フォーマットに適用可能である。
【0080】
読み出し部1101,可変長復号部1102はそれぞれ、読み出し部101、可変長復号部102と同様の動作を行うが、可変長復号部1102は、有意の変換係数予測誤差の個数、有意の変換係数予測誤差の位置、については出力しない。
【0081】
準固定長データ復号部1103は準固定長データ復号部103と同様にして準固定長データストリームを復号するが、その際、有意の変換係数予測誤差の位置情報は使用しない。準固定長データストリーム長算出部1104は、準固定長データストリーム長算出部104と同様に動作し、個々の準固定長データストリーム長を算出する。
【0082】
第3の実施形態では、可変長復号部1102、準固定長データ復号部1103の復号結果は、変換係数予測誤差であるとしているが、変換係数予測誤差である必要はない。後段の処理に応じた復号結果であればよい。また、準固定長データストリーム長算出情報が可変長復号部1102ではなく、不図示の外部から与えられる構成としてもよい。
【0083】
以上の説明により、本実施形態によれば、準固定長データストリーム長が可変長符号の復号結果から決定される符号化ストリームの復号においても、ブロック#Nの準固定長データと、ブロック#(N+1)の可変長符号とを並列に復号可能である。もちろん、この符号化ストリームは、JPEG XR符号化以外の符号化方式に従って生成された符号化ストリームである。
【0084】
処理のタイミングチャートは図2と同様である。いうまでもなく、準固定長データの個々のデータ長が一定の場合(固定長データの場合)にも、本実施形態では並列に復号可能である。
【0085】
即ち、入力符号化ストリームが如何なる符号化方式で符号化されていたとしても、次のような入力符号化ストリームであれば、上述した効率の良いエントロピー復号処理を行うことができる。即ち、少なくとも一部のストリーム配列において、可変長符号ストリームに後続して準固定長データストリームが並んでいる入力符号化ストリームであれば、上述した効率の良いエントロピー復号処理を行うことができる。若しくは符号化データ配列の少なくとも一部において少なくとも一部のストリーム配列において、可変長符号ストリームと準固定長データストリームが交互に並んでいる入力符号化ストリームであれば上述した効率の良いエントロピー復号処理を行うことができる。
【0086】
このような入力符号化ストリームに対してエントロピー復号処理を行う画像処理装置は以下のように動作する。
【0087】
先ず、入力符号化ストリーム中の着目可変長符号ストリームの先頭位置として指定された位置から、該着目可変長符号ストリームを読み出して復号する。この復号が完了すると、着目可変長符号ストリームに後続する着目準固定長データストリームを入力符号化ストリームから読み出して復号する。更に、着目可変長符号ストリームの復号が完了すると、該復号結果を用いて着目準固定長データストリームのデータ長を決定する。例えば、この復号により得られる変換係数の個数、該変換係数のうち有意の変換係数の個数、1つの変換係数のビット数、を用いて着目準固定長データストリームのデータ長を計算する。そして、着目準固定長データストリームの先頭位置からデータ長だけ後方の位置を、着目可変長符号ストリームの次に復号する次可変長符号ストリームの先頭位置として指定し、次可変長符号ストリームの復号を開始させる。
【0088】
[第4の実施形態]
本実施形態では、上記の実施形態で説明したような画像処理装置の機能を、マルチコアCPUを持つPCや、組み込み機器向けマルチコアCPU上で動作するソフトウェア(JPEG XRデコーダ)として実装した場合について説明する。この場合、例えば、図14に示したメインCPU1415によってこのソフトウェアを実行してもよい。
【0089】
上記の実施形態で説明したような画像処理装置の機能をソフトウェアにより実装した場合に、このソフトウェアを実行する装置が行う処理について、同処理のフローチャートを示す図12を用いて説明する。なお、図12に示した各ステップにおける処理の主体は何れも、この装置のCPUである。
【0090】
ブロック#Nの符号化ストリームが取得可能であれば、処理はステップS101を介してステップS102に進む。ステップS102では、可変長符号#Nの復号処理のスレッドを起動し、ステップS103では、ブロック#Nの符号化ストリームから可変長符号#Nを読み出して復号する。この復号が完了するまでステップS103の処理を続け、この復号が完了すると処理はステップS104を介してステップS105に進む。
【0091】
ステップS105では、準固定長データストリーム#Nの準固定長データストリーム長を算出し、ステップS106では、ステップS102で起動したスレッドを終了させる。
【0092】
ステップS106の後は、ステップS107における処理と、ステップS108以降の処理を行う。ステップS107では変数Nを1つインクリメントすることで、次のブロックについてステップS101以降の処理を行う。
【0093】
ステップS108では、OS(Operating system)等から割り当てられた利用可能なスレッド数と、現在実行中のスレッド数と、を比較する。そして、利用可能なスレッドを全て使用しているのであればステップS108で待機し、利用可能なスレッドのうち使用していないスレッドが1以上あれば、処理はステップS108を介してステップS109に進む。
【0094】
ステップS109では、準固定長データストリーム#Nの復号処理のスレッドを起動し、ステップS110では、ブロック#Nの符号化ストリームから準固定長データストリーム#Nを読み出して復号する。この復号が完了するまでステップS110の処理を続け、この復号が完了すると処理はステップS111を介してステップS112に進む。ステップS112では、ステップS109で起動したスレッドを終了させる。
【0095】
各スレッドがそれぞれ別個のCPUコア上で動作可能であれば、ブロック#Nの準固定長データと、ブロック#(N+1)の可変長符号を並列に復号することが可能である。また、第2の実施形態の場合と同様に、ブロック#Nの準固定長データと、ブロック#(N+1)以降のブロックの準固定長データを並列に復号することも可能である。
【0096】
図12のフローチャートに従った処理のタイミングチャートを図13に示す。時刻T0(ステップS102)においてブロック#Nの符号化ストリームが取得可能であれば、可変長符号#Nの復号処理のスレッドを起動する。そして、ブロック#Nの符号化ストリームから可変長符号#Nを読み出して復号すると共に、準固定長データストリーム#Nの準固定長データストリーム長を算出する。そしてこのスレッドは時刻T1(ステップS106)にて終了する。
【0097】
その後、時刻T2(ステップS109)にて、準固定長データストリーム#Nの復号処理のスレッドを起動し、ブロック#Nの符号化ストリームから準固定長データストリーム#Nを読み出して復号する。また、時刻T3(ステップS102)においてブロック#(N+1)の符号化ストリームが取得可能であれば、可変長符号#(N+1)の復号処理のスレッドを起動する。そして、ブロック#(N+1)の符号化ストリームから可変長符号#(N+1)を読み出して復号すると共に、準固定長データストリーム#(N+1)の準固定長データストリーム長を算出する。そしてこのスレッドは時刻T4(ステップS106)にて終了する。この時点でまだ、準固定長データストリーム#Nの復号処理は完了していない。
【0098】
時刻T5(ステップS109)にて、準固定長データストリーム#(N+1)の復号処理のスレッドを起動し、ブロック#(N+1)の符号化ストリームから準固定長データストリーム#(N+1)を読み出して復号する。もちろん、ステップS108にて利用可能なスレッドのうち使用していないスレッドが1以上あると判断し、且つ準固定長データストリーム#(N+1)が読み出し可能である場合に、この処理は行われる。
【0099】
また、時刻T6(ステップS102)においてブロック#(N+2)の符号化ストリームが取得可能であれば、可変長符号#(N+2)の復号処理のスレッドを起動する。そして、ブロック#(N+2)の符号化ストリームから可変長符号#(N+2)を読み出して復号すると共に、準固定長データストリーム#(N+2)の準固定長データストリーム長を算出する。
【0100】
したがって、時刻T6以降は、ブロック#Nの準固定長データ、ブロック#(N+1)の準固定長データ、ブロック#(N+2)の可変長符号を並列に復号することになる。言うまでもなく、準固定長データの並列復号は2ブロックに限定されるものではない。準固定長データストリーム長算出方法、及び、準固定長データの復号時に必要となる有意係数位置情報の生成方法は、第1の実施形態のそれが適用可能である。
【0101】
以上、デジタルカメラへの適用を示し、さらにJPEG XR符号化方式について、第1〜4の実施形態として説明した。しかし、適用範囲は、デジタルカメラに限定されるものではなく、また、JPEG XR符号化方式に限定されるものではないことは明らかである。
【0102】
また、図1,9,11に示した各部のうち、有意係数位置情報保持部905以外の各部の一部もしくは全部をソフトウェア(コンピュータプログラム)として実装してもよい。特に、ソフトウェアで実行する場合、第4の実施形態で示したように、可変長符号復号と、準固定長データ復号をマルチスレッドとして実行すれば良い。
【0103】
(その他の実施例)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
【技術分野】
【0001】
本発明は、画像の復号技術に関するものである。
【背景技術】
【0002】
近年の半導体技術の進歩は目覚ましく、多くのデジタルカメラで高精細な画像を撮影することが可能となり、これに伴い、撮影した画像のデータ量も増大してきている。デジタルカメラで撮影した画像の多くは、JPEG等の符号化方式で圧縮符号化後、記録メディアに記録される。そのため、撮影画像をデジタルカメラ本体のディスプレイなどで確認するためには、符号化された画像データを所定の手順で復号する必要がある。
【0003】
静止画の符号化方式はJPEG 符号化方式をはじめ、種々存在する。JPEG符号化では、画像データは予め定められたサイズの複数のブロックに分割される。このブロックを符号化の処理単位とし、ブロックを構成するデータには直交変換が施される。この直交変換後の変換係数には量子化、係数予測が順に施される。さらに、係数予測後のデータにはスキャン変換が施されることで、2次元データから有意係数(非零データ:レベル、Level)と非有意係数(零データ:ラン、Run)の零ランレングスとからなる1次元データへと変換される。このようにして並びかえられた1次元データからは、複数のシンタックス要素が生成され、各シンタックス要素がエントロピー符号化される。最後に、エントロピー符号化によって生成された符号を、所定の順序で連結することで符号化ストリームが生成される。
【0004】
近年、国際標準化されたJPEG XR符号化方式(以降は、JPEG XRと呼称する)の符号化では、図4に示すように、係数予測後の予測誤差(変換係数予測誤差)は、Signビット(フラグ)と絶対値に分割される。この絶対値はさらに上位データと下位データに分割され、それぞれが別々の方法で符号化される。
【0005】
上位データについては、適応スキャン変換を施してからRun/Levelシンタックス要素を生成し、その後、各シンタックス要素を可変長符号化し、符号化ストリームとして連結する。下位データには、適応固定長符号化がなされる。JPEG XRにおいて、直交変換後の変換係数は、DC係数、Low-pass(LP)係数、High-pass(HP)係数で構成されている。DC係数若しくはlowpass(LP)係数の下位データの適応固定長符号化部分はFLC refinementと呼称され、highpass(HP)係数の下位データの適応固定長符号化部分はflexbitsと呼称される。ここでは、FLC refinement及びflexbitsの両方を準固定長データとする。下位データは、準固定長データとして符号化ストリームに連結される。
【0006】
そのため、JPEG XRの復号においては、まずは可変長符号を復号し、そして準固定長データも復号しなければ、1ブロック分の変換係数予測誤差を得ることができない。また、可変長復号が完了するまで準固定長データの符号化ストリーム中の開始位置が特定できず、加えて準固定長データのデータ長(図4におけるModelbits)も可変長復号結果に応じて変化するため、可変長符号と準固定長データとを並列に復号することが困難であった。上記JPEG XRのような、複数の符号化方法が混在する符号化ストリームを、高速に復号する技術として、特許文献1、特許文献2が挙げられる。
【0007】
特許文献1に記載の復号装置は、複数の可変長符号復号部と、単一のFlexbits復号部を有し、可変長符号とFlexbitsとを並列に復号することで、復号処理を高速化している。しかしながら、JPEG XRでは、可変長符号化におけるシンタックス要素が多数存在するため、可変長符号復号部(以降は可変長復号部と呼称する)の回路規模は大きくなる。この可変長復号部を複数持つことは、その処理性能の向上と同時に、非常に大きな回路規模の増加をもたらすこととなる。
【0008】
また、特許文献2に記載の復号装置は、可変長復号部とFlexbits復号部をそれぞれ1つ有する。さらに符号化ストリーム中に含まれるタイルヘッダのスタートコードを識別し、この情報から可変長符号の開始位置とFlexbitsの開始位置を特定し、両者を並列に復号することで、復号処理を高速化している。しかしながらこれは、JPEG XRにおいて、2種類存在する符号化モード(Spatial : 空間モードとFrequency : 周波数モード)のうち、周波数モードで符号化された符号化ストリームの復号を前提としている。空間モードで符号化された符号化ストリームの場合、可変長符号とFlexbitsのそれぞれの開始位置を識別するためのヘッダが存在しないため、各符号の開始位置を特定することができない。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開2010-093522号公報
【特許文献2】特開2009-273106号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
以上のことから、従来技術をJPEG XR符号化ストリームの復号に適用した場合、可変長符号とFlexbitsの並列復号処理は可能となる。しかし、大きな回路規模の増加をもたらしてしまうか、或いは特定の符号化モードに限定されてしまうという問題がある。
【0011】
本発明はこのような問題に鑑みてなされたものであり、異なる符号化方法が混在して適用された符号化ストリームを、回路規模を増加させることなくより高速に復号する為の技術を提供することを目的とする。
【課題を解決するための手段】
【0012】
本発明の目的を達成するために、例えば、本発明の画像処理装置は、符号化データ配列の少なくとも一部において、可変長符号ストリームに後続して準固定長データストリームが配列された入力符号化ストリームをエントロピー復号する画像処理装置であって、前記入力符号化ストリーム中の着目可変長符号ストリームの先頭位置として指定された位置から、該着目可変長符号ストリームを読み出して復号する第1の復号手段と、前記着目可変長符号ストリームの復号の後、前記着目可変長符号ストリームに後続する着目準固定長データストリームを、前記入力符号化ストリームから読み出して復号する第2の復号手段と、前記着目可変長符号ストリームの復号の後、該復号結果を用いて前記着目準固定長データストリームのデータ長を決定する決定手段と、前記着目準固定長データストリームの先頭位置から前記データ長のぶんだけ後方の位置を、前記着目可変長符号ストリームの次に復号する次可変長符号ストリームの先頭位置とし、前記第1の復号手段に前記次可変長符号ストリームの復号を開始させる制御手段とを備えることを特徴とする。
【発明の効果】
【0013】
本発明の構成により、異なる符号化方法が混在して適用された符号化ストリームを、回路規模を増加させることなくより高速に復号することができる。
【図面の簡単な説明】
【0014】
【図1】第1の実施形態に係る画像処理装置の機能構成例を示すブロック図。
【図2】第1の実施形態に係る処理のタイミングチャート。
【図3】第1の実施形態の変形例に係る処理のタイミングチャート。
【図4】係数予測誤差の構成例を示す図。
【図5】spatial modeにおける符号化ストリームの構成を示す図。
【図6】JPEG XRにおけるブロックの構成の一例を示す図。
【図7】適応スキャン変換のスキャン変換順序(ScanOrder)の一例を示す図。
【図8】準固定長データストリームを示す図。
【図9】第2の実施形態に係る画像処理装置の機能構成例を示すブロック図。
【図10】第2の実施形態に係る処理のタイミングチャート。
【図11】第3の実施形態に係る画像処理装置の機能構成例を示すブロック図。
【図12】第4の実施形態に係る復号処理のフローチャート。
【図13】第4の実施形態に係る処理のタイミングチャート。
【図14】デジタルカメラの構成例を示す図。
【図15】復号部1413の機能構成例を示すブロック図。
【発明を実施するための形態】
【0015】
以下、添付図面を参照し、本発明の好適な実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載した構成の具体的な実施例の一つである。
【0016】
[各実施形態に共通の構成について]
以下の各実施形態が産業上利用され得る形態として、デジタルカメラやデジタルカムコーダが挙げられる。然るに、以下の各実施形態では、図14に示す構成を有するデジタルカメラ用LSIに内蔵される画像復号装置(画像処理装置)を例にとり説明する。
【0017】
被写体を含む外界からの光はレンズ142を介して撮像素子143に結像される。撮像素子143は、受光した光の強度に応じた電気信号(画像信号)を現像処理部1411に対して送出する。
【0018】
現像処理部1411は、この画像信号に対して画像補間処理や色変換処理等の周知の画像処理を施し、画像データとして符号化部1412に送出する。
【0019】
符号化部1412は、この画像データを符号化して符号化ストリームを生成する。そして符号化部1412は、この生成した符号化ストリームを、内部バス1418を介してメモり制御部1416もしくは外部記憶インターフェース部1417に対して送出する。
【0020】
メモり制御部1416は、主記憶部145に対するデータの読み書きを行うものであり、符号化部1412から符号化ストリームを受けると、この符号化ストリームを主記憶部145に書き込む。
【0021】
外部記憶インターフェース部1417は、外部記憶部146との間のインターフェースとして機能するものであり、符号化部1412から符号化ストリームを受けると、この符号化ストリームを外部記憶部146に書き込む。
【0022】
ここで、主記憶部145に書き込んだ符号化ストリームを復号して画像表示部144に表示する旨の指示が不図示の操作部から入力されたとする。この場合、メモり制御部1416は、指定された符号化ストリームを読み出し、内部バス1418を介して復号部1413に転送する。
【0023】
一方、外部記憶部146に書き込んだ符号化ストリームを復号して画像表示部144に表示する旨の指示が不図示の操作部から入力されたとする。この場合、外部記憶インターフェース部1417は、指定された符号化ストリームを読み出し、内部バス1418を介して復号部1413に転送する。
【0024】
復号部1413はメモり制御部1416もしくは外部記憶インターフェース部1417から受けた符号化ストリームを復号し、復号画像を画像表示制御部1414に対して送出する。
【0025】
画像表示制御部1414は、復号部1413から受けた復号画像をアナログ信号に変換し、変換したアナログ信号を画像表示部144に送出する。画像表示部144は液晶画面などにより構成されており、画像表示制御部1414から受けたアナログ信号に応じた画像、即ち本装置において復号された画像を表示する。
【0026】
上記の各部の動作制御はメインCPU1415によって行われる。もちろん、上記の各部のうち一部の機能部による処理(もしくはその一部)をメインCPU1415が担当するようにしてもよい。
【0027】
次に、復号部1413の機能構成例について、図15のブロック図を用いて説明する。上記の通り、復号部1413には内部バス1418を介して符号化ストリームが入力される。この符号化ストリームは先ず、エントロピー復号部151に入力される。
【0028】
エントロピー復号部151は、この入力された符号化ストリームをエントロピー復号し、エントロピー復号の結果として得られる変換係数予測誤差を逆スキャン変換部152に入力する。
【0029】
逆スキャン変換部152は、エントロピー復号部151から入力された変換係数予測誤差に対して周知の逆スキャン変換を行い、この変換した結果を、変換係数予測誤差として係数予測復号部153に入力する。
【0030】
係数予測復号部153は、逆スキャン変換部152から入力された変換係数予測誤差に予測誤差を加味して変換量子化係数を生成し、生成した変換量子化係数を逆量子化部154に入力する。
【0031】
逆量子化部154は、係数予測復号部153から入力された変換量子化係数に対して逆量子化を行い、逆量子化の結果として得られる変換係数を、逆直交変換部155に入力する。
【0032】
逆直交変換部155は、逆量子化部154から入力された変換係数に対して逆直交変換を行うことで画像を生成する。このように、復号部1413を構成する各部により、符号化ストリームから画像を復号することができる。
【0033】
ここで、図15において、係数予測が行われない場合、エントロピー復号部151の出力は変換量子化係数に相当する。さらに、逆量子化も行われない場合、エントロピー復号部151の出力は変換係数に相当する。すなわち、エントロピー復号部151は後段の処理に対応したデータを復号する。
【0034】
以下の各実施形態では、このエントロピー復号部151に適用可能な画像処理装置について説明する。また、以下の各実施形態では、主記憶部145、外部記憶部146、符号化部1412、等から得られる符号化ストリームを復号する場合について説明する。
【0035】
[第1の実施形態]
先ず、本実施形態に係る画像処理装置の機能構成例について、図1のブロック図を用いて説明する。
【0036】
読み出し部101には、JPEG XR符号化方式に従って符号化された入力符号化ストリームが入力される。読み出し部101は、着目ブロックの符号化ストリームの先頭位置として指定された入力符号化ストリーム中の位置から、変換係数予測誤差毎の上位データである可変長符号ストリームを読み出して可変長復号部102に出力する(読み出し部 出力1)。そして読み出し部101は着目ブロックの可変長符号ストリームの復号が完了すると、可変長符号ストリームに後続して隣接する、変換係数予測誤差毎の下位データである準固定長データストリームを入力符号化ストリームから読み出す。そして読み出し部101は、この読み出した準固定長データストリームを準固定長データ復号部103に出力する(読み出し部 出力2)。
【0037】
なお、読み出し部101は、リードポート、ライトポートを1つずつ有する構成を有してもよいし、2つずつ有する構成を有してもよい。即ち、読み出し部101は、上記のように、ブロックごとに可変長符号ストリーム、準固定長データストリームを読み出して出力することができるのであれば、如何なる構成を採用してもよい。
【0038】
可変長復号部102は、読み出し部101から送出された、着目ブロックの変換係数予測誤差毎の上位データ(図4における上位データ)である可変長符号ストリームを復号する(第1の復号)。そして可変長復号部102は、復号した変換係数予測誤差毎の上位データを出力すると共に、着目ブロックについて復号した変換係数予測誤差毎の上位データの符号長を読み出し部101に出力する。符号長は、該上位データを復号するたびに出力してもよいし、着目ブロックの全ての該上位データを復号し終わってからその合計符号長を出力してもよい。可変長復号部102は着目ブロックの可変長符号ストリームの復号が完了すると該復号により得られる該上位データの個数m、該変換係数予測誤差の上位データのうち有意の上位データの個数n(個数情報)を準固定長データストリーム長算出部104に出力する。
【0039】
変換係数予測誤差の有意の上位データの個数の計数は、着目ブロックの全ての上位データを復号し終わってから計数してもよいし、有意の上位データが登場するたびに計数してもよい。また、可変長復号部102は、有意の上位データを復号すると、着目ブロックにおける該有意の上位データの位置情報を準固定長データ復号部103に出力する。ここで、着目ブロックの可変長符号ストリームの復号によって得られる該上位データの個数mが、既知あるいは固定の場合は、準固定長データ復号部103に出力しなくともよい。
【0040】
準固定長データストリーム長算出部104は、可変長復号部102からの個数m及び個数n、そして1つの変換係数予測誤差の下位データのビット数Modelbits (0≦Modelbits≦15)(図4)を用いて以下の式を計算する。
【0041】
L=0 … Modelbits=0
L=Modelbits×m+(m−n) … Modelbits≠0
この計算式により、読み出し部101が準固定長データ復号部103に送出した、着目ブロックの準固定長データストリームのデータ長Lを計算することができる。そして準固定長データストリーム長算出部104は、この計算したデータ長(準固定長データストリーム長)Lを読み出し部101に対して出力する。
【0042】
これにより読み出し部101は、着目ブロックの準固定長データストリームの先頭位置からデータ長Lのぶんだけ後方の位置を、着目ブロックの次に復号する次ブロックの符号化ストリームの先頭位置として指定することができる。然るに読み出し部101は、この指定位置から入力符号化ストリームを読み出し、可変長符号ストリームについては可変長復号部102に出力し、可変長復号部102に次ブロックの可変長符号ストリームの復号を開始させる。
【0043】
次に、準固定長データ復号部103についての説明を行う。以下では一例として、入力符号化ストリームの構成が、spatial modeにおける符号化ストリームの構成である場合における準固定長データ復号部103の動作(第2の復号)について説明する。spatial modeにおける符号化ストリームの構成を図5に示す。
【0044】
JPEG XRでは、画像を複数のタイル(Tile)に分割し、このタイルを複数のマクロブロック(MacroBlock : MB)に分割する。各MB(MB1,MB2,MB3,…)の符号化ストリームはさらに、画像を直交変換することで得られるDC成分、LP(Lowpass)成分、HP(Highpass)成分、のそれぞれの符号化ストリームから構成される。HP成分はブロック(Block1,Block2,Block3,…)単位の符号化ストリームから構成される。各ブロックの符号化ストリームは、上位データを可変長符号化した可変長符号群からなる可変長符号ストリームと、下位データ群(準固定長データ、Flexbits)の符号化ストリームから構成される。CBP(Coded Block Pattern)は、ブロック単位に上位データの有意係数の有無を判別するための情報である。1ブロックの上位データがすべて非有意係数の場合、そのブロックの可変長符号ストリームは存在しない。そのため、どのブロックの可変長符号ストリームが符号化ストリーム中に存在するかはCBPを基に判別される。
【0045】
下位データの符号化ストリーム(準固定長データストリーム)は、準固定長データ(図5中の係数値)と、これに対応するSignビットと、が交互に連結される符号化ストリームの構成となっている。JPEG XRでは、有意な上位データに対しては、符号化した可変長データにSignビットをつけているため、非有意な上位データに対応する準固定長データにのみ、このSignビットがつく。
【0046】
したがって、準固定長データ復号部103は、Modelbitsの値と上位データの有意係数位置情報に基づき、上位データが非有意である場合は、準固定長データとSignフラグの両方を復号する。上位データが有意である場合は、準固定長データのみを復号する。復号したデータ長はその都度、読み出し部101へと出力する。なお、図1に示した各部は、不図示の制御部によって制御される。
【0047】
図1に示した各部の動作について、図2のタイミングチャートを例にとり説明する。
【0048】
時刻T1において、読み出し部101はブロック#1における可変長符号(VLC: Variable Length Code)#1の読み出しを開始し、「読み出し部 出力1」として可変長復号部102に出力する。これにより可変長復号部102は、この可変長符号#1の復号を開始する。
【0049】
時刻T2において、可変長復号部102は、復号した上位データの出力を開始し、時刻T3の時点で可変長復号部102は、可変長符号#1の全ての上位データの復号及び出力を完了する。また、時刻T3の時点で可変長復号部102は、可変長符号#1の復号で得られた上位データの数及びそのうちの有意な上位データ(有意係数)の数を準固定長データストリーム長算出部104に対して出力する。そして準固定長データストリーム長算出部104は、上記の通り、ブロック#1の準固定長データストリーム長Lを計算し、「ストリーム長算出部 出力」として読み出し部101に対して出力する。
【0050】
時刻T4において、読み出し部101は、ブロック#1における準固定長データ#1の読み出しを開始し、「読み出し部 出力2」として準固定長データ復号部103に出力する。これにより準固定長データ復号部103は、この準固定長データ#1の復号を開始する。また、読み出し部101は、ブロック#1の準固定長データ#1の先頭位置から準固定長データストリーム長Lのぶんだけ後方の位置を、ブロック#2の可変長符号#2の先頭位置として指定する。
【0051】
そして時刻T5において読み出し部101は、この指定位置からブロック#2の可変長符号#2の読み出しを開始し、「読み出し部 出力1」として可変長復号部102に出力する。これにより可変長復号部102は、この可変長符号#2の復号を開始する。
【0052】
時刻T6において、準固定長データ復号部103は、復号した準固定長データ#1の出力を開始する。時刻T7において、可変長復号部102は、復号した可変長符号#2の上位データの出力を開始する。
【0053】
そして時刻T7以降は、ブロック#1の準固定長データ#1と、ブロック#2の可変長符号#2とが並列に復号されるため、高速に復号を行うことができる。即ち、可変長復号部102と準固定長データ復号部103とは並列動作可能である。同様に、ブロック#2の準固定長データ#2と、ブロック#3の可変長符号#3とが並列に復号されるため、高速に復号を行うことができる。以降のブロックについても同様であるため、説明は省略する。
【0054】
このように、上記の構成によれば、ブロック#N(N番目のブロック)の準固定長データと、ブロック#(N+1)の可変長符号と、を並列に読み出して復号することが可能であるため、復号処理(エントロピー復号処理)を高速化することができる。
【0055】
なお、図1の構成において、準固定長データ復号部103を実質的に停止させて、可変長符号ストリームのみを復号するようにしてもかまわない。可変長符号ストリームのみを復号する場合における、図1の各部の動作を、図3のタイミングチャートに示す。
【0056】
図3のタイミングチャートでは、ブロック#1における可変長符号#1の復号が完了すると、準固定長データストリーム長算出部104は、ブロック#1の準固定長データストリーム長Lを計算する。そして、読み出し部101は、ブロック#1の準固定長データ#1の先頭位置から準固定長データストリーム長Lのぶんだけ後方の位置を、ブロック#2の可変長符号#2の先頭位置として指定する。可変長復号部102は、この指定位置からブロック#2の可変長符号#2を復号する。即ち、この場合、読み出し部101は、ブロック#1の可変長符号#1の読み出し後、準固定長データ#1の読み出しをスキップしてブロック#2の可変長符号#2を読み出すことになる。なお、読み出し部101は準固定長データを読み出して準固定長データ復号部103に送出するものの、準固定長データ復号部103は動作しない、という形態を採用してもよい。
【0057】
また、以上の説明では、簡略化のため、スキャン変換順序が既知の場合(有意係数位置情報が速やかに得られる場合)を説明した。しかし、JPEG XRの符号化においては、係数(図4の上位データ)の符号化順序を、有意係数の発生頻度に依存して、適宜入れ替えている。すなわち、係数をスキャンする(並び替える)順序を、この発生頻度に応じて適応的に変化させ、符号化効率を上げる工夫をしている。この手法を、適応スキャンと呼んでいる。
【0058】
然るに準固定長データ復号部103は、この適応スキャンに対応した復号を行う必要があるが、図2に示したタイミングと同一のタイミングで復号することが可能である。符号化時に行う、スキャン変換順序の決定方法はJPEG XRの勧告書に詳細に記載されているため、ここでは説明を省略し、ブロック毎のスキャン変換順序の情報に基づき、どのように準固定長データ復号部103で復号を行うのかについて説明する。
【0059】
JPEG XRにおけるブロックの構成の一例を図6(a)に示す。図6(a)に示す如く、1つのブロックは15個の変換係数から構成される。有意係数の位置情報は、図6(a)のブロックにおいて、何番目のアドレスに有意係数が存在するかを示す情報である。有意係数の位置情報は、可変長復号部102による復号結果である上位データに対して実施される適応スキャン変換(不図示)の順序を用いて生成する。
【0060】
適応スキャン変換のスキャン変換順序(ScanOrder)の一例を図7に示す。復号におけるスキャン変換順序は、係数復号順序情報に相当する。また、可変長復号によって図6(b)に示す復号結果が得られた場合に着目する。図6(b)において、有意係数のアドレスに1、非有意係数のアドレスに0を割り当てたものを図6(c)に示す。図6(c)をさらに図7のスキャン変換順序に基づいて並び替えることで、図6(d)に示す有意係数位置情報を生成する。
【0061】
一連の処理は後続するブロック#(N+1)の可変長符号の復号とも並行して実施可能である。すなわち、復号済みの上位データから、順次有意・非有意の判定をし、スキャン変換順序を考慮したアドレスに1,0を設定することが可能である。ここで、有意係数の位置情報を生成する機能は、可変長復号部102の外部に独立して設けてもよく、準固定長データ復号部103に設けてもよい。
【0062】
準固定長データ復号部103は、Modelbitsの値と、有意係数の位置情報に基づき、準固定長データを復号する。図6(d)に示す有意係数の位置情報を参照した場合、図8に示す準固定長データストリームを復号することとなる。図6(d)において、上位データが非有意であるアドレス(アドレス2、7、8、10、11、13、14、15)については、Signビット有りの準固定長データを復号する。上位データが有意であるその他のアドレスについては、Signビット無しの準固定長データを復号する。
【0063】
このような処理により、第1の実施形態は、適応スキャン変換の有無にかかわらず適用可能であることは明らかである。また、ブロックの復号完了から有意係数の位置情報の生成・出力までに数サイクルを要したとしても、第1の実施形態の効果がなんら損なわれることがないことも、また明らかである。
【0064】
また、第1の実施形態においては、準固定長データストリーム長算出部104を独立して設けている。しかしながら、準固定長データストリーム長算出部104と同等の機能を可変長復号部102や準固定長データ復号部103、読み出し部101に設けてもよい。
【0065】
なお、図1に示した構成は、HP(flexbitsを含む)のみの復号や、DC/LP(FLC refinementを含む)のみの復号に適用しても良い。いうまでもないが、この構成は、この両方の復号に適用してもかまわない。
【0066】
[第2の実施形態]
本実施形態に係る画像処理装置の機能構成例について、図9のブロック図を用いて説明する。図9に示す如く、本実施形態に係る画像処理装置は、準固定長データストリームを復号する復号部がk(≧2)個である点、変換係数予測誤差の有意の上位データの位置情報を記憶するための保持部を有する点が、第1の実施形態に係る画像処理装置と異なる。また、準固定長データストリームを復号する復号部がk個であるが故に、読み出し部901は、どの復号部に準固定長データストリームを送出するのかの切り替え制御を行うことになる。
【0067】
可変長復号部902、準固定長データストリーム長算出部904のそれぞれは、可変長復号部102、準固定長データストリーム長算出部104と同様の動作を行うものであるため、説明は省略する。
【0068】
有意係数位置情報保持部905は、可変長復号部902が1ブロック分の復号を完了すると、このブロック内における変換係数予測誤差の有意の上位データの位置を示す位置情報を格納するためのものである。この有意係数位置情報保持部905は、kブロック分の位置情報が格納可能な容量を有しているものとする。
【0069】
準固定長データ復号部903は、準固定長データ復号部1〜準固定長データ復号部kからなり、準固定長データ復号部1〜準固定長データ復号部kはそれぞれ、準固定長データ復号部103と同様の動作を行うもので、何れも並列動作可能である。
【0070】
例えば、ブロック#Nの準固定長データストリームと、ブロック#(N+1)の可変長符号ストリームとを並列に復号している場合に可変長復号が先に終了したとする。このような場合に、本実施形態によれば、ブロック#Nの準固定長データストリームの復号完了を待たずに、ブロック#(N+1)の準固定長データストリームの復号を開始する。
【0071】
以下ではk=2の場合、即ち準固定長データ復号部903が準固定長データ復号部1と準固定長データ復号部2とから成る場合に、図9の各部の動作について、図10のタイミングチャートを用いて説明する。なお、以下では、第1の実施形態と異なる点について重点的に説明し、同じ点については説明は省略する。
【0072】
時刻T1の時点で可変長復号部902はブロック#1の可変長符号#1を復号して出力完了しており、準固定長データストリーム長算出部904はブロック#1の準固定長データストリーム#1のデータ長Lを計算している。そして時刻T1にて読み出し部901は準固定長データ復号部1に対する準固定長データストリーム#1の出力を開始する。
【0073】
時刻T2にて読み出し部901は、可変長復号部902へのブロック#2の可変長符号#2の出力を開始する。時刻T1にて準固定長データ復号部1が復号を開始した準固定長データストリーム#1の復号結果は時刻T3から出力される。
【0074】
時刻T4から可変長復号部902による可変長符号#2の復号結果の出力が開始され、時刻T5にてこの出力は完了する。この時点で、準固定長データストリーム#1の復号及び出力は完了していない。
【0075】
そこで読み出し部901は、時刻T6から、準固定長データストリーム#2を、非動作中の復号部である準固定長データ復号部2に対して出力する。そして時刻T7にて準固定長データ復号部2は、準固定長データストリーム#2の復号結果の出力を開始する。また、ブロック#1,#2の準固定長データストリームの復号と並行して、ブロック#3の可変長符号も復号される。
【0076】
このように、k=2であれば、ブロック#Nの準固定長データストリーム、ブロック#(N+1)の準固定長データストリーム、ブロック#(N+2)の可変長符号を並列に復号することができ、第1の実施形態よりもさらに処理性能を高速化することができる。
【0077】
ここで、CBPによって各ブロックの可変長符号が存在しないことが明らかな場合、可変長復号部902の復号結果を待たずに、準固定長データの復号を開始することも可能である。可変長符号が存在しない場合、上位データの有意係数はすべて0であるので、準固定長データストリームのデータ長が算出可能となるからである。
【0078】
なお、以上の説明が、kが任意の値であったとしても同様に適用することができることは、いうまでもない。また、有意係数位置情報保持部905を準固定長データ復号部1〜準固定長データ復号部kのそれぞれに組み込んでもよい。
【0079】
[第3の実施形態]
本発明は、JPEG XR符号化の符号化フォーマットに限られるものではない。本実施形態に係る画像処理装置の機能構成例について、図11のブロック図を用いて説明する。本実施形態では、JPEG XR符号化以外の符号化方式に従って生成された符号化ストリームを復号する。例えば、ブロック#Nがすべて可変長符号化、続くブロック#(N+1)がすべて準固定長データとして符号化されている符号化ストリームの復号を行う。ここで準固定長データストリームのストリーム長(データ長)を計算するための情報(図11の準固定長データストリーム長算出情報)は、可変長符号を復号することで得られるものとする。例えば、ブロック#Nを復号することにより得られる準固定長データストリーム長算出情報は、これに続くブロック#(N+1)の準固定長データのデータ長を直接的に示すものであってもよい。何れにしろ、可変長符号データを復号した結果に基づいて、その可変長データに後続する準固定長データのデータ長を導き出せるような関係になっている符号化フォーマットに適用可能である。
【0080】
読み出し部1101,可変長復号部1102はそれぞれ、読み出し部101、可変長復号部102と同様の動作を行うが、可変長復号部1102は、有意の変換係数予測誤差の個数、有意の変換係数予測誤差の位置、については出力しない。
【0081】
準固定長データ復号部1103は準固定長データ復号部103と同様にして準固定長データストリームを復号するが、その際、有意の変換係数予測誤差の位置情報は使用しない。準固定長データストリーム長算出部1104は、準固定長データストリーム長算出部104と同様に動作し、個々の準固定長データストリーム長を算出する。
【0082】
第3の実施形態では、可変長復号部1102、準固定長データ復号部1103の復号結果は、変換係数予測誤差であるとしているが、変換係数予測誤差である必要はない。後段の処理に応じた復号結果であればよい。また、準固定長データストリーム長算出情報が可変長復号部1102ではなく、不図示の外部から与えられる構成としてもよい。
【0083】
以上の説明により、本実施形態によれば、準固定長データストリーム長が可変長符号の復号結果から決定される符号化ストリームの復号においても、ブロック#Nの準固定長データと、ブロック#(N+1)の可変長符号とを並列に復号可能である。もちろん、この符号化ストリームは、JPEG XR符号化以外の符号化方式に従って生成された符号化ストリームである。
【0084】
処理のタイミングチャートは図2と同様である。いうまでもなく、準固定長データの個々のデータ長が一定の場合(固定長データの場合)にも、本実施形態では並列に復号可能である。
【0085】
即ち、入力符号化ストリームが如何なる符号化方式で符号化されていたとしても、次のような入力符号化ストリームであれば、上述した効率の良いエントロピー復号処理を行うことができる。即ち、少なくとも一部のストリーム配列において、可変長符号ストリームに後続して準固定長データストリームが並んでいる入力符号化ストリームであれば、上述した効率の良いエントロピー復号処理を行うことができる。若しくは符号化データ配列の少なくとも一部において少なくとも一部のストリーム配列において、可変長符号ストリームと準固定長データストリームが交互に並んでいる入力符号化ストリームであれば上述した効率の良いエントロピー復号処理を行うことができる。
【0086】
このような入力符号化ストリームに対してエントロピー復号処理を行う画像処理装置は以下のように動作する。
【0087】
先ず、入力符号化ストリーム中の着目可変長符号ストリームの先頭位置として指定された位置から、該着目可変長符号ストリームを読み出して復号する。この復号が完了すると、着目可変長符号ストリームに後続する着目準固定長データストリームを入力符号化ストリームから読み出して復号する。更に、着目可変長符号ストリームの復号が完了すると、該復号結果を用いて着目準固定長データストリームのデータ長を決定する。例えば、この復号により得られる変換係数の個数、該変換係数のうち有意の変換係数の個数、1つの変換係数のビット数、を用いて着目準固定長データストリームのデータ長を計算する。そして、着目準固定長データストリームの先頭位置からデータ長だけ後方の位置を、着目可変長符号ストリームの次に復号する次可変長符号ストリームの先頭位置として指定し、次可変長符号ストリームの復号を開始させる。
【0088】
[第4の実施形態]
本実施形態では、上記の実施形態で説明したような画像処理装置の機能を、マルチコアCPUを持つPCや、組み込み機器向けマルチコアCPU上で動作するソフトウェア(JPEG XRデコーダ)として実装した場合について説明する。この場合、例えば、図14に示したメインCPU1415によってこのソフトウェアを実行してもよい。
【0089】
上記の実施形態で説明したような画像処理装置の機能をソフトウェアにより実装した場合に、このソフトウェアを実行する装置が行う処理について、同処理のフローチャートを示す図12を用いて説明する。なお、図12に示した各ステップにおける処理の主体は何れも、この装置のCPUである。
【0090】
ブロック#Nの符号化ストリームが取得可能であれば、処理はステップS101を介してステップS102に進む。ステップS102では、可変長符号#Nの復号処理のスレッドを起動し、ステップS103では、ブロック#Nの符号化ストリームから可変長符号#Nを読み出して復号する。この復号が完了するまでステップS103の処理を続け、この復号が完了すると処理はステップS104を介してステップS105に進む。
【0091】
ステップS105では、準固定長データストリーム#Nの準固定長データストリーム長を算出し、ステップS106では、ステップS102で起動したスレッドを終了させる。
【0092】
ステップS106の後は、ステップS107における処理と、ステップS108以降の処理を行う。ステップS107では変数Nを1つインクリメントすることで、次のブロックについてステップS101以降の処理を行う。
【0093】
ステップS108では、OS(Operating system)等から割り当てられた利用可能なスレッド数と、現在実行中のスレッド数と、を比較する。そして、利用可能なスレッドを全て使用しているのであればステップS108で待機し、利用可能なスレッドのうち使用していないスレッドが1以上あれば、処理はステップS108を介してステップS109に進む。
【0094】
ステップS109では、準固定長データストリーム#Nの復号処理のスレッドを起動し、ステップS110では、ブロック#Nの符号化ストリームから準固定長データストリーム#Nを読み出して復号する。この復号が完了するまでステップS110の処理を続け、この復号が完了すると処理はステップS111を介してステップS112に進む。ステップS112では、ステップS109で起動したスレッドを終了させる。
【0095】
各スレッドがそれぞれ別個のCPUコア上で動作可能であれば、ブロック#Nの準固定長データと、ブロック#(N+1)の可変長符号を並列に復号することが可能である。また、第2の実施形態の場合と同様に、ブロック#Nの準固定長データと、ブロック#(N+1)以降のブロックの準固定長データを並列に復号することも可能である。
【0096】
図12のフローチャートに従った処理のタイミングチャートを図13に示す。時刻T0(ステップS102)においてブロック#Nの符号化ストリームが取得可能であれば、可変長符号#Nの復号処理のスレッドを起動する。そして、ブロック#Nの符号化ストリームから可変長符号#Nを読み出して復号すると共に、準固定長データストリーム#Nの準固定長データストリーム長を算出する。そしてこのスレッドは時刻T1(ステップS106)にて終了する。
【0097】
その後、時刻T2(ステップS109)にて、準固定長データストリーム#Nの復号処理のスレッドを起動し、ブロック#Nの符号化ストリームから準固定長データストリーム#Nを読み出して復号する。また、時刻T3(ステップS102)においてブロック#(N+1)の符号化ストリームが取得可能であれば、可変長符号#(N+1)の復号処理のスレッドを起動する。そして、ブロック#(N+1)の符号化ストリームから可変長符号#(N+1)を読み出して復号すると共に、準固定長データストリーム#(N+1)の準固定長データストリーム長を算出する。そしてこのスレッドは時刻T4(ステップS106)にて終了する。この時点でまだ、準固定長データストリーム#Nの復号処理は完了していない。
【0098】
時刻T5(ステップS109)にて、準固定長データストリーム#(N+1)の復号処理のスレッドを起動し、ブロック#(N+1)の符号化ストリームから準固定長データストリーム#(N+1)を読み出して復号する。もちろん、ステップS108にて利用可能なスレッドのうち使用していないスレッドが1以上あると判断し、且つ準固定長データストリーム#(N+1)が読み出し可能である場合に、この処理は行われる。
【0099】
また、時刻T6(ステップS102)においてブロック#(N+2)の符号化ストリームが取得可能であれば、可変長符号#(N+2)の復号処理のスレッドを起動する。そして、ブロック#(N+2)の符号化ストリームから可変長符号#(N+2)を読み出して復号すると共に、準固定長データストリーム#(N+2)の準固定長データストリーム長を算出する。
【0100】
したがって、時刻T6以降は、ブロック#Nの準固定長データ、ブロック#(N+1)の準固定長データ、ブロック#(N+2)の可変長符号を並列に復号することになる。言うまでもなく、準固定長データの並列復号は2ブロックに限定されるものではない。準固定長データストリーム長算出方法、及び、準固定長データの復号時に必要となる有意係数位置情報の生成方法は、第1の実施形態のそれが適用可能である。
【0101】
以上、デジタルカメラへの適用を示し、さらにJPEG XR符号化方式について、第1〜4の実施形態として説明した。しかし、適用範囲は、デジタルカメラに限定されるものではなく、また、JPEG XR符号化方式に限定されるものではないことは明らかである。
【0102】
また、図1,9,11に示した各部のうち、有意係数位置情報保持部905以外の各部の一部もしくは全部をソフトウェア(コンピュータプログラム)として実装してもよい。特に、ソフトウェアで実行する場合、第4の実施形態で示したように、可変長符号復号と、準固定長データ復号をマルチスレッドとして実行すれば良い。
【0103】
(その他の実施例)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
【特許請求の範囲】
【請求項1】
符号化データ配列の少なくとも一部において、可変長符号ストリームに後続して準固定長データストリームが配列された入力符号化ストリームをエントロピー復号する画像処理装置であって、
前記入力符号化ストリーム中の着目可変長符号ストリームの先頭位置として指定された位置から、該着目可変長符号ストリームを読み出して復号する第1の復号手段と、
前記着目可変長符号ストリームの復号の後、前記着目可変長符号ストリームに後続する着目準固定長データストリームを、前記入力符号化ストリームから読み出して復号する第2の復号手段と、
前記着目可変長符号ストリームの復号の後、該復号結果を用いて前記着目準固定長データストリームのデータ長を決定する決定手段と、
前記着目準固定長データストリームの先頭位置から前記データ長のぶんだけ後方の位置を、前記着目可変長符号ストリームの次に復号する次可変長符号ストリームの先頭位置とし、前記第1の復号手段に前記次可変長符号ストリームの復号を開始させる制御手段と
を備えることを特徴とする画像処理装置。
【請求項2】
前記決定手段は、
前記着目可変長符号ストリームの復号が完了すると、該復号により得られる係数の個数と、該係数のうち有意係数の個数と、各準固定長データのビット数と、を用いて前記着目準固定長データストリームのデータ長を決定する
ことを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記決定手段は、前記着目可変長符号ストリームの復号により得られる係数の個数をm、該係数のうち有意係数の個数をn、各準固定長データのビット数をModelbits (0≦Modelbits≦15)とすると、前記着目準固定長データストリームのデータ長Lを、以下の計算式
L=0 … Modelbits=0
L=Modelbits×m+(m−n) … Modelbits≠0
を計算することで求めることを特徴とする請求項2に記載の画像処理装置。
【請求項4】
前記第2の復号手段は並列に動作可能な複数の復号部から成り、
前記第1の復号手段が1つの可変長符号ストリームの復号を完了するたびに、非動作中の復号部のうちの1つが、該可変長符号ストリームに隣接して後続する準固定長データストリームを、前記入力符号化ストリームから読み出して復号することを特徴とする請求項2又は3に記載の画像処理装置。
【請求項5】
前記第1の復号手段と前記第2の復号手段とは並列動作可能であることを特徴とする請求項2乃至4の何れか1項に記載の画像処理装置。
【請求項6】
前記可変長符号ストリームは、ブロックを構成する変換係数予測誤差毎の上位データであり、前記準固定長データストリームは、ブロックを構成する変換係数予測誤差毎の下位データであることを特徴とする請求項2乃至4の何れか1項に記載の画像処理装置。
【請求項7】
符号化データ配列の少なくとも一部において、可変長符号ストリームに後続して準固定長データストリームが配列された入力符号化ストリームをエントロピー復号する画像処理装置が行う画像処理方法であって、
前記画像処理装置の第1の復号手段が、前記入力符号化ストリーム中の着目可変長符号ストリームの先頭位置として指定された位置から、該着目可変長符号ストリームを読み出して復号する第1の復号工程と、
前記画像処理装置の第2の復号手段が、前記着目可変長符号ストリームの復号の後、前記着目可変長符号ストリームに後続する着目準固定長データストリームを、前記入力符号化ストリームから読み出して復号する第2の復号工程と、
前記画像処理装置の決定手段が、前記着目可変長符号ストリームの復号の後、該復号結果を用いて前記着目準固定長データストリームのデータ長を決定する決定工程と、
前記画像処理装置の制御手段が、前記着目準固定長データストリームの先頭位置から前記データ長のぶんだけ後方の位置を、前記着目可変長符号ストリームの次に復号する次可変長符号ストリームの先頭位置とし、前記第1の復号手段に前記次可変長符号ストリームの復号を開始させる制御工程と
を備えることを特徴とする画像処理方法。
【請求項8】
コンピュータを、請求項1乃至6の何れか1項に記載の画像処理装置の各手段として機能させるためのコンピュータプログラム。
【請求項1】
符号化データ配列の少なくとも一部において、可変長符号ストリームに後続して準固定長データストリームが配列された入力符号化ストリームをエントロピー復号する画像処理装置であって、
前記入力符号化ストリーム中の着目可変長符号ストリームの先頭位置として指定された位置から、該着目可変長符号ストリームを読み出して復号する第1の復号手段と、
前記着目可変長符号ストリームの復号の後、前記着目可変長符号ストリームに後続する着目準固定長データストリームを、前記入力符号化ストリームから読み出して復号する第2の復号手段と、
前記着目可変長符号ストリームの復号の後、該復号結果を用いて前記着目準固定長データストリームのデータ長を決定する決定手段と、
前記着目準固定長データストリームの先頭位置から前記データ長のぶんだけ後方の位置を、前記着目可変長符号ストリームの次に復号する次可変長符号ストリームの先頭位置とし、前記第1の復号手段に前記次可変長符号ストリームの復号を開始させる制御手段と
を備えることを特徴とする画像処理装置。
【請求項2】
前記決定手段は、
前記着目可変長符号ストリームの復号が完了すると、該復号により得られる係数の個数と、該係数のうち有意係数の個数と、各準固定長データのビット数と、を用いて前記着目準固定長データストリームのデータ長を決定する
ことを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記決定手段は、前記着目可変長符号ストリームの復号により得られる係数の個数をm、該係数のうち有意係数の個数をn、各準固定長データのビット数をModelbits (0≦Modelbits≦15)とすると、前記着目準固定長データストリームのデータ長Lを、以下の計算式
L=0 … Modelbits=0
L=Modelbits×m+(m−n) … Modelbits≠0
を計算することで求めることを特徴とする請求項2に記載の画像処理装置。
【請求項4】
前記第2の復号手段は並列に動作可能な複数の復号部から成り、
前記第1の復号手段が1つの可変長符号ストリームの復号を完了するたびに、非動作中の復号部のうちの1つが、該可変長符号ストリームに隣接して後続する準固定長データストリームを、前記入力符号化ストリームから読み出して復号することを特徴とする請求項2又は3に記載の画像処理装置。
【請求項5】
前記第1の復号手段と前記第2の復号手段とは並列動作可能であることを特徴とする請求項2乃至4の何れか1項に記載の画像処理装置。
【請求項6】
前記可変長符号ストリームは、ブロックを構成する変換係数予測誤差毎の上位データであり、前記準固定長データストリームは、ブロックを構成する変換係数予測誤差毎の下位データであることを特徴とする請求項2乃至4の何れか1項に記載の画像処理装置。
【請求項7】
符号化データ配列の少なくとも一部において、可変長符号ストリームに後続して準固定長データストリームが配列された入力符号化ストリームをエントロピー復号する画像処理装置が行う画像処理方法であって、
前記画像処理装置の第1の復号手段が、前記入力符号化ストリーム中の着目可変長符号ストリームの先頭位置として指定された位置から、該着目可変長符号ストリームを読み出して復号する第1の復号工程と、
前記画像処理装置の第2の復号手段が、前記着目可変長符号ストリームの復号の後、前記着目可変長符号ストリームに後続する着目準固定長データストリームを、前記入力符号化ストリームから読み出して復号する第2の復号工程と、
前記画像処理装置の決定手段が、前記着目可変長符号ストリームの復号の後、該復号結果を用いて前記着目準固定長データストリームのデータ長を決定する決定工程と、
前記画像処理装置の制御手段が、前記着目準固定長データストリームの先頭位置から前記データ長のぶんだけ後方の位置を、前記着目可変長符号ストリームの次に復号する次可変長符号ストリームの先頭位置とし、前記第1の復号手段に前記次可変長符号ストリームの復号を開始させる制御工程と
を備えることを特徴とする画像処理方法。
【請求項8】
コンピュータを、請求項1乃至6の何れか1項に記載の画像処理装置の各手段として機能させるためのコンピュータプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【公開番号】特開2012−235452(P2012−235452A)
【公開日】平成24年11月29日(2012.11.29)
【国際特許分類】
【出願番号】特願2012−74889(P2012−74889)
【出願日】平成24年3月28日(2012.3.28)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成24年11月29日(2012.11.29)
【国際特許分類】
【出願日】平成24年3月28日(2012.3.28)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]