説明

ディストーション補正装置

【課題】ディストーション補正および画像圧縮を有する処理系において、全体的な処理時間の短縮を図る。
【解決手段】補正処理部3は、画像データに対して、所定の処理順序でディストーション補正を順次行うとともに、補正された画像データを後段バッファ4に順次書き込む。圧縮処理部5は、後段バッファ4から画像データを順次読み出すとともに、読み出された画像データに対するデータ圧縮を、補正処理部3の処理と並行し、かつ、補正処理部3の処理順序と順序的に対応した処理順序で順次行う。アクセス制御部6は、後段バッファ4に保持しておく必要があるデータを管理することによって、補正処理部3によるデータ書き込みと、圧縮処理部5によるデータ読み出しとを制御する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、レンズの歪曲収差に起因した歪みを含む画像データに対して、ディストーション補正を行った上でデータ圧縮を行う画像処理システムに関する。
【背景技術】
【0002】
例えば、特許文献1には、レンズの歪曲収差に起因した歪みを補正するディストーション補正について開示されている。具体的には、まず、CCDイメージセンサから得られた画像データが1フレーム分、フレームメモリに展開される。つぎに、フレームメモリに展開された1フレーム分の画像データが読み出され、これに基づいて、部分領域毎にディストーション補正が行われる。1フレームの画像は、光軸に対応するフレーム原点を中心に4つの部分領域に分割され、それぞれの部分領域が更に複数の短冊に断片化される。それぞれの短冊は、部分領域の側端から原点に向かって処理される。この処理では、DMA方式によって、各短冊内の画素がX軸と平行なライン単位でフレームメモリから読み出される。1フレームを細かく分割して処理することによって、ディストーション補正を行うユニット内部のバッファ容量の低減を図る。
【0003】
また、特許文献2には、ディストーション補正系と画像圧縮系とを有する手ぶれ補正機能付のデジタルカメラが開示されている。ディストーションによる歪みが存在する画像に対して手ぶれ補正をそのまま施すと、計算上のぶれ軌跡とCCD(レンズ)上のそれとが異なるため、画像の復元を画像全体に対して適切に施すことが困難になる。そこで、このデジタルカメラでは、ディストーション補正を手ぶれ補正後ではなく手ぶれ補正前の画像に対して施すことで、画像復元の適切化を図る。そして、ディストーション補正後に更に手ぶれ補正された画像は、適宜の圧縮形式で圧縮された上で記録媒体に記憶される。
【0004】
【特許文献1】特開2004−64710号公報
【特許文献2】特開2006−33759号公報
【発明の開示】
【発明が解決しようとする課題】
【0005】
上述した特許文献2では、ディストーション補正後に画像圧縮する点については一応開示されているものの、これらの連係による全体処理の高速化やバッファ容量の低減を図るための具体的な工夫については何ら開示・示唆されていない。例えば、ディストーション補正および画像圧縮を逐次処理にて行う場合、前段のディストーション補正系によって1フレーム全体の画像データがフレームメモリに蓄積された後に、後段の画像圧縮が開始される。したがって、1フレーム全体が蓄積された後でなければ、画像圧縮を開始できず、これが処理の遅延を招くことになる。また、ディストーション補正系によって処理されたデータを一時的に記憶するバッファとして、少なくとも1フレーム分の画像データ全体を記憶可能な容量が必要になる。
【0006】
そこで、本発明の目的は、ディストーション補正および画像圧縮を有する処理系において、全体的な処理時間の短縮を図ることである。
【0007】
また、本発明の別の目的は、処理時間の短縮を図りつつ、ディストーション補正系によって処理されたデータを一時的に記憶する記憶容量の低減を図ることである。
【課題を解決するための手段】
【0008】
かかる課題を解決すべく、本発明は、記憶部と、補正処理部と、圧縮処理部と、アクセス制御部とを有する画像処理システムを提供する。記憶部は、1フレームの画像データのデータ量よりも小さな記憶容量を有する。補正処理部は、画像データに対して、所定の処理順序でディストーション補正を順次行うとともに、補正された画像データを記憶部に順次書き込む。圧縮処理部は、記憶部から画像データを順次読み出すとともに、読み出された画像データに対するデータ圧縮を、補正処理部の処理と並行し、かつ、補正処理部の処理順序と順序的に対応した処理順序で順次行う。アクセス制御部は、補正処理部によるデータ書き込みと、圧縮処理部によるデータ読み出しとによって変化する、記憶部に保持しておく必要があるデータを管理することによって、補正処理部による記憶部へのデータ書き込みと、圧縮処理部による記憶部からのデータ読み出しとを制御する。
【0009】
ここで、本発明において、補正処理部は、水平ライン上の画素の配列順序を処理順序として、画素単位でディストーション補正を行い、圧縮処理部は、水平ライン上の画素の配列順序を処理順序として、画素単位でデータ圧縮を行ってもよい。また、補正処理部は、水平ライン上の画素の配列順序を処理順序として、画素単位でディストーション補正を行い、圧縮処理部は、隣接した複数の水平ライン上の複数の画素によって構成される画素ブロックの配列順序を処理順序として、画素ブロック単位でデータ圧縮を行ってもよい。
【0010】
また、本発明において、補正処理部は、1フレームの画像平面を分割することによって得られるそれぞれの部分領域をディストーション補正の処理単位とし、かつ、画像データの時系列的な入力によって、ディストーション補正を行うのに必要な画像データが揃う部分領域の順序を処理順序として、それぞれの部分領域に関するディストーション補正を順次行ってもよい。
【0011】
さらに、本発明において、アクセス制御部は、補正処理部による記憶部へのデータ書き込みにともないカウント値を増加させ、圧縮処理部による記憶部からのデータ読み出しにともないカウント値を減少させるとともに、カウント値が所定の上限値に到達している間は、補正処理部による記憶部へのデータ書き込みを禁止することが好ましい。
【発明の効果】
【0012】
このように、本発明によれば、前段のディストーション補正と後段のデータ圧縮とを並行して行うことで、全体的な処理時間の短縮を図ることができる。また、アクセス制御部によって、記憶部へのデータ書き込みと記憶部からのデータ読み出しとを調停することで、1フレーム分の画像データを記憶部に記憶しておく必要がないので、並列処理を阻害することなく、記憶容量の低減を図ることができる。
【発明を実施するための最良の形態】
【0013】
図1は、本実施形態に係る画像処理システムのブロック構成図である。このシステムは、画像データを出力するカメラ1と、この画像データにディストーション補正を施す補正処理部3と、補正後の画像データを圧縮する圧縮処理部5とを主体に構成されている。カメラ1によるデータ出力と、補正処理部3によるデータ補正と、圧縮処理部5によるデータ圧縮とは、互いに並行して行われ、これらの一連の処理がパイプライン的に行われる。
【0014】
カメラ1と補正処理部3の間には前段バッファ2が、補正処理部3と圧縮処理部5の間には後段バッファ4がそれぞれ設けられている。前段バッファ2には、カメラ1から時系列的に出力された画像データが順次格納される。また、後段バッファ4には、補正処理部3によって補正された画像データが順次格納される。これらのバッファ2,4としては、FIFOメモリ(先入れ先出しを入出力順序とするメモリ)やリングバッファを含めて、バッファとして機能し得る周知の記憶装置(記憶部)を広く用いることができる。なお、本システムにおける一連の処理がパイプライン的に実行される関係上、逐次処理のように、1フレーム分の画像データをバッファ2,4に一括で記憶しておく必要はない。したがって、バッファ2,4は、1フレームの画像データのデータ量よりも十分に小さな記憶容量を有していればよい。本実施形態では、バッファ2,4として、1水平ライン分(或いは、数ライン分)の画像データを格納可能なFIFOを想定している。前段バッファ2へのアクセスは、補正処理部3内の制御回路3cによって制御される。また、後段バッファ4へのアクセス、すなわち、補正処理部3によるデータ書き込みおよび圧縮処理部5によるデータ読み出しは、アクセス制御部6によって制御される。
【0015】
カメラ1は、レンズと、CCDやCMOSセンサといった撮像素子とを備え、撮像画像をフレーム単位で時系列的に順次出力する。本実施形態において、カメラ1は全方位カメラであり、広角レンズが用いられる。ラスタスキャン方式のカメラ1では、所定本数の水平ライン(走査線)によって1フレームの画像が構成される。カメラ1から出力された画像データは、前段バッファ2に順次格納される。前段バッファ2は、カメラ1から時系列的に入力された画像データを、その入力順序を管理しつつ、水平ライン単位で順次蓄積する。
【0016】
補正処理部3は、前段バッファ2から画像データを順次読み出し、画像データのディストーション補正を順次行う。この補正は、水平ライン上の画素の配列順序を処理順序とし、かつ、画素単位で行われる。そして、補正された画像データが後段バッファ4に順次書き込まれる。ここで、「ディストーション」とは、レンズを通過した光が外側(樽形歪み)または内側(ピンクッション歪み)に歪曲する収差をいう。理想的なレンズであればrに届くはずの光線が、実際にはr’にずれてしまう現象が放射方向の歪曲収差である(r,r'はレンズ中心Oからの距離)。一般に、レンズに対する光の入射角が大きくなるほど、この収差(rーr')が大きくなり、広角レンズや広範囲ズームレンズでは、これが顕著になる。レンズ中心Oを画像原点とし、補正後の画素の座標を(x,y)、補正前のそれを(x',y')とする。この場合、ディストーション補正は、以下の数式1による座標変換と考えることができる。ここで、r'/r=f(r)は、一般的な回転対称なレンズの場合にはレンズ中心Oからの距離の関数になる。樽型歪みの場合、距離rが大きくなる程、補正係数f(r)の変化率が増大する。
【0017】
(数式1)
(x',y')=r'/r(x,y)=f(r)・(x,y)
【0018】
補正処理部3は、補正回路3aと、補正テーブル3bと、制御回路3cと、3つのリスト3d〜3fとを有する。補正処理部3によって補正された画像データは、記憶部としての後段バッファ4に格納される。後段バッファ4は、1フレームの画像の上から下に向かって時系列的に入力された画像データを、その入力順序を管理しつつ、水平ライン単位で順次蓄積する。
【0019】
補正回路3aは、前段バッファ2から読み出された画像データに対するディストーション補正を部分領域を処理単位として行い、補正後の画像データを後段バッファ4に出力する。この補正処理では、補正テーブル3bが参照される。補正テーブル3bには、予め設定された特性を有する補正係数f(r)が離散値として記述されている。補正テーブル3bに記述されていない中間値は、ここに記述された離散値f(r)の補間によって算出される。なお、このようなテーブル参照方式(LUT)に代えて、所定の近似関数を用いた演算によって、補正処理を行ってもよい。
【0020】
制御回路3cは、補正回路5の処理開始タイミングおよび前段バッファ2の領域解放タイミングの双方を制御する。これらの制御を行うために、領域分割リスト3dと、処理開始リスト3eと、領域解放リスト3fとが用いられる。補正処理の処理単位が部分領域なので、処理開始タイミングおよび領域解放タイミングも部分領域毎に決定される。
【0021】
図2は、画像平面(補正後)における部分領域の設定例を示す図である。1フレームの画像平面を横方向に短冊状に分割することによって、横短冊状の矩形領域をn個設定し、それぞれを部分領域R(1)〜R(n)とする。領域分割の指定は、同図の座標系で行われ、部分領域Rを指定するパラメータは、この部分領域Rの領域の左上座標psおよび右下座標peである。補正処理時には、ある部分領域Rが図示したようにラスタスキャンされ、これに応じた処理順序で、部分領域R内の画素(ドット)が順次選択・処理される。画素の処理順序は、部分領域Rの処理順序と、単一の部分領域R内におけるラスタスキャンの方向とによって一義的に特定される。
【0022】
図3は、領域分割リスト3dの説明図である。領域分割リスト3dは、処理単位となる部分領域R(1)〜R(n)の範囲を補正後座標系で示し、処理順序に従って並べられている。同図のケースでは、部分領域R(1),R(2),・・・,R(n)の処理順序で補正処理を行うべきことを示すとともに、例えば、部分領域R(1)の画素範囲がps(1)からpe(1)までであることを示す。
【0023】
図4は、画像平面(補正前)における部分領域R(1)〜R(n)の設定例を示す図である。同図は、図2の部分領域R(1)〜R(n)を逆変換(補正処理の座標変換とは逆の変換)して得たものであり、これによって、補正前後における各部分領域Rの位置的な対応関係が明確になる。この対応関係に基づいて、前段バッファ2内のデータがどこまで揃えば、どの部分領域Rの補正処理が開始できるかを予め求めておき、それを規定した処理開始リスト3eが用意されている。それとともに、この対応関係に基づいて、どの部分領域Rの補正処理が終わったら、前段バッファ2の記憶領域をどこまで解放できるかを予め求めておき、それを規定した領域解放リスト3fが用意されている。
【0024】
図5は、処理開始リスト3eの説明図である。処理開始リスト3eには、それぞれの部分領域R(1)〜R(n)に関するデータ蓄積座標が記述されている。データ蓄積座標は、各部分領域Rの補正処理を行うのに必要なデータがすべて揃う座標である。前段バッファ2へのデータ蓄積を水平ライン単位で行う場合には、データ蓄積座標を水平ラインの位置で設定することができる。ここで、図4を参照しつつ、データ蓄積が最上の水平ラインから順に行われるケースを例に説明する。前段バッファ2のデータ蓄積が進行すると、データ蓄積座標Low(1)に相当する水平ライン(下限ライン)に到達する。ここで、「到達」とは、この水平ライン上の全ドットの画像データの蓄積が終了することを意味する。この場合、部分領域R(1)の補正処理に必要な全データが揃ったので、部分領域R(1)の補正処理が許可される。その後、データ蓄積が更に進行すると、データ蓄積領域Low(2)の下限ラインに到達する。この場合、部分領域R(2)の補正処理が許可される。このように、画像の上から下に向かってデータ蓄積を行うという条件下では、図4から明らかなように、部分領域R(1)〜R(n)内における下限ラインの位置がデータ蓄積座標となる。なお、処理開始リスト3eは、領域分割リスト3dを基に補正前画像に座標がマッピングされ、処理順にソートされる。
【0025】
図6は、領域解放リスト3fの説明図である。領域解放リスト3fには、それぞれの部分領域R(1)〜R(n)に関する領域解放座標が記述されている。領域解放座標は、各部分領域Rの補正処理の終了によって、それ以降、必要とされない前段バッファ2の記憶領域を示す座標である。前段バッファ2へのデータ蓄積を水平ライン単位で行う場合には、領域解放座標を水平ラインの位置で設定することができる。図4において、最上の部分領域R(1)の補正処理が終了した場合、領域解放座標Up(2)に相当する水平ライン(上限ライン)までのデータは以後、必要とされないので、この上限ラインまでの記憶領域が解放される。解放された記憶領域内のデータは、破棄され、或いは、上書きが許可される。その後、上から2番目の部分領域R(2)の補正処理が終了した場合、領域解放座標Up(3)に相当する上限ラインまでの記憶領域が解放される。このように、画像の上から下に向かってデータ蓄積を行うという条件下では、図4から明らかなように、部分領域R(1)〜R(n)内における上限ラインの位置が領域解放座標となる。なお、処理開始リスト3eは、領域分割リスト3dを基に補正前画像に座標がマッピングされ、処理順にソートされる。なお、補正処理部3にリスト作成機能を追加して、部分領域Rの設定に基づいて、上述したリスト7a〜7cを自動で作成するようにしてもよい。
【0026】
図7は、補正処理部3の動作タイミングチャートである。まず、前段バッファ2には、水平ラインL1,L2,・・・の順で画像データが順次蓄積されていく。制御回路3cは、前段バッファ2の現在のデータ蓄積状態を示すデータ蓄積情報を前段バッファ2から随時取得する。それとともに、制御回路3cは、処理開始リスト3eを参照して、最初の処理対象である部分領域R(1)のデータ蓄積座標Low(1)に相当する分のデータが蓄積されたか否かをモニタリングする。
【0027】
タイミングt1において、データ蓄積座標Low(1)に相当する水平ラインのデータ蓄積が完了すると、制御回路3cは、部分領域R(1)の補正開始命令を補正回路5に出力する。補正開始命令には、領域分割リスト3dに記述された部分領域R(1)の範囲ps(1)〜pe(1)が含まれる。この命令を受けた補正回路5は、部分領域R(1)の範囲ps(1)〜pe(1)内の各ドットを処理する上で必要な画像データの読み出しを前段バッファ2に随時要求する。そして、読み出された画像データに基づく補間演算(バイリニアまたはバイキュービック等)を伴う補正処理が、前段バッファ2へのデータ蓄積と並行して行われる。
【0028】
タイミングt2において、部分領域R(1)の補正処理が完了すると、補正回路5は、部分領域R(1)の補正処理が終了した旨の補正終了信号を制御回路3cに出力する。この信号を受けた制御回路3cは、領域解放リスト3fを参照して、部分領域R(1)の領域解放座標Up(2)を特定し、領域解放座標Up(2)の指定を含む領域解放命令を前段バッファ2に出力する。この命令を受けた前段バッファ2は、領域解放座標Up(2)に相当する水平ラインまでの記憶領域を解放する。解放された記憶領域は、これ以降に入力する新たな画像データを蓄積するための領域として用いられる。
【0029】
そして、タイミングt3において、データ蓄積座標Low(2)に相当する水平ラインのデータ蓄積が完了すると、制御回路3cは、部分領域R(2)の補正開始命令を補正回路5に出力する。補正開始命令には、領域分割リスト3dに記述された部分領域R(2)の範囲ps(2)〜pe(2)が含まれる。この命令を受けた補正回路5は、部分領域R(2)の補正処理を前段バッファ2へのデータ蓄積と並行して行う。
【0030】
タイミングt4において、部分領域R(2)の補正処理が完了すると、補正回路5は、部分領域R(2)の補正処理が終了した旨の補正終了信号を制御回路3cに出力する。この信号を受けた制御回路3cは、領域解放リスト3fを参照して、部分領域R(2)の領域解放座標Up(3)を取得し、領域解放座標Up(3)の指定を含む領域解放命令を前段バッファ2に出力する。この命令を受けた前段バッファ2は、領域解放座標Up(3)に相当する水平ラインまでの記憶領域を解放する。解放された記憶領域は、これ以降に入力する新たな画像データを蓄積するための領域として用いられる。
【0031】
以後、前段バッファ2のデータ蓄積・領域解放を繰り返しながら、上述した処理順序に従って、部分領域R(3),R(4),・・・,R(n)の補正処理が順次行われる。そして、最後の部分領域R(n)の補正処理が終了すると、1フレーム全体の補正処理が終了し、必要に応じて、次フレームの補正処理に移行する。
【0032】
このように、部分領域R毎の補正処理は、補正に必要な画像データが前段バッファ2内に揃う部分領域R(1)〜R(n)の順序で、前段バッファ2のデータ蓄積と並行して行われる。補正処理が可能になったものから順に補正処理を行うことで、1フレーム分の画像データが前段バッファ2に揃っていなくても、ディストーション補正を開始することができる。このようなパイプライン処理により、データ蓄積に起因した遅延を削減できるので、全体的な処理時間の短縮を図ることができる。また、ディストーション補正が終了する部分領域Rの順序を解放順序として、前段バッファ2の記憶領域を順次解放する。解放された記憶領域は、必要に応じて、新しい画像データを蓄積するための領域として用いられる。これにより、1フレーム全体の画像データを前段バッファ2に同時に蓄積しておく必要がないので、前段バッファ2の記憶容量の低減を図ることが可能となる。
【0033】
一方、補正処理部3の後段に設けられた圧縮処理部5は、後段バッファ4から読み出した画像データに圧縮処理を施して、符号データを出力する。このデータ圧縮は、補正処理部3と同様、水平ライン上の画素の配列順序を処理順序とし、かつ、画素単位で行われる。また、また、圧縮処理部5の処理順序は、補正処理部3の処理順序と順序的に対応している。この圧縮処理部5は、差分符号化部5aと、量子化部5bと、エントロピー符号化部5cと、量子化係数判定部5dと、逆量子化部5eと、差分符号化部5gとを有する。
【0034】
差分符号化部5aは、後段バッファ4から画像データ(補正後)を読み出し、水平ライン上において隣接(例えば左隣)した画素との差分値を算出する。図8に示すように、ある水平ラインL0上で処理対象となる画素をX、その左隣の画素をX−1とすると、差分値Dxは以下の数式2によって算出される。ここで、Cxは、処理対象となる画素の画素値そのものであり、Px-1は、その左隣の画素の復号画素値、すなわち1ステップ前に復号した画素値である。左側の画素に関して、画素値そのものではなく復元画素値を用いる理由は、復号化時における誤差の累積を防止するためである。なお、ライン左端(ライン先頭)の画素(0番目)に関しては、左隣の復号画素値が存在しないので、差分値D0として画素値C0をそのまま使う。
【0035】
(数式2)
Dx=Cx−Px-1
【0036】
一例として、ある水平ライン上の画素値が先頭から順に{64,70,55,55,58,・・・}である場合(復号画素値を考慮せず)、差分符号化によって、{64,6,−15,0,3,・・・}の列よりなる差分符号Dが出力される。周知のように、画像の空間的な相関性より、差分符号Dの頻度分布は0近傍に偏る傾向が生じ、エントロピー符号化を施す上で有利となる。
【0037】
量子化部5bは、量子化係数判定部5dによって決定された量子化係数を用いて、以下の数式3に従って、差分符号Dを量子化する。ここで、量子化符号(量子化後の符号)をSx、差分符号(量子化前の符号)をDx、量子化係数をQxとする。
【0038】
(数式3)
Sx=Dx>>Qx
【0039】
エントロピー符号化部5cは、図9に示すように、各シンボルに対応するカテゴリ符号および付加ビットの可変長符号化を行う。この処理においては、まず、量子化符号Sが、以下の数式4に従ってカテゴリに分類される。同数式において、Cはカテゴリ、Sは量子化符号である。
【0040】
(数式4)
C=0 (S=0の場合)
c-1≦|S|<2c
【0041】
つぎに、カテゴリが符号化される。カテゴリ符号をA、カテゴリをCとすると、カテゴリ符号Aは、以下の数式5に基づき、カテゴリCより一義的に特定される。
【0042】
(数式5)
A=(2C−1)×2
【0043】
また、カテゴリ符号長をALとすると、カテゴリ符号長ALは、以下の数式6に基づき、カテゴリCより一義的に特定される。
【0044】
(数式6)
AL=C+1
【0045】
そして、各カテゴリ内のシンボルが付加ビットに対応付けられる。ここで、付加ビットをB、カテゴリをC、各シンボル(量子化符号)をSとすると、付加ビットBは、以下の数式7より算出される。
【0046】
(数式7)
B=S−2C-1 (S≧0)
B=−S (S<0)
【0047】
また、付加ビット長をBLとすると、付加ビット長BLは、以下の数式8に基づき、カテゴリCより一義的に特定される。
【0048】
(数式8)
BL=C
【0049】
符号フォーマットとしては、上位ビットをカテゴリ符号Aとし、下位ビットを付加ビットBとする。可変長符号をM、カテゴリをC、カテゴリ符号をA、付加ビットをBとすると、可変長符号Mは以下の数式9より特定され、これが出力符号として出力される。
【0050】
(数式9)
M=A×2C+B
【0051】
また、可変長符号長をMLとすると、可変長符号長MLは、以下の数式10より特定される。
【0052】
(数式10)
ML=AL+BL=2C+1
【0053】
量子化係数判定部5dは、可変長符号(復号)の処理毎に、累積符号サイズと累積目標符号サイズとを比較して、量子化係数を画素毎に動的に決定する。図10は、量子化係数判定部5dのブロック構成図である。この量子化係数判定部5dは、2つの加算器51,52と、累積符号サイズバッファ53と、累積目標符号サイズバッファ54と、比較器55とを有する。加算器51は、今回のステップで算出された符号サイズ(上述した可変長符号長ML)を、累積符号サイズバッファ53より読み出された従前の累積符号サイズ、すなわち、これまでのステップにおける符号サイズの累積値に加算する。新たに算出された累積符号サイズは、累積符号サイズバッファ53に保持され、これによって、累積符号サイズが更新される。一方、加算器52は、1画素あたりの目標とする平均ビットサイズに相当する目標符号サイズを、累積目標符号サイズバッファ54より読み出された従前の累積目標符号サイズにステップ毎に加算する。新たに算出された累積目標符号サイズは、累積目標符号サイズバッファ54に保持され、これによって、累積目標符号サイズが更新される。累積目標符号サイズは、1ラインあたりの最大符号量をライン幅で除算した値として予め設定されている。
【0054】
x番目の画素処理後における累積符号サイズをcsizex、目標累積符号サイズをdsizex、x+1番目の画素の量子化に用いる量子化係数をQx+1とすると、比較器55は、以下の規則に従って、量子化係数Qx+1を算出する。
【0055】
(算出規則)
1.累積符号サイズcsizexが累積目標符号サイズdsizexよりも大きく、かつ、今回のステップでの符号サイズ差分(累積符号サイズ−累積目標符号サイズ)が前ステップでの符号サイズ差分よりも大きい場合
量子化係数Qx+1をインクリメント(増加)する。この場合、上記符号サイズ差分が正で、かつ、増加傾向のときのみ量子化係数Qx+1をインクリメントすることが好ましい。
2.累積符号サイズcsizexが累積目標符号サイズdsizexよりも小さい場合
量子化係数Qx+1をデクリメント(減少)する。
3.その他の場合
量子化係数Qx+1をそのまま(不変)とする。
【0056】
ここで、目標符号サイズについて補足する。通常、1ラインの目標符号サイズをライン幅で除算した値が1画素あたりの平均目標符号サイズとなる。ただし、上述したように、ライン先頭(左端)の画素に関しては、差分値ではなく画素値そのものを符号化するため、符号長が比較的長くなる傾向がある。そのため、上記の値を一律に与えると、ライン左端近傍の量子化係数が大きくなってしまうため、その部分における画質低下が懸念される。この問題を解決するためには、図11に示すように、累積目標サイズバッファ53の初期値として0でない値Aを設定する。また、ライン右端近傍(ライン幅W−A)では、累積目標符号サイズバッファ54の初期値を吸収すべく、入力する目標符号サイズとして、本来の値Bよりも小さな値(B−1)を用いる。これにより、同図に示したように、累積目標符号サイズは、ライン左端における値Aから線形的に増加し、(W−A)の位置で傾きが減少しながらライン右端に至る。そして、1ライン全体における目標符号サイズはB×W相当になる。
【0057】
このようにして、量子化係数判定部5dによって決定された量子化係数Qx+1は、量子化部5bおよび逆量子化部5eに出力される。また、逆量子化部5eおよび差分復号化部5gは、差分符号化部5aおよび量子化部5bとは逆の処理を行い、次ステップでの差分符号化で必要な復元画素値を復元する。
【0058】
アクセス制御部6は、後段バッファ4に保持しておく必要があるデータを管理することによって、補正処理部3による後段バッファ4へのデータ書き込みと、圧縮処理部5によるそこからのデータ読み出しとを制御する。後段バッファ4に保持しておく必要があるデータは、補正処理部3および圧縮処理部5のアクセスによって随時変化する。すなわち、補正処理部3によって書き込まれたデータは、それが圧縮処理部5によって読み出されていない間は、保持すべきデータとして後段バッファ4に保持される。その後、圧縮処理部5によってそのデータが読み出されると、そのデータを以後保持しておく必要がないので、そのデータが格納されていた領域が解放される(上書き・消去の対象となる)。
【0059】
アクセス制御部6は、カウンタ6aを内蔵しており、そのカウンタ値によって、後段バッファ4に保持すべきデータを管理する。具体的には、補正処理部3によって後段バッファ4にデータが書き込まれた場合には、カウント値を増加させる(例えば1をインクリメントする)。カウント値の増大は、保持すべきデータ量が増えたことを意味する。また、圧縮処理部5によって後段バッファ4からデータが読み出された場合には、カウント値を減少させる(例えば1をデクリメントする)。カウント値の減少は、保持すべきデータ料が減ったことを意味する。そして、カウント値が所定の上限値(後段バッファ4の最大記憶容量に相当)に到達している間は、補正処理部3による後段バッファ4へのデータ書き込みを禁止する。このようなアクセス制御部6による調停・管理は、後段の圧縮処理部5の処理速度よりも前段の補正処理部3のそれの方が速いようなケースで特に重要になる(後段バッファ4のオーバーフロー防止)。
【0060】
図12は、アクセス制御部6の調停下における補正処理および圧縮処理のパイプライン動作のタイミングチャートである。本例では、動作説明を簡略化すべく、後段バッファ4が保持できるデータ数を4、カウンタの上限値を4とする。また、カウンタの初期値は0であり、これは、後段バッファ4に保持すべきデータが存在しない状態を意味する。後段バッファ4へのアクセス調停は、アクセス制御部6が補正処理部3に対して書込許可/禁止を指示することによって、および、アクセス制御部6が圧縮処理部5に対して読出許可/禁止を指示することによって行われる。
【0061】
まず、処理が開始されるタイミングt0では、カウンタ値は0であり、上限値よりも小さい。したがって、アクセス制御部6は、後段バッファ4内に空き領域が存在すると判断し、補正処理部3に対して書込許可を指示する。書込許可は、空き領域がなるなるタイミングt2(カウンタ値=4)まで継続される。この書込許可を受けた補正処理部3は、上述した処理順序に従って、水平ライン上の画素を順番に処理し、ディストーション補正を施した画像データ(1),(2),(3),・・・を後段バッファ4に順次書き込んでいく。そして、個々の画像データの書き込みが終了する毎に、補正処理部3からアクセス制御部6にその旨が通知される。これによって、カウンタ値が1ずつインクリメントされていく(必要データの保持)。
【0062】
タイミングt1でカウンタ値が1になると、アクセス制御部6は、後段バッファ4に読み出すべきデータが格納されたと判断し、圧縮処理部5に対して読出許可を指示する。読出許可はカウンタ値が0でないことを条件に指示され、カウンタ値が0の場合には読出禁止が指示される。この読出許可を受けた圧縮処理部5は、上述した処理順序に従って、水平ライン上の画素を順番に処理し、圧縮データ(1),(2),(3),・・・を順次出力するそして、個々の画像データの読み出しが完了する毎に、圧縮処理部5からアクセス制御部6にその旨が通知される。これによって、カウンタ値が1ずつデクリメントされる(不要データの破棄)。
【0063】
タイミングt2では、補正処理部3からの通知に基づくインクリメントによって、カウンタ値が上限値に到達する(カウンタ値=4)。これは後段バッファ4に空き領域がなくなったことを意味するので、アクセス制御部6は、補正処理部3に対する指示を書込許可から書込禁止に変更する。これを受けた補正処理部3は、後段バッファ4へのデータ書き込みが再び許可されるまで、処理対象(7)以降に対する補正処理を一時中断する。
【0064】
タイミングt3では、圧縮処理部5からの通知に基づくデクリメントによって、カウンタ値が上限値よりも小さくなる(カウンタ値=3)。これは後段バッファ4に空き領域が生じたことを意味するので、アクセス制御部5は、補正処理部3に対する指示を書込禁止から書込許可に変更する。これを受けた補正処理部3は、中断していた処理対象(7)の補正処理を再開する。
【0065】
タイミングt4で、補正処理部3からの通知に基づくインクリメントによって、カウンタ値が再び上限値に到達する(カウンタ値=4)。したがって、アクセス制御部6は、補正処理部3に対する指示を書込許可から書込禁止に再度変更する。これを受けた補正処理部3は、後段バッファ4へのデータ書き込みが再び許可されるまで、処理対象(8)以降に対する補正処理を一時中断する。それ以降は、カウンタ値の増減に基づき、書込許可/禁止の指示等に基づき並列処理が制御されながら、処理対象に対する処理がパイプライン的に順次進行していく。そして、1フレームの画像データ全体に対する処理が終了した時点で、全ての処理が完了する。
【0066】
このように、本実施形態によれば、前段の補正処理部3および後段の圧縮処理部5の処理順序を順序的に対応させた上で、補正処理部3による前段のディストーション補正と、圧縮処理部5による後段のデータ圧縮とを並行して行う。このように、後段バッファ4に対する前後の処理をパイプライン化することで、全体的な処理時間の短縮を図ることができる。
【0067】
また、本実施形態によれば、アクセス制御部6によって、後段バッファ4へのデータ書き込みと、後段バッファ4からのデータ読み出しとを調停する。これにより、1フレーム分の画像データを後段バッファ4に一括で記憶しておく必要がなくなるので、並列処理を阻害することなく、後段バッファ4の記憶容量の低減を図ることが可能となる。なお、この調整は、後段の圧縮処理部5の処理速度よりも前段の補正処理部3のそれの方が速いようなケースおいて、特に有効である。
【0068】
また、本実施形態によれば、部分領域R毎のディストーション補正を、補正に必要な画像データが前段バッファ2内に揃う部分領域R(1)〜R(n)の順序で、前段バッファ2へのデータ蓄積と並行して行う。ディストーション補正が可能になったものから順に補正処理を行うことで、1フレーム分の画像データが前段バッファ2に揃っていなくても、ディストーション補正を開始することができる。これにより、データ蓄積に起因した遅延を削減できるので、全体的な処理時間の短縮を図ることができる。
【0069】
さらに、本実施形態によれば、ディストーション補正が終了する部分領域Rの順序を解放順序として、前段バッファ2の記憶領域を順次解放する。解放された記憶領域は、必要に応じて、新しい画像データを蓄積するための領域として用いられる。これにより、1フレーム全体の画像データを前段バッファ2に同時に蓄積しておく必要がないので、前段バッファ2の記憶容量の低減を図ることが可能となる。
【0070】
なお、上述した実施形態では、補正処理部3および圧縮処理部5の双方に関して、その処理単位を画素とし、その処理順序を水平ライン上の画素の配列順序するケースについて説明した。しかしながら、双方の処理単位が同一である必要性はなく、例えば、図13に示す画素と画素ブロックの組み合せのように、処理単位のサイズが異なっていてもよい。この場合、画素ブロックの圧縮手法としては、限定的な部分領域内(例えば画素ブロック自体、或いは、これと周辺領域との併用)の情報で完結するものであればどのようなものであってもよく、典型的には、DCT(Discrete Cosine Transform)等の直交変換を用いたものが挙げられる。また、処理順序については、補正処理部3および圧縮処理部5の双方の処理順序が順序的に対応している必要がある。例えば図13の場合、圧縮処理部5の処理順序が、隣接した水平ラインL0〜L7上の画素によって構成される画素ブロックPB0,PB1,・・・の配列順序と一致するといった如くである。画素ブロックPB0の圧縮処理を開始するためには、最低限、画素ブロックPB0内に含まれる水平ラインL0〜L7上の画素の補正処理が終了していなければならない。以下の2つのケースはどちらもこの条件を満たす。
【0071】
(ケース1)水平ラインL0〜L7上における全画素の補正を行った後に、画素ブロックPB0,PB1,・・・の圧縮を開始するケース
(ケース2)水平ラインL0〜L7上における画素ブロックPB0内の画素の補正のみを行って画素ブロックPB0の圧縮し、これを繰り返すケース
【0072】
図14は、上記ケース1に適した後段バッファ4の構成図である。この後段バッファ4は、並列に設けられた8つのFIFOによって構成され、それぞれのFIFOは1水平ライン分の画像データを格納可能な記憶容量を有する。この場合、アクセス制御部6は、画素ブロック(8×8画素)内の全ての画像データが書き込まれたことを以て、圧縮処理部5に対して読出許可を指示する。それとともに、アクセス制御部6は、圧縮処理部5からの読出完了の通知を以て、その画素ブロックが格納されていた記憶領域を一括で解放する。
【図面の簡単な説明】
【0073】
【図1】画像処理システムのブロック構成図
【図2】画像平面(補正後)における部分領域の設定例を示す図
【図3】領域分割リストの説明図
【図4】画像平面(補正前)における部分領域の設定例を示す図
【図5】処理開始リストの説明図
【図6】領域解放リストの説明図
【図7】補正処理部の動作タイミングチャート
【図8】差分符号化の説明図
【図9】エントロピー符号化の説明図
【図10】量子化係数判定部のブロック構成図
【図11】1ラインにおける累積目標符号サイズの推移を示す図
【図12】補正処理および圧縮処理のパイプライン動作のタイミングチャート
【図13】画像平面上における水平ラインおよび画素ブロックの説明図
【図14】変形例としての後段バッファの構成図
【符号の説明】
【0074】
1 カメラ
2 前段バッファ
3 補正処理部
3a 補正回路
3b 補正テーブル
3c 制御回路
3d 領域分割リスト
3e 処理開始リスト
3f 領域解放リスト
4 後段バッファ
5 圧縮処理部
5a 差分符号化部
5b 量子化部
5c エントロピー符号化部
5d 量子化係数判定部
5e 逆量子化部
5g 差分符号化部
6 アクセス制御部
6a カウンタ
51,52 加算器
53 累積符号サイズバッファ
54 累積目標符号サイズバッファ
55 比較器

