(57)【要約】【課題】ディストーション補正および画像圧縮を有する処理系において、全体的な処理時間の短縮を図る。【解決手段】補正処理部３は、画像データに対して、所定の処理順序でディストーション補正を順次行うとともに、補正された画像データを後段バッファ４に順次書き込む。圧縮処理部５は、後段バッファ４から画像データを順次読み出すとともに、読み出された画像データに対するデータ圧縮を、補正処理部３の処理と並行し、かつ、補正処理部３の処理順序と順序的に対応した処理順序で順次行う。アクセス制御部６は、後段バッファ４に保持しておく必要があるデータを管理することによって、補正処理部３によるデータ書き込みと、圧縮処理部５によるデータ読み出しとを制御する。【選択図】図１
2010154035.tif 000002
【特許請求の範囲】
【請求項１】
画像処理システムにおいて、
１フレームの画像データのデータ量よりも小さな記憶容量を有する記憶部と、
画像データに対して、所定の処理順序でディストーション補正を順次行うとともに、当該補正された画像データを前記記憶部に順次書き込む補正処理部と、
前記記憶部から画像データを順次読み出すとともに、当該読み出された画像データに対するデータ圧縮を、前記補正処理部の処理と並行し、かつ、前記補正処理部の処理順序と順序的に対応した処理順序で順次行う圧縮処理部と、
前記補正処理部によるデータ書き込みと、前記圧縮処理部によるデータ読み出しとによって変化する、前記記憶部に保持しておく必要があるデータを管理することによって、前記補正処理部による前記記憶部へのデータ書き込みと、前記圧縮処理部による前記記憶部からのデータ読み出しとを制御するアクセス制御部と
を有することを特徴とする画像処理システム。
【請求項２】
前記補正処理部は、水平ライン上の画素の配列順序を前記処理順序として、画素単位で前記ディストーション補正を行い、
前記圧縮処理部は、水平ライン上の画素の配列順序を前記処理順序として、画素単位で前記データ圧縮を行うことを特徴とする請求項１に記載された画像処理システム。
【請求項３】
前記補正処理部は、水平ライン上の画素の配列順序を前記処理順序として、画素単位で前記ディストーション補正を行い、
前記圧縮処理部は、隣接した複数の水平ライン上の複数の画素によって構成される画素ブロックの配列順序を前記処理順序として、画素ブロック単位で前記データ圧縮を行うことを特徴とする請求項１に記載された画像処理システム。
【請求項４】
前記補正処理部は、１フレームの画像平面を分割することによって得られるそれぞれの部分領域を前記ディストーション補正の処理単位とし、かつ、画像データの時系列的な入力によって、前記ディストーション補正を行うのに必要な画像データが揃う部分領域の順序を処理順序として、それぞれの部分領域に関する前記ディストーション補正を順次行うことを特徴とする請求項１から３のいずれかに記載された画像処理システム。
【請求項５】
前記アクセス制御部は、
前記補正処理部による前記記憶部へのデータ書き込みにともないカウント値を増加させ、前記圧縮処理部による前記記憶部からのデータ読み出しにともないカウント値を減少させるとともに、前記カウント値が所定の上限値に到達している間は、前記補正処理部による前記記憶部へのデータ書き込みを禁止することを特徴とする請求項１から４のいずれかに記載された画像処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レンズの歪曲収差に起因した歪みを含む画像データに対して、ディストーション補正を行った上でデータ圧縮を行う画像処理システムに関する。
【背景技術】
【０００２】
例えば、特許文献１には、レンズの歪曲収差に起因した歪みを補正するディストーション補正について開示されている。具体的には、まず、ＣＣＤイメージセンサから得られた画像データが１フレーム分、フレームメモリに展開される。つぎに、フレームメモリに展開された１フレーム分の画像データが読み出され、これに基づいて、部分領域毎にディストーション補正が行われる。１フレームの画像は、光軸に対応するフレーム原点を中心に４つの部分領域に分割され、それぞれの部分領域が更に複数の短冊に断片化される。それぞれの短冊は、部分領域の側端から原点に向かって処理される。この処理では、ＤＭＡ方式によって、各短冊内の画素がＸ軸と平行なライン単位でフレームメモリから読み出される。１フレームを細かく分割して処理することによって、ディストーション補正を行うユニット内部のバッファ容量の低減を図る。
【０００３】
また、特許文献２には、ディストーション補正系と画像圧縮系とを有する手ぶれ補正機能付のデジタルカメラが開示されている。ディストーションによる歪みが存在する画像に対して手ぶれ補正をそのまま施すと、計算上のぶれ軌跡とＣＣＤ（レンズ）上のそれとが異なるため、画像の復元を画像全体に対して適切に施すことが困難になる。そこで、このデジタルカメラでは、ディストーション補正を手ぶれ補正後ではなく手ぶれ補正前の画像に対して施すことで、画像復元の適切化を図る。そして、ディストーション補正後に更に手ぶれ補正された画像は、適宜の圧縮形式で圧縮された上で記録媒体に記憶される。
【０００４】
【特許文献１】特開２００４−６４７１０号公報
【特許文献２】特開２００６−３３７５９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上述した特許文献２では、ディストーション補正後に画像圧縮する点については一応開示されているものの、これらの連係による全体処理の高速化やバッファ容量の低減を図るための具体的な工夫については何ら開示・示唆されていない。例えば、ディストーション補正および画像圧縮を逐次処理にて行う場合、前段のディストーション補正系によって１フレーム全体の画像データがフレームメモリに蓄積された後に、後段の画像圧縮が開始される。したがって、１フレーム全体が蓄積された後でなければ、画像圧縮を開始できず、これが処理の遅延を招くことになる。また、ディストーション補正系によって処理されたデータを一時的に記憶するバッファとして、少なくとも１フレーム分の画像データ全体を記憶可能な容量が必要になる。
【０００６】
そこで、本発明の目的は、ディストーション補正および画像圧縮を有する処理系において、全体的な処理時間の短縮を図ることである。
【０００７】
また、本発明の別の目的は、処理時間の短縮を図りつつ、ディストーション補正系によって処理されたデータを一時的に記憶する記憶容量の低減を図ることである。
【課題を解決するための手段】
【０００８】
かかる課題を解決すべく、本発明は、記憶部と、補正処理部と、圧縮処理部と、アクセス制御部とを有する画像処理システムを提供する。記憶部は、１フレームの画像データのデータ量よりも小さな記憶容量を有する。補正処理部は、画像データに対して、所定の処理順序でディストーション補正を順次行うとともに、補正された画像データを記憶部に順次書き込む。圧縮処理部は、記憶部から画像データを順次読み出すとともに、読み出された画像データに対するデータ圧縮を、補正処理部の処理と並行し、かつ、補正処理部の処理順序と順序的に対応した処理順序で順次行う。アクセス制御部は、補正処理部によるデータ書き込みと、圧縮処理部によるデータ読み出しとによって変化する、記憶部に保持しておく必要があるデータを管理することによって、補正処理部による記憶部へのデータ書き込みと、圧縮処理部による記憶部からのデータ読み出しとを制御する。
【０００９】
ここで、本発明において、補正処理部は、水平ライン上の画素の配列順序を処理順序として、画素単位でディストーション補正を行い、圧縮処理部は、水平ライン上の画素の配列順序を処理順序として、画素単位でデータ圧縮を行ってもよい。また、補正処理部は、水平ライン上の画素の配列順序を処理順序として、画素単位でディストーション補正を行い、圧縮処理部は、隣接した複数の水平ライン上の複数の画素によって構成される画素ブロックの配列順序を処理順序として、画素ブロック単位でデータ圧縮を行ってもよい。
【００１０】
また、本発明において、補正処理部は、１フレームの画像平面を分割することによって得られるそれぞれの部分領域をディストーション補正の処理単位とし、かつ、画像データの時系列的な入力によって、ディストーション補正を行うのに必要な画像データが揃う部分領域の順序を処理順序として、それぞれの部分領域に関するディストーション補正を順次行ってもよい。
【００１１】
さらに、本発明において、アクセス制御部は、補正処理部による記憶部へのデータ書き込みにともないカウント値を増加させ、圧縮処理部による記憶部からのデータ読み出しにともないカウント値を減少させるとともに、カウント値が所定の上限値に到達している間は、補正処理部による記憶部へのデータ書き込みを禁止することが好ましい。
【発明の効果】
【００１２】
このように、本発明によれば、前段のディストーション補正と後段のデータ圧縮とを並行して行うことで、全体的な処理時間の短縮を図ることができる。また、アクセス制御部によって、記憶部へのデータ書き込みと記憶部からのデータ読み出しとを調停することで、１フレーム分の画像データを記憶部に記憶しておく必要がないので、並列処理を阻害することなく、記憶容量の低減を図ることができる。
【発明を実施するための最良の形態】
【００１３】
図１は、本実施形態に係る画像処理システムのブロック構成図である。このシステムは、画像データを出力するカメラ１と、この画像データにディストーション補正を施す補正処理部３と、補正後の画像データを圧縮する圧縮処理部５とを主体に構成されている。カメラ１によるデータ出力と、補正処理部３によるデータ補正と、圧縮処理部５によるデータ圧縮とは、互いに並行して行われ、これらの一連の処理がパイプライン的に行われる。
【００１４】
カメラ１と補正処理部３の間には前段バッファ２が、補正処理部３と圧縮処理部５の間には後段バッファ４がそれぞれ設けられている。前段バッファ２には、カメラ１から時系列的に出力された画像データが順次格納される。また、後段バッファ４には、補正処理部３によって補正された画像データが順次格納される。これらのバッファ２，４としては、ＦＩＦＯメモリ（先入れ先出しを入出力順序とするメモリ）やリングバッファを含めて、バッファとして機能し得る周知の記憶装置（記憶部）を広く用いることができる。なお、本システムにおける一連の処理がパイプライン的に実行される関係上、逐次処理のように、１フレーム分の画像データをバッファ２，４に一括で記憶しておく必要はない。したがって、バッファ２，４は、１フレームの画像データのデータ量よりも十分に小さな記憶容量を有していればよい。本実施形態では、バッファ２，４として、１水平ライン分（或いは、数ライン分）の画像データを格納可能なＦＩＦＯを想定している。前段バッファ２へのアクセスは、補正処理部３内の制御回路３ｃによって制御される。また、後段バッファ４へのアクセス、すなわち、補正処理部３によるデータ書き込みおよび圧縮処理部５によるデータ読み出しは、アクセス制御部６によって制御される。
【００１５】
カメラ１は、レンズと、ＣＣＤやＣＭＯＳセンサといった撮像素子とを備え、撮像画像をフレーム単位で時系列的に順次出力する。本実施形態において、カメラ１は全方位カメラであり、広角レンズが用いられる。ラスタスキャン方式のカメラ１では、所定本数の水平ライン（走査線）によって１フレームの画像が構成される。カメラ１から出力された画像データは、前段バッファ２に順次格納される。前段バッファ２は、カメラ１から時系列的に入力された画像データを、その入力順序を管理しつつ、水平ライン単位で順次蓄積する。
【００１６】
補正処理部３は、前段バッファ２から画像データを順次読み出し、画像データのディストーション補正を順次行う。この補正は、水平ライン上の画素の配列順序を処理順序とし、かつ、画素単位で行われる。そして、補正された画像データが後段バッファ４に順次書き込まれる。ここで、「ディストーション」とは、レンズを通過した光が外側（樽形歪み）または内側（ピンクッション歪み）に歪曲する収差をいう。理想的なレンズであればｒに届くはずの光線が、実際にはｒ’にずれてしまう現象が放射方向の歪曲収差である（ｒ，ｒ'はレンズ中心Ｏからの距離）。一般に、レンズに対する光の入射角が大きくなるほど、この収差（ｒーｒ'）が大きくなり、広角レンズや広範囲ズームレンズでは、これが顕著になる。レンズ中心Ｏを画像原点とし、補正後の画素の座標を（ｘ，ｙ）、補正前のそれを（ｘ'，ｙ'）とする。この場合、ディストーション補正は、以下の数式１による座標変換と考えることができる。ここで、ｒ'/ｒ＝ｆ(ｒ)は、一般的な回転対称なレンズの場合にはレンズ中心Ｏからの距離の関数になる。樽型歪みの場合、距離ｒが大きくなる程、補正係数ｆ(ｒ)の変化率が増大する。
【００１７】
（数式１）
（ｘ'，ｙ'）＝ｒ'/ｒ（ｘ，ｙ）＝ｆ(ｒ)・（ｘ，ｙ）
【００１８】
補正処理部３は、補正回路３ａと、補正テーブル３ｂと、制御回路３ｃと、３つのリスト３ｄ〜３ｆとを有する。補正処理部３によって補正された画像データは、記憶部としての後段バッファ４に格納される。後段バッファ４は、１フレームの画像の上から下に向かって時系列的に入力された画像データを、その入力順序を管理しつつ、水平ライン単位で順次蓄積する。
【００１９】
補正回路３ａは、前段バッファ２から読み出された画像データに対するディストーション補正を部分領域を処理単位として行い、補正後の画像データを後段バッファ４に出力する。この補正処理では、補正テーブル３ｂが参照される。補正テーブル３ｂには、予め設定された特性を有する補正係数ｆ(ｒ)が離散値として記述されている。補正テーブル３ｂに記述されていない中間値は、ここに記述された離散値ｆ(ｒ)の補間によって算出される。なお、このようなテーブル参照方式（ＬＵＴ）に代えて、所定の近似関数を用いた演算によって、補正処理を行ってもよい。
【００２０】
制御回路３ｃは、補正回路５の処理開始タイミングおよび前段バッファ２の領域解放タイミングの双方を制御する。これらの制御を行うために、領域分割リスト３ｄと、処理開始リスト３ｅと、領域解放リスト３ｆとが用いられる。補正処理の処理単位が部分領域なので、処理開始タイミングおよび領域解放タイミングも部分領域毎に決定される。
【００２１】
図２は、画像平面（補正後）における部分領域の設定例を示す図である。１フレームの画像平面を横方向に短冊状に分割することによって、横短冊状の矩形領域をｎ個設定し、それぞれを部分領域Ｒ(1)〜Ｒ(n)とする。領域分割の指定は、同図の座標系で行われ、部分領域Ｒを指定するパラメータは、この部分領域Ｒの領域の左上座標ｐsおよび右下座標ｐeである。補正処理時には、ある部分領域Ｒが図示したようにラスタスキャンされ、これに応じた処理順序で、部分領域Ｒ内の画素（ドット）が順次選択・処理される。画素の処理順序は、部分領域Ｒの処理順序と、単一の部分領域Ｒ内におけるラスタスキャンの方向とによって一義的に特定される。
【００２２】
図３は、領域分割リスト３ｄの説明図である。領域分割リスト３ｄは、処理単位となる部分領域Ｒ(1)〜Ｒ(n)の範囲を補正後座標系で示し、処理順序に従って並べられている。同図のケースでは、部分領域Ｒ(1)，Ｒ(2)，・・・，Ｒ(n)の処理順序で補正処理を行うべきことを示すとともに、例えば、部分領域Ｒ(1)の画素範囲がｐs(1)からｐe(1)までであることを示す。
【００２３】
図４は、画像平面（補正前）における部分領域Ｒ(1)〜Ｒ(n)の設定例を示す図である。同図は、図２の部分領域Ｒ(1)〜Ｒ(n)を逆変換（補正処理の座標変換とは逆の変換）して得たものであり、これによって、補正前後における各部分領域Ｒの位置的な対応関係が明確になる。この対応関係に基づいて、前段バッファ２内のデータがどこまで揃えば、どの部分領域Ｒの補正処理が開始できるかを予め求めておき、それを規定した処理開始リスト３ｅが用意されている。それとともに、この対応関係に基づいて、どの部分領域Ｒの補正処理が終わったら、前段バッファ２の記憶領域をどこまで解放できるかを予め求めておき、それを規定した領域解放リスト３ｆが用意されている。
【００２４】
図５は、処理開始リスト３ｅの説明図である。処理開始リスト３ｅには、それぞれの部分領域Ｒ(1)〜Ｒ(n)に関するデータ蓄積座標が記述されている。データ蓄積座標は、各部分領域Ｒの補正処理を行うのに必要なデータがすべて揃う座標である。前段バッファ２へのデータ蓄積を水平ライン単位で行う場合には、データ蓄積座標を水平ラインの位置で設定することができる。ここで、図４を参照しつつ、データ蓄積が最上の水平ラインから順に行われるケースを例に説明する。前段バッファ２のデータ蓄積が進行すると、データ蓄積座標Ｌｏｗ(1)に相当する水平ライン（下限ライン）に到達する。ここで、「到達」とは、この水平ライン上の全ドットの画像データの蓄積が終了することを意味する。この場合、部分領域Ｒ(1)の補正処理に必要な全データが揃ったので、部分領域Ｒ(1)の補正処理が許可される。その後、データ蓄積が更に進行すると、データ蓄積領域Ｌｏｗ(2)の下限ラインに到達する。この場合、部分領域Ｒ(2)の補正処理が許可される。このように、画像の上から下に向かってデータ蓄積を行うという条件下では、図４から明らかなように、部分領域Ｒ(1)〜Ｒ(n)内における下限ラインの位置がデータ蓄積座標となる。なお、処理開始リスト３ｅは、領域分割リスト３ｄを基に補正前画像に座標がマッピングされ、処理順にソートされる。
【００２５】
図６は、領域解放リスト３ｆの説明図である。領域解放リスト３ｆには、それぞれの部分領域Ｒ(1)〜Ｒ(n)に関する領域解放座標が記述されている。領域解放座標は、各部分領域Ｒの補正処理の終了によって、それ以降、必要とされない前段バッファ２の記憶領域を示す座標である。前段バッファ２へのデータ蓄積を水平ライン単位で行う場合には、領域解放座標を水平ラインの位置で設定することができる。図４において、最上の部分領域Ｒ(1)の補正処理が終了した場合、領域解放座標Ｕp(2)に相当する水平ライン（上限ライン）までのデータは以後、必要とされないので、この上限ラインまでの記憶領域が解放される。解放された記憶領域内のデータは、破棄され、或いは、上書きが許可される。その後、上から２番目の部分領域Ｒ(2)の補正処理が終了した場合、領域解放座標Ｕp(3)に相当する上限ラインまでの記憶領域が解放される。このように、画像の上から下に向かってデータ蓄積を行うという条件下では、図４から明らかなように、部分領域Ｒ(1)〜Ｒ(n)内における上限ラインの位置が領域解放座標となる。なお、処理開始リスト３ｅは、領域分割リスト３ｄを基に補正前画像に座標がマッピングされ、処理順にソートされる。なお、補正処理部３にリスト作成機能を追加して、部分領域Ｒの設定に基づいて、上述したリスト７ａ〜７ｃを自動で作成するようにしてもよい。
【００２６】
図７は、補正処理部３の動作タイミングチャートである。まず、前段バッファ２には、水平ラインＬ1，Ｌ2，・・・の順で画像データが順次蓄積されていく。制御回路３ｃは、前段バッファ２の現在のデータ蓄積状態を示すデータ蓄積情報を前段バッファ２から随時取得する。それとともに、制御回路３ｃは、処理開始リスト３ｅを参照して、最初の処理対象である部分領域Ｒ(1)のデータ蓄積座標Ｌｏｗ(1)に相当する分のデータが蓄積されたか否かをモニタリングする。
【００２７】
タイミングｔ1において、データ蓄積座標Ｌｏｗ(1)に相当する水平ラインのデータ蓄積が完了すると、制御回路３ｃは、部分領域Ｒ(1)の補正開始命令を補正回路５に出力する。補正開始命令には、領域分割リスト３ｄに記述された部分領域Ｒ(1)の範囲ｐs(1)〜ｐe(1)が含まれる。この命令を受けた補正回路５は、部分領域Ｒ(1)の範囲ｐs(1)〜ｐe(1)内の各ドットを処理する上で必要な画像データの読み出しを前段バッファ２に随時要求する。そして、読み出された画像データに基づく補間演算（バイリニアまたはバイキュービック等）を伴う補正処理が、前段バッファ２へのデータ蓄積と並行して行われる。
【００２８】
タイミングｔ2において、部分領域Ｒ(1)の補正処理が完了すると、補正回路５は、部分領域Ｒ(1)の補正処理が終了した旨の補正終了信号を制御回路３ｃに出力する。この信号を受けた制御回路３ｃは、領域解放リスト３ｆを参照して、部分領域Ｒ(1)の領域解放座標Ｕｐ(2)を特定し、領域解放座標Ｕｐ(2)の指定を含む領域解放命令を前段バッファ２に出力する。この命令を受けた前段バッファ２は、領域解放座標Ｕｐ(2)に相当する水平ラインまでの記憶領域を解放する。解放された記憶領域は、これ以降に入力する新たな画像データを蓄積するための領域として用いられる。
【００２９】
そして、タイミングｔ3において、データ蓄積座標Ｌｏｗ(2)に相当する水平ラインのデータ蓄積が完了すると、制御回路３ｃは、部分領域Ｒ(2)の補正開始命令を補正回路５に出力する。補正開始命令には、領域分割リスト３ｄに記述された部分領域Ｒ(2)の範囲ｐs(2)〜ｐe(2)が含まれる。この命令を受けた補正回路５は、部分領域Ｒ(2)の補正処理を前段バッファ２へのデータ蓄積と並行して行う。
【００３０】
タイミングｔ4において、部分領域Ｒ(2)の補正処理が完了すると、補正回路５は、部分領域Ｒ(2)の補正処理が終了した旨の補正終了信号を制御回路３ｃに出力する。この信号を受けた制御回路３ｃは、領域解放リスト３ｆを参照して、部分領域Ｒ(2)の領域解放座標Ｕｐ(3)を取得し、領域解放座標Ｕｐ(3)の指定を含む領域解放命令を前段バッファ２に出力する。この命令を受けた前段バッファ２は、領域解放座標Ｕｐ(3)に相当する水平ラインまでの記憶領域を解放する。解放された記憶領域は、これ以降に入力する新たな画像データを蓄積するための領域として用いられる。
【００３１】
以後、前段バッファ２のデータ蓄積・領域解放を繰り返しながら、上述した処理順序に従って、部分領域Ｒ(3)，Ｒ(4)，・・・，Ｒ(n)の補正処理が順次行われる。そして、最後の部分領域Ｒ(n)の補正処理が終了すると、１フレーム全体の補正処理が終了し、必要に応じて、次フレームの補正処理に移行する。
【００３２】
このように、部分領域Ｒ毎の補正処理は、補正に必要な画像データが前段バッファ２内に揃う部分領域Ｒ(1)〜Ｒ(n)の順序で、前段バッファ２のデータ蓄積と並行して行われる。補正処理が可能になったものから順に補正処理を行うことで、１フレーム分の画像データが前段バッファ２に揃っていなくても、ディストーション補正を開始することができる。このようなパイプライン処理により、データ蓄積に起因した遅延を削減できるので、全体的な処理時間の短縮を図ることができる。また、ディストーション補正が終了する部分領域Ｒの順序を解放順序として、前段バッファ２の記憶領域を順次解放する。解放された記憶領域は、必要に応じて、新しい画像データを蓄積するための領域として用いられる。これにより、１フレーム全体の画像データを前段バッファ２に同時に蓄積しておく必要がないので、前段バッファ２の記憶容量の低減を図ることが可能となる。
【００３３】
一方、補正処理部３の後段に設けられた圧縮処理部５は、後段バッファ４から読み出した画像データに圧縮処理を施して、符号データを出力する。このデータ圧縮は、補正処理部３と同様、水平ライン上の画素の配列順序を処理順序とし、かつ、画素単位で行われる。また、また、圧縮処理部５の処理順序は、補正処理部３の処理順序と順序的に対応している。この圧縮処理部５は、差分符号化部５ａと、量子化部５ｂと、エントロピー符号化部５ｃと、量子化係数判定部５ｄと、逆量子化部５ｅと、差分符号化部５ｇとを有する。
【００３４】
差分符号化部５ａは、後段バッファ４から画像データ（補正後）を読み出し、水平ライン上において隣接（例えば左隣）した画素との差分値を算出する。図８に示すように、ある水平ラインＬ0上で処理対象となる画素をＸ、その左隣の画素をＸ−１とすると、差分値Ｄxは以下の数式２によって算出される。ここで、Cxは、処理対象となる画素の画素値そのものであり、Ｐx-1は、その左隣の画素の復号画素値、すなわち１ステップ前に復号した画素値である。左側の画素に関して、画素値そのものではなく復元画素値を用いる理由は、復号化時における誤差の累積を防止するためである。なお、ライン左端（ライン先頭）の画素（０番目）に関しては、左隣の復号画素値が存在しないので、差分値Ｄ0として画素値Ｃ0をそのまま使う。
【００３５】
（数式２）
Ｄx＝Ｃx−Ｐx-1
【００３６】
一例として、ある水平ライン上の画素値が先頭から順に｛６４，７０，５５，５５，５８，・・・｝である場合（復号画素値を考慮せず）、差分符号化によって、｛６４，６，−１５，０，３，・・・｝の列よりなる差分符号Ｄが出力される。周知のように、画像の空間的な相関性より、差分符号Ｄの頻度分布は０近傍に偏る傾向が生じ、エントロピー符号化を施す上で有利となる。
【００３７】
量子化部５ｂは、量子化係数判定部５ｄによって決定された量子化係数を用いて、以下の数式３に従って、差分符号Ｄを量子化する。ここで、量子化符号（量子化後の符号）をＳx、差分符号（量子化前の符号）をＤx、量子化係数をＱxとする。
【００３８】
（数式３）
Ｓx＝Dx＞＞Ｑx
【００３９】
エントロピー符号化部５ｃは、図９に示すように、各シンボルに対応するカテゴリ符号および付加ビットの可変長符号化を行う。この処理においては、まず、量子化符号Ｓが、以下の数式４に従ってカテゴリに分類される。同数式において、Ｃはカテゴリ、Ｓは量子化符号である。
【００４０】
（数式４）
Ｃ＝０  （Ｓ＝０の場合）
２c-1≦｜S｜＜２c
【００４１】
つぎに、カテゴリが符号化される。カテゴリ符号をＡ、カテゴリをＣとすると、カテゴリ符号Ａは、以下の数式５に基づき、カテゴリＣより一義的に特定される。
【００４２】
（数式５）
Ａ＝（２C−１）×２
【００４３】
また、カテゴリ符号長をＡLとすると、カテゴリ符号長ＡLは、以下の数式６に基づき、カテゴリCより一義的に特定される。
【００４４】
（数式６）
ＡL＝C＋１
【００４５】
そして、各カテゴリ内のシンボルが付加ビットに対応付けられる。ここで、付加ビットをＢ、カテゴリをＣ、各シンボル（量子化符号）をＳとすると、付加ビットＢは、以下の数式７より算出される。
【００４６】
（数式７）
Ｂ＝Ｓ−２C-1  （Ｓ≧０）
Ｂ＝−Ｓ                      （Ｓ＜０）
【００４７】
また、付加ビット長をＢLとすると、付加ビット長ＢLは、以下の数式８に基づき、カテゴリＣより一義的に特定される。
【００４８】
（数式８）
BL＝Ｃ
【００４９】
符号フォーマットとしては、上位ビットをカテゴリ符号Aとし、下位ビットを付加ビットＢとする。可変長符号をＭ、カテゴリをＣ、カテゴリ符号をＡ、付加ビットをＢとすると、可変長符号Ｍは以下の数式９より特定され、これが出力符号として出力される。
【００５０】
（数式９）
Ｍ＝Ａ×２C＋Ｂ
【００５１】
また、可変長符号長をMLとすると、可変長符号長MLは、以下の数式１０より特定される。
【００５２】
（数式１０）
ＭL＝ＡL＋ＢL＝２Ｃ＋１
【００５３】
量子化係数判定部５ｄは、可変長符号（復号）の処理毎に、累積符号サイズと累積目標符号サイズとを比較して、量子化係数を画素毎に動的に決定する。図１０は、量子化係数判定部５ｄのブロック構成図である。この量子化係数判定部５ｄは、２つの加算器５１，５２と、累積符号サイズバッファ５３と、累積目標符号サイズバッファ５４と、比較器５５とを有する。加算器５１は、今回のステップで算出された符号サイズ（上述した可変長符号長ＭL）を、累積符号サイズバッファ５３より読み出された従前の累積符号サイズ、すなわち、これまでのステップにおける符号サイズの累積値に加算する。新たに算出された累積符号サイズは、累積符号サイズバッファ５３に保持され、これによって、累積符号サイズが更新される。一方、加算器５２は、１画素あたりの目標とする平均ビットサイズに相当する目標符号サイズを、累積目標符号サイズバッファ５４より読み出された従前の累積目標符号サイズにステップ毎に加算する。新たに算出された累積目標符号サイズは、累積目標符号サイズバッファ５４に保持され、これによって、累積目標符号サイズが更新される。累積目標符号サイズは、１ラインあたりの最大符号量をライン幅で除算した値として予め設定されている。
【００５４】
ｘ番目の画素処理後における累積符号サイズをｃsizex、目標累積符号サイズをｄsizex、ｘ＋１番目の画素の量子化に用いる量子化係数をＱx+1とすると、比較器５５は、以下の規則に従って、量子化係数Ｑx+1を算出する。
【００５５】
（算出規則）
１．累積符号サイズｃsizexが累積目標符号サイズｄsizexよりも大きく、かつ、今回のステップでの符号サイズ差分（累積符号サイズ−累積目標符号サイズ）が前ステップでの符号サイズ差分よりも大きい場合
量子化係数Ｑx+1をインクリメント（増加）する。この場合、上記符号サイズ差分が正で、かつ、増加傾向のときのみ量子化係数Ｑx+1をインクリメントすることが好ましい。
２．累積符号サイズｃsizexが累積目標符号サイズｄsizexよりも小さい場合
量子化係数Ｑx+1をデクリメント（減少）する。
３．その他の場合
量子化係数Ｑx+1をそのまま（不変）とする。
【００５６】
ここで、目標符号サイズについて補足する。通常、1ラインの目標符号サイズをライン幅で除算した値が１画素あたりの平均目標符号サイズとなる。ただし、上述したように、ライン先頭（左端）の画素に関しては、差分値ではなく画素値そのものを符号化するため、符号長が比較的長くなる傾向がある。そのため、上記の値を一律に与えると、ライン左端近傍の量子化係数が大きくなってしまうため、その部分における画質低下が懸念される。この問題を解決するためには、図１１に示すように、累積目標サイズバッファ５３の初期値として０でない値Ａを設定する。また、ライン右端近傍（ライン幅Ｗ−Ａ）では、累積目標符号サイズバッファ５４の初期値を吸収すべく、入力する目標符号サイズとして、本来の値Ｂよりも小さな値（Ｂ−１）を用いる。これにより、同図に示したように、累積目標符号サイズは、ライン左端における値Ａから線形的に増加し、（Ｗ−Ａ）の位置で傾きが減少しながらライン右端に至る。そして、１ライン全体における目標符号サイズはＢ×Ｗ相当になる。
【００５７】
このようにして、量子化係数判定部５ｄによって決定された量子化係数Ｑx+1は、量子化部５ｂおよび逆量子化部５ｅに出力される。また、逆量子化部５ｅおよび差分復号化部５ｇは、差分符号化部５ａおよび量子化部５ｂとは逆の処理を行い、次ステップでの差分符号化で必要な復元画素値を復元する。
【００５８】
アクセス制御部６は、後段バッファ４に保持しておく必要があるデータを管理することによって、補正処理部３による後段バッファ４へのデータ書き込みと、圧縮処理部５によるそこからのデータ読み出しとを制御する。後段バッファ４に保持しておく必要があるデータは、補正処理部３および圧縮処理部５のアクセスによって随時変化する。すなわち、補正処理部３によって書き込まれたデータは、それが圧縮処理部５によって読み出されていない間は、保持すべきデータとして後段バッファ４に保持される。その後、圧縮処理部５によってそのデータが読み出されると、そのデータを以後保持しておく必要がないので、そのデータが格納されていた領域が解放される（上書き・消去の対象となる）。
【００５９】
アクセス制御部６は、カウンタ６ａを内蔵しており、そのカウンタ値によって、後段バッファ４に保持すべきデータを管理する。具体的には、補正処理部３によって後段バッファ４にデータが書き込まれた場合には、カウント値を増加させる（例えば１をインクリメントする）。カウント値の増大は、保持すべきデータ量が増えたことを意味する。また、圧縮処理部５によって後段バッファ４からデータが読み出された場合には、カウント値を減少させる（例えば１をデクリメントする）。カウント値の減少は、保持すべきデータ料が減ったことを意味する。そして、カウント値が所定の上限値（後段バッファ４の最大記憶容量に相当）に到達している間は、補正処理部３による後段バッファ４へのデータ書き込みを禁止する。このようなアクセス制御部６による調停・管理は、後段の圧縮処理部５の処理速度よりも前段の補正処理部３のそれの方が速いようなケースで特に重要になる（後段バッファ４のオーバーフロー防止）。
【００６０】
図１２は、アクセス制御部６の調停下における補正処理および圧縮処理のパイプライン動作のタイミングチャートである。本例では、動作説明を簡略化すべく、後段バッファ４が保持できるデータ数を４、カウンタの上限値を４とする。また、カウンタの初期値は０であり、これは、後段バッファ４に保持すべきデータが存在しない状態を意味する。後段バッファ４へのアクセス調停は、アクセス制御部６が補正処理部３に対して書込許可／禁止を指示することによって、および、アクセス制御部６が圧縮処理部５に対して読出許可／禁止を指示することによって行われる。
【００６１】
まず、処理が開始されるタイミングｔ0では、カウンタ値は０であり、上限値よりも小さい。したがって、アクセス制御部６は、後段バッファ４内に空き領域が存在すると判断し、補正処理部３に対して書込許可を指示する。書込許可は、空き領域がなるなるタイミングｔ2（カウンタ値＝４）まで継続される。この書込許可を受けた補正処理部３は、上述した処理順序に従って、水平ライン上の画素を順番に処理し、ディストーション補正を施した画像データ（１），（２），（３），・・・を後段バッファ４に順次書き込んでいく。そして、個々の画像データの書き込みが終了する毎に、補正処理部３からアクセス制御部６にその旨が通知される。これによって、カウンタ値が１ずつインクリメントされていく（必要データの保持）。
【００６２】
タイミングｔ1でカウンタ値が１になると、アクセス制御部６は、後段バッファ４に読み出すべきデータが格納されたと判断し、圧縮処理部５に対して読出許可を指示する。読出許可はカウンタ値が０でないことを条件に指示され、カウンタ値が０の場合には読出禁止が指示される。この読出許可を受けた圧縮処理部５は、上述した処理順序に従って、水平ライン上の画素を順番に処理し、圧縮データ（１），（２），（３），・・・を順次出力するそして、個々の画像データの読み出しが完了する毎に、圧縮処理部５からアクセス制御部６にその旨が通知される。これによって、カウンタ値が１ずつデクリメントされる（不要データの破棄）。
【００６３】
タイミングｔ2では、補正処理部３からの通知に基づくインクリメントによって、カウンタ値が上限値に到達する（カウンタ値＝４）。これは後段バッファ４に空き領域がなくなったことを意味するので、アクセス制御部６は、補正処理部３に対する指示を書込許可から書込禁止に変更する。これを受けた補正処理部３は、後段バッファ４へのデータ書き込みが再び許可されるまで、処理対象（７）以降に対する補正処理を一時中断する。
【００６４】
タイミングｔ3では、圧縮処理部５からの通知に基づくデクリメントによって、カウンタ値が上限値よりも小さくなる（カウンタ値＝３）。これは後段バッファ４に空き領域が生じたことを意味するので、アクセス制御部５は、補正処理部３に対する指示を書込禁止から書込許可に変更する。これを受けた補正処理部３は、中断していた処理対象（７）の補正処理を再開する。
【００６５】
タイミングｔ4で、補正処理部３からの通知に基づくインクリメントによって、カウンタ値が再び上限値に到達する（カウンタ値＝４）。したがって、アクセス制御部６は、補正処理部３に対する指示を書込許可から書込禁止に再度変更する。これを受けた補正処理部３は、後段バッファ４へのデータ書き込みが再び許可されるまで、処理対象（８）以降に対する補正処理を一時中断する。それ以降は、カウンタ値の増減に基づき、書込許可／禁止の指示等に基づき並列処理が制御されながら、処理対象に対する処理がパイプライン的に順次進行していく。そして、１フレームの画像データ全体に対する処理が終了した時点で、全ての処理が完了する。
【００６６】
このように、本実施形態によれば、前段の補正処理部３および後段の圧縮処理部５の処理順序を順序的に対応させた上で、補正処理部３による前段のディストーション補正と、圧縮処理部５による後段のデータ圧縮とを並行して行う。このように、後段バッファ４に対する前後の処理をパイプライン化することで、全体的な処理時間の短縮を図ることができる。
【００６７】
また、本実施形態によれば、アクセス制御部６によって、後段バッファ４へのデータ書き込みと、後段バッファ４からのデータ読み出しとを調停する。これにより、１フレーム分の画像データを後段バッファ４に一括で記憶しておく必要がなくなるので、並列処理を阻害することなく、後段バッファ４の記憶容量の低減を図ることが可能となる。なお、この調整は、後段の圧縮処理部５の処理速度よりも前段の補正処理部３のそれの方が速いようなケースおいて、特に有効である。
【００６８】
また、本実施形態によれば、部分領域Ｒ毎のディストーション補正を、補正に必要な画像データが前段バッファ２内に揃う部分領域Ｒ(1)〜Ｒ(n)の順序で、前段バッファ２へのデータ蓄積と並行して行う。ディストーション補正が可能になったものから順に補正処理を行うことで、１フレーム分の画像データが前段バッファ２に揃っていなくても、ディストーション補正を開始することができる。これにより、データ蓄積に起因した遅延を削減できるので、全体的な処理時間の短縮を図ることができる。
【００６９】
さらに、本実施形態によれば、ディストーション補正が終了する部分領域Ｒの順序を解放順序として、前段バッファ２の記憶領域を順次解放する。解放された記憶領域は、必要に応じて、新しい画像データを蓄積するための領域として用いられる。これにより、１フレーム全体の画像データを前段バッファ２に同時に蓄積しておく必要がないので、前段バッファ２の記憶容量の低減を図ることが可能となる。
【００７０】
なお、上述した実施形態では、補正処理部３および圧縮処理部５の双方に関して、その処理単位を画素とし、その処理順序を水平ライン上の画素の配列順序するケースについて説明した。しかしながら、双方の処理単位が同一である必要性はなく、例えば、図１３に示す画素と画素ブロックの組み合せのように、処理単位のサイズが異なっていてもよい。この場合、画素ブロックの圧縮手法としては、限定的な部分領域内（例えば画素ブロック自体、或いは、これと周辺領域との併用）の情報で完結するものであればどのようなものであってもよく、典型的には、ＤＣＴ（Discrete Cosine Transform）等の直交変換を用いたものが挙げられる。また、処理順序については、補正処理部３および圧縮処理部５の双方の処理順序が順序的に対応している必要がある。例えば図１３の場合、圧縮処理部５の処理順序が、隣接した水平ラインＬ0〜Ｌ7上の画素によって構成される画素ブロックＰＢ0，ＰＢ1，・・・の配列順序と一致するといった如くである。画素ブロックＰＢ0の圧縮処理を開始するためには、最低限、画素ブロックＰＢ0内に含まれる水平ラインＬ0〜Ｌ7上の画素の補正処理が終了していなければならない。以下の２つのケースはどちらもこの条件を満たす。
【００７１】
（ケース１）水平ラインＬ0〜Ｌ7上における全画素の補正を行った後に、画素ブロックＰＢ0，ＰＢ1，・・・の圧縮を開始するケース
（ケース２）水平ラインＬ0〜Ｌ7上における画素ブロックＰＢ0内の画素の補正のみを行って画素ブロックＰＢ0の圧縮し、これを繰り返すケース
【００７２】
図１４は、上記ケース１に適した後段バッファ４の構成図である。この後段バッファ４は、並列に設けられた８つのＦＩＦＯによって構成され、それぞれのＦＩＦＯは１水平ライン分の画像データを格納可能な記憶容量を有する。この場合、アクセス制御部６は、画素ブロック（８×８画素）内の全ての画像データが書き込まれたことを以て、圧縮処理部５に対して読出許可を指示する。それとともに、アクセス制御部６は、圧縮処理部５からの読出完了の通知を以て、その画素ブロックが格納されていた記憶領域を一括で解放する。
【図面の簡単な説明】
【００７３】
【図１】画像処理システムのブロック構成図
【図２】画像平面（補正後）における部分領域の設定例を示す図
【図３】領域分割リストの説明図
【図４】画像平面（補正前）における部分領域の設定例を示す図
【図５】処理開始リストの説明図
【図６】領域解放リストの説明図
【図７】補正処理部の動作タイミングチャート
【図８】差分符号化の説明図
【図９】エントロピー符号化の説明図
【図１０】量子化係数判定部のブロック構成図
【図１１】１ラインにおける累積目標符号サイズの推移を示す図
【図１２】補正処理および圧縮処理のパイプライン動作のタイミングチャート
【図１３】画像平面上における水平ラインおよび画素ブロックの説明図
【図１４】変形例としての後段バッファの構成図
【符号の説明】
【００７４】
１  カメラ
２  前段バッファ
３  補正処理部
３ａ  補正回路
３ｂ  補正テーブル
３ｃ  制御回路
３ｄ  領域分割リスト
３ｅ  処理開始リスト
３ｆ  領域解放リスト
４  後段バッファ
５  圧縮処理部
５ａ  差分符号化部
５ｂ  量子化部
５ｃ  エントロピー符号化部
５ｄ  量子化係数判定部
５ｅ  逆量子化部
５ｇ  差分符号化部
６  アクセス制御部
６ａ  カウンタ
５１，５２  加算器
５３  累積符号サイズバッファ
５４  累積目標符号サイズバッファ
５５  比較器
【図１】
2010154035.tif 000003
【図２】
2010154035.tif 000004
【図３】
2010154035.tif 000005
【図４】
2010154035.tif 000006
【図５】
2010154035.tif 000007
【図６】
2010154035.tif 000008
【図７】
2010154035.tif 000009
【図８】
2010154035.tif 000010
【図９】
2010154035.tif 000011
【図１０】
2010154035.tif 000012
【図１１】
2010154035.tif 000013
【図１２】
2010154035.tif 000014
【図１３】
2010154035.tif 000015
【図１４】
2010154035.tif 000016