(57)【特許請求の範囲】
【請求項１】
第１ビット数の入力データに非線形補正を施して補正データを出力するデータ補正回路において、
前記第１ビット数よりも少ない第２ビット数で表される複数の数値にそれぞれ割り当てられた複数の補正値を格納するメモリ、
前記入力データの上位に存在する前記第２ビット数のデータ値に基づいて前記メモリから少なくとも２つの補正値を読み出す読み出し手段、および
前記読み出し手段によって読み出された補正値と前記入力データの下位に存在する第３ビット数のデータ値とに基づいて前記補正データを生成する生成手段を備え、
前記メモリは、前記複数の数値にそれぞれ割り当てられた複数の第１補正値を格納する第１テーブル、および前記複数の数値にそれぞれ割り当てられた複数の第２補正値を格納する第２テーブルを含み、
前記読み出し手段は、前記第２ビット数のデータ値に等しい数値に割り当てられた第１補正値を前記第１テーブルから読み出す第１読み出し手段、および前記第２ビット数のデータ値に所定値を加算した加算値に等しい数値に割り当てられた第２補正値を前記第２テーブルから読み出す第２読み出し手段を含み、
前記所定値は前記入力データ値のうち前記第２ビット数よりも１つ下位に存在するデータ値であることを特徴とする、データ補正回路。
【請求項２】
前記第２ビット数および前記第３ビット数の和は前記第１ビット数に等しく、
前記読み出し手段によって読み出される補正値は２つであり、
前記生成手段は読み出された２つの補正値に前記第３ビット数のデータ値に従う重み付けを施す、請求項１記載のデータ補正回路。
【請求項３】
前記入力データは画素データであり、前記非線形補正はガンマ補正である、請求項１または２記載のデータ補正回路。
【請求項４】
請求項１ないし３のいずれかに記載のデータ補正装置を備える、ディジタルカメラ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、データ補正回路に関し、特にたとえばディジタルガンマ補正回路に適用され、入力データに非線形補正を施す、データ補正回路に関する。
【０００２】
【従来技術】
ガンマ特性は非線形であるため、ディジタルガンマ補正回路では、複数の画素データ値に複数のガンマ補正値が個別に割り当てられたＬＵＴ（Look Up Table）が用いられる。画素データが入力されると、この画素データ値に対応するガンマ補正値がＬＵＴから読み出され、これによってガンマ補正が施された補正画素データが得られる。
【０００３】
【発明が解決しようとする課題】
しかし、画素データのビット数が増えると、ＬＵＴに格納すべきガンマ補正値の数が多くなる。このため、画素データの多ビット化が進むにつれて、ＬＵＴのメモリ容量が大きくなってしまう。
【０００４】
それゆえに、この発明の主たる目的は、メモリ容量を抑えつつ、多ビットデータに非線形補正を施すことができる、データ補正回路を提供することである。
【０００５】
【課題を解決するための手段】
この発明に従うデータ補正回路は、第１ビット数の入力データに非線形補正を施して補正データを出力するデータ補正回路において、第１ビット数よりも少ない第２ビット数で表される複数の数値にそれぞれ割り当てられた複数の補正値を格納するメモリ、入力データの上位に存在する第２ビット数のデータ値に基づいてメモリから少なくとも２つの補正値を読み出す読み出し手段、および読み出し手段によって読み出された補正値と入力データの下位に存在する第３ビット数のデータ値とに基づいて補正データを生成する生成手段を備え、メモリは、複数の数値にそれぞれ割り当てられた複数の第１補正値を格納する第１テーブル、および複数の数値にそれぞれ割り当てられた複数の第２補正値を格納する第２テーブルを含み、読み出し手段は、第２ビット数のデータ値に等しい数値に割り当てられた第１補正値を第１テーブルから読み出す第１読み出し手段、および第２ビット数のデータ値に所定値を加算した加算値に等しい数値に割り当てられた第２補正値を第２テーブルから読み出す第２読み出し手段を含み、所定値は入力データ値のうち第２ビット数よりも１つ下位に存在するデータ値であることを特徴とする。
【０００６】
【作用】
第１ビット数の入力データに非線形補正を施して補正データを出力するために、メモリには、第１ビット数よりも少ない第２ビット数で表される複数の数値に割り当てられた複数の補正値が格納される。読み出し手段は、入力データの上位に存在する第２ビット数のデータ値に基づいてメモリから少なくとも２つの補正値を読み出す。補正データは、読み出された補正値と入力データの下位に存在する第３ビット数のデータ値とに基づいて、生成手段によって生成される。
【０００７】
つまり、メモリから読み出す少なくとも２つの補正値は、入力データの上位に存在する第２ビット数のデータ値に基づいて特定される。また、補正データの生成は、読み出された補正値と入力データの下位に存在する第３ビット数のデータ値とに基づいて行なわれる。
【０００８】
好ましくは、第２ビット数および第３ビット数の和は第１ビット数に等しく、読み出し手段によって読み出される補正値は２つである。このとき、生成手段は、読み出された２つの補正値に第３ビット数のデータ値に従う重み付けを施す。
【０００９】
メモリは、好ましくは、複数の数値に割り当てられた複数の第１補正値を格納する第１テーブルと、複数の数値に割り当てられた複数の第２補正値を格納する第２テーブルとを含む。読み出し手段は、第２ビット数のデータ値に等しい数値に割り当てられた第１補正値を第１テーブルから読み出し、第２ビット数のデータ値に所定値を加算した加算値に等しい数値に割り当てられた第２補正値を第２テーブルから読み出す。所定値は、好ましくは、入力データ値のうち第２ビット数よりも１つ下位に存在するデータ値とされる。
【００１０】
【発明の効果】
この発明によれば、入力データの上位に存在する第２ビット数のデータ値に基づいてメモリから補正値を読み出すようにしたため、メモリ容量を抑えることができる。また、メモリから読み出された補正値と入力データの下位に存在する第３ビット数のデータ値とに基づいて補正データを生成するようにしたため、多ビットデータに非線形補正を施すことができる。
【００１１】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【００１２】
【実施例】
図１を参照して、この実施例のディジタルカメラ１０は、イメージセンサ１２を含む。イメージセンサ１２は被写体の光学像を取り込み、光電変換によって画像信号を生成する。イメージセンサ１２の受光面はたとえば原色ベイヤ配列の色フィルタによって覆われ、画像信号を形成する各々の画素信号はＲ，ＧおよびＢのいずれか１つの色情報を有する。画像信号はラスタスキャン方式でイメージセンサ１２から読み出され、ＣＤＳ／ＡＧＣ回路１４は、読み出された画像信号に周知のノイズ除去およびレベル調整を施す。このような調整を施された画像信号は、Ａ／Ｄ変換器１６によってディジタル信号である画像データに変換され、変換された画像データが信号処理回路１８に与えられる。
【００１３】
信号処理回路１８は、与えられた画像データに色分離，白バランス調整，ガンマ補正，ＹＵＶ変換などの処理を施し、ＹＵＶ形式の画像データを出力する。これらの処理のうち、ガンマ補正は、ガンマ補正回路２０によって行なわれる。信号処理回路１８から出力された画像信号はビデオエンコーダ２２によってコンポジット画像信号に変換され、変換されたコンポジット画像信号がディスプレイ２４に供給される。この結果、被写体のリアルタイム動画像が画面に表示される。
【００１４】
ガンマ補正回路２０は、具体的には図２に示すように構成される。画像データを形成する各々の画素データは１４ビットであり、ＩＮ［１３：０］と定義される。この１４ビットのうち第３ビットつまりＩＮ［３］は加算器２０ａの一方入力端子ならびにセレクタ２０ｎおよび２０ｐの制御端子に与えられ、下位３ビットつまりＩＮ［２：０］は減算器２０ｍの一方入力端子，セレクタ２０ｎの０側入力端子およびセレクタ２０ｐの１側入力端子に与えられる。減算器２０ｍの他方入力端子には１６進数で“８”を示す３ビットの数値データつまり“０ｘ８”が与えられ、減算器２０ｍは“０ｘ０８”からＩＮ［２：０］が示す数値を減算する。減算値は、セレクタ２０ｎの１側入力端子およびセレクタ２０ｐの０側入力端子に与えられる。
【００１５】
セレクタ２０ｎおよび２０ｐは、制御端子の入力が“１”を示すとき１側入力端子を選択し、制御端子の入力が“０”を示すとき０側入力端子を選択する。したがって、ＩＮ［３］が“１”を示すときは、減算値がセレクタ２０ｎから出力され、ＩＮ［２：０］がセレクタ２０ｐから出力される。これに対して、画素データのＩＮ［３］が“０”を示すときは、画素データのＩＮ［２：０］がセレクタ２０ｎから出力され、減算値がセレクタ２０ｐから出力される。セレクタ２０ｐの出力はｃｏｅｆ１［２：０］と定義され、セレクタ２０ｎの出力はｃｏｅｆ２［２：０］と定義される。
【００１６】
画素データの上位１０ビットつまりＩＮ［１３：４］は、加算器２０ａの他方入力端子およびメモリコントローラ２０ｆに与えられる。加算器２０ａはＩＮ［１３：４］が示す数値にＩＮ［３］が示す数値を加算し、１１ビットの加算値を出力する。加算値の最上位ビットつまりＡＤＤ［１０］はセレクタ２０ｄの制御端子に与えられ、加算値の下位１０ビットつまりＡＤＤ［９：０］はメモリコントローラ２０ｂに与えられる。メモリコントローラ２０ｂに与えられるＡＤＤ［９：０］はａｄｒｓ１と定義され、メモリコントローラ２０ｆに与えられるＩＮ［１３：４］はａｄｒｓ２と定義され、そしてＡＤＤ［１０］はａｄｒｏｖｆと定義される。
【００１７】
メモリコントローラ２０ｂは、ＡＤＤ［９：０］に対応する１２ビットのガンマ補正値をＥｖｅｎＬＵＴ２０ｃから読み出し、読み出したガンマ補正値をセレクタ２０ｄの０側入力端子に与える。セレクタ２０ｄの１側入力端子には、１６進数で“ｆｆｆ”を示す１２ビットの数値データつまり“０ｘｆｆｆ”が与えられる。セレクタ２０ｄは、ａｄｒｏｖｆが“１”を示すとき“０ｘｆｆｆ”を出力し、ａｄｒｖｏｆが“０”を示すときガンマ補正値を出力する。セレクタ２０ｄの出力は、ｍ１ｏｕｔ［１１：０］と定義される。一方、メモリコントローラ２０ｆは、ａｄｒｓ２に対応する１２ビットのガンマ補正値をＯｄｄＬＵＴ２０ｇから読み出す。読み出されたガンマ補正値は、ｍ２ｏｕｔ［１１：０］と定義される。
【００１８】
掛け算器２０ｅはｍ１ｏｕｔ［１１：０］にｃｏｅｆ１［２：０］を掛け算し、掛け算器２０ｅはｍ２ｏｕｔ［１１：０］にｃｏｅｆ２［２：０］を掛け算する。掛け算器２０ｅおよび２０ｈから出力された掛け算値は加算器２０ｊで互いに加算される。割り算器２０ｋは加算器２０ｊから出力された加算値を“０ｘ８”で割り算し、割り算値をＯＵＴ［１１：０］として出力する。この割り算値が、補正画素データである。
【００１９】
ＥｖｅｎＬＵＴ２０ｃおよびＯｄｄＬＵＴ２０ｇはいずれも、１０ビットで表現される複数のアドレス値に個別に割り当てられた複数のガンマ補正値を格納するテーブルである。各々のガンマ補正値は、上述の通り１２ビットで表現される。アドレス値を横軸とし、ガンマ補正値を縦軸とすると、各々のガンマ補正値を線で結ぶことによって、図３に示すようなガンマ補正曲線が描かれる。図３から分かるように、横軸方向において偶数番目に存在するガンマ補正値がＥｖｅｎＬＵＴ２０ｃに格納され、横軸方向において奇数番目に存在するガンマ補正値がＯｄｄＬＵＴ２０ｇに格納される。このとき、ＥｖｅｎＬＵＴ２０ｃにおいてアドレスｍが割り当てられたガンマ補正値と、ＯｄｄＬＵＴ２０ｇにおいてアドレスｍに割り当てられたガンマ補正値とは、互いに隣接する。つまり、ガンマ補正曲線上に存在するガンマ補正値に割り当てられたアドレス値は、ｍ→ｍ→ｍ＋１→ｍ＋１→ｍ＋２→…の要領で２つ毎にインクリメントされる。
【００２０】
ＩＮ［１３：０］とａｄｒｓ１，ａｄｒｓ２，ｃｏｅｆ１［２：０］，ｃｏｅｆ２［２：０］およびａｄｒｏｖｆとの関係を表１に示す。
【００２１】
【表１】
0003806624.tif 000002
【００２２】
表１を横方向に眺めると、ＩＮ［１３：４］であるａｄｒｓ２は、ＩＮ［１３：０］の下位４ビットが“１１１１”から“００００”に戻るときにインクリメントされる。一方、ＩＮ［１３：４］とＩＮ［３］との加算値であるａｄｒｓ１は、ａｄｒｓ２がインクリメントされることなく下位３ビットが“１１１”から“０００”に戻るときインクリメントされる。したがって、ａｄｒｓ１は、ａｄｒｓ２の更新タイミングの中間地点で更新される。
【００２３】
ｃｏｅｆ１［２：０］は、ＩＮ［３］が“０”のとき“０ｘ８”からＩＮ［２：０］を減算した減算値に等しく、ＩＮ［１３：０］の第３ビットが“１”のときＩＮ［２：０］に等しい。これに対して、ｃｏｅｆ２［２：０］は、ＩＮ［３］が“０”のときＩＮ［２：０］に等しく、ＩＮ［３］が“１”のとき“０ｘ８”からＩＮ［２：０］を減算した減算値に等しい。したがって、ｃｏｅｆ１［２：０］およびｃｏｅｆ２［２：０］は互いに相補的な値をとり、ｃｏｅｆ１［２：０］およびｃｏｅｆ２［２：０］の合計値は常に“８”を示す。
【００２４】
ａｄｒｏｖｆは、ＩＮ［１３：４］にＩＮ［３］を加算した加算値の最上位ビットである。このため、ａｄｒｏｖｆは、ＩＮ［１３：０］が“１６３７６”〜“１６３８３”をとるときに“１”を示し、これ以外の値をとるときは“０”を示す。
【００２５】
ａｄｒｓ１およびａｄｒｓ２が同じ値をとるのはＩＮ［３］が“０”のときであり、このときは、ＥｖｅｎＬＵＴ２０ｃおよびＯｄｄＬＵＴ２０ｇの同じアドレスからガンマ補正値が読み出される。読み出し先アドレスがｍであれば、図４に示す黒丸で示す２つのガンマ補正値がＥｖｅｎＬＵＴ２０ｃおよびＯｄｄＬＵＴ２０ｇから読み出される。ＥｖｅｎＬＵＴ２０ｃから読み出されたガンマ補正値は掛け算器２０ｅによってｃｏｅｆ１［２：０］と掛け算され、ＯｄｄＬＵＴ２０ｇから読み出されたガンマ補正値は掛け算器２０ｈによってｃｏｅｆ２［２：０］と掛け算される。
【００２６】
ＩＮ［３］が“０”のとき、ｃｏｅｆ１［２：０］は“０ｘ８”からＩＮ［２：０］を減算した減算値に等しく、ｃｏｅｆ２［２：０］はＩＮ［２：０］に等しい。このため、ＩＮ［２：０］が小さいほどｃｏｅｆ１［２：０］が大きくなり、ＥｖｅｎＬＵＴ２０ｃから読み出されたガンマ補正値に対する重み付け量が大きくなる。掛け器２０ｅおよび２０ｈで求められた掛け算値を加算器２０ｊで互いに加算し、加算値を“０ｘ８”で割り算することによって、図４に四角で示す補正値が求められる。この補正値が、補正画素データとなる。
【００２７】
一方、ＩＮ［３］が“１”をとるときは、ＥｖｅｎＬＵＴ２０ｃおよびＯｄｄＬＵＴ２０ｇの異なるアドレスからガンマ補正値が読み出される。ＯｄｄＬＵＴ２０ｇの読み出し先アドレスが“ｍ”であれば、ＥｖｅｎＬＵＴ２０ｃの読み出し先アドレスは“ｍ＋１”であり、図５に黒丸で示すガンマ補正値がＥｖｅｎＬＵＴ２０ｃおよびＯｄｄＬＵＴ２０ｇから読み出される。ＩＮ［３］が“１”のとき、ｃｏｅｆ１［２：０］はＩＮ［２：０］に等しく、ｃｏｅｆ２［２：０］は“０ｘ８”からＩＮ［２：０］を減算した減算値に等しい。このため、ＩＮ［２：０］が小さいほどｃｏｅｆ２［２：０］が大きくなり、ＯｄｄＬＵＴ２０ｃから読み出されたガンマ補正値に対する重み付け量が大きくなる。掛け器２０ｅおよび２０ｈから出力された掛け算値を加算器２０ｊで互いに加算し、加算値を“０ｘ８”で割り算することによって、図５に四角で示す補正画素データが得られる。
【００２８】
この実施例によれば、１４ビットの入力画素データにガンマ補正のような非線形補正を施して補正画素データを出力するために、１０ビットで表される複数の数値に割り当てられた複数のガンマ補正値がＥｖｅｎＬＵＴ２０ｃおよびＯｄｄＬＵＴ２０ｇに格納される。メモリコントローラ２０ｂおよび２０ｆはそれぞれ、入力画素データの上位に存在する１０ビットのデータ値に基づいて、ＥｖｅｎＬＵＴ２０ｃおよびＯｄｄＬＵＴ２０ｇからガンマ補正値を読み出す。補正画素データは、読み出されたガンマ補正値と入力画素データの下位に存在する４ビット数のデータ値とに基づいて、掛け算器２０ｅおよび２０ｈ，加算器２０ｊならびに割り算器２０ｋによって生成される。
【００２９】
このように、ＥｖｅｎＬＵＴ２０ｃおよびＯｄｄＬＵＴ２０ｇから読み出す２つのガンマ補正値は、入力画素データの上位に存在する１０ビットのデータ値に基づいて特定される。このため、ＬＵＴの容量を抑えることができる。また、補正画素データの生成は、読み出されたガンマ補正値と入力画素データの下位に存在する４ビットのデータ値とに基づいて行なわれる。このため、多ビットの画素データに適切にガンマ補正を施すことができる。
【００３０】
なお、この実施例ではガンマ補正回路を用いて説明したが、この発明は、入力データに非線形補正を施すあらゆるデータ補正回路に適用できる。
【図面の簡単な説明】
【図１】この発明の一実施例を示すブロック図である。
【図２】ガンマ補正回路を示すブロック図である。
【図３】図１実施例の動作の一部を示す図解図である。
【図４】図１実施例の動作の他の一部を示すフロー図である。
【図５】図１実施例の動作のその他の一部を示すフロー図である。
【符号の説明】
１０…ディジタルカメラ
２０…ガンマ補正回路
２０ａ，２０ｊ…加算器
２０ｂ，２０ｆ…メモリコントローラ
２０ｃ…ＥｖｅｎＬＵＴ
２０ｇ…ＯｄｄＬＵＴ
２０ｍ…減算器
２０ｅ，２０ｈ…掛け算器
【図１】
0003806624.tif 000003
【図２】
0003806624.tif 000004
【図３】
0003806624.tif 000005
【図４】
0003806624.tif 000006
【図５】
0003806624.tif 000007