【特許請求の範囲】
【請求項1】
画像処理システムにおいて、
1フレームの画像データのデータ量よりも小さな記憶容量を有する記憶部と、
画像データに対して、所定の処理順序でディストーション補正を順次行うとともに、当該補正された画像データを前記記憶部に順次書き込む補正処理部と、
前記記憶部から画像データを順次読み出すとともに、当該読み出された画像データに対するデータ圧縮を、前記補正処理部の処理と並行し、かつ、前記補正処理部の処理順序と順序的に対応した処理順序で順次行う圧縮処理部と、
前記補正処理部によるデータ書き込みと、前記圧縮処理部によるデータ読み出しとによって変化する、前記記憶部に保持しておく必要があるデータを管理することによって、前記補正処理部による前記記憶部へのデータ書き込みと、前記圧縮処理部による前記記憶部からのデータ読み出しとを制御するアクセス制御部と
を有することを特徴とする画像処理システム。
【請求項2】
前記補正処理部は、水平ライン上の画素の配列順序を前記処理順序として、画素単位で前記ディストーション補正を行い、
前記圧縮処理部は、水平ライン上の画素の配列順序を前記処理順序として、画素単位で前記データ圧縮を行うことを特徴とする請求項1に記載された画像処理システム。
【請求項3】
前記補正処理部は、水平ライン上の画素の配列順序を前記処理順序として、画素単位で前記ディストーション補正を行い、
前記圧縮処理部は、隣接した複数の水平ライン上の複数の画素によって構成される画素ブロックの配列順序を前記処理順序として、画素ブロック単位で前記データ圧縮を行うことを特徴とする請求項1に記載された画像処理システム。
【請求項4】
前記補正処理部は、1フレームの画像平面を分割することによって得られるそれぞれの部分領域を前記ディストーション補正の処理単位とし、かつ、画像データの時系列的な入力によって、前記ディストーション補正を行うのに必要な画像データが揃う部分領域の順序を処理順序として、それぞれの部分領域に関する前記ディストーション補正を順次行うことを特徴とする請求項1から3のいずれかに記載された画像処理システム。
【請求項5】
前記アクセス制御部は、
前記補正処理部による前記記憶部へのデータ書き込みにともないカウント値を増加させ、前記圧縮処理部による前記記憶部からのデータ読み出しにともないカウント値を減少させるとともに、前記カウント値が所定の上限値に到達している間は、前記補正処理部による前記記憶部へのデータ書き込みを禁止することを特徴とする請求項1から4のいずれかに記載された画像処理システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate


【公開番号】特開2010−154035(P2010−154035A)
【公開日】平成22年7月8日(2010.7.8)
【国際特許分類】
【出願番号】特願2008−327833(P2008−327833)
【出願日】平成20年12月24日(2008.12.24)
【出願人】(398034168)株式会社アクセル (80)
【Fターム(参考)】