以下、図面を参照しながら本発明の実施形態を詳細に説明する。
(第1の実施形態)
図1は、本発明の第1の実施形態による符号化装置1の構成を示すブロック図であり、本実施形態と関係する機能ブロックのみを抽出して示してある。符号化装置1は、ブロック分割部11と、ブロックスタックメモリ12と、参照構造生成部13と、符号化部14と、符号化結果メモリ15と、RD効率推定部16と、RD効率メモリ17と、RD効率比較部18と、エントロピー符号化部19とを備える。
ブロック分割部11は、符号化装置1に入力されたフォーカルスタックに含まれる画像群に対しブロック分割を行う。各画像には、画像を一意に特定する情報である画像インデックスが付与されている。ブロックスタックメモリ12は、ブロック分割部11により分割された画像群のブロックを、同じブロック位置ごとに格納する。画像群における同じ位置のブロックをブロックスタックと記載する。
参照構造生成部13は、各ブロックスタックの参照構造を生成する。参照構造は、符号化を行う際に参照するブロック間の関係を表す。参照構造は、イントラ符号化ブロックと、インター符号化ブロックと、インター符号化ブロックが参照する他のブロックとを表す。1つのブロックスタックでは、1つのブロックがイントラ符号化ブロックであり、他のブロックはインター符号化ブロックである。イントラ符号化ブロックは、他のブロックの情報を使用せずにイントラ符号化を行うブロックである。インター符号化ブロックは、他の画像のブロックを参照して予測符号化を行うブロックである。予測符号化の際に参照されるブロックを参照ブロックと記載する。本実施形態では、ブロックスタック内において、全てのインター符号化ブロックは、イントラ符号化ブロックを参照する。よって、参照構造は、イントラ符号化ブロックを特定する情報であればよく、例えば、イントラ符号化ブロックの画像インデックス(以下、イントラ画像インデックスとも記載する)により示すことができる。
符号化部14は、ブロックスタック単位で参照構造生成部13が生成した参照構造に従って符号化を行う。符号化結果メモリ15は、符号化部14によるブロックスタック単位の符号化結果を、参照構造ごとに格納する。RD効率推定部16は、符号化結果メモリ15に記憶される符号化結果を用いて、各ブロックスタックの参照構造ごとのRD効率を推定する。RD効率は、符号化効率の一例である。RD効率メモリ17は、各ブロックスタックの参照構造ごとに、RD効率推定部16が推定したRD効率を格納する。RD効率比較部18は、RD効率メモリ17に記憶される参照構造ごとのRD効率を比較し、ブロックスタックごとに最もRD効率が良い参照構造の符号化結果を最終的な符号化結果として選択する。エントロピー符号化部19は、フォーカルスタックから得られた各ブロックスタックの最終的な符号化結果にエントロピー符号化を行う。
図2は、符号化装置1の処理を示すフロー図である。まず、符号化装置1のブロック分割部11は、フォーカルスタックを構成する画像群を入力する(ステップS105)。ブロック分割部11は、入力したフォーカルスタックを構成する各画像をブロック単位に分割する(ステップS110)。図3を用いて、ステップS110の処理を説明する。
図3は、ブロック分割部11におけるフォーカルスタックの分割を示す図である。フォーカルスタックは、N枚(Nは2以上の整数)の画像から構成される。フォーカルスタックに含まれるN枚の画像を、画像G1〜GNと記載する。同図は、N=3の場合の例である。各画像G1〜GNには、log2Nビット長(小数点以下は切り上げ)の画像インデックスが付与されている。画像インデックスは、焦点面が撮影機器に近い順から昇順に付与される。画像インデックスの付与順は、焦点距離が遠い順でもよく、焦点距離が中央にあるものから順に付与されてもよく、ランダムでもよい。ただし、焦点距離の順序を用いることで後段処理の効率を高めることが可能であるため、規則的に付与されており、なおかつ後段の処理手法と適応していることが望ましい。
ブロック分割部11は、画像G1〜GNを、例えばラスタスキャン順に、固定の分割サイズのブロック単位で分割する。なお、ブロック分割の順番はイントラ符号化に適したものであればよい。例えば、ラスタスキャン順を転置させた順でもよく、渦巻状の順番でもよい。またブロック間での参照を行わないという前提があれば、任意の順番で取り出してもよい。
ブロック分割部11は、各画像G1〜GNにおいて同じ位置にあるブロックをまとめたブロックスタックをブロックスタックメモリ12に格納する。ブロック分割部11は、ブロックスタックに、ラスタスキャン順でどの位置であるかを示す位置インデックスを付与する。位置インデックスは、例えば、行と列の座標により表記すればよい。画像Gn(nは1以上N以下の整数)における位置インデックスiのブロックをブロックBn−iと記載する。同じ位置インデックスiのブロックB1−i〜B3−iはそれぞれ、画像G1〜G3において同一の領域であり、一つのブロックスタックを構成する。
符号化装置1は、ブロックスタック単位で符号化を実施する。そこでまず、図2に示すように、参照構造生成部13は、まだ符号化を行っていないブロックスタックの中から符号化対象のブロックスタック(以下、「符号化対象ブロックスタック」と記載)を、例えば、ブロック分割の順番に従って選択する(ステップS115)。参照構造生成部13は、特定した符号化対象ブロックスタックの画像インデックス及び位置インデックスをブロックスタックメモリ12から取得し、当該符号化対象ブロックスタックを符号化するための参照構造を生成する(ステップS120)。
図4は、参照構造生成部13による参照構造の生成イメージを示す図である。同図に示すフォーカルスタックは画像G1、画像G2及び画像G3からなる。画像G1、画像G2及び画像G3には、同一の被写体a、被写体b、被写体cが写っている。フォーカルスタックの撮影機からの距離は、被写体aが最も近く、次に被写体bが近く、被写体cが最も遠い。画像G1の焦点面は被写体aの付近であり、画像G2の焦点は被写体bの付近であり、画像G3の焦点は被写体cの付近である。
本実施形態の参照構造は、同一のブロックスタック内の全てのインター符号化ブロックが、当該ブロックスタックにおける同一の1枚のイントラ符号化ブロックのみを参照する構造である。インター符号化ブロックは、画像インデックスの順に符号化される。そのため、参照構造は、ブロックスタックを構成するブロックのうち、どのブロックをイントラ符号化するかによって一意に定まる。同図の場合、位置インデックスjのブロックスタックでは、ブロックB1−jがイントラ符号化ブロックであり、ブロックB2−j及びB3−jはブロックB1−jを参照するインター符号化ブロックである。インター符号化ブロックについては、ブロックB2−j、ブロックB3−jの順に符号化される。また、位置インデックスkのブロックスタックでは、ブロックB2−kがイントラ符号化ブロックであり、ブロックB1−k及びB3−kはブロックB2−kを参照するインター符号化ブロックである。インター符号化ブロックについては、ブロックB1−k、ブロックB3−kの順に符号化される。また、位置インデックスlのブロックスタックでは、ブロックB3−lがイントラ符号化ブロックであり、ブロックB1−l及びB2−lはブロックB3−lを参照するインター符号化ブロックである。インター符号化ブロックについては、ブロックB1−l、ブロックB2−lの順に符号化される。
図2に示す処理フローでは、ステップS115〜ステップS140のループ処理ごとに、参照構造生成部13は、ステップS120において、符号化対象ブロックスタック内でイントラ符号化ブロックとなるブロックを変えるように参照構造を生成する。参照構造の生成後、ブロックスタックメモリ12は、符号化対象ブロックスタックと、当該ブロックスタックについて参照構造生成部13が生成した参照構造とを符号化部14に出力する。符号化部14は、参照構造に従って符号化対象ブロックスタックの符号化を行う(ステップS125)。符号化部14は、ブロックスタックの参照構造と、その参照構造を用いた符号化結果とを対応付けて符号化結果メモリ15に格納する。RD効率推定部16は、符号化結果メモリ15に記憶される符号化結果を用いてRD効率を推定し、推定したRD効率を参照構造と対応付けてRD効率メモリ17に書き込む(ステップS130)。RD効率は、符号量Rと符号化歪量Dとを線形結合した指標であり、D+λR(λは係数)により算出される。
RD効率比較部18は、現在のループ処理のステップS130において推定されたRD効率と、RD効率メモリ17に記憶される、現在の符号化対象ブロックスタックの他の参照構造のRD効率とを比較し、最適なRD効率の符号化結果が得られたか否かを判定する(ステップS135)。RD効率比較部18が、最適なRD効率の符号化結果を得ていないと判定した場合(ステップS135:NO)、参照構造生成部13は、符号化対象ブロックスタックの新たな参照構造を生成するステップS120からの処理を繰り返す。
そして、RD効率比較部18が、最適なRD効率の符号化結果を得たと判定した場合(ステップS135:YES)、参照構造生成部13又は符号化部14は、フォーカルスタック全体を符号化したか否かを判定する(ステップS140)。参照構造生成部13又は符号化部14が、まだフォーカルスタック全体を符号化していないと判定した場合(ステップS140:NO)、ステップS115の処理に戻り、参照構造生成部13は、まだ符号化を行っていないブロックスタックの中から新たな符号化対象ブロックスタックを選択する。
そして、参照構造生成部13又は符号化部14が、フォーカルスタック全体を符号化したと判定した場合(ステップS140:NO)、エントロピー符号化部19は、各ブロックスタックの符号化結果を符号化結果メモリ15から取得する。エントロピー符号化部19が符号化結果メモリ15から取得する各ブロックスタックの符号化結果は、各ブロックスタックについて最適なRD効率であると判断された参照構造を用いて符号化された結果である。エントロピー符号化部19は、各ブロックスタックの符号化結果をエントロピー符号化する(ステップS145)。符号化結果は、予測残差及び予測パラメータと、参照構造を表す情報と、符号化の際に用いたぼかしフィルタパラメータとを含む。ぼかしフィルタパラメータは、インター符号化ブロックを符号化する際に、参照ブロックにぼけ補償を行うために用いたぼかしフィルタのぼけ強度を表す。エントロピー符号化部19は、ステップS130におけるRD効率推定の前にブロックスタック単位でエントロピー符号化を行ってもよい。エントロピー符号化部19は、ステップS145におけるエントロピー符号化を出力する(ステップS150)。
次に、参照構造生成部13の詳細を説明する。図5は、参照構造生成部13の詳細な構成を示すブロック図である。参照構造生成部13は、ブロックスタックインデックス取得部131と、イントラブロック決定部132と、選択済みブロックインデックスメモリ133とを備える。
ブロックスタックインデックス取得部131は、ブロックスタックメモリ12から、符号化対象ブロックスタックの画像インデックスを取得する。イントラブロック決定部132は、符号化対象ブロックスタックを構成するブロック群のうち、いずれの画像のブロックをイントラ符号化ブロックにするかを選択する。イントラブロック決定部132は、イントラ符号化ブロックとして選択したブロックの画像インデックスを表す参照構造インデックスを出力する。選択済みブロックインデックスメモリ133は、イントラ符号化ブロックとして選択されたブロックの画像インデックスを保存する。イントラブロック決定部132は、選択済みブロックインデックスメモリ133に保存された、イントラ符号化ブロックとして選択済みのブロックの情報と、符号化結果メモリ15から出力される符号化結果を元に、次にイントラ符号化ブロックとするブロックの選択を行う。
図6は、参照構造最適化処理を示すフロー図である。同図は、図2のステップS120〜ステップS135の処理の詳細を示す。まず、ブロックスタックインデックス取得部131は、ブロックスタックメモリ12から、符号化対象ブロックスタックの画像インデックス及び位置インデックスを取得する。イントラブロック決定部132は、符号化対象ブロックスタックに対し、イントラ符号化ブロックとして選択する画像インデックスの初期化を行う(ステップS205)。
この初期化の処理において、イントラブロック決定部132は、初期値として0(最も小さい画像インデックス)を選択すればよい。本実施形態では、フォーカルスタックを構成する画像に対して、焦点距離の近い順に画像インデックスが付与されている。そのため、初期値を0とすることにより、最も近い焦点距離の画像のブロックが初期値のイントラ符号化ブロックとして選択される。例えば、図4に示すフォーカルスタックの場合、最も焦点距離が近い画像G1の画像インデックスが、イントラ符号化ブロックとして選択する画像インデックス(イントラ画像インデックス)の初期値となる。イントラブロック決定部132は、イントラ画像インデックスを示す参照構造インデックスを、参照構造を表す情報としてブロックスタックメモリ12に出力する。符号化部14は、イントラブロック決定部132が出力した参照構造インデックスにより示される参照構造に基づいて、符号化対象ブロックスタックの符号化を実施する(ステップS215)。符号化部14は、符号化対象ブロックスタックの位置インデックスと、参照構造インデックスと、符号化結果とを対応付けて符号化結果メモリ15に格納する。
RD効率推定部16は、符号化結果メモリ15に記憶される符号化結果を用いて、RD効率を推定し、参照構造インデックスと対応付けてRD効率メモリ17に書き込む。RD効率比較部18は、現在の参照構造インデックスを用いた符号化対象ブロックの符号化結果のRD効率と、RD効率メモリ17に記憶される他の参照構造インデックスを用いた符号化対象ブロックのRD効率とを比較する(ステップS220)。
RD効率推定部16は、現在の参照構造インデックスを用いた符号化のRDコストが、他の参照構造インデックスを用いた符号化のRDコストと比較して悪化したか否かを判定する(ステップS225)。RD効率推定部16が、RDコストは悪化していないと判定した場合(ステップS225:NO)、イントラブロック決定部132は、イントラ符号化ブロックとして選択する画像インデックスを1増加させる(ステップS230)。イントラブロック決定部132は、ステップS210の処理に戻り、増加させた画像インデックスを示す参照構造インデックスを出力する(ステップS210)。例えば、図4に示すフォーカルスタックの場合、参照構造インデックスが画像G1の画像インデックスから、画像G2の画像インデックスに変更される。
イントラブロック決定部132は、現在の参照構造インデックスを用いた符号化のRDコストが他の参照構造インデックスを用いた符号化のRDコストと比較して悪化するまでこの探索を行う。イントラブロック決定部132は、RDコストの悪化を判定した場合(ステップS225:YES)、前回の最も良かった参照構造インデックスを出力する(ステップS235)。
一般に画像のぼけは、画像撮影時の焦点距離と被写体の深度(撮影機と被写体との距離)との差が大きいほど強くなる。ボケ補償予測の構成上、最もぼけの少ないブロックをイントラ符号化ブロックに選択すると、最もRD効率が良いと考えられる。そのため、本実施形態のようにRDコストの悪化が起こった段階で探索を打ち切っても、全体の符号化効率低下にはつながらないと期待される。例えば、図4に示す例の場合、画像G1、G2、G3に含まれるブロックの順にイントラ符号化ブロックが選択される。被写体aが写っている位置インデックスjのブロックスタックでは、被写体aに最も焦点面が近い画像G1に含まれるブロックB1−jをイントラ符号化ブロックとして選択したときが最もRD効率が良く、ブロックG2−jをイントラ符号化ブロックと選択したときのRD効率は低下する。この場合、ブロックG3−jをイントラ符号化ブロックとして選択したときのRD効率の算出を行わず、RD効率が低下したときの直前に選択されたブロックB1−jをイントラ符号化ブロックとする。なお、探索順は上記と逆順にしてもよいし、画像インデックスを2以上の間隔で増やすことで粗い探索を実施した後に細かい探索を実施することで高速化してもよいし、真ん中の画像インデックスから選択してもよい。
ブロックスタックメモリ12は、ステップS235においてイントラブロック決定部132が出力した参照構造インデックスを受取ると、符号化対象ブロックスタックと合わせて符号化部14に入力する。符号化部14は、参照構造インデックスが示す参照構造に従って符号化対象ブロックスタックの符号化を行う。
続いて、符号化部14の詳細を説明する。図7は、符号化部14の詳細な構成を示すブロック図である。符号化部14は、予測残差生成部140と、DCT(Discrete Cosine Transform:離散コサイン変換)部141と、量子化部142と、逆量子化部143と、Inv−DCT(Inverse Discrete Cosine Transform:逆離散コサイン変換)部144と、復号信号生成部145と、参照用ブロックメモリ146と、イントラ予測部147と、ボケ補償予測部148と、モード判定部149とを備える。
予測残差生成部140は、符号化対象ブロックと、モード判定部149が出力した予測ブロックとの差分である予測残差を生成する。DCT部141は、予測残差に対して離散コサイン変換を行う。量子化部142は、離散コサイン変換された予測残差に対して量子化処理を行う。量子化部142は、量子化された予測残差と予測パラメータを出力する。逆量子化部143は、量子化された予測残差に対し、逆量子化処理を行う。Inv−DCT部144は、逆量子化処理が行われた予測残差に対して逆離散コサイン変換を行う。復号信号生成部145は、Inv−DCT部144が逆離散コサイン変換した予測残差と、モード判定部149が出力した予測ブロックとを加算して生成した参照ブロックを、参照用ブロックメモリ146に格納する。
イントラ予測部147は、参照用ブロックメモリ146から読み出した参照ブロックに、画面内予測処理を実行することによって、符号化対象ブロックの予測ブロックを生成する。イントラ予測部147は、H.265/HEVC(High Efficiency Video Coding)におけるイントラ予測により符号化を行う。あるいは、イントラ予測部147は、H.264/AVCのような他の映像圧縮規格におけるイントラ予測により符号化を行ってもよい。なお、符号化部14は、JPEGのように、予測符号化を行わずイントラ符号化ブロックに直接DCT変換を施してもよい。ボケ補償予測部148は、参照用ブロックメモリ146に格納された符号化済みのイントラ符号化ブロックである参照ブロックにボケ補償を行ってインター符号化ブロックの予測ブロックを生成し、出力する。モード判定部149は、イントラ予測部147が生成した予測ブロックと、ボケ補償予測部148が生成した予測ブロックとのいずれかを出力する。
図8は、符号化部14における符号化処理を示すフロー図である。同図は、図2のステップS125及び図6のステップS215における処理の詳細を示す。符号化部14は、符号化対象ブロックスタック及び参照構造インデックスを入力する(ステップS305)。符号化部14は、まずイントラ符号化ブロックの符号化を行う。そこで、符号化部14は、符号化対象ブロックスタックの中から参照構造インデックスが示すブロックをイントラ符号化ブロックとして抽出し、イントラ予測部147に入力する。
イントラ予測部147は、参照用ブロックメモリ146に格納された符号化済みブロックの画素値を参照してイントラ符号化ブロックの予測を行う。ここでの符号化済みブロックは、イントラ符号化ブロックが属する画像からのみ取得されてもよいし、それ以外の画像から取得されてもよいし、複数の画像を平均化して生成した画素値を用いてもよい。参照画素として適当なのは符号化対象ブロックと同じ被写体を映した画素であるが、他の画像は焦点距離が異なり予測に適さないため、基本的には同じ画像から取得するのが効率的である。イントラ予測部147は、予測ブロックと、予測パラメータをモード判定部149に出力する。
予測残差生成部140は、イントラ符号化ブロックとモード判定部149が出力した予測ブロックとの差分である予測残差を生成する。DCT部141は、予測残差にDCTを施す。量子化部142は、DCTが施された予測残差に量子化を施す(ステップS310)。逆量子化部143は、量子化された予測残差に逆量子化処理を行い、Inv−DCT部144は、逆量子化処理が行われた予測残差に対して逆離散コサイン変換を行う。復号信号生成部145は、逆離散コサイン変換された予測残差と、モード判定部149が出力した予測ブロックとを加算して、参照用ブロックメモリ146に入力する(ステップS315)。
次に、符号化部14は、インター符号化ブロックの符号化を行う。符号化対象のインター符号化ブロック(インター符号化対象ブロック)がボケ補償予測部148及びイントラ予測部147に入力される。さらに、符号化済みのイントラ符号化ブロックである符号化済みブロックが参照用ブロックメモリ146からボケ補償予測部148に入力され、符号化対象のイントラ符号化ブロックと同じ画像の符号化済みブロックが参照用ブロックメモリ146からイントラ予測部147に入力される(ステップS320)。ボケ補償予測部148及びイントラ予測部147はそれぞれ、予測ブロックを出力する。すなわち、ボケ補償予測部148は、後述する図10の処理により符号化済みブロックにボケ補償を行った予測ブロックを生成する(ステップS325)。モード判定部149は、ボケ補償予測部148が生成した予測ブロックと、符号化対象のインター符号化ブロックとの差分値を計算する(ステップS330)。一方、イントラ予測部147は、符号化済みブロックの画素値を参照してインター符号化ブロックにイントラ予測を行い、予測ブロックを出力する(ステップS335)。モード判定部149は、イントラ予測部147が生成した予測ブロックと、符号化対象のインター符号化ブロックとの差分値を計算する(ステップS340)。
モード判定部149は、ステップS330において算出した差分値と、ステップS340において算出した差分値とのそれぞれについてRD効率を推定する(ステップS345)。モード判定部149は、推定結果に基づいてよりボケ補償予測とイントラ予測のいずれがより効率的であるかを判断する(ステップS350)。
モード判定部149は、ボケ補償予測のほうが効率的と判断した場合(ステップS350:ボケ補償予測)、ボケ補償予測部148が出力した予測ブロックを予測残差生成部140に入力する。符号化部14は、ボケ補償予測部148が生成したボケ補償予測の予測ブロックを用いてインター符号化を行う(ステップS355)。一方、モード判定部149は、イントラ予測のほうが効率的と判断した場合(ステップS350:イントラ予測)、イントラ予測部147が出力した予測ブロックを予測残差生成部140に入力する。符号化部14は、イントラ予測部147が生成した予測ブロックを用いてイントラ符号化を行う(ステップS360)。すなわち、ステップS355、ステップS360において、予測残差生成部140は、インター符号化ブロックとモード判定部149が出力した予測ブロックとの予測残差を生成する。DCT部141は、予測残差にDCTを施す。量子化部142は、DCTが施された予測残差に量子化を施す。逆量子化部143は、量子化された予測残差に逆量子化処理を行い、Inv−DCT部144は、逆量子化処理が行われた予測残差に対して逆離散コサイン変換を行う。復号信号生成部145は、逆離散コサイン変換された予測残差と、モード判定部149が出力した予測ブロックとを加算して、参照用ブロックメモリ146に入力する。
符号化部14は、符号化対象のインター符号化ブロックのうちまだ符号化していないものがあると判定した場合(ステップS365:NO)、次のインター符号化ブロックについてステップS320からの処理を繰り返す。そして、符号化部14は、符号化対象の全てのインター符号化ブロックの符号化を行ったと判定した場合(ステップS365:YES)、符号化された予測残差と予測パラメータを出力する(ステップS370)。
図9は、符号化部14が備えるボケ補償予測部148の詳細な構成を示すブロック図である。ボケ補償予測部148は、ぼかしフィルタパラメータ生成部201と、ぼかし処理部202と、差分生成部203と、RD効率推定部204と、RD効率メモリ205と、RD効率比較部206とを備える。
ぼかしフィルタパラメータ生成部201は、ぼかしフィルタに用いられるパラメータであるぼかしフィルタパラメータの値を決定する。ぼかし処理部202は、ぼかしフィルタパラメータ生成部201が生成したぼかしフィルタパラメータ値を用いたぼかしフィルタを符号化済みブロックに施し、予測ブロックを生成する。差分生成部203は、符号化対象ブロックと、ぼかし処理部202が生成した予測ブロックとの差分を生成する。
RD効率推定部204は、差分生成部203が生成した差分のRD効率を推定する。RD効率メモリ205は、RD効率推定部204が推定したRD効率をぼかしフィルタパラメータ値ごとに記憶する。RD効率比較部206は、RD効率メモリ205に記憶されるRD効率を比較し、最も良いRD効率のぼかしフィルタパラメータ値を選択する。ぼかし処理部202は、RD効率比較部206が選択したぼかしフィルタパラメータ値を用いたぼかしフィルタを施して生成した予測ブロックと、選択したぼかしフィルタパラメータの値を出力する。
図10は、ボケ補償予測部148のボケ補償処理を示すフロー図である。ぼかし処理部202は、符号化対象ブロックスタックのイントラ符号化ブロックを符号化した符号化済みブロックを参照用ブロックメモリ146から入力する(ステップS405)。ぼかしフィルタパラメータ生成部201は、初期値のぼかしフィルタパラメータ値を生成する(ステップS410)。ぼかし処理部202は、ステップS405において入力した符号化済みブロックに、ステップS410において生成されたぼかしフィルタパラメータ値を用いたぼかしフィルタを適用し、予測ブロックを生成する(ステップS415)。
差分生成部203は、符号化対象のインター符号化ブロックである符号化対象ブロックと、ステップS415においてぼかし処理部202が生成した予測ブロックとの差分を生成する(ステップS420)。RD効率推定部204は、ステップS420において差分生成部203が生成した差分に対してRD効率の推定を行い、推定結果をRD効率メモリ205に格納する(ステップS425)。RD効率比較部206は、RD効率メモリ205に記憶されるRD効率を比較し、最適なRD効率が得られたか否かを判定する(ステップS430)。
RD効率比較部206は、最適なRD効率が得られていないと判断した場合(ステップS430:NO)、ステップS410からの処理を繰り返す。すなわち、ぼかしフィルタパラメータ生成部201は、RD効率の推定結果を元にしてぼかしフィルタパラメータ値を更新する(ステップS410)。ぼかし処理部202は、ぼかしフィルタパラメータ生成部201が更新したぼかしフィルタパラメータ値を用いたぼかしフィルタにより、符号化済みブロックにぼかし処理を施して予測ブロックを生成する(ステップS415)。差分生成部203は、符号化対象ブロックと予測ブロックとの差分を生成し(ステップS420)、RD効率推定部204は、この差分に対して推定したRD効率をRD効率メモリ205に格納する(ステップS425)。RD効率比較部206は、最適なRD効率が得られたか否かを判定する(ステップS430)。
RD効率比較部206が、最適なRD効率が得られたと判定した場合(ステップS430:YES)、最終的にRD効率が最も良かったぼかしフィルタパラメータの値を選択する。ぼかし処理部202は、最もRD効率の良かった予測ブロック及びぼかしフィルタパラメータの値を出力する(ステップS435)。
ぼかしフィルタパラメータ生成部201の詳細を説明する。図11は、ぼかしフィルタパラメータ生成部201の詳細な構成を示すブロック図である。ぼかしフィルタパラメータ生成部201は、ぼかしフィルタパラメータ初期化部211と、ぼかしフィルタパラメータメモリ212と、ぼかしフィルタ生成部213と、ぼかしフィルタパラメータ更新処理決定部214と、ぼかしフィルタパラメータ更新処理部215とを備える。
ぼかしフィルタパラメータ初期化部211は、ぼかしフィルタパラメータ値を初期化する。ぼかしフィルタパラメータ値は、ボケ強度を表す。ぼかしフィルタパラメータメモリ212は、ぼかしフィルタパラメータ値を記憶する。ぼかしフィルタ生成部213は、ぼかしフィルタパラメータ値を用いたぼかしフィルタを生成する。ぼかしフィルタパラメータ更新処理決定部214は、ぼかしフィルタパラメータ値の更新処理を行うか否かを決定する。ぼかしフィルタパラメータ更新処理部215は、ぼかしフィルタパラメータ更新処理決定部214がぼかしフィルタパラメータ値の更新処理を行うと決定した場合、現在のぼかしフィルタパラメータ値を更新する。
ぼかしフィルタには、例えばガウシアンブラーフィルタが用いられる。ガウシアンブラーフィルタを用いた場合、ぼかしフィルタパラメータは標準偏差σで表され、フィルタ係数は下記のように計算される。座標(i,j)の入力画素をA[i,j]としたとき、フィルタ適用後の画素値B[i,j]は下の式(1)で表される。
ここでフィルタ係数Gσ(x,y)は下の式(2)で表される。
ただし実装上、フィルタ長が有限となるようx,yを一定の範囲Zにとどめるか、フィルタ係数Gσが一定の値以下になる場合は0とすることが望ましい。標準偏差0の場合はぼかしフィルタを適用しないと定める。上記の定義より、標準偏差σを大きくするほどぼかしフィルタによるぼけの強度が強くなる。ぼかしフィルタパラメータ生成部201による標準偏差の更新は、初期値を0として1ずつ増加させていけばよい。これは、ボケ強度を強くしていくことに相当する。このとき標準偏差の最大値を予め決めておき、それ以上は探索を行わないとするのが望ましい。また更新幅を1より大きくしてもよく、初めは大きな更新幅により更新して粗く探索を行った後に細かい探索と段階的に行うことで探索時間の短縮を図ってもよい。
図12は、ぼかしフィルタパラメータ生成部201のぼかしフィルタパラメータ生成処理を示すフロー図である。同図に示す処理は、図10におけるステップS410〜ステップS430の処理に相当する。ぼかしフィルタパラメータ生成処理によって、与えられた参照構造の中でRD効率を最適化できるようなボケ強度を探索する。
まず、ぼかしフィルタパラメータ初期化部211は、ぼかしフィルタパラメータ値を初期化する。例えば、ぼかしフィルタパラメータ初期化部211は、ぼかしフィルタパラメータとして用いる標準偏差σを0に初期化する。ぼかしフィルタパラメータメモリ212は、初期化されたぼかしフィルタパラメータ値を記憶する。ぼかしフィルタ生成部213は、初期化されたぼかしフィルタパラメータ値を入力する(ステップS505)。ぼかしフィルタ生成部213は、初期化されたぼかしフィルタパラメータ値を用いたぼかしフィルタを生成し(ステップS510)、ぼかし処理部202に出力する(ステップS515)。
ボケ補償予測部148は、ぼかしフィルタパラメータ生成部201が生成したぼかしフィルタに基づいて、ぼけ補償による符号化を実施する。すなわち、ぼかし処理部202は、ぼかしフィルタにより符号化済みブロックにぼかし処理を施して予測ブロックを生成する。差分生成部203は、符号化対象ブロックと予測ブロックとの差分をとり、RD効率推定部204は、この差分に対してRD効率を推定する。RD効率比較部206は、現在のRD効率と、前回のRD効率とを比較する(ステップS520)。
RD効率比較部206が、今回のRD効率は前回から悪化していないと判断した場合(ステップS525:NO)、ぼかしフィルタパラメータ更新処理決定部214は、ぼかしフィルタパラメータ値の更新を決定する。ぼかしフィルタパラメータ更新処理部215は、現在のぼかしフィルタパラメータ値を1増加させ、ぼかしフィルタパラメータメモリ212に記憶する。ぼかしフィルタ生成部213は、更新されたぼかしフィルタパラメータ値を入力する(ステップS530)。ぼかしフィルタパラメータ生成部201は、ステップS510からの処理を繰り返す。
そして、RD効率比較部206が、今回のRD効率は前回から悪化したと判断した場合(ステップS525:YES)、ぼかしフィルタパラメータ更新処理決定部214は、ぼかしフィルタパラメータ値を更新しないと決定する。ぼかしフィルタパラメータメモリ212は、前回のぼかしフィルタパラメータ値をぼかし処理部202に出力する(ステップS535)。
図12の処理は、ボケ強度が被写体の深度と焦点距離との差に応じて純増することを利用して、差分が最小になる箇所を探索している。画像インデックスは、撮影機から焦点面の距離が近い順に付与され、インター符号化ブロックは画像インデックスの順に符号化される。これを利用し、符号化部14は、参照ブロックであるイントラ符号化ブロックに近いほうから(又は遠い方から)探索を行い、ぼかしフィルタパラメータ初期化部211は、遠い方(又は近い方)のブロックでは探索するボケ強度の初期値を、近い(又は遠い)ブロックでの推定値によって定めるようにしてもよい。
例えば、図4に示す例の場合、位置インデックスjのブロックスタックでは、画像G1をイントラ符号化ブロックとする参照構造の場合、ブロックB2−j及びブロックB3−jがインター符号化ブロックとなる。このとき、より画像G1と焦点距離が近い画像G2に含まれるブロックB2−jのぼけ補償予測のためにブロックB1−jに適用するぼかしフィルタパラメータ値(ボケ強度)を決定する。そして、次に画像G2よりも画像G1との焦点距離が遠い画像G3に含まれるブロックG3−jのぼけ補償予測のためにブロックB1−jに適用するぼかしフィルタパラメータ値(ボケ強度)を決定する。ブロックB1−jより焦点距離が遠いブロックG3−jのほうが、ブロックB1−jに適用するボケ強度が強いと考えられる。そこで、ブロックG3−jがインター符号化ブロックであるときのぼかしフィルタパラメータ値の初期値を、ブロックG2−jがインター符号化ブロックであるときについてすでに算出されたぼかしフィルタパラメータ値とし、その初期値よりもボケ強度を強くしていきながらRD効率が最適なぼかしフィルタパラメータ値を探索する。つまり、ブロックG2−jがインター符号化ブロックであるときのぼかしフィルタパラメータ値よりも小さいボケ強度については探索の対象としない。なお、ブロックG3−jがインター符号化ブロックであるときのぼかしフィルタパラメータ値の初期値を、ブロックG2−jがインター符号化ブロックであるときのぼかしフィルタパラメータ値に所定だけ変動させた値としてもよい。
また、ぼかしフィルタパラメータ初期化部211は、イントラ符号化ブロックのぼかしフィルタパラメータの初期値として、参照構造が同じ隣接ブロックのぼかしフィルタパラメータの値に基づく値を設定してもよい。例えば、位置インデックスjのブロックスタックにおいて、ブロックB1−jをイントラ符号化ブロックとする参照構造のときに、ブロックB2−jのぼけ補償予測のためにブロックB1−jに適用するぼかしフィルタパラメータ値(又は、その値を所定だけ変動させた値)を、位置インデックスjに隣接する位置インデックス(j+1)のブロックスタックにおいて、ブロックB1−(j+1)をイントラ符号化ブロックとする参照構造のときに、ブロックB2−(j+1)のぼけ補償予測のためにブロックB1−(j+1)に適用するぼかしフィルタパラメータの初期値とする。そして、初期値を中心として、ボケ強度を増やした場合と減らした場合とによって、ぼかしフィルタパラメータの値を探索する。
次に、エントロピー符号化部19の詳細を説明する。図13は、エントロピー符号化部19の詳細な構成を示すブロック図である。エントロピー符号化部19は、インデックス分離部191と、予測残差二値化部192と、予測パラメータ二値化部193と、参照構造インデックス二値化部194と、算術符号化部195とを備える。
インデックス分離部191は、符号化結果として入力されたデータを、予測残差、予測パラメータ、及び、参照構造インデックスに分離する。予測残差二値化部192は、量子化部142が量子化した予測残差をHEVCと同様に二値化する。予測パラメータ二値化部193は、予測パラメータをHEVCと同様に二値化する。参照構造インデックス二値化部194は、参照構造インデックスを二値化する。算術符号化部195は、予測残差二値化部192が二値化した予測残差、予測パラメータ二値化部193が二値化した予測パラメータ、及び、参照構造インデックスが二値化した参照構造インデックスを算術符号化する。算術符号化部195は、HEVCと同様にCABAC(Context Adaptive Binary Arithmetic Coding)を用いて算術符号化を行う。算術符号化部195として、他の算術符号化器を用いてもよい。
図14は、参照構造インデックス二値化部194の参照構造インデックス二値化処理を示すフロー図である。本実施形態において参照構造インデックスは、各ブロックスタックにおけるイントラ画像インデックスと等しい。また、同じ位置インデックスを持つブロックのうち、最もぼけの少ないブロックがイントラ符号化ブロックとなることが期待される。ここでは、隣接したブロックは同じ被写体を映している可能性が高く、したがって参照構造も近い傾向があることを利用し、参照構造インデックスの効率的な二値化を行う。参照構造インデックス二値化部194は、各ブロックスタックについて同図に示す処理を行う。
まず、参照構造インデックス二値化部194は、ブロックスタックの位置インデックスをインデックス分離部191から入力する(ステップS605)。位置インデックスで示される位置のブロックを「対象ブロック」と記載し、「対象ブロック」に隣接するブロックを「隣接ブロック」と記載する。参照構造インデックス二値化部194は、対象ブロックの上方向に隣接ブロックが存在するか否かを判定する(ステップS610)。参照構造インデックス二値化部194は、上方向に隣接ブロックが存在すると判断した場合(ステップS610:YES)、対象ブロックの参照構造インデックスが、真上の隣接ブロックの参照構造インデックスと一致するか否かを判定する(ステップS615)。
参照構造インデックス二値化部194は、対象ブロックの参照構造インデックスが、真上の隣接ブロックの参照構造インデックスと一致すると判断した場合(ステップS615:YES)、「0」を出力する(ステップS620)。
参照構造インデックス二値化部194は、対象ブロックの参照構造インデックスが、真上の隣接ブロックの参照構造インデックスと一致しないと判定した場合(ステップS615:NO)、真上の隣接ブロックのイントラ画像インデックスを除いて、対象ブロックの参照構造インデックスを改めて付与する(ステップS625)。参照構造インデックス二値化部194は、「1」と再付与した参照構造インデックスとを出力する(ステップS630)。
参照構造インデックス二値化部194は、対象ブロックの上方向に隣接ブロックが存在しないと判定した場合(ステップS610:NO)、左隣のブロックを用いて同様の二値化を行う。すなわち、参照構造インデックス二値化部194は、対象ブロックの左方向に隣接ブロックが存在するか否かを判定する(ステップS635)。参照構造インデックス二値化部194は、左方向に隣接ブロックが存在すると判断した場合(ステップS635:YES)、対象ブロックの参照構造インデックスが、左方向の隣接ブロックの参照構造インデックスと一致するか否かを判定する(ステップS640)。
参照構造インデックス二値化部194は、対象ブロックの参照構造インデックスが、左方向の隣接ブロックの参照構造インデックスと一致すると判断した場合(ステップS640:YES)、「0」を出力する(ステップS645)。
参照構造インデックス二値化部194は、対象ブロックの参照構造インデックスが、左方向の隣接ブロックの参照構造インデックスと一致しないと判定した場合(ステップS640:NO)、左方向の隣接ブロックのイントラ画像インデックスを除いて、対象ブロックの参照構造インデックスを改めて付与する(ステップS650)。参照構造インデックス二値化部194は、「1」と再付与した参照構造インデックスとを出力する(ステップS630)。
参照構造インデックス二値化部194は、対象ブロックの左方向にも隣接ブロックが存在しないと判定した場合(ステップS635:NO)、そのまま対象ブロックの参照構造インデックスを出力する(ステップS655)。
参照構造インデックスの二値化の例を説明する。画像G1、G2、G3の画像インデックスをそれぞれ、00、01、10とする。上述したように、参照構造インデックスには、イントラ画像インデックスが用いられる。
対象ブロックが左上ブロックである場合、上にも左にも隣接ブロックが無い。よって、参照構造インデックス二値化部194は、左上ブロックについては、参照構造インデックス(イントラ画像インデックス)をそのまま伝送する。
対象ブロックの参照構造インデックスが「01」(画像B)であり、真上の隣接ブロックの参照構造インデックスも「01」(画像B)である場合(ステップS610:YES、ステップS615:YES)、参照構造インデックス二値化部194は、「0」を出力する(ステップS620)。
対象ブロックの参照構造インデックスが「01」(画像B)であり、真上の隣接ブロックの参照構造インデックスが「00」(画像A)である場合(ステップS610:YES、ステップS615:NO)、参照構造インデックス二値化部194は、画像Bを除き、画像A及び画像Cに画像インデックスを再付与する。参照構造インデックス二値化部194は、付与対象の画像が2枚のため、画像インデックス長を1ビットとし、画像Aに画像インデックス「0」を、画像Cに画像インデックス「1」を付与する。参照構造インデックス二値化部194は、ビット「1」と、イントラ符号化ブロックである画像Aに再付与された画像インデックス「0」とを結合した「10」を伝送する(ステップS630)。
対象ブロックの真上の隣接ブロックが存在せず(ステップS610:NO)、左方向の隣接ブロックが存在する場合(ステップS635:YES)、参照構造インデックス二値化部194は、真上の隣接ブロックスタックに代えて左方向の隣接ブロックを用いて上記と同様に動作する。
自然画像の場合被写体の深度は縦方向に一致している場合が多いため真上の隣接ブロックの参照構造インデックスの利用を優先するのが望ましいが、左方向の隣接ブロックを優先してもよい。また、図15に示すように、参照構造インデックスを左方向の隣接ブロックから取るか真上の隣接ブロックから取るかを1bitのインデックスにより表してもよい。
図15は、参照構造インデックスの符号例を示す図である。同図は、参照構造インデックスを左方向の隣接ブロックから取るか真上の隣接ブロックから取るかを1bitのインデックスにより表す場合の例を示す。同図において、対象ブロックの真上の隣接ブロックの参照構造インデックスは1であり、左方向の隣接ブロックの参照構造インデックスは0である。参照構造インデックス二値化部194は、真上又は左方向の隣接ブロックの参照構造インデックスを参照する場合は1ビット目に「0」を設定し、2ビット目には左方向の隣接ブロックの参照構造インデックスを参照する場合は「0」を、真上の隣接ブロックの参照構造インデックスを参照する場合は「1」を設定する。また、参照構造インデックス二値化部194は、隣接ブロックの参照構造インデックスを参照しない場合、先頭ビットに「1」を設定し、2ビット目以降にイントラ画像インデックス又は再付与した画像インデックスを設定する。
(第2の実施形態)
第1の実施形態においては、ブロックスタック内において、インター符号化ブロック全てが、同一のイントラ符号化ブロック(ピントの合っている画像のブロック)を参照する1対N型の参照構造を用いており、符号化効率が高い。本実施形態は、ブロックスタック内において、チェーン型の参照構造を用いる。チェーン型は、ブロックスタック内において直前に符号化したブロックを参照して予測を行う。そのため、直前に符号化したブロックは、ピントの合っていない場合もある。本実施形態では、符号化効率は落ちるが、ぼけフィルタのタップ長を小さくすることで、処理速度を向上させ、処理量の削減を図ることができる。以下では、第1の実施形態との差分を中心に説明する。
図16は、第2の実施形態による符号化装置1aの構成を示すブロック図である。同図において、図1に示す第1の実施形態による符号化装置1と同一の部分には同一の符号を付し、その説明を省略する。同図に示す符号化装置1aが、図1に示す符号化装置1と異なる点は、参照構造生成部13に代えて、参照構造生成部51を備える点である。参照構造生成部51は、チェーン型の参照構造を生成する。すなわち、本実施形態の参照構造は、他のブロックの情報を使用せずにイントラ符号化を行うイントラ符号化ブロック1枚と、直前に符号化した符号化済みブロックを参照して予測符号化を行うインター符号化ブロックからなる。符号化部14は、参照構造の順に従ってイントラ符号化ブロック、インター符号化ブロックの順に符号化を行う。そのため、符号化部14のボケ補償予測部148が参照用ブロックメモリ146から入力する符号化済みブロックは、参照構造において示される、符号化対象のインター符号化ブロックと同一のブロックスタックにおいて直前に符号化された符号化済みブロックである。
符号化装置1aの処理は、図2に示す第1の実施形態の処理と同様である。ただし、ステップS120において、参照構造生成部51は、チェーン型の参照構造を生成する。
図17は、参照構造生成部51による参照構造の生成イメージを示す図である。同図に示すフォーカルスタックは、図4に示すフォーカルスタックと同様である。同図の場合、位置インデックスjのブロックスタックでは、ブロックB1−jがイントラ符号化ブロックであり、ブロックB2−jはブロックB1−jを参照するインター符号化ブロック、ブロックB3−jはブロックB2−jを参照するインター符号化ブロックである。また、位置インデックスkのブロックスタックでは、ブロックB2−kがイントラ符号化ブロックであり、ブロックB3−kはブロックB2−kを参照するインター符号化ブロック、ブロックB1−kはブロックB3−kを参照するインター符号化ブロックである。また、位置インデックスlのブロックスタックでは、ブロックB3−lがイントラ符号化ブロックであり、ブロックB2−lはブロックB3−lを参照するインター符号化ブロック、ブロックB1−lはブロックB2−lを参照するインター符号化ブロックである。
図18は、参照構造生成部51の詳細な構成を示すブロック図である。参照構造生成部51は、ブロックスタックインデックス取得部511と、画像インデックス列生成部512と、参照構造インデックス生成部513とを備える。ブロックスタックインデックス取得部511は、ブロックスタックメモリ12から、符号化対象ブロックスタックに含まれる全画像それぞれの画像インデックスを取得する。画像インデックス列生成部512は、画像インデックスの並びを生成する。参照構造を表すこの画像インデックスの並びを、画像インデックス数列とも記載する。参照構造インデックス生成部513は、画像インデックス数列それぞれに、参照構造インデックスを付与する。
図19は、参照構造生成部51の参照構造生成処理を示すフロー図である。同図に示す参照構造生成処理は、画像のボケは焦点距離が被写体の深度から離れるほど強くなっていくことに基づき、符号化対象ブロックが自身よりも強くボケている符号化済みブロックを参照してしまうような参照構造を除外するよう設計されている。
ブロックスタックインデックス取得部511は、ブロックスタックメモリ12から、符号化対象ブロックスタックの全ての画像インデックスを取得し、画像インデックス列生成部512に入力する(ステップS705)。画像インデックス列生成部512は、入力された画像インデックスの並びを全通り生成し、生成した画像インデックスの並びをそれぞれ、画像インデックス数列とする(ステップS710)。画像インデックス列生成部512は、以下の二つの条件を満たさない画像インデックス数列を候補から除外する(ステップS715)。1つ目の条件は、先頭インデックスより小さなインデックスが降順になっていないことであり、2つ目の条件は、先頭インデックスより大きなインデックスが昇順になっていないことである。
画像インデックス列生成部512は、残った画像インデックス数列を辞書順(昇順)にソートする。参照構造インデックス生成部513は画像インデックス数列それぞれに、ソート順に参照構造インデックスを付与する(ステップS720)。参照構造インデックス生成部513は、画像インデックス数列(参照構造)と、各画像インデックス数列の参照構造インデックスとをブロックスタックメモリ12に出力する(ステップS725)。ステップS715において除外処理を行うことで、符号化部14が実行する符号化処理における計算時間削減と、ステップS720において付与する参照構造インデックスの符号量の削減を期待できる。なお、ステップS715の除外処理は行わなくてもよい。
図20は、本実施形態の参照構造の例を示す図である。同図は、参照構造を表す画像インデックス数列と参照構造インデックスの例を示している。同図では、画像インデックスが0、1、2、3の4枚(N=4)の画像の参照構造に参照構造インデックスが付与されている。焦点距離が小さい順に、小さい値の画像インデックスが付与されている。画像インデックス列生成部512は、全通りの画像インデックス数列から、ステップS715の処理に示す除外処理を行った結果得られた参照構造の候補に対して、参照画像インデックスを付与している。参照画像インデックスは、画像インデックス数列の先頭が示すイントラ符号化ブロックの画像インデックスが小さい順に付与されている。また、複数の画像インデックス数列において1〜i(iは1以上N−1以下の整数)番目までの画像インデックスの並びが同じある場合には、i+1番目の画像インデックスの数が小さい順に参照画像インデックスが付与されている。
符号化部14は、画像インデックス列生成部512が生成した各参照構造が表す画像インデックス数列を用いて、図8に示す第1の実施形態と同様に各ブロックスタックを符号化する。また、ボケ補償予測部148のボケ補償処理は、図10に示す第1の実施形態と同様である。ただし、図8のステップS320、又は、図10のステップS405においてボケ補償予測部148に入力される符号化済みブロックは、参照構造により示される、符号化対象のインター符号化ブロックの直前が符号化順の符号化済みブロックである。これにより、イントラ符号化ブロックを直接参照したときと比較して、インター符号化ブロックと参照画像までの深度距離が短くなることによりボケ補償処理で用いるぼかしフィルタの強度を下げ、計算量およびメモリ消費を削減することが期待できる。なお、ボケ補償予測部148は、他の符号化済みブロックを入力してもよく、複数の符号化済みブロックを入力してもよい。
エントロピー符号化部19の構成は、図13に示す第1の実施形態と同様である。予測残差二値化部192、予測パラメータ二値化部193、及び、参照構造インデックス二値化部194における予測二値化、ならびに、算術符号化部195における算術符号化は、HEVCと同様にk次指数ゴロム二値化、トランケーテッド・ユーナリー二値化、固定長二値化、CABACといった手法を組み合わせて行う。また、CABACは、他の算術符号化器でもよい。
本実施形態によれば、フォーカルスタックを従来の符号化方式よりも効率的に圧縮できる。特にインター符号化ブロックに、参照構造で直前にあるブロックを参照させることで、ボケ補償におけるフィルタ長を縮小しデコーダの計算量を低くできる。
上述した実施形態によれば、符号化装置は、フォーカルスタックの各画像をブロック分割し、同一位置にある各画像のブロック群に対して参照構造を構築する。符号化装置は、選択された参照構造に従いブロック群を符号化し、符号化効率の観点から参照構造及び符号化パラメータを最適化する。符号化装置は、ブロック単位で参照構造を決定し、インター符号化においては、ボケ補償予測を行って、RD最適化を実施する。これにより、データ量を低減するように、フォーカルスタックを効率的に符号化することができる。
上述した実施形態における符号化装置1の機能をコンピュータで実現するようにしてもよい。また、符号化装置1の各機能の全て又は一部は、ASIC(Application Specific Integrated Circuit)やPLD(Programmable Logic Device)やFPGA(Field Programmable Gate Array)等のハードウェアを用いて実現されてもよい。符号化装置1の機能をコンピュータで実現する場合、この機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによって実現してもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含んでもよい。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよい。
以上説明した実施形態によれば、符号化装置は、同じ被写体を異なる焦点で撮影した複数の画像からなるフォーカルスタックを符号化する。符号化装置は、ブロック分割部と、参照ブロック決定部と、ぼかし処理部と、符号化部とを備える。ブロック分割部は、フォーカルスタックに含まれる複数の画像のうち符号化対象の画像である符号化対象画像をブロックに分割する。参照ブロック決定部は、符号化対象画像のブロックを符号化するために参照される参照ブロックが、フォーカルスタックに含まれる複数の画像のうち符号化対象画像とは異なる画像である参照画像に含まれる領域である場合、符号化対象画像におけるブロックの領域と、参照画像における参照ブロックの領域とが同じになるように参照ブロックを決定する。参照ブロック決定部は、例えば、参照構造生成部13、51に相当する。ぼかし処理部は、ブロックとの残差が小さくなるように参照ブロックにぼかし処理を施す。符号化部は、ブロックを、ぼかし処理が施された参照ブロックを参照して符号化する。
参照ブロック決定部は、フォーカルスタックを構成する複数の画像それぞれにおいて同じ領域にあるブロックからなるブロック群(ブロックスタック)ごとに、同一のブロック群に含まれる複数のブロックのうち一のブロックのみを、当該ブロック群に含まれる他の全てのブロックそれぞれを符号化するために参照される参照ブロックに決定する。あるいは、参照ブロック決定部は、フォーカルスタックを構成する複数の画像それぞれにおいて同じ領域にあるブロックからなるブロック群(ブロックスタック)ごとに、同一のブロック群に含まれる複数のブロックそれぞれを符号化するために参照される参照ブロックが異なるように、参照ブロックを決定してもよい。
フォーカルスタックを構成する複数の画像のうち参照ブロックが得られる参照画像は、それら複数の画像を撮影した撮影機からブロックにおける被写体までの距離と、それら複数の画像それぞれの撮影機から焦点までの距離との差である距離差に基づき選択される。ぼかし処理部は、参照ブロックに施すぼかし処理の強度を距離差が大きいほど大きくなるように決定してもよい。
ぼかし処理部は、上記のブロック群に含まれる複数のブロックそれぞれの符号化のために参照ブロックに施すぼかし処理の強度を探索する探索処理を、参照ブロックと焦点の距離が小さいブロックから順に、かつ、探索済みの強度を参照して行ってもよい。例えば、ぼかし処理部は、参照ブロックと焦点の距離が小さいブロックについて探索処理を行って得られた強度に基づいて、そのブロックよりも参照ブロックと焦点の距離が大きいブロックの探索処理を行う際の初期値を決定する。
また、ぼかし処理部は、ブロックの符号化のために参照ブロックに施すぼかし処理の強度を探索する探索処理を、符号化対象のブロックと同じブロック群に属し、かつ、当該ブロックよりも参照ブロックと焦点の距離が小さい他のブロックについて探索済みの強度よりも大きな強度を探索対象として行ってもよい。
また、ぼかし処理部は、符号化対象画像のブロックの符号化のために参照ブロックに施すぼかし処理の強度を探索する探索処理を、当該参照ブロックと同じ参照画像から得られる他の参照ブロックを参照する当該符号化対象画像の他のブロックについて探索済みの強度に基づく値を初期値に使用するなどして参照して行ってもよい。
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。