(57)【要約】【課題】画像データ中の任意の領域に対応するデータへのランダムアクセスが可能であり、かつ、画像データの圧縮効率を向上させることが可能な画像処理装置、画像処理方法、プログラムおよび撮像装置を提供する。【解決手段】本発明に係る画像処理装置が備える圧縮部に、画像データについて、所定数の画素データからなるブロックのダイナミックレンジの頻度を計測する頻度計測部と、頻度に基づいて、ブロックごとに、各ダイナミックレンジに割り当てられる量子化語長を算出する量子化語長割当算出部と、算出された量子化語長に基づいて量子化されたブロックごとの符号化データを所定ブロック分含む圧縮画像データに対して、所定の符号量となるまで０または１を追加するパディング部と、を設けた。【選択図】図２
2010074597.tif 000002
【特許請求の範囲】
【請求項１】
撮像素子から出力された画像データを圧縮する圧縮部と、
圧縮された前記画像データを保持する記憶部と、
を有し、
前記圧縮部は、
前記画像データについて、所定数の画素データからなるブロックのダイナミックレンジの頻度を計測する頻度計測部と、
前記頻度に基づいて、前記ブロックごとに、各ダイナミックレンジに割り当てられる量子化語長を算出する量子化語長割当算出部と、
算出された前記量子化語長に基づいて量子化された前記ブロックごとの符号化データを所定ブロック分含む圧縮画像データに対して、所定の符号量となるまで０または１を追加するパディング部と、
を備える、画像処理装置。
【請求項２】
前記画像処理装置は、前記各ダイナミックレンジに割り当てられる量子化語長の組み合わせが互いに異なる複数のパターンが記載された量子化語長テーブルを予め保持しており、
前記量子化語長割当算出部は、前記量子化語長テーブルに記載された前記複数のパターンと前記頻度とに基づいて各パターンにおける前記所定ブロック分の圧縮画像データの確定符号量を算出し、前記確定符号量が所望の符号量以下となる前記パターンにおける前記量子化語長の組み合わせを選択する、請求項１に記載の画像処理装置。
【請求項３】
前記量子化語長割当算出部は、前記確定符号量が前記所望の符号量超過となる場合に、前記各ダイナミックレンジに割り当てられる量子化語長を所定の固定値に設定する、請求項２に記載の画像処理装置。
【請求項４】
前記量子化語長割当算出部は、前記所定の符号量と、選択された前記量子化語長の組み合わせにおける前記確定符号量との差を、パディング量として前記パディング部に伝送する、請求項２に記載の画像処理装置。
【請求項５】
前記圧縮部は、前記算出された量子化語長に基づいて前記ブロックごとに前記画像データを量子化する量子化実行部を更に備え、
前記量子化実行部は、所定のビット数を有し、前記算出された量子化語長を表す情報を少なくとも含む固定長部と、前記所定数の画素データに対応した前記符号化データを含む可変長部と、から構成される符号化データを生成する、請求項１に記載の画像処理装置。
【請求項６】
前記画像処理装置は、前記記憶部に保持されている前記圧縮された画像データを取得し、当該圧縮された画像データの中から任意の矩形領域に対応するデータを伸張する伸張部を更に備え、
前記伸張部は、前記固定長部に含まれる前記量子化語長を表す情報に基づいて、前記任意の矩形領域に対応するデータの位置を特定する、請求項５に記載の画像処理装置。
【請求項７】
撮像素子から出力された画像データについて、所定数の画素データからなるブロックのダイナミックレンジの頻度を計測するステップと、
前記頻度に基づいて、前記ブロックごとに、各ダイナミックレンジに割り当てられる量子化語長を算出するステップと、
算出された前記量子化語長に基づいて量子化された前記ブロックごとの符号化データを所定ブロック分含む圧縮画像データに対して、所定の符号量となるまで０または1を追加するステップと、
を含む、画像処理方法。
【請求項８】
撮像素子から出力された画像データが入力され、入力された前記画像データを圧縮して保持可能なコンピュータに、
入力された前記画像データについて、所定数の画素データからなるブロックのダイナミックレンジの頻度を計測する頻度計測機能と、
前記頻度に基づいて、前記ブロックごとに、各ダイナミックレンジに割り当てられる量子化語長を算出する量子化語長割当算出機能と、
算出された前記量子化語長に基づいて量子化された前記ブロックごとの符号化データを所定ブロック分含む圧縮画像データに対して、所定の符号量となるまで０または1を追加するパディング機能と、
を実現させるための、プログラム。
【請求項９】
撮像素子から出力された画像データを圧縮する圧縮部と、
圧縮された前記画像データを保持する記憶部と、
を有し、
前記圧縮部は、
前記画像データについて、所定数の画素データからなるブロックのダイナミックレンジの頻度を計測する頻度計測部と、
前記頻度に基づいて、前記ブロックごとに、各ダイナミックレンジに割り当てられる量子化語長を算出する量子化語長割当算出部と、
算出された前記量子化語長に基づいて量子化された前記ブロックごとの符号化データを所定ブロック分含む圧縮画像データに対して、所定の符号量となるまで０または1を追加するパディング部と、
を備える、撮像装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理方法、プログラムおよび撮像装置に関する。
【背景技術】
【０００２】
近年、デジタルスチルカメラやデジタルビデオカメラなど、固体撮像素子を用いて撮像を行い、得られた撮像画像をデジタルデータとして保存可能な撮像装置が広く普及している。このような撮像装置では、撮像素子の多画素化や、装置の高機能化・高性能化が進んでおり、特に、撮像素子の多画素化が進むと、撮像信号の処理負荷が増大する。他方、操作性に関してユーザにストレスを感じさせないようにするためには、処理の高速化が必要となる。
【０００３】
ここで、一般的な撮像装置では、撮像素子から出力されたＲＡＷデータを、一旦ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等の画像メモリに格納した後、読み出してカメラ信号処理などを施すことが行われる。そこで、以下に示す特許文献１では、画像メモリにおける画像データの読み書きに要する時間を短縮して、高速な撮像動作を実現することが行われている。
【０００４】
【特許文献１】特開２００７−２２８５１５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記特許文献１に記載の方法では、画像データに対して固定長圧縮を行っているため、画像データ中の任意の領域に対応するデータへのランダムアクセスは可能となったものの、画像データの圧縮効率をより高くすることが困難であるという問題があった。
【０００６】
そこで、本発明は、このような問題に鑑みてなされたもので、その目的は、画像データ中の任意の領域に対応するデータへのランダムアクセスが可能であり、かつ、画像データの圧縮効率を向上させることが可能な、新規かつ改良された画像処理装置、画像処理方法、プログラムおよび撮像装置を提供することにある。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明のある観点によれば、撮像素子から出力された画像データを圧縮する圧縮部と、圧縮された前記画像データを保持する記憶部と、を有し、前記圧縮部は、前記画像データについて、所定数の画素データからなるブロックのダイナミックレンジの頻度を計測する頻度計測部と、前記頻度に基づいて、前記ブロックごとに、各ダイナミックレンジに割り当てられる量子化語長を算出する量子化語長割当算出部と、算出された前記量子化語長に基づいて量子化された前記ブロックごとの符号化データを所定ブロック分含む圧縮画像データに対して、所定の符号量となるまで０または１を追加するパディング部と、を備える画像処理装置が提供される。
【０００８】
かかる構成によれば、画像処理装置の圧縮部が備える頻度計測部は、画像データについて、所定数の画素データからなるブロックのダイナミックレンジの頻度を計測する。また、量子化語長割当算出部は、測定された頻度に基づいて、ブロックごとに、各ダイナミックレンジに割り当てられる量子化語長を算出する。また、パディング部は、算出された量子化語長に基づいて量子化されたブロックごとの符号化データを所定ブロック分含む圧縮画像データに対して、所定の符号量となるまで０または１を追加する。
【０００９】
前記画像処理装置は、前記各ダイナミックレンジに割り当てられる量子化語長の組み合わせが互いに異なる複数のパターンが記載された量子化語長テーブルを予め保持しており、前記量子化語長割当算出部は、前記量子化語長テーブルに記載された前記複数のパターンと前記頻度とに基づいて各パターンにおける前記所定ブロック分の圧縮画像データの確定符号量を算出し、前記確定符号量が所望の符号量以下となる前記パターンにおける前記量子化語長の組み合わせを選択することが好ましい。
【００１０】
前記量子化語長割当算出部は、前記確定符号量が前記所望の符号量超過となる場合に、前記各ダイナミックレンジに割り当てられる量子化語長を所定の固定値に設定してもよい。
【００１１】
前記量子化語長割当算出部は、前記所定の符号量と、選択された前記量子化語長の組み合わせにおける前記確定符号量との差を、パディング量として前記パディング部に伝送してもよい。
【００１２】
前記圧縮部は、前記算出された量子化語長に基づいて前記ブロックごとに前記画像データを量子化する量子化実行部を更に備え、前記量子化実行部は、所定のビット数を有し、前記算出された量子化語長を表す情報を少なくとも含む固定長部と、前記所定数の画素データに対応した前記符号化データを含む可変長部と、から構成される符号化データを生成してもよい。
【００１３】
前記画像処理装置は、前記記憶部に保持されている前記圧縮された画像データを取得し、当該圧縮された画像データの中から任意の矩形領域に対応するデータを伸張する伸張部を更に備え、前記伸張部は、前記固定長部に含まれる前記量子化語長を表す情報に基づいて、前記任意の矩形領域に対応するデータの位置を特定してもよい。
【００１４】
上記課題を解決するために、本発明の別の観点によれば、撮像素子から出力された画像データについて、所定数の画素データからなるブロックのダイナミックレンジの頻度を計測するステップと、前記頻度に基づいて、前記ブロックごとに、各ダイナミックレンジに割り当てられる量子化語長を算出するステップと、算出された前記量子化語長に基づいて量子化された前記ブロックごとの符号化データを所定ブロック分含む圧縮画像データに対して、所定の符号量となるまで０または１を追加するステップと、を含む画像処理方法が提供される。
【００１５】
上記課題を解決するために、本発明の更に別の観点によれば、撮像素子から出力された画像データが入力され、入力された前記画像データを圧縮して保持可能なコンピュータに、入力された前記画像データについて、所定数の画素データからなるブロックのダイナミックレンジの頻度を計測する頻度計測機能と、前記頻度に基づいて、前記ブロックごとに、各ダイナミックレンジに割り当てられる量子化語長を算出する量子化語長割当算出機能と、算出された善意量子化語長に基づいて量子化された前記ブロックごとの符号化データを所定ブロック分含む圧縮画像データに対して、所定の符号量となるまで０または１を追加するパディング機能と、を実現させるための、プログラムが提供される。
【００１６】
かかる構成によれば、コンピュータプログラムは、コンピュータが備える記憶部に格納され、コンピュータが備えるＣＰＵに読み込まれて実行されることにより、そのコンピュータを上記の画像処理装置として機能させる。また、コンピュータプログラムが記録された、コンピュータで読み取り可能な記録媒体も提供することができる。記録媒体は、例えば、磁気ディスク、光ディスク、光磁気ディスク、フラッシュメモリなどである。また、上記のコンピュータプログラムは、記録媒体を用いずに、例えばネットワークを介して配信してもよい。
【００１７】
上記課題を解決するために、本発明の更に別の観点によれば、撮像素子から出力された画像データを圧縮する圧縮部と、圧縮された前記画像データを保持する記憶部と、を有し、前記圧縮部は、前記画像データについて、所定数の画素データからなるブロックのダイナミックレンジの頻度を計測する頻度計測部と、前記頻度に基づいて、前記ブロックごとに、各ダイナミックレンジに割り当てられる量子化語長を算出する量子化語長割当算出部と、算出された前記量子化語長に基づいて量子化された前記ブロックごとの符号化データを所定ブロック分含む圧縮画像データに対して、所定の符号量となるまで０または１を追加するパディング部と、を備える撮像装置が提供される。
【発明の効果】
【００１８】
本発明によれば、画像データ中の任意の領域に対応するデータへのランダムアクセスが可能であり、かつ、画像データの圧縮効率を向上させることが可能である。
【発明を実施するための最良の形態】
【００１９】
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００２０】
なお、説明は、以下の順序で行うものとする。
（１）従来の撮像装置について
（２）第１の実施形態
撮像装置の構成について
撮像装置の全体構成について
ＲＡＷ圧縮部の構成について
ＲＡＷ伸張部の構成について
（３）まとめ
圧縮処理に関するまとめ
伸張処理に関するまとめ
【００２１】
＜従来の撮像装置について＞
まず、図１４を参照しながら、従来の撮像装置について、詳細に説明する。図１４は、従来の撮像装置の構成を説明するためのブロック図である。
【００２２】
従来の撮像装置９００は、例えばデジタルスチルカメラ、デジタルビデオカメラなどであり、被写体像をデジタルデータとして記録することができる。以下では、撮像装置９００がデジタルスチルカメラである場合を例にとって説明を行う。
【００２３】
撮像装置９００は、図１４に示すように、例えば、撮像素子９０１、アナログフロントエンド（Ａｎａｌｏｇ  Ｆｒｏｎｔ  Ｅｎｄ：ＡＦＥ）回路部９０３、デジタル画像処理回路部９０５、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９１９、ストレージデバイス９２１およびＳＤＲＡＭ９２９等を備えている。
【００２４】
また、デジタル画像処理回路部９０５は、カメラ信号前処理部９０７、カメラ信号処理部９１１、解像度変換部９１３、ＪＰＥＧエンジン９１５、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９１７、ビデオ出力エンコーダ９２３及びＳＤＲＡＭコントローラ９２７などを有する。これらの各構成要素は、内部バス９０９によって相互に接続されている。
【００２５】
撮像素子９０１は、例えばＣＣＤ（Ｃｈａｒｇｅ  Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅｓ）、ＣＭＯＳ（Ｃｏｍｐｌｅｍｅｎｔａｒｙ  Ｍｅｔａｌ  Ｏｘｉｄｅ  Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）などの固体撮像素子であり、図示しないレンズブロック（光学系）を通じて被写体から入射された光を電気信号に変換する。
【００２６】
ＡＦＥ回路部９０３は、撮像素子９０１から出力された画像信号に対して、相関二重サンプリング（Ｃｏｒｅｌａｔｅｄ  Ｄｏｕｂｌｅ  Ｓａｍｐｌｉｎｇ：ＣＤＳ）処理によりＳ／Ｎ（Ｓｉｇｎａｌ／Ｎｏｉｓｅ）比を良好に保つようにサンプルホールドを行う。ＡＦＥ回路９０３は、オートマティックゲインコントロール（Ａｕｔｏｍａｔｉｃ  Ｇａｉｎ  Ｃｏｎｔｒｏｌ：ＡＧＣ）処理により利得（ゲイン）を制御し、Ａ／Ｄ（Ａｎａｌｏｇ／Ｄｉｇｉｔａｌ）変換を行ってデジタル画像信号を出力する。
【００２７】
デジタル画像処理回路部９０５は、例えば、ＳｏＣ（Ｓｙｓｔｅｍ  ｏｎ  ａ  Ｃｈｉｐ）回路などとして形成される。デジタル画像処理回路部９０５において、カメラ信号前処理部９０７は、ＡＦＥ回路部９０３から供給された画像信号に対して、撮像素子９０１における欠陥画素の信号補正処理、レンズの周辺光量落ちを補正するシェーディング処理などを施す。また、カメラ信号前処理部９０７は、処理後の信号を、ＲＡＷデータとして出力する。
【００２８】
カメラ信号処理部９１１は、自動焦点（Ａｕｔｏ  Ｆｏｃｕｓ：ＡＦ）制御、自動露光（Ａｕｔｏ  Ｅｘｐｏｓｕｒｅ：ＡＥ）制御、ホワイトバランス制御などのための信号検波処理や、ホワイトバランス調整に代表される信号補正処理など、いわゆるカメラ信号処理、またはその処理の一部を実行する。また、カメラ信号処理部９１１は、信号補正後の画像データを、例えば４：２：２などの所定フォーマットの輝度信号（Ｙ）と色差信号（Ｒ−Ｙ，Ｂ−Ｙ）に変換する。
【００２９】
解像度変換部９１３は、カメラ信号処理部９１１で処理された画像データ、または、後述するＪＰＥＧエンジン９１５で伸張復号化された画像データの入力を受けて、所定の解像度に変換する。
【００３０】
ＪＰＥＧエンジン９１５は、解像度変換部９１３で処理された画像データを圧縮符号化し、ＪＰＥＧ方式の符号化データを生成する。また、ＪＰＥＧエンジン９１５は、ストレージデバイス９２１から読み出されたＪＰＥＧ画像データを伸張復号化する。なお、デジタル画像処理回路部９０５には、このＪＰＥＧエンジン９１５以外の他の静止画圧縮方式、または動画圧縮方式のエンコード／デコードエンジンが設けられていてもよい。
【００３１】
ＣＰＵ９１７は、後述するＲＯＭ９１９に格納されたプログラムを実行することにより、デジタル画像処理回路部９０５および撮像装置９００全体を統括的に制御し、また、その制御のための各種演算を実行する。
【００３２】
ＲＯＭ９１９は、ＣＰＵ９１７が実行するプログラムや各種データを保持する。ＲＯＭ９１９は、例えば、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｏｎｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、フラッシュメモリなどの不揮発性メモリである。
【００３３】
ストレージデバイス９２１は、符号化された画像データのファイルを記録するためのデバイスである。ストレージデバイス９２１は、例えば、フラッシュメモリ、各種の光ディスク、磁気テープなどの記録媒体と、記録媒体の記録／再生ドライブなどからなる。
【００３４】
ビデオ出力エンコーダ９２３は、例えばＮＴＳＣ（Ｎａｔｉｏｎａｌ  Ｔｅｌｅｖｉｓｉｏｎ  Ｓｔａｎｄａｒｄｓ  Ｃｏｍｍｉｔｔｅｅ）エンコーダなどである。ビデオ出力エンコーダ９２３は、解像度変換部９１３などから出力された画像データを基に、モニタ表示用の画像信号を生成し、モニタ（図示せず。）またはビデオ出力端子９２５に出力する。
【００３５】
ＳＤＲＡＭコントローラ９２７は、後述するＳＤＲＡＭ９２９に対するインタフェースブロックであり、アドレスデコーダなどを有する。ＳＤＲＡＭコントローラ９２７は、ＣＰＵ９１７からの制御信号に従って、ＳＤＲＡＭ９２９の書き込みおよび読み出し動作を制御する。
【００３６】
ＳＤＲＡＭ９２９は、ＤＤＲ（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ）ＳＤＲＡＭなどの揮発性のメモリである。ＳＤＲＡＭ９２９は、デジタル画像処理回路部９０５におけるデータ処理のためのワークエリアである。ＳＤＲＡＭ９２９は、キャプチャデータエリア９３１と、ＪＰＥＧ符号エリア９３３と、ＣＰＵワークエリア９３５などを含む。キャプチャデータエリア９３１は、撮像素子９０１からキャプチャされたデータであるＲＡＷデータを一時的に格納する。ＪＰＥＧ符号エリア９３３は、ＪＰＥＧエンジン９１５により符号化された画像データや、その符号化・復号化処理で利用されるデータなどを一時的に格納する。ＣＰＵワークエリア９３５は、ＣＰＵ９１７の処理で利用されるデータを一時的に格納する。
【００３７】
上記のような撮像装置９００において、撮像素子９０１による撮像信号は、順次ＡＦＥ回路部９０３に伝送され、ＣＤＳ処理やＡＧＣ処理が施された後、デジタル信号に変換されて、デジタル画像処理回路部９０５のカメラ信号前処理部９０７に伝送される。カメラ信号前処理部９０７では、入力された画像信号に対して、欠陥画素補正やシェーディング補正などを施したＲＡＷデータが生成される。このＲＡＷデータは、ＳＤＲＡＭ９２９に一旦書き込まれる。
【００３８】
上記ＲＡＷデータは、ＳＤＲＡＭ９２９から読み出されると、カメラ信号処理部９１１により各種画質補正処理が施される。処理後の画像データは、例えばＳＤＲＡＭ９２９に一旦格納された後、解像度変換部９１３により、表示に適した解像度のデータに変換される。また、解像度変換後の画像データは、例えばＳＤＲＡＭ９２９に格納された後、ビデオ出力エンコーダ９２３に伝送される。これにより、カメラスルー画像がモニタに表示される。
【００３９】
また、図示しない入力部などを通じて画像の記録が要求されると、解像度変換部９１３は、カメラ信号処理部９１１で処理された画像データを、必要に応じて記録用に設定された解像度のデータに変換して、例えばＳＤＲＡＭ９２９に一旦格納する。ＪＰＥＧエンジン９１５は、画像データを圧縮符号化して、符号化データを生成する。符号化データは、例えばＳＤＲＡＭ９２９に一旦記録された後、ストレージデバイス９２１に記録される。
【００４０】
また、ストレージデバイス９２１に記録された画像データ（符号化データ）は、ＪＰＥＧエンジン９１５で伸張復号化され、解像度変換部９１３で解像度変換される。その後、画像データは、ビデオ出力エンコーダ９２３に出力されることで、モニタに画像を表示させることができる。
【００４１】
ここで、デジタル画像処理回路部９０５とＳＤＲＡＭ９２９との間でＲＡＷデータの書き込み処理や読み出し処理がなされる場合、キャプチャサイズのＲＡＷデータが、デジタル画像処理回路部９０５内の内部バス９０９を介して転送されることとなる。そのため、ＲＡＷデータを圧縮してメモリ上に保持することが可能となれば、より多くのＲＡＷデータをキャプチャできることになる。また、ＲＡＷデータのキャプチャと読み出しは、全画面分のデータが内部バス９０９上を流れることとなるため、撮影時のバス帯域のかなりの部分を占めることとなる。そのため、ＲＡＷデータの圧縮によりデータサイズが減少すれば、撮影時に使用するバス帯域を削減することが可能となる。
【００４２】
また、いわゆる連写撮影機能などでは、複数フレームの撮影画像をメモリ上に高速に貼り付け、その後順次信号処理を行ってゆく手順を踏むことで、連写枚数上限を増やす事ができる。また、連写間隔と信号処理スピードによっては、ストレージ容量の上限までではあるが、無限連写的に撮影を行うことが可能となる。
【００４３】
このように、ＲＡＷ信号の転送バス帯域削減は、デジタルスチルカメラやデジタルビデオカメラ等の撮像装置の性能に大きく関わる要素である。
【００４４】
そこで、上述の特許文献１では、ＲＡＷデータの圧縮を行う際に、ＲＡＷデータの固定長圧縮を行い、バス帯域を一定とし、ブロック毎のランダムアクセスの実現が可能となったが、圧縮効率を高くすることはできなかった。
【００４５】
また、ＲＡＷデータの圧縮を、可逆圧縮で実現することが考えられるが、ハフマン符号等の可変長となる要素を取り入れると、１画面の圧縮を終了するまで符号量が確定しない。そのため、キャプチャメモリサイズは小さくすることができず、１フレームキャプチャした後などに、符号量あふれ等の破綻処理が必要となるという問題があった。また、圧縮した画面の任意の一部分を伸張したい場合は、１フレームを全てデコードしたうえで、ラスタ順の並びに戻した後でないと、データへのアクセスができない。そのため、処理時間やメモリエリアが必要となるという問題があった。
【００４６】
そこで、本願発明者は、上述のような問題を解決するために鋭意研究を行い、以下で説明するような画像処理装置および画像処理方法に想到した。
【００４７】
（第１の実施形態）
＜撮像装置の構成について＞
次に、図１〜図１３を参照しながら、本発明の第１の実施形態に係る画像処理装置の一例である撮像装置の構成について、詳細に説明する。
【００４８】
［撮像装置の全体構成について］
まず、図１を参照しながら、本実施形態に係る撮像装置の全体構成について、詳細に説明を行う。図１は、本実施形態に係る画像処理装置の一例である撮像装置の構成を説明するためのブロック図である。
【００４９】
本実施形態に係る撮像装置１０は、例えばデジタルスチルカメラ、デジタルビデオカメラなどであり、被写体像をデジタルデータとして記録することができる。以下では、撮像装置１０がデジタルスチルカメラである場合を例にとって説明を行う。
【００５０】
撮像装置１０は、図１に示すように、例えば、撮像素子１１、ＡＦＥ回路部１３、デジタル画像処理回路部１５、ＲＯＭ２９、ストレージデバイス３１およびＳＤＲＡＭ３９等を備えている。
【００５１】
また、デジタル画像処理回路部１５は、カメラ信号前処理部１７、カメラ信号処理部２１、解像度変換部２３、ＪＰＥＧエンジン２５、ＣＰＵ２７、ビデオ出力エンコーダ３３及びＳＤＲＡＭコントローラ３７などを有する。さらに、本実施形態に係るデジタル画像処理回路部１５は、ＲＡＷ圧縮部１０１およびＲＡＷ伸張部１０３を有する。これらの各構成要素は、内部バス１９によって相互に接続されている。
【００５２】
撮像素子１１は、例えばＣＣＤ、ＣＭＯＳなどの固体撮像素子であり、図示しないレンズブロック（光学系）を通じて被写体から入射された光を電気信号に変換する。
【００５３】
ＡＦＥ回路部１３は、撮像素子１１から出力された画像信号に対して、ＣＤＳ処理によりＳ／Ｎ比を良好に保つようにサンプルホールドを行う。ＡＦＥ回路１３は、ＡＧＣ処理により利得（ゲイン）を制御し、Ａ／Ｄ変換を行ってデジタル画像信号を出力する。
【００５４】
デジタル画像処理回路部１５は、例えば、ＳｏＣ回路などとして形成される。デジタル画像処理回路部１５において、カメラ信号前処理部１７は、ＡＦＥ回路部１３から供給された画像信号に対して、撮像素子１１における欠陥画素の信号補正処理、レンズの周辺光量落ちを補正するシェーディング処理などを施す。また、カメラ信号前処理部１７は、処理後の信号を、ＲＡＷデータとして出力する。
【００５５】
ＲＡＷ圧縮部１０１は、カメラ信号前処理部１７から伝送されたＲＡＷデータを、後述する圧縮方法により圧縮し、ＳＤＲＡＭコントローラ３７を介して、ＳＤＲＡＭ３９に伝送する。
【００５６】
ＲＡＷ伸張部１０３は、ＳＤＲＡＭ３９からＳＤＲＡＭコントローラ３７を介して読み出した圧縮されたＲＡＷデータを、後述する方法により伸張して、カメラ信号処理部２１に出力する。
【００５７】
カメラ信号処理部２１は、ＡＦ制御、ＡＥ制御、ホワイトバランス制御などのための信号検波処理や、ホワイトバランス調整に代表される信号補正処理など、いわゆるカメラ信号処理、またはその処理の一部を実行する。また、カメラ信号処理部２１は、信号補正後の画像データを、例えば４：２：２などの所定フォーマットの輝度信号（Ｙ）と色差信号（Ｒ−Ｙ，Ｂ−Ｙ）に変換する。
【００５８】
解像度変換部２３は、カメラ信号処理部２１で処理された画像データ、または、ＪＰＥＧエンジン２５で伸張復号化された画像データの入力を受けて、所定の解像度に変換する。
【００５９】
ＪＰＥＧエンジン２５は、解像度変換部２３で処理された画像データを圧縮符号化し、ＪＰＥＧ方式の符号化データを生成する。また、ＪＰＥＧエンジン２５は、ストレージデバイス３１から読み出されたＪＰＥＧ画像データを伸張復号化する。なお、デジタル画像処理回路部１５には、このＪＰＥＧエンジン２５以外の他の静止画圧縮方式、または動画圧縮方式のエンコード／デコードエンジンが設けられていてもよい。
【００６０】
ＣＰＵ２７は、後述するＲＯＭ２９に格納されたプログラムを実行することにより、デジタル画像処理回路部１５および撮像装置１０全体を統括的に制御し、また、その制御のための各種演算を実行する。
【００６１】
ＲＯＭ２９は、ＣＰＵ２７が実行するプログラムや各種データを保持する。ＲＯＭ２９は、例えば、ＥＥＰＲＯＭ、フラッシュメモリなどの不揮発性メモリである。
【００６２】
ストレージデバイス３１は、符号化された画像データのファイルを記録するためのデバイスである。ストレージデバイス３１は、例えば、フラッシュメモリ、各種の光ディスク、磁気テープなどの記録媒体と、記録媒体の記録／再生ドライブなどからなる。
【００６３】
ビデオ出力エンコーダ３３は、例えばＮＴＳＣエンコーダなどである。ビデオ出力エンコーダ３３は、解像度変換部２３などから出力された画像データを基に、モニタ表示用の画像信号を生成し、モニタ（図示せず。）またはビデオ出力端子３５に出力する。
【００６４】
ＳＤＲＡＭコントローラ３７は、後述するＳＤＲＡＭ３９に対するインタフェースブロックであり、アドレスデコーダなどを有する。ＳＤＲＡＭコントローラ３７は、ＣＰＵ２７からの制御信号に従って、ＳＤＲＡＭ３９の書き込みおよび読み出し動作を制御する。
【００６５】
ＳＤＲＡＭ３９は、ＤＤＲＳＤＲＡＭなどの揮発性のメモリであって、撮像装置１０が備える記憶部の一例である。ＳＤＲＡＭ３９は、デジタル画像処理回路部１５におけるデータ処理のためのワークエリアである。ＳＤＲＡＭ３９は、キャプチャデータエリア４１と、ＪＰＥＧ符号エリア４３と、ＣＰＵワークエリア４５などを含む。キャプチャデータエリア４１は、撮像素子１１からキャプチャされたデータであるＲＡＷデータを一時的に格納する。ＪＰＥＧ符号エリア４３は、ＪＰＥＧエンジン２５により符号化された画像データや、その符号化・復号化処理で利用されるデータなどを一時的に格納する。ＣＰＵワークエリア４５は、ＣＰＵ２７の処理で利用されるデータを一時的に格納する。
【００６６】
上記のような撮像装置１０において、撮像素子１１による撮像信号は、順次ＡＦＥ回路部１３に供給され、ＣＤＳ処理やＡＧＣ処理が施された後、デジタル信号に変換されて、デジタル画像処理回路部１５のカメラ信号前処理部１７に伝送される。カメラ信号前処理部１７では、入力された画像信号に対して、欠陥画素補正やシェーディング補正などを施したＲＡＷデータが生成される。このＲＡＷデータは、ＲＡＷ圧縮部１０１により圧縮された後、ＳＤＲＡＭ３９に一旦書き込まれる。
【００６７】
上記ＲＡＷデータは、ＳＤＲＡＭ３９から読み出されると、ＲＡＷ伸張部１０３により伸張された後、カメラ信号処理部２１により各種画質補正処理が施される。処理後の画像データは、例えばＳＤＲＡＭ３９に一旦格納された後、解像度変換部２３により、表示に適した解像度のデータに変換される。また、解像度変換後の画像データは、例えばＳＤＲＡＭ３９に格納された後、ビデオ出力エンコーダ３３に供給される。これにより、カメラスルー画像がモニタに表示される。
【００６８】
また、図示しない入力部などを通じて画像の記録が要求されると、解像度変換部２３は、カメラ信号処理部２１で処理された画像データを、必要に応じて記録用に設定された解像度のデータに変換して、例えばＳＤＲＡＭ３９に一旦格納する。ＪＰＥＧエンジン２５は、画像データを圧縮符号化して、符号化データ（以下、圧縮符号データとも称する。）を生成する。符号化データは、例えばＳＤＲＡＭ３９に一旦記録された後、ストレージデバイス３１に記録される。
【００６９】
また、ストレージデバイス３１に記録された画像データ（圧縮符号データ）は、ＪＰＥＧエンジン２５で伸張復号化され、解像度変換部２３で解像度変換される。その後、画像データは、ビデオ出力エンコーダ３３に出力されることで、モニタに画像を表示させることができる。
【００７０】
本実施形態のデジタル画像処理回路部１５には、カメラ信号前処理部１７から内部バス１９に対する画像データの入力位置に、ＲＡＷデータを圧縮するＲＡＷ圧縮部１０１が設けられる。これにより、内部バス１９を通じてＳＤＲＡＭ３９に伝送されるＲＡＷデータのデータ量を低減することができる。また、内部バス１９からカメラ信号処理部２１に対する画像データの入力位置に、ＲＡＷデータを伸張するＲＡＷ伸張部１０３が設けられる。これにより、ＳＤＲＡＭ３９からカメラ信号処理部２１に伝送されるＲＡＷデータのデータ量を低減することができる。
【００７１】
本実施形態によれば、撮像動作中の内部バス１９の伝送負荷を軽減し、ＳＤＲＡＭ３９に対する書き込み／読み出し処理に要する時間を短縮することが可能となる。特に、圧縮／伸張の処理をできるだけ簡単にすることで、処理時間の短縮効果を上げることができる。また、バス上の伝送周波数を低減して、消費電力を抑制することもできる。
【００７２】
また、本実施形態によれば、ＳＤＲＡＭ３９の容量を小さくすることができる。更に、ＳＤＲＡＭ３９の領域を他の処理に利用したり、複数フレーム分のＲＡＷデータを格納して、連写できる枚数を増やしたり、あるいは連写速度を向上させたりなど、高画質化・高機能化に寄与する。従って、撮像処理やデータ記録処理に必要な時間を短くすることができる、高性能かつ小型、低コストの撮像装置１０を実現できる。
【００７３】
なお、図１に示したＲＡＷ圧縮部１０１およびＲＡＷ伸張部１０３の設置位置は、あくまでも一例であり、システム構成によっては、ＳＤＲＡＭコントローラ３７側に設置してもよい。
【００７４】
［ＲＡＷ圧縮部の構成について］
続いて、図２〜図８を参照しながら、本発明に係る圧縮部の一例であるＲＡＷ圧縮部１０１の構成について、詳細に説明する。本実施形態に係るＲＡＷ圧縮部１０１は、非可逆ＲＡＷ信号圧縮方法を用いた圧縮部である。
【００７５】
なお、以下の説明において、ＲＡＷデータ信号を１画素（ピクセル）当たり１４ビットとする。また、例えば図５に示すように、同一色成分を持つ水平方向の１６画素分を、１ブロックの圧縮符号データに変換する。図５は、ベイヤ配列と抽出された同色１ラインとを説明するための説明図であるが、図５については、以下で改めて詳細に説明する。本実施形態に係るＲＡＷ圧縮部１０１は、後述する折れ線圧縮部１２１により１５ビットのＲＡＷデータ信号を１０ビットに圧縮した後、量子化語長Ｑ＝１〜６ビットで、ブロック単位に量子化を行う。ここで、１ブロック内では、量子化語長Ｑは同じであり、ブロック毎に量子化語長Ｑが変動する。また、以下では、目標符号量を１ピクセルあたり６ビット（６ｂｉｔ／ｐｉｘ）と設定した場合について説明する。
【００７６】
本実施形態に係るＲＡＷ圧縮部１０１は、画素データの最大値、最小値の差分をブロック単位で取得し、ダイナミックレンジの大きさに応じて、１ブロックあたり３２〜１１２ビット（３２〜１１２ｂｉｔ／ＢＬＯＣＫ）の可変長に圧縮する。また、本実施形態に係るＲＡＷ圧縮部１０１は、後述する量子化語長割当算出部１２７により、常に、ライン単位で１ピクセルあたり６ビット（６ｂｉｔ／ｐｉｘ）に圧縮する。従って、本実施形態に係るＲＡＷ圧縮部１０１は、フレーム単位に、固定長６ｂｉｔ／ｐｉｘの圧縮を実現することができる。
【００７７】
図２は、本実施形態に係るＲＡＷ圧縮部の構成を説明するためのブロック図である。本実施形態に係るＲＡＷ圧縮部１０１は、例えば図２に示したように、折れ線圧縮部１２１と、頻度計測部１２３と、１ライン遅延部１２５と、量子化語長割当算出部１２７と、量子化実行部１２９と、パディング部１３１と、を主に備える。
【００７８】
折れ線圧縮部１２１は、入力された１４ビットのＲＡＷデータを、折れ線を用いた近似により１０ビットのデータに非線形で圧縮する。折れ線圧縮部１２１は、この後の圧縮手順の前に、できるだけ階調を下げておくことで、全体的な圧縮効率を向上させることを目的として設けられる。目的とする圧縮率によっては、省略されてもよい。なお、この場合には、後の図１２で説明するＲＡＷ伸張部１０３の出力段に設けられる逆折れ線伸張部２３１についても、省略可能である。
【００７９】
ここで、図３は、折れ線圧縮部１２１で用いられる折れ線の例を示すグラフである。折れ線圧縮部１２１は、図３に示すグラフによって入力データの階調を変換する。この例では、人間の視覚特性に合わせて、入力データが小さいほど、すなわち暗いほど（または色がうすいほど）、高い階調を割り当てるようにしている。このような折れ線は、例えば色成分ごとに用意し、入力画素の色成分ごとに切り換えて利用してもよい。
【００８０】
折れ線圧縮部１２１では、例えば、このような折れ線を用いて、入力データの階調を変換した後、変換後のデータを１６で除算（すなわち４ビット分下位にシフト）して、１０ビットデータに圧縮する。このとき、捨てられる下位ビットは、例えば四捨五入する。なお、以上のような演算に基づく、入力データと圧縮後の出力データとを対応付けて記憶したＲＯＭテーブルを用意し、折れ線圧縮部１２１では、このＲＯＭテーブルに従って入出力データの変換が行われてもよい。また、折れ線圧縮部１２１は、例えば４点程度の折れ点を設定するような、演算回路であってもよい。
【００８１】
折れ線圧縮部１２１により圧縮されたＲＡＷデータは、後述する頻度計測部１２３へと伝送される。また、頻度計測部１２３への圧縮符号データの伝送が行われたタイミングは、後述する１ライン遅延部１２５に伝送される。
【００８２】
頻度計測部１２３は、ブロック単位ごとに、画素データの最大値と最小値を検出し、検出した最大値と最小値との差分から、ダイナミックレンジを算出する。続いて、頻度計測部１２３は、算出したダイナミックレンジの語長（桁数）を検出し、ダイナミックレンジの語長ＤＲの頻度を計測する。頻度計測部１２３による頻度の計測期間は、例えば１ラインに相当する期間である。本実施形態においては、ダイナミックレンジの語長ＤＲは、ＤＲ＝１からＤＲ＝１０までの１０通りが存在する。頻度計測部１２３は、それぞれのダイナミックレンジの語長ＤＲの頻度を、ヒストグラムＨＩＳＴ１〜ＨＩＳＴ１０として、量子化語長割当算出部１２７に伝送する。
【００８３】
ここで、図４は、頻度計測部１２３の詳細な構成を説明するためのブロック図である。本実施形態に係る頻度計測部１２３は、例えば図４に示したように、ブロック化部１４１と、最大／最小検出部１４３と、ダイナミックレンジ算出部１４５と、語長検出部１４７と、コンパレータ１４９Ａ〜１４９Ｊと、カウンタ１５１Ａ〜１５１Ｊと、を主に備える。
【００８４】
ブロック化部１４１は、折れ線圧縮部１２１から伝送されたデータを、水平方向に隣接する１６画素分の同色成分画素からなるブロックに分割し、分割したブロック毎に出力する。これにより、ブロック内のデータの相関が強くなり、この後の量子化処理による画質劣化を抑制することができる。
【００８５】
例えば、図５に示すようなベイヤ配列の撮像素子が用いられた場合、出力データには、Ｒ成分とＧｒ成分の繰り返しと、Ｂ成分とＧｂ成分の繰り返しとが、１ラインごとに出現する。例えば、ブロック化部１４１への入力データに、Ｒ０，Ｇｒ０，Ｒ１，Ｇｒ１，・・・，Ｒ１５，Ｇｒ１５のように、Ｒ成分とＧｒ成分が繰り返し現れる場合には、Ｒ０，Ｒ１，Ｒ２，・・・，Ｒ１５，Ｇｒ０，Ｇｒ１，・・・，Ｇｒ１５のように、同色成分の画素が１６個連続して現れるように、出力順序を変換して、ブロック化する。
【００８６】
最大／最小検出部１４３は、ブロック毎に、ブロック化された水平１６画素のデータのなかから最大値（ＭＡＸ）及び最小値（ｍｉｎ）を検出する。最大／最小検出部１４３は、検出した最大値（ＭＡＸ）及び最小値（ｍｉｎ）を、ダイナミックレンジ算出部１４５に伝送する。
【００８７】
ダイナミックレンジ算出部１４５は、１つのブロック内の最大値（ＭＡＸ）及び最小値（ｍｉｎ）の差分（ＭＡＸ−ｍｉｎ）を計算して、１つのブロックでのダイナミックレンジを算出する。ダイナミックレンジ算出部１４５は、算出したダイナミックレンジを語長検出部１４７に伝送する。
【００８８】
語長検出部１４７は、伝送されたダイナミックレンジから、１つのブロック内に存在する画素データのダイナミックレンジの桁数（すなわち、ダイナミックレンジの語長）ＤＲを検出する。語長検出部１４７は、検出したダイナミックレンジの桁数ＤＲを、後述するコンパレータ１４９Ａ〜１４９Ｊに出力する。
【００８９】
コンパレータ１４９Ａ〜１４９Ｊは、語長検出部１４７から出力されたダイナミックレンジの桁数ＤＲと、それぞれのコンパレータに入力されている基準値とを比較する。各コンパレータは、ダイナミックレンジが入力されている基準値に等しい場合に、各コンパレータにそれぞれ接続されているカウンタに対して、１を出力する。本実施形態では、ダイナミックレンジの桁数ＤＲは、ＤＲ＝１〜ＤＲ＝１０の１０通りが存在するため、コンパレータ１４９Ａ〜１４９Ｊには、それぞれ基準値として１〜１０が入力されている。語長検出部１４７から伝送されたダイナミックレンジの桁数ＤＲは、１〜１０のいずれかの値を有するため、コンパレータ１４９Ａ〜１４９Ｊのいずれか１つが、１を表す信号を出力することとなる。
【００９０】
例えば、語長検出部１４７から出力されたダイナミックレンジの桁数ＤＲが１であった場合、基準値１が入力されているコンパレータ１４９Ａの出力が１となり、コンパレータ１４９Ｂ〜１４９Ｊの出力は０となる。
【００９１】
カウンタ１５１Ａ〜１５１Ｊは、対応するコンパレータ１４９Ａ〜１４９Ｊから１を表す信号が伝送された回数をカウントする。これらのカウンタ１５１Ａ〜１５１Ｊから出力された回数が、ダイナミックレンジの桁数ＤＲの頻度、すなわちヒストグラムＨＩＳＴ１〜ＨＩＳＴ１０となる。各カウンタ１５１Ａ〜１５１Ｊから出力された値は、量子化語長割当算出部１２７に伝送される。
【００９２】
例えば、カウンタ１５１Ａから出力された回数は、コンパレータ１４９Ａから１を表す信号が出力された回数に等しい。すなわち、カウンタ１５１Ａから出力された値は、ダイナミックレンジの桁数ＤＲが１であるブロックの個数を表すこととなる。
【００９３】
以上説明したような方法を用いて、頻度計測部１２３は、ダイナミックレンジの桁数ＤＲの頻度を計測する。
【００９４】
再び図２に戻って、本実施形態に係るＲＡＷ圧縮部１０１の構成について詳細に説明する。
【００９５】
１ライン遅延部１２５は、１水平同期期間（１Ｈ）の長さのディレイラインである。頻度計測部１２３が入力されたデータのＤＲの計測を開始してから、量子化語長割当算出部１２７が量子化語長を決定するまでに、１ラインの期間を要する。そのため、１ライン遅延部１２５は、折れ線圧縮部１２１からの出力を量子化できるまでの時間を合わせるために用いられる。
【００９６】
量子化語長割当算出部１２７は、頻度計測部１２３から伝送された頻度に基づいて、ブロックごとに、ダイナミックレンジの桁数ＤＲ＝１〜ＤＲ＝１０それぞれに割り当てられる量子化語長を算出する。より詳細には、量子化語長割当算出部１２７は、後述する量子化語長テーブルに記載された複数のパターンと、伝送された頻度と、に基づいて、各パターンにおける所定ブロック分の圧縮画像データの確定符号量を算出する。続いて、量子化語長割当算出部１２７は、算出した確定符号量が所望の符号量以下となるパターンにおける量子化語長の組み合わせを、データの圧縮に利用する量子化語長として選択する。
【００９７】
量子化語長テーブルは、各ダイナミックレンジの桁数ＤＲ＝１〜ＤＲ＝１０に割り当てられる量子化語長の組み合わせが互いに異なる複数のパターンが記載されたものである。この量子化語長テーブルは、例えば、本実施形態に係るＲＯＭ２９等に予め格納されている。
【００９８】
図６に、上述のような量子化語長テーブルの一例を示す。図６に示したテーブルでは、各ダイナミックレンジの桁数ＤＲに割り当てられる量子化語長の組み合わせが、桁数に応じて変化するように設定された１３個のパターンが記載されている。また、図６に示したテーブルでは、上記１３個のパターンに加えて、全てのダイナミックレンジの桁数ＤＲに同じ量子化語長が割り当てられるパターン（インデックス１３に該当）もあわせて記載されている。
【００９９】
例えば、図６のインデックス０〜インデックス３は、ダイナミックレンジの桁数ＤＲが小さいものに対して、できるだけ符号量を抑制することなく量子化語長を割り当てることを意図したパターンとなっている。また、図６のインデックス４〜インデックス１２は、桁数の小さいブロックの発生符号量を抑えて、抑制できた分を桁数の大きなダイナミックレンジを有するブロックに割り当てることを意図したパターンとなっている。また、図６から明らかなように、インデックス値の小さいものほど量子化語長はダイナミックレンジの桁数ＤＲの値に近いようになっている。これは、インデックス値が小さいものほど、圧縮後の画質が良いことを意味している。
【０１００】
図６から明らかなように、インデックス０〜インデックス１２に記載されているパターンでは、全てのダイナミックレンジの桁数で同じ量子化語長の値となっていない。そのため、これらの量子化語長の組み合わせを用いることで、ブロック単位では可変長圧縮となることがわかる。また、インデックス１３に記載されているパターンでは、全てのダイナミックレンジの桁数で同じ量子化語長の値となっている。そのため、この量子化語長の組み合わせを用いることで、ブロック単位（ひいてはライン単位）で固定長圧縮となることがわかる。
【０１０１】
ここで、本実施形態に係るＲＡＷ圧縮部１０１では、例えば図８に示すように、１ブロックの圧縮符号データの形式を、固定部および可変長部の２種類の部分からなる量子化データ形式とする。また、このデータ形式では、１ブロックの画素数と、固定部の語長のアラインメントが等しくなっている。例えば、本実施形態のように１ブロックが１６画素から構成される場合、固定部の語長は、１６ビットまたはその倍数とし、量子化語長Ｑビットの場合、可変長部となる量子化データ部は、１６×Ｑビットとなるようにする。
【０１０２】
このような圧縮符号データ形式を利用することで、量子化語長割当算出部１２７は、以下の式１に示した計算を行って、圧縮処理を行うことなく符号量の確定値を算出することができる。
【０１０３】
ダイナミックレンジの桁数ＤＲの確定符号量＝
１〜１０までの（ＤＲ毎の頻度×ＤＲ毎の量子化語長）の総和
＋（１ラインのブロック数×固定部のｗｏｒｄ数）
・・・（式１）
【０１０４】
ここで、上記式１において、ＤＲ毎の量子化語長は、図６に示したような量子化語長テーブルに記載されている値であり、１ラインのブロック数および固定部のｗｏｒｄ数は、撮像装置において予め設定されている値である。また、上記式１において、ＤＲ毎の頻度は、頻度計測部１２３から伝送される値である。
【０１０５】
量子化語長割当算出部１２７は、上記式１を用いて、量子化語長テーブルに記載されている固定長圧縮となるもの以外のパターン全てについて、確定符号量の算出を行う。他方、量子化語長割当算出部１２７は、設定されている目標符号量を利用して、要求符号量を以下の式２のように算出する。
【０１０６】
要求符号量＝（目標符号量×１ラインの総画素数）  ・・・（式２）
【０１０７】
例えば、本実施形態のように、目標符号量が６ｂｉｔ／ｐｉｘである場合には、式２より、要求符号量＝６ビット×１ラインの総画素数となる。
【０１０８】
続いて、量子化語長割当算出部１２７は、算出した確定符号量と、要求符号量とを比較する。量子化語長割当算出部１２７は、比較の結果、要求符号量以下であり、かつ、最も大きな確定符号量となるパターン（インデックス）を、選択すべき量子化語長の組み合わせとして選択する。また、図６のように、インデックス値の小さいものほど画質が良い様に配列されているテーブルであれば、要求符号量以下の確定符号量を有し、かつ、インデックス値が一番小さいものを選択するようにしてもよい。
【０１０９】
量子化語長の組み合わせパターンの選択が終了すると、量子化語長割当算出部１２７は、選択した量子化語長の組み合わせ（すなわち、選択した量子化語長テーブルに記載されている、量子化語長Ｑ１〜Ｑ１０の組み合わせ）を、量子化実行部１２９に伝送する。例えば、インデックス値３の量子化語長テーブルが選択された場合には、量子化語長割当算出部１２７は、Ｑ１＝１、Ｑ２＝２、Ｑ３＝３、Ｑ４＝４、Ｑ５＝５、Ｑ６＝５、Ｑ７＝５、Ｑ８＝５、Ｑ９＝６、Ｑ１０＝６を、量子化実行部１２９に伝送する。
【０１１０】
また、算出した確定符号量が、全て要求符号量よりも大きな値であった場合には、量子化語長割当算出部１２７は、例えば図６のインデックス１３に示したような、全てのダイナミックレンジの桁数ＤＲにおいて同一の量子化語長となる組み合わせを選択する。この量子化語長の組み合わせは、固定長圧縮を行うための組み合わせであり、全てのＤＲにおいて、目標符号量よりも１ビット小さな値を有する量子化語長が設定されている。これは、図８に示したデータ形式において、固定部の部分では、ｗｏｒｄ０（ｍｉｎ値）の分で１ｂｉｔ／ｐｉｘ相当のビットを使用するためである。このような値が設定されることにより、確定符号量は、必ず要求符号量に収まることとなる。
【０１１１】
固定長圧縮を行った場合、ダイナミックレンジの桁数ＤＲが大きなブロックは、圧縮ノイズが多めに発生することとなる。しかしながら、１ラインごとに圧縮パラメータを変更するため、１画面全体を見た場合の画像へのダメージは軽減される。また、圧縮処理前に見積もり符号量ではなく確定符号量が算出できるため、圧縮処理後に符号量が超過してしまい圧縮が失敗したという事態が生じない。
【０１１２】
また、量子化語長割当算出部１２７は、各ダイナミックレンジの桁数ＤＲにおける量子化語長Ｑ１〜Ｑ１０が決定すると、要求符号量と、決定した量子化語長Ｑ１〜Ｑ１０を用いた場合の確定符号量との差を算出する。この差が、パディング量となる。量子化語長割当算出部１２７は、算出したパディング量を、パディング部１３１に伝送する。
【０１１３】
なお、図６に示した量子化語長テーブルは、あくまでも一例であって、量子化語長テーブルに記載されている各パターンは、画質や圧縮効率等の様々な要因に基づいて任意に決定することが可能である。
【０１１４】
また、ダイナミックレンジの桁数ＤＲの頻度等によって、さらに細かく量子化語長テーブルを枝分かれさせるなどの構成とすることで、量子化語長割当算出部１２７は、より画質および圧縮効率の良い圧縮処理を行うことが可能な量子化語長を選択することが可能となる。
【０１１５】
また、量子化語長Ｑの割り当ての決定は、圧縮対象となるブロックの圧縮時にどの組み合わせを選択すればよいかが容易に判別可能であれば、ブロック毎のダイナミックレンジの桁数ＤＲの頻度に加えて、他の画像的特徴を併用してもよい。例えば、ブロック内のエッジとなる部分の検出を頻度計測と同時に行い、エッジとなる部分の数により量子化語長Ｑの選択をさらに細かくする等の方法を行うことが可能である。例えば、ダイナミックレンジの桁数ＤＲが大きく、さらに１ブロック内に１、２回の小数のエッジが存在する場合、画像レベルが暗から明のように大きく変化しているため、量子化語長Ｑを特に多めにしておかないと画質劣化が目立つ。反対に、ダイナミックレンジの桁数ＤＲが大でもエッジが多い縞模様の場合では、ほどほどの量子化語長でも画質劣化は目立たない。エッジの数は、ブロック圧縮時の最大値／最小値検出においても計測する事は容易である。
【０１１６】
量子化実行部１２９は、量子化語長割当算出部１２７によって算出された量子化語長Ｑ１〜Ｑ１０に基づいて、ブロック毎に画像データを量子化する。以下では、図７を参照しながら、本実施形態に係る量子化実行部１２９の構成について、詳細に説明する。図７は、本実施形態に係る量子化実行部１２９の構成を説明するためのブロック図である。
【０１１７】
本実施形態に係る量子化実行部１２９は、例えば図７に示したように、ブロック化部１６１と、最大／最小検出部１６３と、バッファ１６５、減算部１６７と、ダイナミックレンジ算出部１６９と、シフト量算出部１７１と、量子化器１７３と、語長選択部１７５と、量子化データバッファ１７７と、パッキング部１７９と、を主に備える。
【０１１８】
ブロック化部１６１は、折れ線圧縮部１３１から出力され、１ライン遅延部１２５により所定の期間遅延されたデータを、水平方向に隣接する１６画素分の同色成分画素からなるブロックに分割し、分割したブロック毎に出力する。これにより、ブロック内のデータの相関が強くなり、この後の量子化処理による画質劣化を抑制することができる。
【０１１９】
最大／最小検出部１６３は、ブロック毎に、ブロック化された水平１６画素のデータのなかから、最大値（ＭＡＸ）及び最小値（ｍｉｎ）を検出する。最大／最小検出部１６３は、検出した最大値（ＭＡＸ）及び最小値（ｍｉｎ）を、ダイナミックレンジ算出部１６９に伝送する。また、最大／最小検出部１６３は、検出した最小値（ｍｉｎ）を、減算部１６７およびパッキング部１７９に伝送する。
【０１２０】
バッファ１６５は、ブロック化部１６１から伝送されたデータを、所定期間保持する。バッファ１６５は、最大／最小検出部１６３において最大値および最小値が算出されるまでの間、入力データに対応するブロックを保持し、遅延時間合わせをする。
【０１２１】
減算部１６７は、バッファ１６５から伝送された画素データから、最大／最小検出部１６３が伝送した、対応するブロック内の最小値を減算する。この減算は、圧縮画素の領域に共通するＤＣオフセット分を、各画素のデータから差し引くことと等価である。
【０１２２】
ダイナミックレンジ算出部１６９は、１つのブロック内の最大値（ＭＡＸ）及び最小値（ｍｉｎ）の差分（ＭＡＸ−ｍｉｎ）を計算して、１つのブロックでのダイナミックレンジを算出する。ダイナミックレンジ算出部１６９は、算出したダイナミックレンジを、語長検出部１７１と、シフト量算出部１７３とに伝送する。
【０１２３】
語長選択部１７１は、量子化語長割当算出部１２７から伝送された量子化語長Ｑ１〜Ｑ１０を取得し、ダイナミックレンジ算出部１６９から伝送されたダイナミックレンジの大きさに従って、量子化語長Ｑ１〜Ｑ１０の中から、適切な量子化語長Ｑを選択する。量子化語長Ｑ１〜Ｑ１０は、ダイナミックレンジの桁数ＤＲ＝１〜１０にそれぞれ対応しているため、ダイナミックレンジ算出部１６９から伝送されたダイナミックレンジの大きさに従って、ブロック毎に適した量子化語長Ｑを選択することが可能である。語長選択部１７１は、選択した量子化語長Ｑを、シフト量算出部１７３と、パッキング部１７９とに伝送する。
【０１２４】
シフト量算出部１７３は、ダイナミックレンジ算出部１６９から伝送されたダイナミックレンジの大きさと、語長選択部１７１から伝送された量子化語長Ｑと、を用いて、シフト量を算出する。シフト量ＳＦＴ＝ダイナミックレンジの大きさＤＲ−量子化語長Ｑである。シフト量算出部１７３は、算出したシフト量ＳＦＴを、量子化器１７５と、パッキング部１７９と、に伝送する。
【０１２５】
量子化器１７５は、減算部１６７から伝送されたデータを、シフト量算出部１７３から伝送されたシフト量ＳＦＴに従って量子化する。本実施形態では、一例として、１〜６ビットに量子化する。
【０１２６】
この量子化器１７５として、例えば、右シフタを適用することが可能である。この場合、量子化器１７５は、減算部１６７から伝送されたデータを、シフト量算出部１７３から伝送されたシフト量ＳＦＴだけ右シフトする。量子化器１７５として右シフタを適用することで、回路規模を削減することができる。なお、圧縮処理側で右シフタを利用すると、伸張処理側の逆量子化においても同様に回路規模を削減できる。
【０１２７】
量子化データバッファ１７７は、量子化器１７５から伝送される１６画素分の量子化データを、一時的に保持する。
【０１２８】
パッキング部１７９は、最大／最小検出部１６３から伝送された最小値ｍｉｎ、シフト量算出部１７３から伝送されたシフト量ＳＦＴ、語長選択部１７１から伝送された量子化語長Ｑ、および量子化データバッファ１７７から伝送された１６画素分の量子化データを、パッキングする。
【０１２９】
パッキング部１７９は、これらのデータを、例えば図８に示したようなデータ形式にパッキングする。パッキングされたデータは、図８に示したように、先頭に量子化語長Ｑ、最小値ｍｉｎおよびシフト量ＳＦＴが格納された固定部が設けられ、固定部の後に１６画素分の量子化データが格納された可変長部が設けられる。
【０１３０】
なお、本実施形態における固定部では、圧縮対象となるブロックのダイナミックレンジの桁数ＤＲが解らずデコードが不可能となることを防ぐために、量子化語長Ｑだけでなく、最小値ｍｉｎおよびシフト量ＳＦＴが併せて格納されている。量子化語長Ｑおよびシフト量ＳＦＴを用いることで、ダイナミックレンジの桁数（大きさ）ＤＲ＝量子化語長Ｑ＋シフト量ＳＦＴとして算出することができる。
【０１３１】
上述のような量子化処理を実行することで、１６ピクセル×１４ビット／ピクセル＝２２４ビットのデータを、ダイナミックレンジの桁数ＤＲに応じて、かつ、１ラインの固定符号量を遵守しながら、３２〜１１２ビットに圧縮できたこととなる。これは、データ量を約１４％〜５０％に低減する圧縮率を実現できたことを意味している。
【０１３２】
再び図２に戻って、本実施形態に係るＲＡＷ圧縮部１０１の構成について詳細に説明する。
【０１３３】
パディング部１３１は、量子化実行部１２９から伝送されたブロック単位で可変長（２〜７ｗｏｒｄ、１ｗｏｒｄ＝１６ビット）となっている圧縮符号データに対して０または１を追加し、ライン単位で固定長とする処理部である。パディング部１３１は、量子化語長割当算出部１２７から伝送されたパディングの量に応じて、量子化実行部１２９から伝送された圧縮符号データのうしろに、データ「０」またはデータ「１」を詰める。これにより、ブロック単位では可変長となっており、圧縮効率が向上している圧縮符号データが、ライン単位では固定長となる。
【０１３４】
このパディング部１３１は、例えば、水平方向総画素数×目標符号量（ｂｉｔ／ｐｉｘ）×２バンク分のバッファから構成される。これにより、１バンク分のバッファがＳＤＲＡＭへの符号の書き込みに利用されている間に、他方のバッファがＳＤＲＡＭからの符号の読み出しに利用されることが可能となる。
【０１３５】
以上、図２〜図８を参照しながら、本実施形態に係るＲＡＷ圧縮部１０１の構成について、詳細に説明した。
【０１３６】
なお、上述の例では、圧縮処理における固定長の区間が１Ｈ（１水平同期期間）である場合について説明を行ったが、固定長の区間は、上記の例に限定されるわけではない。例えば、システムが取り扱いやすい長さ、または、効率が良くなる長さ等を基準にして、Ｈ／４や２Ｈ等の長さに柔軟に設定することが可能である。例えば、固定長の区間を２Ｈにすることで、１Ｈの場合には固定長にするため０詰めまたは１詰めにしていた部分も符号に使える可能性が高まり、圧縮効率を向上させることが可能となる。
【０１３７】
［ＲＡＷ伸張部の構成について］
続いて、図９〜図１３を参照しながら、本発明に係る伸張部の一例であるＲＡＷ伸張部１０３の構成について、詳細に説明する。
【０１３８】
なお、本実施形態に係る撮像装置では、上述のように水平方向の１６画素を１ブロックとして圧縮している。以下では、簡便のために、この水平方向の１６画素からなる１ブロックを、「ｂｌｏｃｋ」という単位で表すこととする。
【０１３９】
また、以下の説明では、本実施形態に係るＲＡＷ伸張部１０３が、例えば図１０に示したように、ある１フレームの画像５０の中から、任意の矩形領域５１を伸張する場合について、説明を行う。ここで、１フレームの画像５０は、図１０に示したように、ｗｉｄｔｈＭＡＸ［ｂｌｏｃｋ］×ｈｅｉｇｈｔＭＡＸ［ｌｉｎｅ］から構成されるものとする。また、伸張する矩形領域５１は、図１０に示したように、ｗｉｄｔｈ［ｂｌｏｃｋ］×ｈｅｉｇｈｔ［ｌｉｎｅ］の大きさを有し、原点から水平方向にｏｆｆｘ［ｂｌｏｃｋ］、垂直方向にｏｆｆｙ［ｌｉｎｅ］だけ離れているものとする。
【０１４０】
図９は、本実施形態に係るＲＡＷ伸張部の構成を説明するためのブロック図である。本実施形態に係るＲＡＷ伸張部１０３は、例えば図９に示したように、データ読み出し部２０１と、制御信号生成部２０３と、先頭アドレス設定部２０５と、１ブロック伸張部２０７と、アドレス保持部２０９と、を主に備える。
【０１４１】
データ読み出し部２０１は、ＳＤＲＡＭコントローラ３７に対して、ユーザにより指定された画像に対応する圧縮符号データの読み出し要求信号を伝送し、内部バス１９を通じて、ＳＤＲＡＭ３９から該当する圧縮符号データの特定のアドレスから始まるデータを読み出す。データ読み出し部２０１は、取得した圧縮符号データを、１ブロック伸張部２０７に伝送する。また、データ読み出し部２０１は、ＤＥＣ＿ＳＴＡＲＴ信号を１ブロック伸張部２０７に出力することで、１ブロック伸張部２０７に対して伸張処理の開始要求を行う。さらに、データ読み出し部２０１は、取得した圧縮符号データの先頭３ビット（より詳細には、固定部の先頭３ビット）分に位置するデータを参照し、記載されている量子化語長Ｑの値（換言すれば、可変長部のｗｏｒｄ数）を、アドレス保持部２０９に伝送する。
【０１４２】
制御信号生成部２０３は、カウンタを有しており、ＣＰＵ２７等から伝送された各種の設定値（例えば、ｗｉｄｔｈＭＡＸ、ｈｅｉｇｈｔＭＡＸ、ｏｆｆｘ、ｏｆｆｙ、ｗｉｄｔｈ、ｈｅｉｇｈｔ）に基づいて、伸張不要の領域で１となる制御信号ＳＫＩＰを生成する。制御信号生成部２０３は、生成した制御信号であるＳＫＩＰ信号を、アドレス保持部２０９が備えるセレクタ２１１に伝送する。なお、上記伸張不要の領域は、例えば図１０に示した１フレームの画像５０のうち、伸張が要求されている矩形領域５１に該当しない部分を意味する。
【０１４３】
また、制御信号生成部２０３は、データの伸張を行う領域では、１ブロック伸張部２０７から伝送される終了信号ＢＬＯＣＫ＿ＤＥＣ＿ＥＮＤを待って、次の水平方向のカウントアップを行う。さらに、制御信号生成部２０３は、１ラインのスキップまたは伸張処理が終了したら、制御信号であるＡＤＲ＿ＩＮＩＴ信号を「１」にして、次のライン先頭のアドレスに、ターゲットアドレスを現すパラメータ「Ｔａｇａｄｒ」を初期化する。制御信号生成部２０３は、生成したＡＤＲ＿ＩＮＩＴ信号を、先頭アドレス設定部２０５およびアドレス保持部２０９が備えるセレクタ２１５に伝送する。本実施形態においては、１ラインの符号量が固定長となっているため、パラメータ「Ｔａｇａｄｒ」の値を一意に設定することができる。
【０１４４】
先頭アドレス設定部２０５は、ＣＰＵ２７等から伝送された各種の設定値（例えば、ｗｉｄｔｈＭＡＸ、ｈｅｉｇｈｔＭＡＸ、ｏｆｆｘ、ｏｆｆｙ、ｗｉｄｔｈ、ｈｅｉｇｈｔ）に基づいて、ターゲットとなるライン先頭のアドレスの設定値ＴＡＧ＿ＩＮＩＴ＿ＶＡＬを生成する。先頭アドレス設定部２０５は、生成したアドレスの設定値ＴＡＧ＿ＩＮＩＴ＿ＶＡＬを、アドレス保持部２０９が備えるセレクタ２１５に伝送する。
【０１４５】
先頭アドレス設定部２０５は、１ラインごとの伸張処理（デコード）が終了する毎に、
圧縮符号データの次のラインの先頭アドレスを以下のように計算する。すなわち、伸張する矩形領域５１は、原点からｏｆｆｙ［ｌｉｎｅ］、ｏｆｆｘ［ｂｌｏｃｋ］離れているため、先頭アドレス設定部２０５は、ライン単位では、「ｏｆｆｙ×（圧縮レート×ｗｉｄｔｈＭＡＸ）」を初期値とする。これにより、垂直方向（図１０におけるｈｅｉｇｈｔＭＡＸに沿った方向）のｏｆｆｙラインの読み飛ばしが可能となる。また、次のラインの先頭アドレスは、初期値に対して、「（圧縮レート×ｗｉｄｔｈＭＡＸ）」を順次加算していけばよい。
【０１４６】
１ブロック伸張部２０７は、データ読み出し部２０１から伝送された圧縮符号データを、１ブロックごとに伸張する。１ブロック伸張部２０７による伸張処理は、データ読み出し部２０１から出力されたＤＥＣ＿ＳＴＡＲＴ信号を受信した際に開始される。以下では、図１１を参照しながら、本実施形態に係る１ブロック伸張部２０７の構成について、詳細に説明する。図１１は、本実施形態に係る１ブロック伸張部２０７の構成を説明するためのブロック図である。
【０１４７】
本実施形態に係る１ブロック伸張部２０７は、例えば図１１に示したように、圧縮符号データラッチ部２２１と、カウンタ２２３と、シフトレジスタ２２５と、逆量子化器２２７と、加算器２２９と、逆折れ線伸張部２３１と、を主に備える。
【０１４８】
圧縮符号データラッチ部２２１は、ＤＥＣ＿ＳＴＡＲＴ信号を受信すると、データ読み出し部２０１から伝送された圧縮符号データをラッチし、圧縮符号データの固定部（ｗｏｒｄ０）から、量子化語長Ｑ、シフト量ＳＦＴおよび最小値ｍｉｎに該当する値を取得する。また、圧縮符号データラッチ部２２１は、量子化語長Ｑをｗｏｒｄ数として、ｗｏｒｄ１からｗｏｒｄ６を、可変長の量子化データ（符号データ）として保持する。
【０１４９】
圧縮符号データラッチ部２２１は、保持している量子化データである符号データと、量子化語長Ｑを、シフトレジスタ２２５に伝送する。また、圧縮符号データラッチ部２２１は、保持しているシフト量ＳＦＴを、逆量子化器２２７に伝送する。さらに、圧縮符号データラッチ部２２１は、保持している最小値ｍｉｎを、加算器２２９に伝送する。
【０１５０】
カウンタ２２３は、ＤＥＣ＿ＳＴＡＲＴ信号を受信して伸張処理が開始されると、伸張処理を施した画素数をカウントし、１ブロック分の画素（すなわち、１６画素）の伸張処理が終了した時点で、ＢＬＯＣＫ＿ＤＥＣ＿ＥＮＤ信号を出力する。カウンタ２２３が出力するＢＬＯＣＫ＿ＤＥＣ＿ＥＮＤ信号は、制御信号生成部２０３に伝送される。
【０１５１】
シフトレジスタ２２５は、圧縮符号データラッチ部２２１に保持されたデータのうち、量子化語長Ｑに関するデータを受け取る。続いて、シフトレジスタ２２５は、受信した量子化語長Ｑに基づいて、圧縮符号データの中から語長Ｑずつ量子化データをシフト動作によって抽出し、逆量子化器２２７に伝送する。
【０１５２】
逆量子化器２２７は、シフトレジスタ２２５から伝送される画素毎の量子化データを、圧縮符号データラッチ部２２１から伝送されるシフト量ＳＦＴに応じて、逆量子化する。本実施形態では、逆量子化器２２７は、１〜６ビットの符号を逆量子化して、１０ビットのデータを出力する。
【０１５３】
この逆量子化器２２７として、例えば、左シフタを適用することが可能である。この場合、逆量子化器２２７は、シフトレジスタ２２５から伝送されたデータを、圧縮符号データラッチ部２２１から伝送されたシフト量ＳＦＴだけ左シフトする。逆量子化器２２７として左シフタを適用することで、回路規模を削減することができる。
【０１５４】
加算部２２９は、逆量子化器２２７が出力した符号データに、ブロック毎の共通ＤＣオフセット値となる最小値を加算する。この最小値は、圧縮符号データラッチ部２２１から伝送されたものである。加算部２２９は、最小値を加算したデータを逆折れ線伸張部２３１に伝送する。
【０１５５】
逆折れ線伸張部２３１は、加算部２２９から伝送されたデータを、ＲＡＷ圧縮部１０１の折れ線圧縮部１２１と逆の特性により、１０ビットから１４ビットのデータへと伸張する。
【０１５６】
ここで、図１２は、逆折れ線伸張部２３１で用いられる折れ線の例を示す図である。この図１２の折れ線は、図３で示した折れ線圧縮部１２１における折れ線と、逆の特性により階調を変換するようになっている。なお、入力データと伸張後の出力データとを対応付けて記憶したＲＯＭテーブルを用意し、このＲＯＭテーブルに従って入出力データの変換が行われてもよい。なお、圧縮時に、折れ線圧縮部１２１による圧縮が適用されなかった場合には、伸張時には、この逆折れ線伸張部２３１でのデータ変換もバイパスされる。
【０１５７】
再び図９に戻って、本実施形態に係るＲＡＷ伸張部１０３の構成について詳細に説明する。
【０１５８】
アドレス保持部２０９は、圧縮符号データの中から指定された矩形領域５１を読み出す際のアドレスを算出するとともに、算出したアドレスを保持する。アドレス保持部２０９は、例えば図９に示したように、セレクタ２１１、２１５と、加算器２１３と、アクセス用アドレス保持部２１７と、を有する。
【０１５９】
セレクタ２１１は、データ読み出し部２０１から伝送された固定部の先頭３ビットに相当するデータと、当該セレクタ２１１に直接入力されている「１」を表すデータと、の何れか一方を選択して、加算器２１３に出力する。セレクタ２１１によるデータの選択は、制御信号生成部２０３から伝送される制御信号であるＳＫＩＰ信号に従って行われる。
【０１６０】
加算器２１３は、アクセス用アドレス保持部２１７が保持しているアドレスに対して、セレクタ２１１から伝送された値を加算する。加算器２１３は、加算の結果得られた値を、セレクタ２１５に伝送する。
【０１６１】
セレクタ２１５は、加算器２１３から伝送されるデータと、先頭アドレス設定部２０５から伝送される設定値ＴＡＧ＿ＩＮＩＴ＿ＶＡＬと、の何れか一方を選択して、アクセス用アドレス保持部２１７に出力する。セレクタ２１５によるデータの選択は、制御信号生成部２０３から伝送される制御信号であるＡＤＲ＿ＩＮＩＴ信号に従って行われる。
【０１６２】
アクセス用アドレス保持部２１７は、ＳＤＲＡＭ３９から読み出す圧縮符号データのアドレスを保持する。データ読み出し部２０１は、このアクセス用アドレス保持部２１７に保持されているアドレスに基づいて、ＳＤＲＡＭ３９から圧縮符号データの読み出しを行う。
【０１６３】
続いて、アクセス用のアドレスが設定される流れについて、以下で詳細に説明する。
【０１６４】
まず、先頭アドレス設定部２０５から伝送される設定値ＴＡＧ＿ＩＮＩＴ＿ＶＡＬを用いて、アクセス用アドレス保持部２１７の初期化が行われ、データ読み出し部２０１は、垂直方向へｏｆｆｙ［ｌｉｎｅ］だけ読み飛ばしを行う。ここで、初期化の結果入力される値は、「ＴＡＧ＿ＩＮＩＴ＿ＶＡＬ＝ｏｆｆｙ×ｗｉｄｔｈＭａｘ×圧縮レート［ｂｉｔ／ｐｉｘ］」となる。
【０１６５】
続いて、アドレス保持部２０９において、ｏｆｆｘブロック分アドレスをスキップする処理が行われる。データ読み出し部２０１は、アクセス用アドレス保持部２１７に保持されているアドレスを用いてＳＤＲＡＭ３９のデータを読み出すと、ライン先頭のブロックのｗｏｒｄ０にアクセスできる。ここで、データ読み出し部２０１は、圧縮符号データのフォーマットに従い３ビットの量子化語長Ｑを取り出し、セレクタ２１１に伝送する。セレクタ２１１は、量子化語長Ｑの値を加算器２１３に伝送する。加算器２１３は、アクセス用アドレス保持部２１７が現在保持しているアドレスに対して、量子化語長Ｑを加算し、セレクタ２１５に伝送する。セレクタ２１５は、伝送された値を、新たなアドレスとして、アクセス用アドレス保持部２１７に伝送する。これにより、データ読み出し部２０１は、図１０に示したように、次のブロックのアドレスのｗｏｒｄ０へスキップすることができる。
【０１６６】
上述の処理は、図９からも明らかなように、１側に倒したセレクタ２１１（ＳＥＬ０）と、加算器２１３との動作となる。かかる処理をｏｆｆｘ回分繰り返すことで、可変長で記録されている符号データの中から、そのラインの中で必要とする矩形領域５１の先頭へと、伸張処理を実行することなくアクセスすることができる。
【０１６７】
次に、ＲＡＷ伸張部１０３では、伸張処理を伴う可変長符号部の読み出しを行う。この処理に先立ち、アクセス用アドレス保持部２１７に保持されているアドレスは、必要とする矩形領域５１の先頭に対応するアドレスとなっているため、制御信号生成部２０３から伝送される制御信号であるＳＫＩＰ信号は、０となる。データ読み出し部２０１は、まず、アクセス用アドレス保持部２１７に保持されている矩形領域５１の先頭に対応するブロックのＷｏｒｄ０を読み出す。続いて、データ読み出し部２０１は、３ビットの量子化語長Ｑの示す数値と同じだけ、圧縮符号データをＳＤＲＡＭ３９から読み出す。
【０１６８】
上述の処理は、図９からも明らかなように、０側に倒したセレクタ２１１（ＳＥＬ０）と、加算器２１３との動作となる。データ読み出し部２０１は、これらの（１＋Ｑ）ｗｏｒｄのデータを１ブロック伸張部２０７へ伝送する。１ブロック伸張部２０７は、伝送された圧縮符号データを、１６画素のＲＡＷ信号に伸張する。この間、１ブロック伸張部２０７に設けられたカウンタ２２３は、１ブロックの伸張終了を表す「ＢＬＯＣＫ＿ＤＥＣ＿ＥＮＤ＝１」となるのを待ち受ける。
【０１６９】
かかる処理をｗｉｄｔｈ回分繰り返すことで、所望の矩形領域５１の１ラインの伸張処理を実行することができる。
【０１７０】
続いて、制御信号生成部２０３は、次のラインのスキップ／伸張処理を行う前処理として、制御信号であるＡＤＲ＿ＩＮＩＴ信号を出力する。これにより、セレクタ２１５（ＳＥＬ１）は切り替わり、先頭アドレス設定部２０５から伝送される設定値ＴＡＧ＿ＩＮＩＴ＿ＶＡＬを、アクセス用アドレス保持部２１７へと出力する。ここで「ＴＡＧ＿ＩＮＩＴ＿ＶＡＬ＝ＴＡＧ＿ＩＮＩＴ＿ＶＡＬ＋１ライン分の読み飛ばし」とする。この様な処理を、ＲＡＷ信号伸張部１０３は、ｈｅｉｇｈｔ回分繰り返す。
【０１７１】
本実施形態に係るＲＡＷ伸張部１０３は、このような処理を行うことで、任意の矩形領域５１を無駄な伸張処理をせずに高速に伸張することが可能となる。水平方向のブロック数分の伸張処理が終了して、更に下側に位置するブロックへアクセスを行うためには、各ラインの先頭のブロックの符号を示すようにアドレスを更新しなければならない。ここで、本実施形態に係る撮像装置では、圧縮符号データがライン単位で固定長となっているため、上記アドレスを一意に定めることができる。
【０１７２】
なお、上述の例では、任意の矩形領域５１を、１ラインごとに読み出して伸張する場合について説明を行ったが、例えば図１３に示すように、任意の矩形領域５１の内部を複数のタイル５３に区分して、タイル状に伸張処理を行うことも可能である。ここで、タイル５３は、伸張の対象となるブロック×所定のライン数からなる大きさを有する。
【０１７３】
図１３に示したような矩形領域５１をタイル状に伸張する場合、伸張開始位置までの読み飛ばし処理は、１ラインごとに伸張処理を行う上述の場合と同様に行うことが可能である。この際に、アクセス用アドレス保持部２１７は、タイル５３ひとつ分に含まれるライン数分だけＳＤＲＡＭ等のデータ保持手段を有しており、各ラインにおける伸張中の可変長符号のアドレスを保持しておく必要がある。
【０１７４】
このような処理を行うことで、右横に位置するタイル５３を順に伸張することが可能となる。なお、通常処理の単位となるタイルの大きさは小さいため、ライン数分だけアクセス用アドレス保持部２１７を保持したとしても、その規模は小さくてすむ。
【０１７５】
以上、本実施形態に係る撮像装置１０の機能の一例を示した。上記の各構成要素は、汎用的な部材や回路を用いて構成されていてもよいし、各構成要素の機能に特化したハードウェアにより構成されていてもよい。また、各構成要素の機能を、ＣＰＵ等が全て行ってもよい。従って、本実施形態を実施する時々の技術レベルに応じて、適宜、利用する構成を変更することが可能である。
【０１７６】
＜まとめ＞
［圧縮処理に関するまとめ］
以上説明したように、本実施形態に係るＲＡＷ圧縮部１０１は、ブロック単位の可変長量子化を行い、１４ｂｉｔ／ｐｉｘのデータを６ｂｉｔ／ｐｉｘに圧縮する。これにより、
ＲＡＷキャプチャ時のＢＵＳ帯域の削減、メモリエリアの削減（ひいては、連写枚数の向上）を実現することが可能となる。また、パディング部１３１によってデータ「０」またはデータ「１」のパディング処理を行うため、圧縮符号データは、ライン単位では固定長となる。その結果、圧縮符号データは、フレーム単位でも固定長となる。
【０１７７】
また、本実施形態に係るＲＡＷ圧縮部１０１は、予測符号化、可変長符号を使用しない。そのため、簡便な演算で伸張処理を行うことが可能である。また、ライン間の相関を利用しないため、ＣＭＯＳだけでなくフィールド読み出しが必要なＣＣＤにも対応可能である。
【０１７８】
また、従来の可変長圧縮を用いた圧縮方法の場合、最終的に符号量が元の画像サイズを超過してしまうという可能性があるため、符号量超過という事態を検知、処理する仕組みが必要であった。このような仕組みは、具体的には、ＣＰＵへの割り込み信号生成回路や、圧縮データを破棄してユーザへ撮影失敗等の表示を行う処理を実行する割り込み処理プログラムとして、従来では実現されていた。しかしながら、本実施形態に係る圧縮方法では、最終的に符号量が目標符号量を超過してしまうことがないため、このような仕組みは不要となり、制御が簡便となる。
【０１７９】
また、本実施形態に係る圧縮方法では、撮影時のＲＡＷデータを取り込むためのリアルタイム性を確保しつつ、量子化語長の割り当てを決定する際に、１ラインの符号量を見積もり値ではなく確定値で得ることができる。そのため、可変長という要素を量子化にとりいれているものの、必ず生成された符号は固定長にすることができる。また、本実施形態に係る圧縮方法は、可変長方式で圧縮しながら符号量を監視して設定を超過した場合それ以降を固定長方式に変更して圧縮するやり方とは異なり、ライン単位で符号量を超過した場合に固定長とするため、画面全体へのダメージは小さくなる。
【０１８０】
［伸張処理に関するまとめ］
以上説明したように、本実施形態に係るＲＡＷ圧縮部１０１は、フレーム単位で固定長となっているため、伸張処理時では、連写で連続してメモリ上にキャプチャしておいた任意のフレームへのランダムアクセスが可能となる。また、本実施形態においては、１ブロックの圧縮符号データ内の量子化語長＋１（あるいは固定値）が、圧縮符号データのワード数になる様な符号フォーマットを採用しているため、符号長を表すデータを圧縮符号内に特に必要としない。これにより、圧縮効率の向上を図ることが可能である。
【０１８１】
本実施形態に係るＲＡＷ伸張部１０３は、伸張処理時に、固定長１ライン分のストリームをメモリに読み込み、先頭から１ｗｏｒｄ目を順にサーチして量子化語長のみを取得してアドレスへ加算してゆく。これにより、本実施形態に係る撮像装置では、伸張処理をすることなく、目的のブロックの１ｗｏｒｄ目へアクセスすることができる。
【０１８２】
これは、１フレーム全体を伸張しなくとも、１フレーム内の希望のブロックへのアクセスが可能となることを意味しており、１フレーム内の任意矩形領域を取り出す事が必要なＥズーム、トリミング等の処理で、処理時間、メモリの削減を図ることが可能となる。
【０１８３】
また、従来、圧縮効率向上のために可変長符号を用いる場合には、１フレーム先頭から伸張処理をしなくてはならない。これは、数ブロック、数ライン毎に符号の切れ目を入れると、そこで符号打ち切りの印となる符号を挿入したり、次の符号化単位までの長さ等を記録したりする必要が生じるため、圧縮効率向上という側面から導入しにくいからである。これは、所望のブロックへのアクセスを考えた場合、１フレーム分のバッファを用意しておき、このバッファへ一度データを伸張してから、所望の矩形領域へアクセスしなくてはならない事を意味する。このような処理は、メモリエリアの拡大、処理時間の増加につながる。
【０１８４】
しかしながら、本実施形態に係る圧縮・伸張方法では、ブロック単位では可変長となっているものの、ライン単位では固定長となっているため、メモリ上にキャプチャしておいた任意のフレームへのランダムアクセスが可能となる。これにより、メモリエリアの拡大や処理時間の増加を抑制することが可能となる。
【０１８５】
以上、添付図面を参照しながら本発明の好適な実施形態について説明したが、本発明はかかる例に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
【図面の簡単な説明】
【０１８６】
【図１】本発明の第１の実施形態に係る情報処理装置の一例である撮像装置の構成を説明するためのブロック図である。
【図２】同実施形態に係る圧縮部の構成を説明するためのブロック図である。
【図３】ベイヤ配列と抽出された同色１ラインとを説明するための説明図である。
【図４】同実施形態に係る折れ線圧縮部で用いられる折れ線の例を説明するためのグラフ図である。
【図５】同実施形態に係る頻度計測部の構成を説明するためのブロック図である。
【図６】同実施形態に係る量子化語長割当算出部が参照する量子化語長テーブルの一例を示した説明図である。
【図７】同実施形態に係る量子化実行部の構成を説明するためのブロック図である。
【図８】同実施形態に係る圧縮画像データのデータ構成を説明するための説明図である。
【図９】同実施形態に係る伸張部の構成を説明するためのブロック図である。
【図１０】圧縮画像データにおけるデータ読み出し位置を特定するために用いられるパラメータを説明するための説明図である。
【図１１】同実施形態に係る１ブロック伸張部の構成を説明するためのブロック図である。
【図１２】同実施形態に係る逆折れ線変換部における変換特性の一例を説明するためのグラフ図である。
【図１３】圧縮画像データにおけるデータ読み出し方法の一例を説明するための説明図である。
【図１４】従来の撮像装置の構成を説明するためのブロック図である。
【符号の説明】
【０１８７】
１０    撮像装置
１１    撮像素子
１３    ＡＦＥ回路部
１５    デジタル画像処理回路部
１７    カメラ信号前処理部
１９    内部バス
２１    カメラ信号処理部
２３    解像度変換部
２５    ＪＰＥＧエンジン
２７    ＣＰＵ
２９    ＲＯＭ
３１    ストレージデバイス
３３    ビデオ出力エンコーダ
３５    ビデオ出力端子
３７    ＳＤＲＡＭコントローラ
３９    ＳＤＲＡＭ
５０    １フレームの画像
５１    矩形領域
５３    ブロック
１０１    ＲＡＷ圧縮部
１０３    ＲＡＷ伸張部
【図１】
2010074597.tif 000003
【図２】
2010074597.tif 000004
【図３】
2010074597.tif 000005
【図４】
2010074597.tif 000006
【図５】
2010074597.tif 000007
【図６】
2010074597.tif 000008
【図７】
2010074597.tif 000009
【図８】
2010074597.tif 000010
【図９】
2010074597.tif 000011
【図１０】
2010074597.tif 000012
【図１１】
2010074597.tif 000013
【図１２】
2010074597.tif 000014
【図１３】
2010074597.tif 000015
【図１４】
2010074597.tif 000016