(57)【特許請求の範囲】
【請求項１】
画像を符号化する画像符号化装置であって、
符号化対象の画像を入力する第１の入力手段と、
入力した画像における画素ごとの許容誤差を定める許容誤差情報を入力する第２の入力手段と、
入力した画像を各領域が複数画素からなる複数の領域に分割する分割手段と、
着目領域内の各画素を、それぞれの許容誤差の範囲内で符号化する複数の符号化手段と、
前記許容誤差情報に基づいて、前記複数の符号化手段を制御する符号化制御手段とを有し、
前記符号化制御手段は、
前記着目領域内の各画素の位置と画素値で規定される３次元空間内における、当該着目領域内に各画素値を表す近似平面を導出する導出手段と、
前記着目領域内の画素の値と当該画素に対応する前記近似平面上の値との差が当該画素の許容誤差の範囲を超える画素数を計数する計数手段と、
前記複数の符号化手段のうちのどれで符号化するかの選択において、前記計数手段で計数した画素数が０の場合には、前記複数の符号化手段のうち前記近似平面を用いる第１の符号化手段を選択し、
前記計数手段で計数した画素数が０以外の場合には、計数した画素数に基づいて、前記複数の符号化手段から第２の符号化手段を選択する選択手段と、
を有し、
前記第２の符号化手段として選択される候補には、前記着目領域内のラスタスキャン順に走査した際の各画素の並び方向、及び、各画素の値が表す方向で規定される２次元座標において、各画素の許容誤差範囲内を通過する複数の近似直線を求め、各近似直線の先頭の画素の画素値、終端の画素の画素値、並びに、先頭と終端との間に含まれる画素数を１セットとして符号化する、近似直線を用いる符号化手段が含まれる
ことを特徴とする画像符号化装置。
【請求項２】
前記選択手段は、
前記計数手段が計数した画素数が０以外で、予め設定された閾値以下の場合には前記近似平面を用いると共に、許容誤差を超えた画素の差分に基づく符号化手段を、前記第２の符号化手段として選択し、
前記計数手段が計数した画素数が前記閾値を超える場合には前記近似直線を用いる符号化手段を、前記第２の符号化手段として選択する
ことを特徴とする請求項１に記載の画像符号化装置。
【請求項３】
前記選択手段は、
前記計数手段で計数した画素数が０以外の場合には、
前記着目領域に対し、前記近似平面を用いると共に、許容誤差を超えた画素の差分に基づく符号化手段、及び、前記近似直線を用いる符号化手段それぞれを用いて符号化した際の符号量の少ない方を前記第２の符号化手段として選択する
ことを特徴とする請求項１に記載の画像符号化装置。
【請求項４】
前記第１の符号化手段は、前記近似平面を特定するためのパラメータを符号化する
ことを特徴とする請求項１または３に記載の画像符号化装置。
【請求項５】
前記第１の符号化手段は、前記着目領域内の予め設定された３カ所における前記近似平面上の画素値を符号化することを特徴とする請求項４に記載の画像符号化装置。
【請求項６】
前記近似平面を用いると共に、許容誤差を超えた画素の差分に基づく符号化手段は、
前記近似平面を特定するためのパラメータ、前記着目領域内の各画素の値と前記近似平面との差が許容誤差の範囲内であるか否かを示す情報、及び、許容誤差を超えている場合には画素の値と前記近似平面との差を示す情報を符号化する
ことを特徴とする請求項１乃至３のいずれか１項に記載の画像符号化装置。
【請求項７】
前記第１の入力手段が入力する画像の画素値は、距離または視差を表すことを特徴とする請求項１乃至６のいずれか１項に記載の画像符号化装置。
【請求項８】
コンピュータが読み込み実行することで、前記コンピュータを、請求項１乃至７のいずれか１項に記載の画像符号化装置の各手段として機能させるためのプログラム。
【請求項９】
請求項８に記載のプログラムを格納したことを特徴とするコンピュータが読み取り可能な記憶媒体。
【請求項１０】
画像を符号化する画像符号化装置の制御方法であって、
第１の入力手段が、符号化対象の画像を入力する第１の入力工程と、
第２の入力手段が、入力した画像における画素ごとの許容誤差を定める許容誤差情報を入力する第２の入力工程と、
分割手段が、入力した画像を各領域が複数画素からなる複数の領域に分割する分割工程と、
着目領域内の各画素を、前記許容誤差の範囲内で符号化する複数の符号化工程と、
符号化制御手段が、前記許容誤差情報に基づいて、前記複数の符号化工程を制御する符号化制御工程とを有し、
前記符号化制御工程は、
前記着目領域内の各画素の位置と画素値で規定される３次元空間内における、当該着目領域内に各画素値を表す近似平面を導出する導出工程と、
前記着目領域内の画素の値と当該画素に対応する前記近似平面上の値との差が当該画素の許容誤差の範囲を超える画素数を計数する計数工程と、
前記複数の符号化工程のうちのどれで符号化するかの選択において、前記計数工程で計数した画素数が０の場合には、前記複数の符号化工程のうち前記近似平面を用いる第１の符号化工程を選択し、
前記計数工程で計数した画素数が０以外の場合には、計数した画素数に基づいて、前記複数の符号化工程から第２の符号化工程を選択する選択工程とを有し、
前記第２の符号化工程として選択される候補には、前記着目領域内のラスタスキャン順に走査した際の各画素の並び方向、及び、各画素の値が表す方向で規定される２次元座標において、各画素の許容誤差範囲内を通過する複数の近似直線を求め、各近似直線の先頭の画素の画素値、終端の画素の画素値、並びに、先頭と終端との間に含まれる画素数を１セットとして符号化する、近似直線を用いる符号化工程が含まれる
ことを特徴とする画像符号化装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データの符号化技術に関するものである。
【背景技術】
【０００２】
従来から、測距センサやステレオカメラなどから得られる距離画像（画素値が距離を表している）を符号化する技術が知られている。距離画像を用いれば、撮影していない視点の映像を合成する自由視点画像合成や、人体検出の高精度化、２点間の３次元的な距離の計測等をすることができる。
【０００３】
距離画像の符号化に関する標準技術として、３Ｄ  Ｖｉｄｅｏ  Ｃｏｄｉｎｇ（以下、３ＤＶ）の策定が行われている。３ＤＶでは自由視点映像合成を高画質に行うための距離画像を生成するが、Ｈ．２６４等のＲＧＢ画像の符号化技術と同様、周波数変換を行う為、距離画像のエッジ付近で大きな劣化が生じやすい。このように一部の画素に大きな劣化が発生する圧縮方式は、距離画像の利用方法によっては大きな問題となる。例えば、距離画像を利用して２点間の３次元的な距離の計測を行う場合は、圧縮によって距離情報が大きく劣化した画素値を使用すると、その計測結果も大きく変わってしまう。
【０００４】
一方で画像の画素値の圧縮による最大歪みを、任意の値に抑える技術が知られている。ＪＰＥＧ−ＬＳ（非特許文献１）におけるニアロスレス（準可逆）モードがその代表である。ＪＰＥＧ−ＬＳを距離画像に適用すれば、圧縮により発生する距離画像の各画素の誤差の最大値が抑制され、その結果２点間の距離の計測においても、圧縮により発生する２点間の測距誤差の最大値を、制御することが出来る。
【０００５】
ＪＰＥＧ−ＬＳが、画素値の圧縮による最大歪みを許容誤差以下に抑えるために行う処理の概要を以下に示す。ＪＰＥＧ−ＬＳは、画像の各画素をラスタスキャン順に画素毎に符号化する。画素毎の符号化は以下で述べる２つの符号化モードを切り替えて行う。符号化モードの１つ目は予測符号化モードであり、符号化済みの周辺画素を利用して符号化対象画素を予測し、その予測値と真の画素値との差分を符号化する。差分の符号化において、許容誤差に応じた値で量子化することで、圧縮による最大歪みを許容誤差以下に抑えることができる。符号化モードの２つ目はランレングス符号化モードであり、入力画像中のある画素をラン先頭画素として符号化し、それ以降のラスタスキャン順に現れる符号化対象画素とラン先頭画素との差分が許容誤差以内である画素数を符号化する。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】The LOCO-I Lossless Image Compression Algorithm: Principles and Standardization into JPEG-LS, (IEEE TRANSACTION ON IMAGE PROCESSING, VOL.9, NO.8, AUGUST 2000)
【発明の概要】
【発明が解決しようとする課題】
【０００７】
背景技術で述べたように、ＪＰＥＧ−ＬＳは、画素単位の量子化、もしくは、ランレングス符号化によるライン単位の関数近似によって、精度保証符号化を実現する。この方式はラスタスキャン順に画素を逐次的に符号化できるため、符号化時のメモリ使用量が少なくなるなどの利点があるが、画像の２次元的な相関を有効に利用しない為、圧縮率が低くなる場合がある。例えば、室内を撮影した距離画像の場合、壁や床などの平面が距離画像の大部分を占めることになるのは容易に想像がつく。故に、その様な領域は１つの平面で近似すれば圧縮率が高くなると考えられる。しかし、残念ながら、ＪＰＥＧ−ＬＳでは、画像の水平垂直方向の２次元的に広がる領域をまとめて近似することができない。
【課題を解決するための手段】
【０００８】
この課題を解決するため、例えば本発明の画像符号化装置は以下の構成を備える。すなわち、
画像を符号化する画像符号化装置であって、
符号化対象の画像を入力する第１の入力手段と、
入力した画像における画素ごとの許容誤差を定める許容誤差情報を入力する第２の入力手段と、
入力した画像を各領域が複数画素からなる複数の領域に分割する分割手段と、
着目領域内の各画素を、それぞれの許容誤差の範囲内で符号化する複数の符号化手段と、
前記許容誤差情報に基づいて、前記複数の符号化手段を制御する符号化制御手段とを有し、
前記符号化制御手段は、
前記着目領域内の各画素の位置と画素値で規定される３次元空間内における、当該着目領域内に各画素値を表す近似平面を導出する導出手段と、
前記着目領域内の画素の値と当該画素に対応する前記近似平面上の値との差が当該画素の許容誤差の範囲を超える画素数を計数する計数手段と、
前記複数の符号化手段のうちのどれで符号化するかの選択において、前記計数手段で計数した画素数が０の場合には、前記複数の符号化手段のうち前記近似平面を用いる第１の符号化手段を選択し、
前記計数手段で計数した画素数が０以外の場合には、計数した画素数に基づいて、前記複数の符号化手段から第２の符号化手段を選択する選択手段と、
を有し、
前記第２の符号化手段として選択される候補には、前記着目領域内のラスタスキャン順に走査した際の各画素の並び方向、及び、各画素の値が表す方向で規定される２次元座標において、各画素の許容誤差範囲内を通過する複数の近似直線を求め、各近似直線の先頭の画素の画素値、終端の画素の画素値、並びに、先頭と終端との間に含まれる画素数を１セットとして符号化する、近似直線を用いる符号化手段が含まれることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、画像の各画素をそれぞれの許容誤差以下に抑えながら、高い圧縮率で符号化することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施形態の符号化装置とその周辺装置のブロック構成図。
【図２】第１の実施形態における処理手順を示すフローチャート。
【図３】ブロック単位関数近似とライン単位関数近似の説明図。
【図４】ライン単位関数近似の具体例を説明するための図。
【図５】第１の実施形態の復号装置のブロック構成図。
【図６】コンピュータのブロック構成図。
【図７】視差画像を用いて実世界の３Ｄ座標で平面近似を行う例を示す図。
【図８】実世界の３Ｄ座標で平面近似を行う際のフローチャート
【図９】第３の実施形態の処理手順を示すフローチャート。
【図１０】第４の実施形態の処理手順を示すフローチャート。
【図１１】１ブロック分の符号データの構成を示す図。
【発明を実施するための形態】
【００１１】
以下、添付図面に従って本発明に係る実施形態を詳細に説明する。なお、以下で説明する各実施形態は、本発明を具体的に実施した例を示すもので、特許請求の範囲に記載の構成の具体的な実施形態の１つである。
【００１２】
［第１の実施形態］
本実施形態では、視差画像を取得し、視差画像の各画素を許容誤差以内に収めるような非可逆圧縮を実現する符号化装置を説明する。
【００１３】
図１は本実施形態に関わる符号化装置及びその周辺装置のブロック図である。以下で図１の各部を説明する。
【００１４】
多視点画像撮影部１０１において、多視点のカラー画像を撮影する。そして、視差推定部１０２でステレオマッチングを行い、多視点画像から視差画像を推定する。ここで、視差画像とは各画素の画素値に視差が入った画像である。視差とは、異なる２つの視点で同一の被写体（点）を撮影した際に、一方の視点に映った点が、もう一方の視点での撮影画像のどこに写っているかを示す量である。一般には異なる画像間で、同一の被写体が写る点（以下、対応点）同士が何画素ずれているかで表現される。より具体的には、光軸が平行で、水平軸に沿って基線長Ｂ［ｍｍ］の間隔で左右に並べた２つのカメラで、撮影面（光軸に垂直かつ、２つのカメラを通る平面）からｄ［ｍｍ］離れた点を撮影した場合、２つの撮影画像内の対応点の視差ｎ［ｐｉｘ］は、
ｎ＝ＢＦＷ／（ｄＣ）…（式１）
である。ここで，Ｆはカメラの焦点距離［ｍｍ］、Ｗは撮影画像の幅［ｐｉｘ］、Ｃは撮影素子の幅［ｍｍ］である。なお、カメラが左右に正確に配置されている場合は、対応点の垂直方向の視差は０であることが保証できる（エピポーラ拘束）。従ってここで説明した視差は、対応点同士の水平方向のずれを示していることになる。一般に、画像の各画素値が距離を表す画像を距離画像という。上記説明から分かる通り、視差画像は距離画像の具体的な表現方法の１つであると言える。
【００１５】
なお、多視点画像撮影部１０１及び視差推定部１０２の目的は、視差画像を得ることであるため、これらを別の方式に置き換えても構わない。視差画像は、撮影装置と被写体の距離を（式１）に基づく変換を施して表現した量であるため、上で述べた、多視点画像間のステレオマッチング以外の距離情報取得技術も広く用いることができる。例えば、パターン照射した光を別の視点のカメラから捉え、パターンの歪み具合から距離を計測するアクティブステレオ方式や、レーザーが往復してくるまでの時間から距離を計測するタイムオブフライト方式などがある。
【００１６】
実施形態における符号化装置１０３は、視差画像に対して精度保証の符号化を行う。まず符号化装置１０３の各部の概要を説明する。符号化装置１０３には、符号化対象となる視差画像が画像入力部１０４に入力され、許容誤差情報取得部１０５が許容誤差情報を取得し、領域分割部１０６〜領域符号化部Ｃ１１１によって視差画像を圧縮し、符号データを出力する。また、必要であれば、視差画像の画素値である「視差」を「距離」（ｍｍ単位など）に変換するための視差距離変換情報も符号化装置１０３が符号データの一部として出力する。視差距離変換情報は、視差が取り得る画素値と距離の対応を示すテーブルや、視差を入力として距離を出力とする関数として表現できる。
【００１７】
ここで、許容誤差情報は、画素毎の許容誤差を指定する情報であり、例えば、各画素の許容誤差を画素値に持つ画像の形で与えられる。また、各画素の許容誤差は正の方向と負の方向で異なる値であっても良く、その場合は正と負の方向のそれぞれの許容誤差を画素値に持つ２枚の画像で与えられる。本実施形態でも、各画素の許容誤差が正と負それぞれで異なる値で入力されるとする。また、許容誤差を画素毎に与える場合の特殊な例として、許容誤差を画素値に応じて定めることも考えられる。一般に測距センサは近距離ほど高精度で、遠距離ほど低精度になるため、画素値に応じて許容誤差を変えることで、測距センサの測距精度の特性に合わせた許容誤差の制御が実現できる。なお、ＪＰＥＧ−ＬＳでは許容誤差は画像内の全ての画素に対して同一の値が用いられる為、許容誤差情報として定数を１つ指定する。それに対し、本実施形態では画素毎に異なる許容誤差を指定可能であるため、許容誤差のより柔軟な制御が可能である。
【００１８】
領域分割部１０６は画像を複数の領域に分割する。各領域は複数の画素で構成される。領域符号化モード判定部１０７では、各領域の符号化モードを判定する。実施形態における符号化モードは符号化モードＡ，Ｂ、Ｃの３種類とするが、この数は３に限定されず、２以上であればよい。領域符号化モード符号化部１０８で各領域の符号化モードの種類を示す情報を符号化する。そして、領域符号化モード符号化部１０８は、各領域をその符号化モードに従って、領域符号化部Ａ１０９、領域符号化部Ｂ１１０、領域符号化部Ｃ１１１のいずれかに供給する。領域符号化部Ａ１０９、領域符号化部Ｂ１１０、領域符号化部Ｃ１１１はそれぞれ、領域内の全画素に対して、圧縮による最大歪みを許容誤差以下に抑える符号化を行う。
【００１９】
ここで、実施形態における領域符号化モード判定部１０７について補足する。領域符号化モード判定部１０７では、着目領域内の全画素に対して圧縮による誤差を許容誤差以下に抑えるという条件を満たす中で、最もデータ量の削減が見込める領域符号化モードを決定する。この際、各画素の許容誤差が変われば、最も適した符号化モードも変わる。従って、符号化モードを判定する際には、許容誤差情報取得部１０５で取得する許容誤差情報を判断に利用することが、最適な符号化モードを判定する為に重要だと言える。
【００２０】
次に、領域符号化部Ａ〜Ｃについて補足する。実施形態における領域符号化部は本実施形態では３つの場合を述べるが、２つ以上であればよい。
【００２１】
既に述べたように、距離画像（視差画像を含む）は、壁や床などの平坦な部分が多い。従って、領域符号化部のうちの少なくともひとつは高圧縮を実現するために、領域内の画素を、少数のパラメータで決まる単純な関数によって、まとめて近似するモードで有ることが望ましい。
【００２２】
一方、精度保証符号化は全ての画素に対して圧縮による最大歪みを許容誤差以下に抑えるという強い制約を持つ。それ故、少数のパラメータで決まる単純な関数によって領域内の全ての画素に対してこの条件を満たすのが難しい場合もある。従って、領域符号化部のモードのうちの１つは、平坦でない領域内の画素に対しても最大歪みを許容誤差以下に抑えることが容易な符号化モードを持つことが望ましい。例えば、ＪＰＥＧ−ＬＳのように、ラスタスキャン順に画素を１つずつ読み込み、画素単位に量子化する方式やライン単位の関数近似（ＪＰＥＧ−ＬＳではランレングス符号化）を行う方式が考えられる。
【００２３】
以下では符号化装置１０３の中で、特に領域分割部１０６〜領域符号化部Ｃ１１１が行う処理フローの具体例を、図２を用いて説明する。
【００２４】
図２のフローチャートの開始段階では、これまでの図１の説明で述べた通り、視差画像、視差距離変換情報、および、許容誤差情報を、画像符号化装置１０３の画像入力部１０４が入力（受信）しているものとする。
【００２５】
まず、Ｓ２０１において、入力した画像を予め設定されたサイズのブロックに分割する。本実施形態においてはブロックの大きさは４×４画素とする。なお、本実施形態はブロックの大きさに依らず実施できるため、８×８や８×１６など、異なる大きさのブロックを用いても良い。また、画像内に異なる大きさのブロックが混在しても構わない。この処理は図１の領域分割部１０６が行う処理である。以下、図２のフローチャートを用いた説明においては「領域」と「ブロック」は同様の物として扱う。
【００２６】
次にＳ２０２では、分割して得られたブロックの１つを選び、そのブロック内の画素を平面により関数近似する。図３を用いて詳しく説明する。図３（ａ）は入力された視差画像の、符号化対象の着目ブロックを示している。図３（ｂ）は、着目ブロック領域内の各画素の位置と画素値で規定される３次元空間内にて、各画素を平面で近似した様子を示している（以下、この平面を近似平面という）。図３（ｂ）の黒丸は、２次元座標で表される画像内の位置（ｉ，ｊ）（ここでｉ，ｊ＝０，１，２，３のいずれか）にある画素の真の画素値を示している。なお、図３（ａ）と正確に対応させるため、正確には、黒丸は４×４画素のブロックの画素数に対応する１６点必要であるが、図を見やすくするために黒丸の数を減らしている。また、黒丸から伸びた実線は各画素が許容内の誤差で取り得る画素値の範囲を示している。この画素値（距離、視差）の許容誤差は、許容誤差情報にて正、負の値として規定されている点は既に説明した。
【００２７】
図３（ｂ）から分かる様に、Ｓ２０２では２次元画像上の位置座標（ｉ，ｊ）と画素値からなる３次元の空間において近似平面を生成し、その近似平面によってブロック内の画素の画素値を近似する。この近似平面は最小二乗法などで導出（算出）すれば良い。
【００２８】
次にＳ２０３ではブロック内の画素に対して、Ｓ２０２で生成した近似平面上の近似画素値が、真の画素値の許容誤差範囲を超えるている画素数Ｍをカウントする。
【００２９】
具体的には、位置（ｉ，ｊ）の画素の真の画素値をＸ（ｉ，ｊ）、位置（ｉ，ｊ）の平面上の近似画素値をＰ（ｉ，ｊ）、画素値Ｘ（ｉ，ｊ）に対する正の許容誤差をＴｐ（Ｘ（ｉ，ｊ））、負の許容誤差をＴｎ（Ｘ（ｉ，ｊ））としたき、
Ｐ(i,j)−Ｘ(i,j)≦Ｔｎ(Ｘ(i,j))  または、
Ｐ(i,j)−Ｘ(i,j)≧Ｔｐ(Ｘ(i,j))
のいずれかを満たす回数をＭとする。
【００３０】
Ｓ２０４では、着目ブロックの領域符号化モードをＭに基づいて判定する。Ｓ２０２〜Ｓ２０４は領域符号化モード判定部１０７が行う処理である。以下、Ｍの値に応じて３つの符号化モードのいずれかに分岐（選択）するため、その分岐に係る処理を以下で述べる。なお、全ての分岐で判定結果に基づいて領域符号化モードを行う処理は共通である。この処理はそれぞれ、Ｓ２０５、Ｓ２０７、Ｓ２１０で行う。本実施形態では３つの符号化モードを領域毎に切り替えるため、３つの符号化モードの何れを用いたかを特定するために各領域で高々２ビットの情報を付与する必要がある。
【００３１】
・Ｍ＝０の場合：
Ｓ２０２で生成した近似平面によってブロック内の全ての画素が許容誤差内で符号化できるため、Ｓ２０６にて、Ｓ２０２で生成した近似平面を規定するパラメータを符号化すれば良い。３次元空間における平面は３点の座標で特定できる。単純に行うなら１点につき（ｉ，ｊ，画素値）の３値×３点＝９つの値をパラメータとして符号化する必要がある。しかし、（ｉ，ｊ）については予め指定した値、例えば符号化対象ブロックの４隅のうちの３点の位置と順序を決めておけば、座標は省略できる。本実施形態では、着目ブロック内の、近似平面の左上隅の画素、右上隅の画素、左下隅の画素の値を、この順序に符号化する。なお符号量の観点から、符号化する画素値は整数などに丸めることが望ましい。この場合はＳ２０３でＭをカウントする際に用いる近似平面も、パラメータを整数に丸めたものを用いる必要がある。Ｓ２０６は領域符号化部Ａ１０９が行う処理である。
【００３２】
・０＜Ｍ＜Ｍｔの場合
（ここで、Ｍｔは予め設定された閾値で、例えばブロック内の画素数の１／１０（＝実施形態では１ブロックは１６画素であるので、近似して“２”）とする。）
この条件を満たすのは、Ｓ２０２で生成した近似平面によってブロック内のほとんどの画素が許容誤差内で符号化出来る場合である。よって、この場合はＭ＝０の場合と同様、Ｓ２０８おいてＳ２０２で求めた近似平面のパラメータを符号化する。そして、Ｓ２０９では許容範囲を超える誤差を持つ画素においては近似平面による近似画素値と真の画素値の差分を符号化する。ここで、大部分の画素は許容誤差以内であり、また、許容誤差を超える画素の差分値の絶対値は、０近辺に多く分布するという特徴がある。そこで、Ｓ２０９においては、許容誤差を超える画素を特定するためのバイナリマップ（４×４画素であるので１６ビット）をランレングス符号化する。そして、許容誤差を超える画素の差分値を順に、デルタ符号化などの０近辺の値に短い符号長を与える符号化を行えば良い。Ｓ２０８およびＳ２０９は領域符号化部Ｂ１１０が行う処理である。
【００３３】
・Ｍ≧Ｍｔの場合：
Ｓ２０２で生成した近似平面では、ブロック内の多くの画素が許容誤差を超えてしまう場合である。この場合はＳ２１１においてライン単位関数近似を行いそのパラメータを符号化する。図３にライン単位関数近似の説明を述べる。図３（ｃ）が符号化対象ブロックであり、矢印に示した様にラスタスキャン順に画素に番号（画素番号）を付けていく。図３（ｄ）は水平軸に画素番号（ブロック内のラスタスキャン順に走査した際の画素の並び方向）、垂直軸に画素値をプロットした図である。図３（ｂ）と同様、黒丸が真の画素値、黒丸から上下に伸びる実線が、その誤差の許容誤差範囲を表している。Ｓ２１１では、図３（ｄ）の太線で示した様に、画素値を複数の線分により近似し、その線分を特定するためのパラメータを符号化する。この際、近似用の線分（太線）は、ブロック内の全ての画素の許容誤差の範囲内を通過している必要がある。
【００３４】
Ｓ２１１で行う線分近似の処理を、図４を用いて詳しく説明する。まず図４（ａ）に示すように、先頭画素と、その次の画素を両端にもつ線分を求める。その後図４（ｂ）に示すように線分の終端画素の位置を１つずらす。新たに出来た線分が、線分の先端と終端の間にある全画素の画素値を近似できるか否か、すなわち、線分が、その範囲内の全画素のの許容誤差範囲内を通過するか否かを判定する。近似可能な場合は終端画素をさらにずらす。このようにして近似可能な限り終端画素を増やしながら図４（ｃ）、（ｄ）で示すように線分を伸ばしていく。そして、図４（ｅ）において破線で囲ったように、線分による近似で許容以上の誤差を持つ画素が現れた場合は、線分近似の区間を１つ手前の図４（ｄ）の状態まで戻す。そして図４（ｆ）に示すように新たな線分（近似直線）を追加し、同様に線分の近似区間を可能な限り伸ばしていく。この繰り返しによりブロック内の全画素を許容誤差内で近似することが可能である。次に、上記処理で求まった複数の近似線分の符号化方法を述べる。
【００３５】
１つの線分は、
・先頭画素の画素値
・先頭画素と終端画素の区間にある画素数
・終端画素の画素値
を１セットとするパラメータで表される。それ故、これらを近似に要した線分の数だけ順に符号化すれば良い。以上で述べたＳ２１１の処理は領域符号化部Ｃ１１１が行う。なお、ここでは線分による近似の例を述べたが、曲線などの高次の関数でも同様の手順でライン単位関数近似可能である。
【００３６】
以上で分岐処理の説明を終える。Ｓ２１２では全てのブロックを符号化したかを判定し、処理していないブロックが有る場合はＳ２０２に戻る。以上で図２のフローチャートの説明を終える。
【００３７】
図２に示したフローチャートに従った処理を行った場合の、符号化装置１０３が出力する１ブロック分の符号データの構成を図１１に示す。図１１に示すように、ブロック毎に、領域符号化モードと、その領域符号化モードに応じた符号データを持つ。本実施形態では領域符号化モードは３つであったため、それを特定するために高々２ビットの情報を持てば良い。領域符号化モード毎の符号データの詳細は、図２フローチャートの対応する処理の説明で既に述べた為、ここでの説明は割愛する。なお、図１１の例では各画素のビット深度が８ビットの例を示した。図１１に示した構成の符号データが、画像を構成する全てのブロックについて生成、結合され、符号化装置１０３から出力される。なお、画像の画素数や、ブロックを構成する画素数など、復号に必要な情報は符号列の先頭にヘッダとして付与されるものとする。以上で、図１の符号化装置の説明を終える。
【００３８】
次に図５を用いて図１の符号化装置で出力される符号データの復号装置を説明する。領域符号化モード復号部５０１は、画像内の各領域の符号化モードを復号する。実施形態の場合、符号データの種類はＡ，Ｂ，Ｃの３つがある。それ故、復号装置もそれに合わせて領域復号部Ａ５０２、領域復号部Ｂ５０３、領域復号部Ｃ５０４の３つが設けられる。そして、領域符号化モード復号部５０１は、符号化モードを復号した後、後続する符号化データを、領域復号部Ａ５０２、領域復号部Ｂ５０３、領域復号部Ｃ５０４のいずれか１つに供給し、復号を行わせる。領域復号部Ａ５０２、領域復号部Ｂ５０３、領域復号部Ｃ５０４の復号処理は、領域符号化部Ａ１０９，領域符号化部Ｂ１１０，領域符号化部Ｃ１１１１に対応するデコード処理を行う。
【００３９】
領域復号部Ａ５０２は、着目ブロックの符号化データから３カ所の画素値を復号する。そして、その３つの画素値が、４×４画素で構成される平面の左上隅、右上隅、左下隅の３カ所の画素の画素値とみなし、他の１３個の画素値を、それぞれに該当する平面上の位置の値で決定すればよい。
【００４０】
領域復号部Ｂ５０３は、まず、領域復号部Ａ５０２と同様にして１６画素の近似画素値を決定する。そして、領域復号部Ｂ５０３は許容誤差を超える画素を特定する（ランレングス復号）。そして、特定した画素に、真の画素値との差分を加算する。
【００４１】
領域復号部Ｃ５０４は、着目ブロックの符号化データから｛先頭画素の画素値、先頭画素と終端画素の区間にある画素数、終端画素の画素値｝を得る。そして、その区間の先頭画素値と終端画素値とを区間画素数だけ隔ててその間を直線で結ぶことで、中間の画素値を決定していけばよい。１ブロックは１６画素で構成されるので、１６画素分の画素値が復号できるまで、同様の処理を行えば良い。
【００４２】
以上で、発明を実施するための構成について述べた。以下では図１の各部について、上記で述べなかった事項の補足を行う。
【００４３】
上記説明では符号化装置１０３で視差画像の符号化を行う例を示したが、視差画像に限らず、グレー画像や、カラー画像など、任意の画像に適用することができる。グレー画像の例としては、距離、温度、明るさ等の物理量が考えられる。カラー画像の例としては、多視点画像撮影部１０１では視差推定を行うために複数のカラー画像を取得するが、ここで取得したカラー画像の１枚、もしくは複数枚を、符号化装置１０３で符号化することが考えられる。この場合、カラー画像と視差画像を同様の符号化装置で共有でき、システムが簡易になるというメリットがある。
【００４４】
また、上記カラー画像にはＪＰＥＧなど、符号化装置１０３とは異なる符号化を適用することも考えられる。この際、ＪＰＥＧはブロック単位に異なる画質で符号化することができるため、同一視点の視差画像を参照し、許容誤差が大きい画素が多いブロックに対しては、カラー画像も該当ブロックの画質を下げ、高圧縮にすることも考えられる。これはＪＰＥＧに限らず、領域毎に圧縮率をコントロール可能な画像符号化方式全般で実現できる。
【００４５】
領域分割部１０６の具体例として、図２のフローチャートでは画像をブロックに分割する例を示した。しかしこれ以外にも、任意の領域分割が可能である。例えば入力画像の画素値が近いものを同じ領域に分割するようなＫ−近傍クラスタリングやＥＭアルゴリズムなどの技術によって領域分割を行うことも考えられる。そのような場合は各画素がどの領域に含まれるかを示す領域分割情報を符号データに含める必要がある。
【００４６】
領域符号化モード判定部１０７では、図２のフローチャートに示した様に、領域に対して平面近似を行い、平面で許容以内の誤差で近似できる画素数によって符号化モードの判定を行った。しかし、一般にはどのような判断基準を用いても良い。ただし、許容誤差を利用した基準による符号化モードの判定が、圧縮率を向上する上では特に有効だと考えられる。これには図２のフローチャートで述べた方法の他にも、例えば、全ての領域符号化部で、許容誤差以下に収まるような符号化を行い、結果として最も符号データが小さくなる符号化モードを選ぶこともできる。ただし、この基準は、圧縮率を小さくするという観点では有効であるが、全ての符号化モードで符号化するため、図２で説明した方法に比べて処理時間が多くかかるという問題がある。
【００４７】
領域符号化モード符号化部１０８は、必須の構成要素ではない。例えば、領域符号化部の全てのモードを必ず許容誤差以下に収まる様な符号化にしておき、領域符号化モード判定部１０７ではそれらのどの符号化モードを使うかを、符号化済みの周辺ブロックから予測すれば、領域符号化モードを符号データに含める必要はない。例えば、本実施形態では領域符号化モードＢのブロック単位関数近似と差分による符号化、及び、領域符号化モードＣのライン単位関数近似による符号化は共に、各領域の全画素を許容以内の誤差で符号化出来るモードである。従って、この２つのモードのどちらを使うかを、周辺ブロックから予測するようにすれば良い。符号化モードを符号データに含めない場合は、復号装置においても領域符号化モード復号部５０１が不要となり、代わりに、領域符号化モード判定部１０７と同様の処理により、復号済みの周辺ブロックから符号化モードを判定する構成部が必要となる。周辺ブロックを利用した領域符号化モードの判定方法には、たとえば、符号化対象済みブロックの左にあるブロックの符号量が閾値以上か、閾値以下かによって、符号化対象ブロックの符号化モードを判定する方法がある。なお、上記実施形態では、領域符号化モードの判定の基準に許容誤差情報を反映するのが望ましいと述べたが、ここで述べた方法も、周辺ブロックの符号量は許容誤差情報によって変化するため、許容誤差情報を暗に利用していると言える。
【００４８】
以上で本第１の実施形態の説明を終える。上記構成により、符号化装置１０３は、画像入力部１０４に入力された画像の各画素の圧縮によって発生する誤差の最大値を、許容誤差情報取得部１０５で取得する許容誤差以下に抑えながら画像を符号化可能な、符号化装置となる。なお、上記実施形態では、許容誤差を、画素値毎に正の許容誤差と負の許容誤差とを独立して設定するものとしたが、１つの値に正と負の符号をつけて表現しても良い。
【００４９】
［第１の実施形態の変形例］
図１に示した符号化装置１０１の各部はハードウェアで構成しても良いが、ソフトウェア（コンピュータプログラム）として実装しても良い。この場合、このソフトウェアは、ＰＣ（パーソナルコンピュータ）等の情報処理装置の記憶装置（ハードディスク装置等）にインストールされることになる。そしてこのコンピュータのＣＰＵがこのインストールされたソフトウェアをＲＡＭにロードして実行することで、このコンピュータは、上述の画像符号化装置として機能を実現することになる。即ち、このコンピュータは、上述の画像処理装置に適用することができる。ここで第１の実施形態の符号化装置に適用可能なコンピュータのハードウェア構成例について、図６のブロック図を用いて説明する。
【００５０】
ＣＰＵ１５０１は、ＲＡＭ１５０２やＲＯＭ１５０３に格納されているコンピュータプログラムやデータを用いて、コンピュータ全体の制御を行うと共に、画像処理装置が行うものとして説明した上述の各処理を実行する。ＲＡＭ１５０２は、コンピュータ読み取り可能な記憶媒体の一例である。ＲＡＭ１５０２は、外部記憶装置１５０７や記憶媒体ドライブ１５０８、更にはネットワークインタフェース１５１０からロードされたコンピュータプログラムやデータを一時的に記憶するためのエリアを、有する。更に、ＲＡＭ１５０２は、ＣＰＵ１５０１が各種の処理を実行する際に用いるワークエリアを有する。即ち、ＲＡＭ１５０２は、各種のエリアを適宜提供することができる。ＲＯＭ１５０３は、コンピュータ読み取り可能な記憶媒体の一例であり、コンピュータの設定データや、ブートプログラムなどが格納されている。
【００５１】
キーボード１５０４、マウス１５０５は、コンピュータの操作者が操作することで、各種の指示をＣＰＵ１５０１に対して入力することができる。表示装置１５０６は、ＣＲＴや液晶画面などにより構成されており、ＣＰＵ１５０１による処理結果を画像や文字などでもって表示することができる。
【００５２】
外部記憶装置１５０７は、コンピュータ読み取り記憶媒体の一例であり、ハードディスクドライブ装置に代表される大容量情報記憶装置である。外部記憶装置１５０７には、ＯＳ（オペレーティングシステム）や、図１に示した各処理をＣＰＵ１５０１に実現させるためのコンピュータプログラムやデータ、上記の各種テーブル、データベース等が保存されている。外部記憶装置１５０７に保存されているコンピュータプログラムやデータは、ＣＰＵ１５０１による制御に従って適宜ＲＡＭ１５０２にロードされ、ＣＰＵ１５０１による処理対象となる。
【００５３】
記憶媒体ドライブ１５０８は、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭなどの記憶媒体に記録されているコンピュータプログラムやデータを読み出し、読み出したコンピュータプログラムやデータを外部記憶装置１５０７やＲＡＭ１５０２に出力する。なお、外部記憶装置１５０７に保存されているものとして説明した情報の一部若しくは全部をこの記憶媒体に記録させておき、この記憶媒体ドライブ１５０８に読み取らせても良い。Ｉ／Ｆ１５０９は、外部からカラー画像、距離画像、等を入力するインタフェースであり、一例として示すのであればＵＳＢ（Universal Serial Bus）である。１５１０は、上述の各部を繋ぐバスである。
【００５４】
上述構成において、本コンピュータの電源がＯＮになると、ＣＰＵ１５０１はＲＯＭ１５０３に格納されているブートプログラムに従って、外部記憶装置１５０７からＯＳをＲＡＭ１５０２にロードする。この結果、キーボード１５０４、マウス１５０５を介した情報入力操作が可能となり、表示装置１５０６にＧＵＩを表示することが可能となる。ユーザが、キーボード１５０４やマウス１５０５を操作し、外部記憶装置１５０７に格納された符号化アプリケーションの起動指示を入力すると、ＣＰＵ１５０１はこのプログラムをＲＡＭ１５０２にロードし、実行する。これにより、ＣＰＵ１５０１は、図１に示す各処理部を実行する符号化制御部として機能し、コンピュータが画像符号化装置として機能することになる。
【００５５】
なお、ＣＰＵ１５０１が実行する符号化アプリケーションプログラムは、基本的に図１の符号化装置１０３に属す各部に相当する関数を備えることになる。ここで、画像処理結果は外部記憶装置１５０７に保存することになる。なお、このコンピュータは、以降の各実施形態に係る符号化装置にも同様に適用可能であることは、以下の説明より明らかである。
【００５６】
また、図１の符号化装置の一部をハードウェアで実装し、その他の部分をソフトウェアで実装することも可能である。例えば領域符号化部１０９乃至領域符号化部Ｃ１１１をハードウェアで実装し、それ以外をソフトウェアで実装してもよい。これは以降の実施形態でも同様である。
【００５７】
［第２の実施形態］
第１の実施形態において、図２のＳ２０６にて、ブロック単位の近似関数として平面を生成したが、この平面は図３（ｂ）で示した様に、座標ｉ，ｊ，画素値（＝視差ｎ）の３次元空間における平面であった。しかし、式（１）で示した様に、視差ｎと距離ｄは非線形な関係である為、実世界の壁や床などの平面は、（ｉ，ｊ，ｎ）の座標系では曲面になってしまう。従って、実世界の平面をより効率的に符号化するためには、補正が必要である。そこで、本第２の実施形態では平面近似を、実世界の３Ｄ座標系である（ｘ，ｙ，ｄ）座標系に変換してから行う例を示す。ここで、ｘ，ｙ，ｄの単位は[ｍｍ]など、実世界の位置座標を表す単位である。
【００５８】
以下では本実施形態と第１の実施形態で異なる処理である図２のＳ２０６の処理について述べる。本実施形態におけるＳ２０６の詳細フローチャートを図８に示す。
【００５９】
Ｓ８０１では符号化対象の着目ブロック内の画素の座標（ｉ，ｊ，ｎ）を、（ｘ，ｙ，ｄ）の座標系に変換する。一般にカメラ幾何として知られている通り、式（１）に示したパラメータが分かっていれば、視差画像の各画素（ｉ，ｊ，ｎ）を（ｘ，ｙ，ｄ）座標に変換することができる。図７に測距装置と、視差画像の符号化対象ブロック、（ｘ，ｙ，ｄ）座標系の関係を示した。図７の黒丸は、符号化対象ブロック内の画素を（ｘ，ｙ，ｄ）座標系に変換したものである。また、黒丸から出ている実線は、距離の許容誤差を描画したもので、視差ｎの許容誤差によって定まる。
【００６０】
Ｓ８０２では、図７に示したように、（ｘ，ｙ，ｄ）座標で表した各画素を許容誤差内で近似する近似平面７０１を生成する。
【００６１】
Ｓ８０３では近似平面７０１のパラメータを符号化する。平面を特定するためには任意の３点を符号化すれば良い為、例えば、図７に示した通り、（ｘ１，ｙ１，ｄ１）から（ｘ３，ｙ３，ｄ３）の３点の座標を符号化すれば良い。しかし、これでは９つのパラメータが必要になる為、３つまで減らすことが可能である。図７に破線で示した通りｘ座標、ｙ座標については、対象ブロックの４隅の内の３点の（ｉ１，ｊ１）から（ｉ３，ｊ３）に対応する座標であると事前に定めておけば、ｚ１からｚ３（もしくはｄ１からｄ３）の３つのパラメータのみを符号化すれば良い。
【００６２】
以上で本実施形態におけるＳ２０６の説明を終える。なお、Ｓ２０２、Ｓ２０８、Ｓ２１１における関数近似でも、同様の考えで（ｘ，ｙ，ｄ）座標空間における関数近似を用いることが出来る。また、上記の座標変換による関数近似を用いる場合には、符号データにカメラパラメータなど、（ｉ，ｊ，ｎ）を（ｘ，ｙ，ｄ）座標に変換する為に必要な情報を含める必要がある。
【００６３】
以上で本実施形態の説明を終える。上記構成により、第１の実施形態と同様、入力画像の各画素の圧縮によって発生する誤差の最大値を、許容誤差情報が定める許容誤差以下に抑えながら符号化可能な、符号化装置が実現できる。また、本実施形態特有の効果として、視差画像から実世界の３Ｄ座標系に変換して平面近似を行うことで、多くの画素がまとめて少数のパラメータで符号化できる可能性が高くなり、圧縮率が向上すると考えられる。
【００６４】
［第３の実施形態］
本第３の実施形態では、図１の領域符号化モード判定部１０７が行う符号化モードの判定を、階層的に行う例を示す。
【００６５】
図９に領域分割部１０６〜領域符号化部Ｃ１１１が行う処理フローの具体例を示す。この処理フローは第１の実施形態の図２の処理フローを置き換えるものである。以下で、図９の各処理について説明する。なお、図１の他の構成部品が行う処理は、第１の実施形形態と同様である。
【００６６】
Ｓ９０１〜Ｓ９０３はＳ２０１〜Ｓ２０３と同様の処理を行う。Ｓ９０４でＭの値によって符号化モードを分岐する。Ｍ＝０の場合は符号化モードをブロック単位関数近似に決定し、Ｓ９０５でそのモードを特定するための情報を符号化し、Ｓ９０６でブロック単位近似関数のパラメータを符号化する。これはＳ２０５及びＳ２０６と同様の処理である。
【００６７】
また、０＜Ｍの場合は、符号化モードを決定せずに、Ｓ９０７及びＳ９０８において２つの符号化モードで符号化した場合の符号量をそれぞれ求める。
【００６８】
まず、Ｓ９０７ではブロック単位近似関数の符号量と、その近似関数によって許容以上の誤差となる画素に関する近似画素値と真の画素値との差分符号量との和Ｆ１を求める。符号量はＳ２０８とＳ２０９と同様の処理で実際に符号化を行って確かめれば良い。Ｓ９０８ではライン単位関数近似の符号量Ｆ２を求める。符号量はＳ２１１と同様の処理で実際に符号化を行って確かめれば良い。
【００６９】
Ｓ９０９では２つの符号量Ｆ１とＦ２を比較し、符号量の少なかった方のモードでブロックの符号化を行う。それらの処理はＳ９１０とＳ９１１、もしくはＳ９１２とＳ９１３で行う。Ｓ９１４はＳ２１２と同様である。
【００７０】
上記第３の実施形態ではＳ９０６、Ｓ９１１、Ｓ９１３で行う領域符号化のいずれを適用するかを、Ｓ９０４及びＳ９０９の２段階で行っているのが特徴である。３つの符号化モードの内、Ｓ９０６の符号データはブロック１つ当たりにつき、平面を定める３つのパラメータで済む為、３つのモードで最も小さい符号量となる可能性が高い。そのため、最初の符号化モード判定を行うＳ９０４では、Ｓ９０６の符号化モードで許容以上の誤差を持つ画素が発生しないかどうかを優先的に判定し、Ｍ＝０の場合はＳ９０６を実施する。一方、Ｓ９１１、Ｓ９１３の符号量はどちらが小さくなるかの判定は容易ではない。第１の実施形態ではＭと閾値Ｍｔの大小関係で判断したが、この判定の正確性は「Ｍ＝０の場合はＳ９０６の符号データが最も小さい」という判定に比べて正確性が低い。そのため、Ｍ＞０の場合については、実際にＳ９０７、Ｓ９０８で２つのモードの符号量を確認することで、正確な判断を行えるようにした。
【００７１】
上記では、Ｓ９１１にて、Ｓ９０７の処理と再度実行するものとして説明したが、Ｓ９０７の処理で得られた符号化データをそのまま利用し、Ｓ９１１の処理を省略しても良い。そしてＳ９１３にて、Ｓ９０８の処理と再度実行するものとして説明したが、Ｓ９０８の処理で得られた符号化データをそのまま利用し、Ｓ９１３の処理を省略しても良い。
【００７２】
以上で本実施形態の説明を終える。上記構成により、第１の実施形態同様、入力画像の各画素の圧縮によって発生する誤差の最大値を、許容誤差情報が定める許容誤差以下に抑えながら符号化可能な、符号化装置が実現できる。また、本実施形態特有の効果として、符号化モードの判定を階層的に行うことで、モード判定における処理時間の増加を抑えながら、第１の実施形態より高圧縮な符号化ができると考えられる。
【００７３】
［第４の実施形態］
本実施形態では高圧縮な精度保証符号化を実現するために、標準技術であるＨ．２６４による非可逆符号化と、ＪＰＥＧ−ＬＳによるニアロスレス符号化を組み合わせる例を示す。ＪＰＥＧ−ＬＳは既に述べた通り、全画素に対し共通の定数を許容誤差として設定する精度保証符号化に対応している。一方、Ｈ．２６４の非可逆符号化モードは、精度保証を目的とした方式ではないため、Ｈ．２６４を利用して精度保証符号化を実現するためには、工夫が必要となる。
【００７４】
本第４の実施形態における符号化装置の構成は図１と同様である。多視点画像撮影部１０１、視差推定部１０２、画像入力部１０４は第１の実施形態と同様の処理を行う。許容誤差情報取得部１０５には、全画素に対して同一の定数が許容誤差として与えられる。これは、ＪＰＥＧ−ＬＳがこのような許容誤差の保証しかできない方式の為である。領域分割部１０６〜領域符号化部Ｃ１１１が行う処理の詳細が第１の実施形態と異なるため、以下で図１０を用いて詳しく説明する。
【００７５】
図１０のフローチャートは基本的には、ブロック毎に、Ｈ．２６４イントラモードで利用可能な符号化モードを順に試し、ブロック内の全画素が許容誤差内で符号化できるモードがあればそのモードで符号化する。そして、そのようなモードがなかった場合、ＪＰＥＧ−ＬＳで符号化を行うというものである。以下で各処理を順に説明する。
【００７６】
Ｓ１００１にて、領域分割部１０６が符号化対象の画像を１６×１６画素のブロックに分割する。Ｓ１００２にて、分割した１６×１６画素のブロックに対してＨ．２６４の１６×１６画面内予測符号化を行う。Ｈ．２６４では１６×１６画素のブロックに対し４種類の予測モードが定義されているため、そのいずれか１つを適用する。Ｓ１００３ではＳ１００２で行った予測符号化で、許容誤差を超える画素の数Ｍ１をカウントし、Ｓ１００４でその値により分岐する。ここで許容誤差をＴ，符号化前の画素値をＸ0、復号されることになる画素値をＸ1としたとき、
｜Ｘ0-Ｘ1｜＞Ｔ
となる画素数がＭ１である。
【００７７】
Ｍ１＝０の場合は、その際の符号化モードを１６×１６画素の画面内予測モードとして決定し、Ｓ１００５で領域符号化モードを特定するための情報、Ｓ１００６にて１６×１６画面内予測の予測モードを符号化する。そして、Ｍ１＝０となった符号化データを出力する。Ｍ１が０以外の場合は、Ｓ１００７に進み、１６×１６画面内予測の全モードで予測したかを判定し、まだ試していない１６×１６画面内予測があればＳ１００２に戻る。
【００７８】
１６×１６画面内予測の全ての予測モードを試した上、許容誤差を超える画素数Ｍ１が０となる予測モードがなかった場合、処理をＳ１００８に進める。Ｓ１００８では、着目している１６×１６画素のブロックを４×４画素のブロックに分割する。Ｓ１００９〜Ｓ１０１３は、それぞれＳ１００２〜Ｓ１００６で行った１６×１６画素ブロックの予測と同様の処理、すなわち、４×４画素ブロック内の許容誤差を超える個数Ｍ２を計数する。そして、着目１６×１６画素ブロック内の全４×４画素ブロックのＭ２＝０となる予測モードが存在するか否かを判定する。ここで４×４画素のブロックに対する画面内予測も、Ｈ．２６４が持つ予測方法に準拠する。Ｓ１０１４において全ての４×４画面内予測を試した上、１６×１６画素ブロック内の全ての画素が許容誤差に収まる予測モードが無い場合はＳ１０１５に処理を進める。
【００７９】
Ｓ１０１５では着目１６×１６画素ブロック内の４×４画素のブロックのそれぞれについてＤＣＴ（離散コサイン変換）を行い、Ｓ１０１６で許容以上の誤差を持つ画素数Ｍ３をカウントし、Ｓ１０１７において判定を行う。Ｍ３＝０の場合はＳ１０１８、Ｓ１０１９に進み、領域符号化モードを特定する情報と、ＤＣＴのパラメータを符号化する。Ｍ３が０以外の場合は、Ｓ１０２０、Ｓ１０２１において、領域符号化モードを特定する情報の符号化と、１６×１６画素ブロックを設定された許容誤差に従ってＪＰＥＧ−ＬＳによるニアロスレス符号化を行う。Ｓ１０２１では、領域内の全画素が必ず許容誤差以内に収まることが保証できる。Ｓ１０２２では、全ての１６×１６画素のブロックに対して処理したかを判定し、全てのブロックを処理していない場合はＳ１００２に戻り、全てのブロックを処理している場合はフローチャートの処理を終える。
【００８０】
上記で述べた構成により、Ｈ．２６４とＪＰＥＧ−ＬＳを組み合わせることで、精度保証符号化が実現できる。本実施形態は、ブロック毎に、まず圧縮率の高いＨ．２６４のブロック単位の予測符号化モードやＤＣＴ符号化モードを試し、Ｈ．２６４のどのモードでも許容以上の誤差を持つ画素数が０にできない場合に、ＪＰＥＧ−ＬＳと同様の符号化を行う。本実施形態で述べた符号化装置は、符号化モードの切り替えを、許容以上の誤差を持つ画素があるかないかで判定する以外は、基本的には標準技術を流用することで実現できる。従って、ハードウェアやソフトウェアコードの流用で容易に実装できるというメリットがある。なお、本実施形態ではＨ．２６４の符号化機能である画面内予測符号化モードや、ＤＣＴ符号化モード、の切り替えを行ったが、これ以外のＨ２６４の符号化モードの切り替えにも用いることができる。例えば、距離動画を符号化する場合は、動き補償予測を適用するか否かの判定も、同様の判定基準により切り替えることができる。
【００８１】
なお、Ｓ１０２１において、領域内の全画素が許容以内の誤差に収まる符号化を行うために、本実施形態ではＪＰＥＧ−ＬＳによるニアロスレス符号化を行った。しかし、本実施形態の様に、許容誤差が全画素に対し定数（＝δ）の場合は、領域内の画素を２δ＋１で除算（量子化）し、その商をロスレス符号化することでも、領域内の全画素が許容以内の誤差に収まることが保証できる。ロスレス符号化はＪＰＥＧ−ＬＳの他、Ｈ．２６４、ＪＰＥＧなど様々な標準方式があり、そのいずれを用いても良い。
【００８２】
以上で本実施形態の説明を終える。上記構成により、第１の実施形態と同様、入力画像の各画素の圧縮によって発生する誤差の最大値を、許容誤差情報が定める許容誤差以下に抑えながら符号化可能な、符号化装置が実現できる。また、本実施形態特有の効果として、符号化モードの判定以外は、標準技術の流用で実現できるため、実装が容易であるとういメリットがある。
【００８３】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【００８４】
１０１…多視点画像撮影部、１０２…視差推定部、１０３…符号化装置、１０４…画像入力部、１０５…許容誤差情報取得部、１０６…領域分割部、１０７…領域符号化モード判定部、１０８…領域符号化モード符号化部、１０９…領域符号化部Ａ，１１０…領域符号化部Ｂ、１１１…領域符号化部Ｃ
【図１】
0006723003.tif 000002
【図２】
0006723003.tif 000003
【図３】
0006723003.tif 000004
【図４】
0006723003.tif 000005
【図５】
0006723003.tif 000006
【図６】
0006723003.tif 000007
【図７】
0006723003.tif 000008
【図８】
0006723003.tif 000009
【図９】
0006723003.tif 000010
【図１０】
0006723003.tif 000011
【図１１】
0006723003.tif 000012