(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0014】
以下、図面を参照して本発明の実施の形態について説明する。
図1は、本発明の一実施形態である撮像装置1の構成例を示したブロック図である。
図1(a)が撮像装置1の全体構成を示し、
図1(b)が
図1(a)に示した一部の構成の変形例を示している。
図1(a)に示した構成例では、撮像装置1が、光学系11、撮像素子12、A/D(アナログ・デジタル)変換部13、画像処理装置14、システムバス15、CPU(中央処理装置)16、フレームメモリ17、記録媒体インターフェース(I/F)18及び記録媒体19を備えている。撮像装置1は、監視カメラ、カメラ機能を有する携帯電話、デジタルスチルカメラ、デジタルビデオカメラなど、映像を撮影する機器及び記録する機器あるいはその一部を構成する。
【0015】
光学系11は、1又は複数のレンズを有して構成され、撮像素子12へ入射する光信号を集光したり、屈折させたりする。撮像素子12は、光学系11を介して入射した光信号を各画素を構成する複数のフォトダイオード等の受光素子を用いて電気信号に変換する半導体センサーであり、有効画素領域121とオプティカルブラック領域122とを有している。
【0016】
有効画素領域121は、光学系11を介して入射した光信号が当たる複数の画素を有している。つまり、有効画素領域121内の複数の画素によって光信号が電気信号に変換される。また、有効画素領域121の各画素は、フォトダイオード等の受光素子と、RGB(赤・緑・青)3色の中のいずれかの色の色フィルタと、集光用のマイクロレンズとを用いて構成されている。ここで各色の色フィルタは、ベイヤー配列と呼ばれる配列で並べられている。ベイヤー配列は、Gフィルタを市松模様に並べ、Gフィルタの間を埋めるようにRフィルタとBフィルタとをそれぞれ直線状に並べた配列である。したがって、Gの画素はすべてのラインに配置され、RとBの画素は1ラインおきに配置されている。
【0017】
オプティカルブラック領域122は、光信号が当たらない複数の画素から構成されている。この画素は、光学的な画素値ゼロ(すなわち黒)の基準を決定する際に用いられる画素であり、オプティカルブラック画素、無効画素等と呼ばれている。オプティカルブラック画素は暗電流によって生じた電荷に応じた(すなわちオフセット分の)電気信号を出力する。オプティカルブラック領域122は、例えば有効画素領域121の周囲を囲むように配置されている。図示するオプティカルブラック領域122の配置は例であり、撮像素子によりその配置領域は異なる。
【0018】
A/D変換部13は、撮像素子12が出力したアナログの画像信号をデジタルの画像信号に変換する。ただし、撮像素子12とA/D変換部13とは
図1に示したように別構成であってもよいし、これと異なり一体的に構成されたものであってもよい。A/D変換部13は、各画素から出力されたアナログの画像信号を、画素毎に所定ビットのデジタルの画素信号(すなわち画素値)に変換し、フレームメモリ17に書き込む。このA/D変換部13が出力した各画素の画素値が上述したRaw画像を構成する。
【0019】
画像処理装置14は、デジタルシグナルプロセッサ等から構成され、例えば図示していない内部の不揮発性記憶装置に記憶されているプログラムを実行することで所定の信号処理を行う。
図1(a)に示した例では、画像処理装置14は、データ圧縮部141と、画像信号処理部142と、データ圧縮伸張部143とを有している。
【0020】
データ圧縮部141は、A/D変換部13が書き込んだRaw画像をフレームメモリ17から読み出し、データ圧縮処理を行い、圧縮した画像データをフレームメモリ17に書き込む。このデータ圧縮部141が本発明の画像データ圧縮回路の一構成例である。一般的に「自然画像の隣接する画素値は似ている」という性質があり、“画素の相関性”と呼ばれる。Raw画像圧縮技術にはこの“画素の相関性”を利用することができる。画素の相関性によれば、同色の隣接画素同士の差分値の出現頻度は、差分値ゼロが最も出現頻度が高くなり、差分値が大きくなるほど出現頻度が低くなる。隣接画素同士の差分値の出現頻度は、一般的に差分値ゼロを中心にしたガウス分布に従う。データ圧縮部141は、同色の隣接画素同士の差分値を、差分値の出現頻度に応じて可変長符号に変換する符号化処理によって圧縮する。つまり、差分値がゼロにより近い値に対して符号長がより短い符号語を割り当てる変換処理を行うことで差分値を表すデータを圧縮する。その際、本実施形態のデータ圧縮部141は、同色の隣接画素同士の差分値を算出するときに、オプティカルブラック画素の画素値を参照した処理を行うことを特徴としている。この特徴の詳細については後述する。なお、圧縮した画像データは、データ圧縮部141から直接あるいはフレームメモリ17を介して記録媒体19へ書き込むことができる。
【0021】
画像信号処理部142は、データ圧縮伸張部143を介してフレームメモリ17あるいは記録媒体19から読み出した画像データに対して所定の画像処理を行い、処理を行った画像データをデータ圧縮伸張部143を介してフレームメモリ17あるいは記録媒体19へ書き込む。画像信号処理部142による画像処理は、特に限定されないが、例えばOB(オプティカル)補正、シェーディング補正、欠陥画素補正、RGB補間処理、階調変換処理、エッジ強調処理などがある。
【0022】
データ圧縮伸張部143は、フレームメモリ17あるいは記録媒体19から読み出した圧縮された画像データを伸張したり、フレームメモリ17あるいは記録媒体19へ書き込む画像データに対して圧縮処理を行ったりする。データ圧縮伸張部143による圧縮又は伸張処理は、可逆の圧縮方式と非可逆の圧縮方式を含む複数の圧縮方式に対応可能とすることができる。データ圧縮伸張部143は、例えば、データ圧縮部141によって圧縮されたRaw画像を表す画像データを伸張して、Raw画像を表す非圧縮の画像データを生成する処理等を行うことができる。
【0023】
システムバス15は、A/D変換部13、データ圧縮部141、データ圧縮伸張部143、CPU16、フレームメモリ17、記録媒体インターフェース18等の各部を相互に接続し、画像データ等のデータを転送する。CPU16は、例えば所定の不揮発性記憶装置に記憶されているプログラムを実行することで、光学系11、撮像素子12、A/D変換部13、画像処理装置14、フレームメモリ17等の各部を制御する。
【0024】
フレームメモリ17は、例えばDRAM(ダイナミックランダムアクセスメモリ)、SRAM(スタティックランダムアクセスメモリ)等からなり、1又は複数フレーム分の画像データ等を記憶する。記録媒体インターフェース18は、着脱自在に接続されている記録媒体19に対してデータを書き込んだり、記録媒体19からデータを読み出したりする際にデータの入出力制御を行う。記録媒体19は、着脱自在に構成された不揮発性の記憶媒体である。
【0025】
なお、
図1(a)に示した撮像装置1では、A/D変換部13とデータ圧縮部141とシステムバス15との接続関係を、
図1(b)に示すように変更することができる。ここで
図1(b)では、
図1(a)のA/D変換部13とデータ圧縮部141とに対応する構成を、A/D変換部13aとデータ圧縮部141aとして示している。
図1(b)に示した構成例では、A/D変換部13aの出力をデータ圧縮部141aへ入力し、データ圧縮処理を行った後、フレームメモリ17等へ書き込むことができる。
【0026】
なお、
図1に示した構成は撮像装置1が備える主な構成要素を示したものであり、撮像装置1は、例えば、他に電源回路、表示部、操作部、通信装置、バッテリ等の構成要素の一部又は全部を備えることができる。
【0027】
次に、
図2から
図5を参照して、
図1を参照して説明したデータ圧縮部141又は141a(以下、データ圧縮部141で代表する)の構成例について説明する。
図2に示したデータ圧縮部141は、差分算出部21と、エントロピー符号化部22とを備えている。
【0028】
差分算出部21は、A/D変換部13が出力したRaw画像を構成する圧縮前の画像データの各画素値から、有効画素領域121内で隣接する2画素の画素値Pa及びPbを入力するとともに、オプティカルブラック領域122内の複数のオプティカルブラック画素の画素値OBを入力する。ここで、画素値Pa及びPbは、同一フレーム内の同一色の画素のうちで隣接した2つの画素の画素値である。また、オプティカルブラック画素の画素値OBは、例えば、同一フレーム内の複数のオプティカルブラック画素の各画素値のうち最小の画素値とすることができる。この画素値OBは、Raw画像データを圧縮した画像データを含む画像データファイルの例えばヘッダー領域に格納され、復号処理の際に参照可能とされる。
【0029】
次に、
図3及び
図4を参照して、差分算出部21の動作について説明する。なお、以下では画素値Pa及び画素値Pbが8ビットであるとして説明を行う。ただし、画素値Pa及び画素値Pbのビット数は8ビットに限定されず、7ビット以下でも9ビット以上であってもよい。
【0030】
STEP1:差分算出部21は、隣接画素の画素値(Pa,Pb)及びオプティカルブラック画素の画素値OB(以下では特に断らない場合、複数の画素値OBの最小値を画素値OBとして説明を行う)を入力する。
【0031】
STEP2:差分算出部21は、減算処理Pb−Paを行う。
【0032】
STEP3:差分算出部21による差分算出処理の仕方は3通りあり、STEP2での減算処理結果に応じてどの処理の仕方を選択するのかを判定する。差分算出部21は、STEP2の減算処理でPb−Pa<−128となった場合は、処理の仕方を“Case[1]”とする。また、差分算出部21は、STEP2の減算処理でPb−Pa>127となった場合は、処理の仕方を“Case[2]”とする。また、差分算出部21は、その他の場合は、処理の仕方を“Case[3]”とする。
【0033】
STEP4:差分算出部21は、STEP3で判定した処理の仕方にて差分値に応じた値Sabunを算出する。ここで、差分値に応じた値Sabunは、差分値(Pa−Pb)に対応する値であり、差分値(Pa−Pb)と等しい値、又は所定の演算処理を行うことで差分値(Pa−Pb)を算出することができる値である。差分算出部21は、“Case[1]”の場合、差分値に応じた値Sabunを、Sabun=(255−Pa)+(Pb−OB)の演算処理で算出する。差分算出部21は、“Case[2]”の場合、差分値に応じた値Sabunを、Sabun=−(255−Pb)−(Pa−OB)の演算処理で算出する。また、差分算出部21は、“Case[3]”の場合、差分値に応じた値Sabunを、Sabun=Pb−Paの演算処理で算出する。そして、差分算出部21は、求めた差分値に応じた値Sabunと、どの差分算出処理で差分値に応じた値Sabunを算出したのかということ示す情報であるCase値とを、エントロピー符号化部22へ出力する。
【0034】
なお、上述したように、差分値に応じた値Sabunは、“Case[3]”以外の処理の仕方で求めた場合、隣接2画素の画素値Pbと画素値Paとの差分値(Pb−Pa)そのものを表す値ではなく、所定の演算処理を加えることで差分値(Pb−Pa)を表すことができる値である。例えば差分値に応じた値Sabunが“Case[1]”の処理の仕方で算出された場合、差分値(Pb−Pa)は、Sabun+OB−255の演算処理を行うことで算出することができる。また、差分値に応じた値Sabunが“Case[2]”の処理の仕方で算出された場合、差分値(Pb−Pa)は、Sabun−OB+255の演算処理で算出することができる。
【0035】
また、入力画素値Pa及びPbが符号無し8ビット整数で表されているとすると画素値は0から255までの値をとることができる。この2画素値Pa及びPbの差分値(Pb−Pa)は、最小値がPa=0及びPb=255の場合の−255で、最大値がPa=255及びPb=0の場合の+255となる。一方、符号付き8ビット整数の値の範囲は−128〜+127である。したがって、2画素値Pa及びPbの差分値(Pb−Pa)を単純に減算式「Pb−Pa」で求めると、減算式の演算結果(すなわち差分値)は8ビットの数値では表せないことになる。ビット数の増加は、データ量の増大につながる。また、ビット数の増加は処理時間の増大につながる場合もある。そこで、本実施形態では、差分値の範囲が入力画素値のビット数以内となるように、差分値の大きさに応じて差分値の算出の仕方を3種類に分けているのである。なお、STEP3における差分値の大きさに応じた場合分けは、例えばSTEP2の減算処理で桁上がりが発生したか否かあるいはオーバーフローが発生したか否かを確認することで行うことができる。よって、STEP2での演算「Pb−Pa」は8ビットの減算処理で行うことができる。
【0036】
ところで“Case[1]”の条件(Pb−Pa<−128)では、減算Pb−Paの結果は、上記の最小値−255から、−128より1小さい−129までの値である。この減算処理の結果に、例えば定数「255」を加えると、「255」を加算した後の値は0から126までの値となる。この範囲は、符号付き8ビット整数の値の範囲内である。すなわち、例えば定数「255」を加える処理を追加することで、(Pb−Pa<−128)の場合の差分値に応じた値を、符号付き8ビット整数で表すことができる。
【0037】
他方、“Case[2]”の条件(Pb−Pa>127)では、減算Pb−Paの結果は、上記の最大値+255から、+127より1大きい+128までの値である。この減算処理の結果から例えば定数「−255」を減じると、「−255」を減算した後の値は0から−127まで値となる。この範囲は、符号付き8ビット整数の値の範囲内である。すなわち、例えば定数「255」を減じる処理を追加することで、(Pb−Pa>127)の場合の差分値に応じた値を、符号付き8ビット整数で表すことができる。
【0038】
また、本実施形態では、差分算出部21が、オプティカルブラック画素の画素値OBを参照して、画素値Pa及びPbのビット数内で2画素値の差分値に応じた値Sabunを算出して出力する。この差分算出部21がオプティカルブラック画素の画素値OBを参照する処理は、差分値に応じた値Sabunを算出する際に差分の算出結果が画素値Pa及びPbのビット数をオーバーフローしないように加算又は減算する所定の定数値(8ビットの場合は上記の「255」)からオプティカルブラック画素の画素値OBを減じる処理に相当するものである。以下、この点について説明する。
【0039】
上述したように、撮像素子12には、実際に光を受け光電効果により電荷を得る有効画素と、暗電流を含む電荷のオフセット検出を行うオプティカルブラック画素(遮光状態の画素)の2種類がある。撮像素子12が熱を帯びると、遮光状態でも電荷を発生する性質があり、暗電流ノイズと呼ばれる。有効画素値は、“受光による本来の電荷量”と“暗電流を含む電荷量”の合計値となる。オプティカルブラック画素は、通常、有効画素周辺に配置されており、遮光されているため、受光による電荷の発生はない。つまり、オプティカルブラック画素から暗電流ノイズのオフセット情報のみを検出できる。有効画素の画素値のうち、0からオプティカルブラック画素の画素値までの範囲には、有効な画素値は存在しない。したがって、画素値Pa及びPbから、オプティカルブラック画素の画素値OB分をマスク(つまり無視)したとしても、画素値のダイナミックレンジ(つまり画素値の最大値からノイズの値を減じた範囲の大きさ)は悪化しない。
【0040】
なお、
図1を参照して説明したオプティカルブラック領域122には通常、複数のオプティカルブラック画素が設けられている。したがって、オプティカルブラック画素の画素値は複数の異なる値とる場合がある。本実施形態では、オプティカルブラック画素の画素値OB分をマスクする処理を行う。その際、複数の値の中で大きなOB値を用いる場合と小さなOB値を用いる場合とでダイナミックレンジに変化が発生する。そこで、本実施形態では、画素値のダイナミックレンジを低下させないという観点から、オプティカルブラック画素の画素値の最小値を画素値OBとして参照することとしている。ただし、OB値はこれに限らず、例えば使用条件等に応じて最小値として予測される予め定めた固定値を用いることなどが可能である。あるいは、例えば、複数のオプティカルブラック画素の画素値の平均値等を用いてもよい。この場合、ダイナミックレンジに若干の低下は発生するが、圧縮率をより高める効果が期待できる。
【0041】
一方、差分値を算出する処理では、差分値の最大値及び最小値は、2つの値の最大値が小さい方が小さくなる。つまり、2画素値の差分値を求める場合、例えば各画素値から一定のオフセット値を除くこと等で、2画素値の最大値を小さくしておけば、差分値の最大値と最小値は小さくすることができる。例えば2つの画素値Pa及びPbから予めオプティカルブラック画素の画素値OBを減じておいた場合、差分値(Pb−Pa)は、差分値((Pb−OB)−(Pa−OB))として求められることになり、この場合の最大値は、(Pb−OB)が「255−OB」で(Pa−OB)が「0」のときなので「255−OB」となる。他方、差分値((Pb−OB)−(Pa−OB))の最小値は、(Pb−OB)が「0」で(Pa−OB)が「255−OB」のときなので「−255+OB」となる。
【0042】
隣接2画素の画素値からオプティカルブラック画素の画素値OBを減じた後、隣接2画素の差分値を求める場合、“Case[1]”の条件(Pb−Pa<−128)のとき、減算(Pb−Pa)(=(Pb−OB)−(Pa−OB))の結果は、上記の最小値「−255+OB」から、−128より1小さい−129までの値である。この減算処理の結果に定数「255−OB」を加えると、「255−OB」を加算した後の値は0から「−129+255−OB」=「126−OB」までの値となる。この範囲は、OBが通常の値であれば、符号付き8ビット整数の値の範囲(−128〜+127)内である。すなわち、定数「255」から「OB」を減じた値を加算する処理を追加することで、(Pb−Pa<−128)の場合の差分値に応じた値を、符号付き8ビット整数で表すことができる。つまり“Case[1]”では値Sabunを(Pb−OB)−(Pa−OB)+(255−OB)の演算処理で求めることで値Sabunを符号付き8ビット整数で表すことができる。なお、(Pb−OB)−(Pa−OB)+(255−OB)の演算式は、整理すると、Pb−Pa+255−OBとなり、
図3を参照して説明した上述のSabun=(255−Pa)+(Pb−OB)と一致する。なお、演算式をSabun=(255−Pa)+(Pb−OB)と表したのは、演算の順番を明示するためである。すなわち、まず、(255−Pa)を求め、次に(Pb−OB)を求め、次に、「(255−Pa)の結果」+「(Pb−OB)の結果」を求めることで、各加減算処理の結果を符号付き8ビット整数の範囲内とすることができる。ただし、(255−Pa)を求める演算と、(Pb−OB)を求める演算との順番は逆にすることができる。
【0043】
他方、“Case[2]”の条件(Pb−Pa>127)の場合、減算(Pb−Pa)(=(Pb−OB)−(Pa−OB))の結果は、上記の最大値「255−OB」から、+127より1大きい+128までの値である。この減算処理の結果から例えば定数「255−OB」を減じると、「255−OB」を減算した後の値は0から「+128−(255−OB)」=「−127+OB」までとなる。この範囲は、OBが通常の値であれば、符号付き8ビット整数の値の範囲(−128〜+127)内である。すなわち、例えば定数「255」から「OB」を減じた値を減算する処理を追加することで、(Pb−Pa>127)の場合の差分値に応じた値を、符号付き8ビット整数で表すことができる。つまり“Case[2]”では値Sabunを(Pb−OB)−(Pa−OB)−(255−OB)の演算で求めることで値Sabunを符号付き8ビット整数で表すことができる。なお、(Pb−OB)−(Pa−OB)−(255−OB)の演算式は、整理すると、Pb−Pa−255+OBとなり、
図3を参照して説明した上述のSabun=−(255−Pb)−(Pa−OB)と一致している。なお、演算式をSabun=−(255−Pb)−(Pa−OB)と表したのは、演算の順番を明示するためである。すなわち、まず、(255−Pb)を求め、次に「(255−Pb)の結果」の補数を求め、次に(Pa−OB)を求め、次に「(255−Pb)の結果の補数」−「(Pa−OB)の結果」を求めることで、各処理の結果を符号付き8ビット整数の範囲内とすることができる。ただし、(255−Pb)や(255−Pb)の結果の補数を求める演算と、(Pa−OB)を求める演算の順番は逆にすることができる。
【0044】
図4に、Case[1]からCase[3]までの処理の仕方で求めたSabun値と、各画素値Pa及びPbと、オプティカルブラック画素の画素値OBとの関係を示した。
図4は、画素値の値(0から255までのLevel)を縦方向に表した図である。Case[1]では、Sabun値を実線の矢印で示した「Pa−Pb」そのものではなく、破線の矢印で示した画素値Pa及び画素値Pbと、最大値255又はOBの値と差の値を用いて算出する。Case[2]では、Sabun値を実線の矢印で示した「Pa−Pb」そのものではなく、破線の矢印で示した画素値Pa及び画素値Pbと、OBの値又は最大値255と差の値を用いて算出する。そして、Case[3]では、Sabun値を実線の矢印で示した「Pa−Pb」そのものの値としている。
【0045】
次に、
図2のエントロピー符号化部22について説明する。このエントロピー符号化部22は、本発明の符号化部の一構成例である。エントロピー符号化部22は、差分算出部21が算出した差分値に応じた値Sabunを、瞬時復号可能な可変長の符号語Aを用いて変換する。その際、本実施形態のエントロピー符号化部22は、差分算出部21が算出した差分値に応じた値Sabunを、値Sabunが位置する範囲を表す瞬時復号可能な可変長の符号語A(第1符号語)と、値Sabunを表す可変長の符号語B(第2符号語)とに変換することができる。ここで、瞬時復号可能な可変長の符号語Aは、例えばハフマン符号化のように、情報の出現確率に基づいて可変長の符号語を割り当てるエントロピー符号化によって生成することができる。ハフマン符号化とは、出現頻度が高い値は、短い符号(ビット数)を割り当てて、出現頻度が低い値は、長い符号(ビット数)を割り当てるという思想を元にした技術である。また、瞬時復号可能とは、その符号語の範囲内で復号可能であるということである。
【0046】
エントロピー符号化部22は、変換の仕方を示す予め用意した変換テーブルを参照し、入力したSabun値に基づき符号語Aと符号語Bとを生成する。ここで、
図5を参照して、Sabun値と、符号語A及び符号語Bとの対応関係について説明する。
図5は、Sabun値の全範囲を8の範囲に分け、各範囲に対応する、Sabun値、符号語A、符号語B、及び、符号語Aと符号語Bとを合わせた符号長を示している。
【0047】
図5に示した例では、Sabun値の最小値から最大値までの範囲を8の範囲に分け、ゼロにより近いSabun値の範囲に対してより短い符号語Aと符号語Bとを割り当てている。ここで、各範囲と各符号語Aとは一意に対応している。また、各範囲に対応するSabun値のデータ数を可変として、ゼロに最も近いSabun値の範囲「8」に含まれるデータ数を1、次にゼロに近いSabun値の範囲「7」に含まれるデータ数を2、…というように、ゼロにより近いSabun値の範囲が含むデータ数をより少なくしている。
【0048】
図5に示した対応関係によれば、例えば、Sabun値が「0」の場合、Sabun値が位置する範囲は「8」となり、符号語Aが「00」、符号語Bは「無し」となり、符号語Aと符号語Bを合わせた符号長は2bitである。例えば、Sabun値が「+1」の場合、Sabun値が位置する範囲は「7」となり、符号語Aが「010」、符号語Bが「0」又は「1」のいずれかとなり、符号語Aと符号語Bを合わせた符号長4bitである。例えば、Sabun値が「−1」の場合、Sabun値が位置する範囲は「7」となり、符号語Aが「010」、符号語Bが「0」又は「1」のうちSabun値「+1」に割り当てられていない方の符号語となり、符号語Aと符号語Bを合わせた符号長4bitである。
【0049】
エントロピー符号化部22は、例えば
図5に示したような対応関係を表すテーブルを参照することで、入力したSabun値を符号語A及び符号語Bに変換する。また、エントロピー符号化部22は、この符号語A及び符号語Bからなる符号語に対して、Sabun値の算出の仕方を示すCase値を表す情報を付加することで、エントロピー符号化部22が出力する符号語を生成する処理を行う。Sabun値の内容はCase値によって変化する。エントロピー符号化部22は、この付加処理によって、差分値(Pb−Pa)に一意に対応する符号語を生成する。エントロピー符号化部22は、例えば、Case値に対応する固定長又は瞬時復号可能な可変長の所定の符号語を符号語A及び符号語Bからなる符号語に付加したり、符号語Aを拡張してSabun値の範囲に加えCase値の値を表すものとなるようにしたりすることで、Case値を表す情報を付加することができる。このCase値の情報を付加する処理を行い、エントロピー符号化部22は、Sabun値及びCase値の各組に一意に対応する符号語を順次生成し、圧縮符号として出力する。
【0050】
図2から
図4を参照して説明したように、本実施形態の差分算出部21は、画素値Paと画素値Pbとの差分値(Pb−Pa)に応じた値であるSabun値を求める際に、オプティカルブラック画素の画素値OBを参照することを特徴とする。次に、このオプティカルブラック画素の画素値OBを参照する構成の効果について、オプティカルブラック画素の画素値OBを参照しない場合と比較することで説明する。
【0051】
オプティカルブラック画素の画素値OBを参照しない場合の構成は、
図6に示したように、
図2に示した差分算出部21と比較して入力からオプティカルブラック画素の画素値OBを省いた差分算出部31と、
図2に示したエントロピー符号化部22とを組み合わせたものとすることができる。
図6に示した差分算出部31は、
図7に示したように、まず隣接画素の画素値PaとPbとを入力する(STEP1a)。次に、差分算出部31は、Pb−Paの減算処理を行う(STEP2a)。次に、差分算出部31は、差分処理の仕方の判定処理を行う(STEP3a)。差分算出部31による差分処理の仕方は3通りあり、STEP2aでの減算処理結果に応じて処理の仕方を変更する。すなわち、Pb−Pa<−128の場合は、処理の仕方を“Case[1]”とする。Pb−Pa>127の場合は、処理の仕方を“Case[2]”とする。そして、その他の場合は、処理の仕方を“Case[3]”とする。
【0052】
次に、差分算出部31は、STEP3aで判定した処理の仕方にて差分値に応じた値Sabunを算出する。差分算出部31は、Case[1]の場合、Sabun=(255−Pa)+Pbの演算処理を行い、Case[2]の場合、Sabun=−(255−Pb)−Paの演算処理を行い、そして、Case[3]の場合、Sabun=Pb−Paの演算処理を行う。そして、差分算出部31は、求めたSabun値と、Case値とをエントロピー符号化部22へ出力する。この場合のSabun値は、
図8に破線(Case[1]と[2]の場合)又は実線(Case[3]の場合)の矢印で示された値となる。
【0053】
次に、
図9を参照して、オプティカルブラック画素の画素値OBを参照する場合(本実施形態)と、オプティカルブラック画素の画素値OBを参照しない場合(
図6から
図8を参照して説明した比較技術)との比較例について説明する。隣接画素の画素値PaとPbは8bit、OB値は「32」としている。エントロピー符号化部22では、
図5を参照して説明したテーブルを用いて符号化処理を行うこととした。
【0054】
図9は画素値Paと画素値Pbとの複数の組み合わせ例と、各例において、比較技術で算出したSabun値とそのSabun値に対応する符号語Aと符号語Bとを合わせた符号長と、上記実施形態で算出したSabun値とそのSabun値に対応する符号語Aと符号語Bとを合わせた符号長とをまとめて示している。例えば、Pa=240、Pb=80の場合、比較技術ではSabun値が95、符号長が12bitとなり、本実施形態ではSabun値が63、符号長が10bitとなる。また、例えば、Pa=254、Pb=33の場合、比較技術ではSabun値が34、符号長が10bitとなり、本実施形態ではSabun値が2、符号長が5bitとなる。
【0055】
図9に示したように、オプティカルブラック画素の画素値OBを参照して差分値に応じた値Sabunを算出する本実施形態によれば、OBを参照しない場合に比べ、変換後の符号語の符号長を短くすることができるという効果が得られる。このように本実施形態によれば、確実に差分に応じた値Sabunが小さくなり、値Sabunの偏りが大きくなる。このため画像圧縮効率が向上するので、例えば記録媒体19に記憶可能な記録撮影枚数を増加することができる。
【0056】
以上のように、本実施形態によれば、オプティカルブラック画素の画素値OBを参照して画素値のビット内で2画素値の差分値に応じた値が算出される。このオプティカルブラック画素の画素値は熱による暗電流ノイズ(つまりオフセット分)である。このため、画素値がゼロからオプティカルブラック画素の画素値までの範囲には有効な画素値は存在しない。したがって、例えば画素値に含まれるオプティカルブラック画素の画素値分をマスク(すなわち無視)することで全体として差分値に応じた値をゼロの方向へ偏らせることができる。そして、ゼロに近い差分値に応じた値に対してより小さい符号長の符号語を割り当てることで容易に圧縮率の向上を図ることができる。
【0057】
以上、本発明の実施の形態について説明したが、本発明の撮像装置及び画像データ圧縮回路は、上述の図示例にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることが可能である。