(57)【要約】【課題】負荷の増大を抑制しながら画像信号処理の画質性能を向上させることができるようにする。【解決手段】重み算出部２０１は、処理対象画素の属す輝度ブロックを特定するとともに、供給された輝度値に応じた重みを算出する。特定された輝度ブロックに対応するカウンタ２０２は、その重みを、保持している値に加算し、１フレーム分累算する。重み乗算部２３１は、重みを入力信号に乗算し、その乗算結果を、特定された輝度ブロックに対応する積分器２３２に供給する。積分器２３２は、その乗算結果を、保持している値に加算し、１フレーム分累算する。本発明は、例えば、画像処理装置に適用することができる。【選択図】図１１
2012058850.tif 000002
【特許請求の範囲】
【請求項１】
入力画像の各画素を、その輝度値に基づいて、輝度値が取り得る値の範囲全体を輝度方向に複数に分割して得られる各部分領域の何れかに割り当て、各部分領域について、その部分領域に割り当てられた画素数を示す頻度値を算出する際に、前記入力画像の１つの画素を複数の部分領域に割り当て、それらの部分領域の前記頻度値を更新する頻度値算出手段と、
前記部分領域の特性を示す特性値を算出する特性値算出手段と、
前記頻度値算出手段により算出された前記頻度値、および、前記特性値算出手段により算出された前記特性値を用いて、前記輝度方向の距離に応じて前記特性値を加重平均することにより、前記入力画像をエッジ保存平滑化する加重積和手段と
を備える画像処理装置。
【請求項２】
前記頻度値算出手段は、
前記入力画像の画素を割り当てる際のカウント値を小数精度に拡張するための重みを算出する重み算出手段と、
前記重み算出手段により算出された前記重みを用いて複数の部分領域の前記頻度値を更新する頻度値更新手段と
を備え、
前記特性値算出手段は、
前記重み算出手段により算出された前記重みを、前記入力画像の輝度値に乗算する重み乗算手段と、
前記重み乗算手段により前記重みが乗算された前記入力画像の輝度値を用いて、複数の部分領域の前記特性値を更新する特性値更新手段と
を備える
請求項１に記載の画像処理装置。
【請求項３】
前記重み算出手段は、所定の重み関数に従って、各部分領域の重みを算出する
請求項２に記載の画像処理装置。
【請求項４】
前記頻度値算出手段は、前記入力画像の画素を間引く間引き手段をさらに備え、
前記重み算出手段は、前記間引き手段により間引かれた前記入力画像の画素について、各部分領域の重みを算出する
請求項２に記載の画像処理装置。
【請求項５】
前記間引き手段は、前記重み算出手段により算出される前記重みの小数精度に対応する間引きレートで前記入力画像の画素を間引く
請求項４に記載の画像処理装置。
【請求項６】
前記入力画像の内容を示す空間パターンを判定する空間パターン判定手段をさらに備え、
前記間引き手段は、前記空間パターン判定手段による前記空間パターンの解析結果に応じた間引きレートで前記入力画像の画素を間引く
請求項４に記載の画像処理装置。
【請求項７】
前記空間パターン判定手段は、前記空間パターンを前記入力画像の部分領域毎に判定し、
前記間引き手段は、前記部分領域毎に、前記空間パターン判定手段による前記空間パターンの解析結果に応じた間引きレートで前記入力画像の画素を間引く
請求項６に記載の画像処理装置。
【請求項８】
画像処理装置の画像処理方法であって、
頻度値算出手段が、入力画像の各画素を、その輝度値に基づいて、輝度値が取り得る値の範囲全体を輝度方向に複数に分割して得られる各部分領域の何れかに割り当て、各部分領域について、その部分領域に割り当てられた画素数を示す頻度値を算出する際に、前記入力画像の１つの画素を複数の部分領域に割り当て、それらの部分領域の前記頻度値を更新し、
特性値算出手段が、前記部分領域の特性を示す特性値を算出し、
前記加重積和手段が、算出された前記頻度値、および、算出された前記特性値を用いて、前記輝度方向の距離に応じて前記特性値を加重平均することにより、前記入力画像をエッジ保存平滑化する
を備える画像処理方法。
【請求項９】
コンピュータを、
入力画像の各画素を、その輝度値に基づいて、輝度値が取り得る値の範囲全体を輝度方向に複数に分割して得られる各部分領域の何れかに割り当て、各部分領域について、その部分領域に割り当てられた画素数を示す頻度値を算出する際に、前記入力画像の１つの画素を複数の部分領域に割り当て、それらの部分領域の前記頻度値を更新する頻度値算出手段、
前記部分領域の特性を示す特性値を算出する特性値算出手段、
前記頻度値算出手段により算出された前記頻度値、および、前記特性値算出手段により算出された前記特性値を用いて、前記輝度方向の距離に応じて前記特性値を加重平均することにより、前記入力画像をエッジ保存平滑化する加重積和手段
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置および方法、並びにプログラムに関し、特に、負荷の増大を抑制しながら画像信号処理の画質性能を向上させることができるようにした画像処理装置および方法、並びにプログラムに関する。
【背景技術】
【０００２】
画像処理技術の１つとして、エッジ保存平滑化処理が知られている。エッジ保存平滑化処理とは、画像中の物体境界など顕著な輝度段差は残しつつ階調を平滑化する非線形フィルタ処理である。エッジ保存平滑化処理は、ノイズリダクション処理や階調補正処理に用いられていた（例えば、非特許文献１乃至非特許文献５参照）。
【０００３】
このようなエッジ保存平滑化処理の中で、近年バイラテラルフィルタと呼ばれる技術がよく利用されるようになってきている。バイラテラルフィルタは、通常の線形なFIR（Finite Impulse Response）フィルタなどに比べて演算量がはるかに多い。そのため、バイラテラルフィルタ計算を高速化する手法が提案されていた（例えば、非特許文献４および非特許文献６参照）。
【０００４】
また、信号を間引き処理することによるバイラテラルフィルタの高速計算手法も提案されていた（例えば、非特許文献７、特許文献１、および特許文献２参照）。
【０００５】
これらの処理では、画像の領域・レベルごとの信号の出現頻度（局所ヒストグラム）を用いることで、入力信号の分解能を低下させた間引き信号を作り、その間引き信号に対してフィルタカーネルを畳み込んでから拡大することで、バイラテラルフィルタ計算量を削減していた。また、フィルタ計算のために、局所ヒストグラムの各ビンに対応する画素の輝度値の総和（以下、特性値）を用いていた。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】A. Lev，S. W. Zucker，A. Rosenfeld，「Iterative enhancement of noise images」，IEEE Trans. Systems， Man， and Cybernetics， Vol. SMC-7，1977.
【非特許文献２】D. C. C. Wang，A. H. Vagnucci，C. C. Li，「Gradient inverse weighted smoothing scheme and the evaluation of its performance」，CVGIP，Vol. 15，pp. 167-181，1981.
【非特許文献３】M. Nagao，T. Matsuyama，「Edge preserving smoothing」，CGIP，Vol. 9， pp. 394-407，1978.
【非特許文献４】F. Durand，J. Dorsey，「Fast bilaterarl filtering for the display of high-dynamic-range images」，Proc. of ACM SIGGRAPH 2002，2002.
【非特許文献５】S. N. Pattanaik，H. Yee，「Adaptive gain control for high dynamic range image display」，Proc. of Spring Conference in Computer Graphics 2002，2002.
【非特許文献６】Weiss，「Fast median and bilateral filtering」，Proc. of ACM SIGGRAPH 2006，2006.
【非特許文献７】S.Paris et al.「A Fast Approximation of the Bilateral Filter using a Signal Processing Approach」,
【特許文献】
【０００７】
【特許文献１】特開２００９−１７７５５８号公報
【特許文献２】特開２０１０−００３２９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、これらの手法の場合、処理コストを抑えるために局所ヒストグラムの分解能を低下させると、バイラテラルフィルタの計算精度が低下してしまう恐れがあった。
【０００９】
また、特に平坦な入力画像に対して誤差が発生しやすくなる恐れがあった。
【００１０】
この問題は、局所ヒストグラムの分解能（ビン数）を大きく設定することで軽減することができる。しかしながら、分解能によって計算精度を１bit分改良するには、２倍のビン数が必要となるため、計算量や記憶容量等、フィルタ処理の負荷が増大してしまう恐れがあった。
【００１１】
本発明は、このような状況に鑑みてなされたものであり、負荷の増大を抑制しながら画像信号処理の画質性能を向上させることを目的とする。
【課題を解決するための手段】
【００１２】
本発明の一側面は、入力画像の各画素を、その輝度値に基づいて、輝度値が取り得る値の範囲全体を輝度方向に複数に分割して得られる各部分領域の何れかに割り当て、各部分領域について、その部分領域に割り当てられた画素数を示す頻度値を算出する際に、前記入力画像の１つの画素を複数の部分領域に割り当て、それらの部分領域の前記頻度値を更新する頻度値算出手段と、前記部分領域の特性を示す特性値を算出する特性値算出手段と、前記頻度値算出手段により算出された前記頻度値、および、前記特性値算出手段により算出された前記特性値を用いて、前記輝度方向の距離に応じて前記特性値を加重平均することにより、前記入力画像をエッジ保存平滑化する加重積和手段ととを備える画像処理装置である。
【００１３】
前記頻度値算出手段は、前記入力画像の画素を割り当てる際のカウント値を小数精度に拡張するための重みを算出する重み算出手段と、前記重み算出手段により算出された前記重みを用いて複数の部分領域の前記頻度値を更新する頻度値更新手段とを備え、前記特性値算出手段は、前記重み算出手段により算出された前記重みを、前記入力画像の輝度値に乗算する重み乗算手段と、前記重み乗算手段により前記重みが乗算された前記入力画像の輝度値を用いて、複数の部分領域の前記特性値を更新する特性値更新手段とを備えることができる。
【００１４】
前記重み算出手段は、所定の重み関数に従って、各部分領域の重みを算出することができる。
【００１５】
前記頻度値算出手段は、前記入力画像の画素を間引く間引き手段をさらに備え、前記重み算出手段は、前記間引き手段により間引かれた前記入力画像の画素について、各部分領域の重みを算出することができる。
【００１６】
前記間引き手段は、前記重み算出手段により算出される前記重みの小数精度に対応する間引きレートで前記入力画像の画素を間引くことができる。
【００１７】
前記入力画像の内容を示す空間パターンを判定する空間パターン判定手段をさらに備え、前記間引き手段は、前記空間パターン判定手段による前記空間パターンの解析結果に応じた間引きレートで前記入力画像の画素を間引くことができる。
【００１８】
前記空間パターン判定手段は、前記空間パターンを前記入力画像の部分領域毎に判定し、前記間引き手段は、前記部分領域毎に、前記空間パターン判定手段による前記空間パターンの解析結果に応じた間引きレートで前記入力画像の画素を間引くことができる。
【００１９】
本発明の一側面は、また、画像処理装置の画像処理方法であって、頻度値算出手段が、入力画像の各画素を、その輝度値に基づいて、輝度値が取り得る値の範囲全体を輝度方向に複数に分割して得られる各部分領域の何れかに割り当て、各部分領域について、その部分領域に割り当てられた画素数を示す頻度値を算出する際に、前記入力画像の１つの画素を複数の部分領域に割り当て、それらの部分領域の前記頻度値を更新し、特性値算出手段が、前記部分領域の特性を示す特性値を算出し、前記加重積和手段が、算出された前記頻度値、および、算出された前記特性値を用いて、前記輝度方向の距離に応じて前記特性値を加重平均することにより、前記入力画像をエッジ保存平滑化する画像処理方法である。
【００２０】
本発明の一側面は、さらに、コンピュータを、入力画像の各画素を、その輝度値に基づいて、輝度値が取り得る値の範囲全体を輝度方向に複数に分割して得られる各部分領域の何れかに割り当て、各部分領域について、その部分領域に割り当てられた画素数を示す頻度値を算出する際に、前記入力画像の１つの画素を複数の部分領域に割り当て、それらの部分領域の前記頻度値を更新する頻度値算出手段、前記部分領域の特性を示す特性値を算出する特性値算出手段、前記頻度値算出手段により算出された前記頻度値、および、前記特性値算出手段により算出された前記特性値を用いて、前記輝度方向の距離に応じて前記特性値を加重平均することにより、前記入力画像をエッジ保存平滑化する加重積和手段として機能させるためのプログラムである。
【００２１】
本発明の一側面においては、入力画像の各画素を、その輝度値に基づいて、輝度値が取り得る値の範囲全体を輝度方向に複数に分割して得られる各部分領域の何れかに割り当て、各部分領域について、その部分領域に割り当てられた画素数を示す頻度値を算出する際に、前記入力画像の１つの画素が複数の部分領域に割り当てられ、それらの部分領域の前記頻度値が更新され、部分領域の特性を示す特性値が算出され、その算出された前記頻度値、および、算出された前記特性値を用いて、前記輝度方向の距離に応じて前記特性値が加重平均されることにより、前記入力画像がエッジ保存平滑化される。
【発明の効果】
【００２２】
本発明によれば、画像を処理することができる。特に、負荷の増大を抑制しながら画像信号処理の画質性能を向上させることができる。
【図面の簡単な説明】
【００２３】
【図１】バイラテラルフィルタの概要を説明する図である。
【図２】従来のバイラテラルフィルタのブロックヒストグラム算出部とブロック積分値算出部の主な構成例を示すブロック図である。
【図３】従来のバイラテラルフィルタの処理の様子を説明する図である。
【図４】従来のバイラテラルフィルタの処理の様子を説明する図である。
【図５】従来のバイラテラルフィルタの処理の様子を説明する図である。
【図６】本発明を適用したデジタルビデオカメラの主な構成例を示すブロック図である。
【図７】DSPの主な構成例を示すブロック図である。
【図８】ベイヤ配列を説明する図である。
【図９】階調補正処理部の主な構成例を示すブロック図である。
【図１０】輝度階調補正部の主な構成例を示すブロック図である。
【図１１】ブロックヒストグラム算出部とブロック積分値算出部の主な構成例を示すブロック図である。
【図１２】重みの例を説明する図である。
【図１３】重みの例を説明する図である。
【図１４】重み関数の例を説明する図である。
【図１５】誤差特性の違いを説明する図である。
【図１６】バイラテラルフィルタの処理の様子を説明する図である。
【図１７】加重積和部の主な構成例を示すブロック図である。
【図１８】画像処理の流れの例を説明するフローチャートである。
【図１９】階調補正処理の流れの例を説明するフローチャートである。
【図２０】階調補正処理の流れの例を説明する図１９に続くフローチャートである。
【図２１】ブロックヒストグラム算出のための画素処理の例を示すフローチャートである。
【図２２】ブロック積分値算出のための画素処理の例を示すフローチャートである。
【図２３】ブロック積分値算出のための画素処理の例を示すフローチャートである。
【図２４】ブロックヒストグラム算出部とブロック積分値算出部の主な構成例を示すブロック図である。
【図２５】ブロックヒストグラム算出のための画素処理の例を示すフローチャートである。
【図２６】ブロック積分値算出のための画素処理の例を示すフローチャートである。
【図２７】空間パターンに応じた重み関数の例を示す図である。
【図２８】輝度階調補正部の主な構成例を示すブロック図である。
【図２９】空間パターン解析部の主な構成例を示すブロック図である。
【図３０】信号強度の例を説明する図である。
【図３１】ブロックヒストグラム算出部の主な構成例を示すブロック図である。
【図３２】ブロック積分値算出部の主な構成例を示すブロック図である。
【図３３】階調補正処理の流れの例を説明するフローチャートである。
【図３４】階調補正処理の流れの例を説明する図３３に続くフローチャートである。
【図３５】空間パターン解析処理の流れの例を説明するフローチャートである。
【図３６】空間パターン判定処理の流れの例を説明するフローチャートである。
【図３７】ブロックヒストグラム算出のための画素処理の例を示すフローチャートである。
【図３８】ブロック積分値算出のための画素処理の例を示すフローチャートである。
【図３９】局所毎のヒストグラムを用いる例を説明する図である。
【図４０】ブロックヒストグラム算出部の主な構成例を示すブロック図である。
【図４１】ブロック積分値算出部の主な構成例を示すブロック図である。
【図４２】ブロックヒストグラム算出のための画素処理の例を示すフローチャートである。
【図４３】本発明を適用したパーソナルコンピュータの主な構成例を示すブロック図である。
【発明を実施するための形態】
【００２４】
以下、発明を実施するための形態（以下実施の形態とする）について説明する。なお、説明は以下の順序で行う。
１．第１の実施の形態（バイラテラルフィルタ）
２．第２の実施の形態（バイラテラルフィルタ）
３．第３の実施の形態（バイラテラルフィルタ）
４．第４の実施の形態（バイラテラルフィルタ）
５．第５の実施の形態（パーソナルコンピュータ）
【００２５】
＜１．第１の実施の形態＞
［バイラテラルフィルタの概要］
画像処理技術の１つとして、エッジ保存平滑化処理が知られている。エッジ保存平滑化処理とは、画像中の物体境界など顕著な輝度段差は残しつつ階調を平滑化する非線形フィルタ処理である。
【００２６】
例えば、図１Ａに示されるように１つの画像１に、輝度が強い（明るい）領域２と輝度が小さい（暗い）領域３が含まれるとする。このような画像１の点線上の画素値（輝度値）は、例えば、図１Ｂのグラフに示される曲線４のようになる。図１Ｂにおいて、横軸は画像１の水平方向の位置を示し、縦軸は各画素の画素値（輝度値）を示す。
【００２７】
図１Ｂにおいて曲線４に示されるように、図１Ａの点線上の画素の画素値は、領域２の部分（４Ａ）と領域３の部分（４Ｃ）との境界付近で大きく値が変化する（４Ｂ）。また、領域２の部分（４Ａ）と領域３の部分（４Ｃ）のそれぞれにおいて、例えばノイズ成分等により、画素値は微小に変化している。
【００２８】
エッジ保存平滑化処理は、このような輝度値の変化を示す曲線４の、変化が急峻な部分（４Ｂ）は残し、領域２の部分（４Ａ）と領域３の部分（４Ｃ）のノイズ等による微小な変化のみを除去する（低減させる）。つまり、このエッジ保存平滑化処理により、輝度値の変化は、図１Ｂに示される曲線４から図１Ｃに示される曲線５のように変化する。
【００２９】
エッジ保存平滑化処理は、視認性に影響する物体輪郭が保存されつつ微細な輝度変動が除去されるため、古くからノイズリダクション処理に用いられている。
【００３０】
また、エッジ保存平滑化処理は、物体内のテクスチャの微細な輝度変動と物体輪郭の顕著な輝度段差を分離できる性質を利用して、テクスチャに代表されるディテール成分を変化させることなく、それ以外の成分の輝度差を圧縮する階調補正処理にも用いられている。
【００３１】
このようなエッジ保存平滑化処理の中で、近年バイラテラルフィルタと呼ばれる技術がよく利用されるようになってきている。一般に、画像に対するバイラテラルフィルタＢＬＦ（ｐｃ）では、次式（１）に示されるように、空間方向の重み関数ω（ｐ−ｐｃ）および輝度値方向の重み関数φ（Ｉ（ｐ）−Ｉ（ｐｃ））で重み付けした画素位置ｐｃの周囲の画素の画素値Ｉ（ｐ）を加算する演算が行われる。
【００３２】
【数１】
2012058850.tif 000003
・・・（１）
【００３３】
なお、式（１）において、右辺の分母は、重み値の正規化係数を示している。非特許文献４には、このようなバイラテラルフィルタを用いた階調補正処理技術が開示されている。
【００３４】
式（１）に示されるように、バイラテラルフィルタでは、局所領域中の各画素ｐに対する重み付けが中心画素ｐｃの輝度値に依存して変わる。そのため、画素毎に重み値を算出し直す必要があるので、通常の線形なFIR（Finite Impulse Response）フィルタなどに比べて演算量がはるかに多い。非特許文献４および非特許文献６には、そのようなバイラテラルフィルタの欠点を克服するために、バイラテラルフィルタ計算を高速化する手法が開示されている。これらの手法では、画像の部分領域（ブロック）ごとに定義される、輝度の局所ヒストグラム（以下、ブロックヒストグラムと称する）を用いることで高速演算を行う。
【００３５】
図２Ａに、高速バイラテラルフィルタ処理の内部のブロックヒストグラム算出部の主な構成例を示す。図２Ａに示されるブロックヒストグラム算出部１０は、各ビンの、各画素の画素値が含まれる頻度を算出する処理部であり、ブロック選択部１１、カウンタ１２−１乃至カウンタ１２−Ｎ、並びに、ブロックヒストグラムメモリ１３を有する。
【００３６】
ブロック選択部１１は、供給された処理対象画素の輝度値L(nl)(p)と、処理対象画素の位置ｐとから、処理対象画素の属す輝度ブロックを特定し、各輝度ブロックに対応するカウンタ１２−１乃至カウンタ１２−Ｎのうち、特定された輝度ブロックに対応するカウンタの値を１だけ増加させる。
【００３７】
輝度ブロックとは、画像の各画素の位置および輝度値が取り得る値の範囲全体を、空間方向および輝度方向に複数に分割して得られる各部分領域のことを示す。例えば、輝度画像の各画素の位置が取り得る値の範囲が、幅方向にＷ個に分割され、高さ方向にＨ個に分割され、さらに、各画素の輝度値が取り得る値の範囲が、輝度方向にＤ個に分割されるとすると、輝度ブロック（部分領域）数Ｎは、Ｗ×Ｈ×Ｄ個となる。
【００３８】
この場合、ブロックヒストグラム算出部１０には、それらのＮ個の輝度ブロックのそれぞれに対応するＮ個のカウンタ１２−１乃至カウンタ１２−Ｎが設けられる。そして、ブロック選択部１１は、輝度ブロックが特定されると、その輝度ブロックに対応するカウンタの値をインクリメントさせる。
【００３９】
カウンタ１２−１乃至カウンタ１２−Ｎのそれぞれは、対応する輝度ブロックにおける画素の頻度値、つまり輝度ブロックに属する画素の数を示す値を保持し、ブロック選択部１１の指示に応じて保持している値をインクリメントする。また、カウンタ１２−１乃至カウンタ１２−Ｎのそれぞれは、１フレーム分の輝度画像の画素のカウントが終了すると、保持している値をブロックヒストグラムとして、ブロックヒストグラムメモリ１３に供給する。なお、以下、カウンタ１２−１乃至カウンタ１２−Ｎのそれぞれを、個々に区別する必要のない場合、単にカウンタ１２と称する。
【００４０】
図２Ｂに、バイラテラルフィルタ内部のブロック積分値算出部の主な構成例を示す。このブロック積分値は、前述の特性値に相当する。図２Ｂに示されるブロック積分値算出部２０は、各ビンの頻度に、各ビンの中央値を乗算した積分値を算出する処理部であり、ブロック選択部２１、積分器２２−１乃至積分器２２−Ｎ、並びに、ブロック積分値メモリ２３を有する。
【００４１】
ブロック選択部２１は、供給された処理対象画素の輝度値L(nl)(p)と、処理対象画素の位置ｐとから、処理対象画素の属する輝度ブロックを特定し、各輝度ブロックに対応する積分器２２−１乃至積分器２２−Ｎのうち、特定された輝度ブロックに対応する積分器に輝度値L(nl)(p)を供給する。
【００４２】
積分器２２−１乃至積分器２２−Ｎのそれぞれは、ブロック選択部２１から供給された輝度値L(nl)(p)を積分して、対応する輝度ブロックのブロック積分値を求める。また、積分器２２−１乃至積分器２２−Ｎのそれぞれは、１フレーム分の輝度画像の画素の画素値の和が求められ、ブロック積分値が求まると、ブロック積分値をブロック積分値メモリ２３に供給する。
【００４３】
積分器２２−１乃至積分器２２−Ｎのそれぞれには、加算部３１−１乃至加算部３１−Ｎのそれぞれと、レジスタ３２−１乃至レジスタ３２−Ｎのそれぞれとが設けられている。加算部３１−１乃至加算部３１−Ｎのそれぞれは、ブロック選択部２１から供給された輝度値L(nl)(p)を、レジスタ３２−１乃至レジスタ３２−Ｎのそれぞれに記録されている値に加算して、レジスタ３２−１乃至レジスタ３２−Ｎのそれぞれに記録させる。すなわち、レジスタ３２−１乃至レジスタ３２−Ｎのそれぞれには、供給された輝度値L(nl)(p)の総和が記録される。
【００４４】
レジスタ３２−１乃至レジスタ３２−Ｎのそれぞれは、加算部３１−１乃至加算部３１−Ｎのそれぞれから供給された値を記録するとともに、記録している値を加算部３１−１乃至加算部３１−Ｎのそれぞれと、ブロック積分値メモリ２３とに供給する。
【００４５】
なお、以下、積分器２２−１乃至積分器２２−Ｎのそれぞれを、個々に区別する必要のない場合、単に積分器２２と称する。また、以下、加算部３１−１乃至加算部３１−Ｎのそれぞれを個々に区別する必要のない場合、単に加算部３１と称し、レジスタ３２−１乃至レジスタ３２−Ｎのそれぞれを個々に区別する必要のない場合、単にレジスタ３２と称する。
【００４６】
同様の信号を間引き処理することによるバイラテラルフィルタの高速計算手法は、非特許文献７や、特許文献１や、特許文献２で提案されている。これらの処理では、画像の領域・レベルごとの信号の出現頻度（局所ヒストグラム）を用いることで、入力信号の分解能を低下させた間引き信号を作り、その間引き信号に対してフィルタカーネルを畳み込んでから拡大することで、バイラテラルフィルタ計算量を削減している。これらの手法では、間引き信号の空間分解能の低さや、ヒストグラムの分解能の低さ（ビン数の少なさ）が、処理コストを抑えるために重要である。
【００４７】
しかしながら、前述の手法には、処理コストを抑えるために局所ヒストグラムの分解能を低下させると、バイラテラルフィルタの計算精度が低下しやすくなる問題がある。特に、入力信号が滑らかなグラデーション信号の場合に精度の低下が発生しやすい。
【００４８】
例えば、図３Ａに示される同じ形状の入力信号（信号４１乃至信号４４）でも、そのレベルが異なることによって、フィルタ出力の特性が図３Ｂに示されるように変化する（信号５１乃至信号５４）。
【００４９】
これは、計算精度の低下によって、バイラテラルフィルタの特性が不安定になっていることを示している。この問題は、入力信号のレベルが、局所ヒストグラムにて単一のビンに集中した場合に、グラデーションの情報が失われることが原因で発生する。
【００５０】
例えば、図４Ａに示されるような、入力画像として輝度の変動が少なく、滑らかなグラデーションパターンが与えられた場合を考える。すると、図４Ｂに示されるように、ビンの範囲と入力輝度との関係により、局所ヒストグラムごとに計算結果が単一のビンに集中したり、複数のビンに分散したりする。その結果、図４Ｃのように、最終的なフィルタ結果が不均一になるという問題が発生する（不均一 ⇒ グラデーションの傾きが暴れる）。
【００５１】
また、前述の手法では、フィルタ計算のために、局所ヒストグラムの各ビンに対応する画素の輝度値の総和（以下、特性値）を用いる。特性値を効率的に計算する手法として、ビン毎にその度数とビン中央のレベルから特性値を求める手法が提案されている。しかしながら、この手法を使うと、特に平坦な入力画像に対して誤差が発生しやすくなるという問題がある。
【００５２】
今、ヒストグラムのあるビンの端に当たるレベルの入力信号（図５Ａ）を考える。この入力に対して、局所ヒストグラムが計算される。この段階で、ビンの中でのレベルの情報が失われる。そのため、局所ヒストグラムから特性値を求め、そこからフィルタ出力を計算した時に、ビンの中央の値が出力されるため、誤差が生じてしまう（図５Ｂ）。この誤差にはレベル依存性があり、ビンの中央のレベルでは誤差最小となり（図５Ｃおよび図５Ｄ）、ビンの端のレベルでは誤差最大となる。
【００５３】
この問題は、局所ヒストグラムの分解能（ビン数）を大きく設定することで軽減される。しかし、分解能によって計算精度を１bit分改良するには、２倍のビン数が必要となるため、計算量やメモリ量が膨大になってしまうという問題がある。
このような問題は、局所ヒストグラムの計算では、ビンの中でのレベルの情報が反映されないことによって発生する。そこで、局所ヒストグラムの計算を改良して、ビンの中でのレベルの情報を反映できるようにする。具体的には、ヒストグラムのカウントを複数のビンに対して行うようにする。
【００５４】
［デジタルビデオカメラの構成例］
図６は、本発明を適用したデジタルビデオカメラの一実施の形態を示すブロック図である。図６に示されるデジタルビデオカメラ１００は、被写体を撮像し、その被写体の画像を表示したり、画像データを記録したりする。
【００５５】
デジタルビデオカメラ１００は、レンズ１０１、絞り１０２、画像センサ１０３、相関２重サンプリング回路（CDS（Correlated Double Sampling circuit））１０４、およびA/D（Analog/Digital）コンバータ１０５を有する。また、デジタルビデオカメラ１００は、DSP（Digital Signal Processor）ブロック１０６、タイミングジェネレータ（TG（Timing Generator））１０７、LCD（Liquid Crystal Display）ドライバ１０８、およびLCD１０９を有する。さらに、デジタルビデオカメラ１００は、CODEC（coder/decoder）１１０、メモリ１１１、CPU（Central Processing Unit）１１２、入力デバイス１１３、およびバス１１４を有する。
【００５６】
なお、DSPブロック１０６は、信号処理用のプロセッサ（例えば、DSP）と画像データを保持するRAM（Random Access Memory）などのメモリなどにより構成されるブロックであり、プロセッサが所定のプログラムを実行することにより、後述する画像処理を行う。また、以下、DSPブロック１０６を、単にDSP１０６と称する。
【００５７】
レンズ１０１および絞り１０２などからなる光学系を通過した被写体からの入射光は、まず画像センサ１０３に到達する。画像センサ１０３は、例えば、CCD（Charge Coupled Device）やCMOS（Complementary Metal Oxide Semiconductor）イメージセンサ等、任意の撮像素子を有し、入射光を電気信号に光電変換する。
【００５８】
画像センサ１０３は、光電変換できるものであればどのようなものであってもよいが、よりダイナミックレンジが広く、飽和したり、ノイズを発生させたりすることなく、被写体の暗い部分から明るい部分までを撮像することができるものが望ましい。
【００５９】
画像センサ１０３から出力された電気信号は、相関２重サンプリング回路１０４によってノイズが除去され、A/Dコンバータ１０５によってデジタル化される。A/Dコンバータ１０５は、どのようなものであってもよいが、より多くの階調数のデジタルデータに変換できる方が望ましい。例えば、A/Dコンバータ１０５は、入力される電気信号を、通常のデジタルビデオカメラの階調数（例えば、１０乃至１２ビット程度のデータにより表現できる階調数）よりも多い階調数（例えば、１４乃至１６ビット程度のデータにより表現できる階調数）の画像データに変換するようにしてもよい。
【００６０】
A/Dコンバータ１０５によりデジタル化された画像データは、DSP１０６内のメモリに一時的に格納される。タイミングジェネレータ１０７は、一定のフレームレートにより画像データが取り込まれるように、相関２重サンプリング回路１０４、A/Dコンバータ１０５、および、DSP１０６により構成される信号処理系を制御する。すなわち、DSP１０６には、一定のフレームレートで画像データのストリームが供給される。
【００６１】
DSP１０６は、画像データのダイナミックレンジが、例えばLCD１０９が表示可能なダイナミックレンジになるように、後述する画像処理を画像データに施した後、画像処理を施した画像データを、必要に応じて、LCDドライバ１０８またはCODEC１１０に供給する。
【００６２】
LCDドライバ１０８は、DSP１０６から供給される画像データをアナログの画像信号に変換する。LCDドライバ１０８は、デジタルビデオカメラのファインダであるLCD１０９にアナログの画像信号を供給し、画像信号に基づく画像を表示させる。
【００６３】
CODEC１１０は、DSP１０６から供給される画像データを所定の方式により符号化し、符号化した画像データを、例えば、半導体、磁気記録媒体、光磁気記録媒体、または光記録媒体などの任意の記録媒体よりなるメモリ１１１に記録させる。
【００６４】
CPU１１２は、例えば、ユーザがシャッタボタン等の操作ボタンなどにより構成される入力デバイス１１３を操作することにより入力された指令などに基づいて、デジタルビデオカメラ１００の全体の処理を制御する。また、DSP１０６、タイミングジェネレータ１０７、CODEC１１０、メモリ１１１、LCD１０９、CPU１１２、および入力デバイス１１３は、バス１１４を介して相互に接続されている。
【００６５】
［DSPの構成例］
図７は、DSP１０６の内部のプロセッサ（演算ユニット）が、所定のプログラムを実行することにより実現される機能の構成の例を示すブロック図である。DSP１０６の内部のプロセッサが所定のプログラムを実行することにより、ホワイトバランス処理部１３１、デモザイク処理部１３２、階調補正処理部１３３、ガンマ補正処理部１３４、およびYC変換処理部１３５を含む機能が実現される。
【００６６】
ホワイトバランス処理部１３１は、A/Dコンバータ１０５によりA/D変換された、動画像などの画像データであるモザイク画像を取得する。モザイク画像は、Ｒ，Ｇ，Ｂのうちのいずれかの色成分に対応するデータが１つの画素に格納され、例えば図８に示す、ベイヤ配列と呼ばれる色配列に従って各画素が配置されている画像であり、RAWデータとも呼ばれている。
【００６７】
図８では、１つの正方形が１つの画素を表しており、正方形内の文字Ｒ，Ｇ，Ｂは、それぞれＲの画素，Ｇの画素，およびＢの画素を示している。そして、Ｇの画素が市松状に配置され、残りの部分にＲの画素およびＢの画素が一行ごとに交互に配置されている。
【００６８】
図７の説明に戻り、ホワイトバランス処理部１３１は、取得したモザイク画像の各画素の画素値に適切な係数をかけることにより、被写体の無彩色の部分の色バランスが実際に無彩色となるように、モザイク画像のホワイトバランスを調整する。ホワイトバランス処理部１３１は、ホワイトバランスを調整したモザイク画像をデモザイク処理部１３２に供給する。なお、以下、ホワイトバランスが調整されたモザイク画像をＭｗとする。
【００６９】
デモザイク処理部１３２は、ホワイトバランス処理部１３１から供給されたモザイク画像Ｍｗに対して、１つの画素がＲ，Ｇ，Ｂ成分を全て有するようにするデモザイク処理を施す。これにより、Ｒ，Ｇ，Ｂの３つの色成分にそれぞれ対応するＲ画像、Ｇ画像、Ｂ画像の３つの画像データが生成される。デモザイク処理部１３２は、生成したＲ画像、Ｇ画像、Ｂ画像の３つの画像データを階調補正処理部１３３に供給する。
【００７０】
なお、以下において、Ｒ画像、Ｇ画像、Ｂ画像の３つの画像データをまとめてRGB画像とも称する。また、以下において、モザイク画像の画素位置ｐにおける画素値をＭ(ｐ)とする。さらに、以下において、デモザイク処理が施された画像データの画素位置ｐにおける画素値を［Rw(p)，Gw(p)，Bw(p)］とする。ここで、Rw(p)はＲ成分の画素値であり、Gw(p)はＧ成分の画素値であり、Bw(p)はＢ成分の画素値である。
【００７１】
階調補正処理部１３３は、RGB画像に階調補正処理を施し、階調補正処理を施したRGB画像をガンマ補正処理部１３４に供給する。なお、以下において、階調補正処理が施された画像データの画素位置ｐにおける画素値を［Ru(p)，Gu(p)，Bu(p)］とする。ここで、Ru(p)はＲ成分の画素値であり、Gu(p)はＧ成分の画素値であり、Bu(p)はＢ成分の画素値である。
【００７２】
ガンマ補正処理部１３４は、階調変換されたRGB画像にガンマ補正を施す。ガンマ補正処理部１３４は、ガンマ補正を施したRGB画像をYC変換処理部１３５に供給する。なお、以下、ガンマ補正が施された画像データの画素位置ｐにおける画素値を［Ruγ(p)，Guγ(p)，Buγ(p)］とする。ここで、Ruγ(p)はＲ成分の画素値であり、Guγ(p)はＧ成分の画素値であり、Buγ(p)はＢ成分の画素値である。
【００７３】
YC変換処理部１３５は、ガンマ補正が施されたRGB画像に対して、YCマトリックス処理およびクロマ成分に対する帯域制限を行うことにより、輝度成分（Ｙ成分）により構成されるＹ画像、および、色差成分（CbまたはCr成分）により構成されるＣ画像を生成する。YC変換処理部１３５は、生成したＹ画像およびＣ画像を、必要に応じて、LCDドライバ１０８またはCODEC１１０に供給する。なお、以下、YC変換処理部１３５から出力される画像データの画素位置ｐにおける画素値を［Y(p)，C(p)］とする。ここで、Y(p)はＹ画像における輝度成分の値であり、C(p)はＣ画像における色差成分の値である。また、以下、Ｃ画像のCb成分をCb(p)と称し、Ｃ画像のCr成分をCr(p)と称する。
【００７４】
［階調補正処理部の構成例］
図９は、階調補正処理部１３３の機能の構成例を示すブロック図である。階調補正処理部１３３は、輝度算出部１５１、非線形変換部１５２、輝度階調補正部１５３、非線形変換部１５４−１乃至非線形変換部１５４−３、階調補正部１５５−１乃至階調補正部１５５−３、および非線形逆変換部１５６−１乃至非線形逆変換部１５６−３を有する。
【００７５】
輝度算出部１５１は、デモザイク処理部１３２から供給されたRGB画像の画素値Rw(p)，Gw(p)，Bw(p)から、その画素位置に対応する輝度成分の値（輝度値L(p)）を算出し、非線形変換部１５２に供給する。非線形変換部１５２は、輝度算出部１５１からの輝度値L(p)を非線形変換し、その結果として得られた輝度値L(nl)(p)を、輝度階調補正部１５３および階調補正部１５５−１乃至階調補正部１５５−３に供給する。
【００７６】
輝度階調補正部１５３は、非線形変換部１５２からの輝度値L(nl)(p)の階調を圧縮することで、輝度値L(nl)(p)の階調補正を行い、階調補正により得られた輝度値Lu(nl)(p)を階調補正部１５５−１乃至階調補正部１５５−３に供給する。
【００７７】
非線形変換部１５４−１乃至非線形変換部１５４−３のそれぞれは、デモザイク処理部１３２から供給されたRGB画像の画素値Rw(p)、Gw(p)、およびBw(p)のそれぞれを非線形変換する。また、非線形変換部１５４−１乃至非線形変換部１５４−３のそれぞれは、非線形変換により得られた画素値R(nl)(p)、G(nl)(p)、およびB(nl)(p)のそれぞれを、階調補正部１５５−１乃至階調補正部１５５−３に供給する。なお、以下において、非線形変換部１５４−１乃至非線形変換部１５４−３のそれぞれを個々に区別する必要のない場合、単に非線形変換部１５４と称する。
【００７８】
階調補正部１５５−１乃至階調補正部１５５−３のそれぞれは、非線形変換部１５２からの輝度値L(nl)(p)と、輝度階調補正部１５３からの輝度値Lu(nl)(p)とを用いて、非線形変換部１５４−１乃至非線形変換部１５４−３からの画素値R(nl)(p)、G(nl)(p)、およびB(nl)(p)のそれぞれを階調補正する。階調補正部１５５−１乃至階調補正部１５５−３のそれぞれは、階調補正により得られた画素値Ru(nl)(p)、Gu(nl)(p)、およびBu(nl)(p)のそれぞれを、非線形逆変換部１５６−１乃至非線形逆変換部１５６−３のそれぞれに供給する。
【００７９】
非線形逆変換部１５６−１乃至非線形逆変換部１５６−３のそれぞれは、階調補正部１５５−１乃至階調補正部１５５−３からの画素値Ru(nl)(p)、Gu(nl)(p)、およびBu(nl)(p)のそれぞれに、非線形変換部１５４による非線形変換の逆変換となる非線形逆変換を施す。非線形逆変換部１５６−１乃至非線形逆変換部１５６−３のそれぞれは、非線形逆変換により得られた画素値Ru(p)、Gu(p)、およびBu(p)のそれぞれを、ガンマ補正処理部１３４に供給する。
【００８０】
なお、以下において、階調補正部１５５−１乃至階調補正部１５５−３のそれぞれを個々に区別する必要のない場合、単に階調補正部１５５と称する。また、以下において、非線形逆変換部１５６−１乃至非線形逆変換部１５６−３のそれぞれを個々に区別する必要のない場合、単に非線形逆変換部１５６と称する。
【００８１】
［輝度階調補正部の構成例］
図１０は、図９の輝度階調補正部１５３の機能の構成の例を示すブロック図である。図１０に示されるように、輝度階調補正部１５３は、輝度域情報算出部１７１、輝度域情報メモリ１７２、ブロックヒストグラム算出部１７３、ブロックヒストグラムメモリ１７４、ブロック積分値算出部１７５、およびブロック積分値メモリ１７６を有する。また、輝度階調補正部１５３は、加重積和部１７７、トーンカーブ算出部１７８、トーンカーブメモリ１７９、マッピング部１８０、マッピング部１８１、およびコントラスト補正部１８２を有する。
【００８２】
輝度域情報算出部１７１、ブロックヒストグラム算出部１７３、およびブロック積分値算出部１７５は、RGB画像の広域的な情報を算出し、その情報を１フレームごとに更新する処理を行う。
【００８３】
すなわち、輝度域情報算出部１７１は、非線形変換部１５２から供給された輝度値L(nl)(p)からなる１フレーム分の画像（以下、輝度画像と称する）の画素の輝度値のヒストグラムにおける暗輝度側および明輝度側の裾野の輝度値である裾野値を求め、それらの裾野値を輝度域情報として輝度域情報メモリ１７２に格納する。輝度域情報メモリ１７２は、輝度域情報算出部１７１から供給された輝度域情報を一時的に記録し、トーンカーブ算出部１７８に供給する。
【００８４】
ブロックヒストグラム算出部１７３は、非線形変換部１５２から供給された輝度値L(nl)(p)からなる１フレーム分の輝度画像を、空間方向に複数のいくつかの空間ブロック（領域）に分割し、さらに空間ブロックを輝度方向に分割して輝度ブロックとする。
【００８５】
ここで、輝度ブロックは、空間ブロック内の画素のうち、輝度ブロックに対して予め定められた輝度範囲内の輝度値を有する画素からなる。したがって、例えば空間ブロックをＤ個の輝度ブロックに分割する場合、輝度値の取り得る範囲が予めＤ個の範囲に分割されており、空間ブロック内の画素は、その輝度値がＤ個の範囲のいずれの範囲内の値であるかによって、Ｄ個の輝度ブロックのうちのいずれかに分類される。
【００８６】
また、ブロックヒストグラム算出部１７３は、輝度画像を分割して得られる各輝度ブロックの画素の頻度値を求め、それらの頻度値をブロックヒストグラムとして、ブロックヒストグラムメモリ１７４に供給する。すなわち、ブロックヒストグラムは、各輝度ブロックに属す（分類された）画素数を示している。ブロックヒストグラムメモリ１７４は、ブロックヒストグラム算出部１７３から供給されたブロックヒストグラムを一時的に記録し、加重積和部１７７に供給する。
【００８７】
ブロック積分値算出部１７５は、非線形変換部１５２から供給された輝度値L(nl)(p)からなる１フレーム分の輝度画像から、各輝度ブロックについて、輝度ブロックに属す画素の輝度値の積分値（総和）を算出し、算出された積分値をブロック積分値としてブロック積分値メモリ１７６に供給する。ブロック積分値メモリ１７６は、ブロック積分値算出部１７５から供給されたブロック積分値を一時的に記録し、加重積和部１７７に供給する。
【００８８】
なお、以下において、輝度域情報、ブロックヒストグラム、およびブロック積分値を中間データとも称する。この中間データとしての輝度域情報、ブロックヒストグラム、およびブロック積分値は、輝度域情報メモリ１７２、ブロックヒストグラムメモリ１７４、およびブロック積分値メモリ１７６に、輝度画像（RGB画像）の１フレーム分の時間だけ保持されて、１フレームごとに更新されることになる。
【００８９】
また、中間データは、算出するのにほぼ１フレーム分の時間が必要とされるため、従来の技術では、実際に生成された中間データが利用されるのは、次のフレームの画像情報が入力されたときとなる。しかしながら、階調補正処理部１３３では、中間データを算出する処理と、中間データを利用してRGB画像の階調補正を行う処理とは並行して行われるので、動画像データについてもリアルタイムに処理を行うことが可能である。
【００９０】
加重積和部１７７は、非線形変換部１５２から供給された輝度値L(nl)(p)と、ブロックヒストグラムメモリ１７４からのブロックヒストグラム、およびブロック積分値メモリ１７６からのブロック積分値とから、輝度値L(nl)(p)からなる輝度画像のごく低周波成分からなる画像（以下、大局輝度画像と称する）の輝度値である大局輝度値Ll(nl)(p)を算出する。
【００９１】
すなわち、処理対象となっているフレームの時間的に１つ前のフレームの輝度画像（RGB画像）から求められた、ブロックヒストグラムおよびブロック積分値が用いられて、供給された輝度値L(nl)(p)の画素の大局輝度値Ll(nl)(p)が算出される。ここで、大局輝度値とは、いわばRGB画像上の画素が属す物体領域の平均輝度に相当する情報、つまりその画素が含まれる物体領域の平均的な明るさを示す輝度値である。
【００９２】
なお、以下において、処理の対象となっている画素、例えば、輝度階調補正部１５３に供給された輝度値L(nl)(p)の画素を、処理対象画素とも称する。
【００９３】
また、加重積和部１７７は、算出した大局輝度値Ll(nl)(p)を、トーンカーブ算出部１７８およびマッピング部１８０に供給する。
【００９４】
トーンカーブ算出部１７８は、輝度域情報メモリ１７２からの輝度域情報と、加重積和部１７７からの大局輝度値Ll(nl)(p)とから、輝度値の階調を圧縮するために適用されるトーンカーブの形状を算出し、その算出結果をトーンカーブメモリ１７９に供給する。トーンカーブメモリ１７９は、トーンカーブ算出部１７８からのトーンカーブを記録し、記録しているトーンカーブをマッピング部１８０、マッピング部１８１、およびコントラスト補正部１８２に供給する。
【００９５】
マッピング部１８０は、トーンカーブメモリ１７９に記録されているトーンカーブに基づいて、加重積和部１７７からの大局輝度値Ll(nl)(p)の階調を圧縮（補正）し、階調補正により得られた大局輝度値Lcl(nl)(p)をコントラスト補正部１８２に供給する。マッピング部１８１は、トーンカーブメモリ１７９に記録されているトーンカーブに基づいて、非線形変換部１５２から供給された輝度値L(nl)(p)の階調を圧縮（補正）し、階調補正により得られた輝度値Lc(nl)(p)をコントラスト補正部１８２に供給する。
【００９６】
コントラスト補正部１８２は、マッピング部１８０からの大局輝度値Lcl(nl)(p)、マッピング部１８１からの輝度値Lc(nl)(p)、およびトーンカーブメモリ１７９に記録されているトーンカーブに基づいて、階調が圧縮された輝度値Lc(nl)(p)からなる輝度画像のコントラストを補正する。また、コントラスト補正部１８２は、コントラストの補正された輝度値Lu(nl)(p)を階調補正部１５５に供給する。
【００９７】
［ブロックヒストグラム算出部の構成例］
図１１Ａは、図１０のブロックヒストグラム算出部１７３の機能の構成例を示す図である。図１１Ａに示されるブロックヒストグラム算出部１７３は、図２Ａのブロックヒストグラム算出部１０に対応する。ただし、図１１Ａの例の場合、ブロックヒストグラム算出部１７３は、局所ヒストグラムの計算を改良して、ビンの中でのレベルの情報を反映できるようにする。
【００９８】
より具体的には、ヒストグラムのカウントを複数のビンに対して行うようにする。そのために、ブロックヒストグラム算出部１７３は、カウントの単位を小数方向に拡張する。
【００９９】
ブロックヒストグラム算出部１７３は、重み算出部２０１、並びに、カウンタ２０２−１乃至カウンタ２０２−Ｎを有する。
【０１００】
重み算出部２０１は、非線形変換部１５２から供給された処理対象画素の輝度値L(nl)(p)と、処理対象画素の位置ｐとから、処理対象画素の属す輝度ブロックを特定するとともに、供給された輝度値に応じた重みを算出する。重み算出部２０１は、算出した重みを、各輝度ブロックに対応するカウンタ２０２−１乃至カウンタ２０２−Ｎのうち、特定された輝度ブロックに対応するカウンタに供給する。
【０１０１】
ここで、輝度画像が幅方向にＷ個、高さ方向にＨ個の空間ブロックに分割され、さらに各空間ブロックがＤ個の輝度ブロックに分割されて、輝度画像が合計Ｎ（＝Ｗ×Ｈ×Ｄ）個の輝度ブロックに分割されるとする。この場合、ブロックヒストグラム算出部１７３には、それらのＮ個の輝度ブロックのそれぞれに対応するＮ個のカウンタ２０２−１乃至カウンタ２０２−Ｎが設けられる。
【０１０２】
以下において、カウンタ２０２−１乃至カウンタ２０２−Ｎを互いに区別して説明する必要が無い場合、単にカウンタ２０２と称する。
【０１０３】
重み算出部２０１から重みを供給されたカウンタ２０２は、その重みを、保持している値に加算する。１フレーム分の重みのカウントが終了すると、カウンタ２０２は、保持している値（重み算出部２０１から供給された重みの総和）を、そのブロックのブロックヒストグラムとして、ブロックヒストグラムメモリ１７４に供給し、記憶させる。カウンタ２０２は、その後保持している値を初期化する。
【０１０４】
なお、重み算出部２０１は、算出した重みを、カウンタ２０２に供給するとともに、ブロック積分値算出部１７５にも供給する。
【０１０５】
［ブロック積分値算出部の構成例］
図１１Ｂは、図１０のブロック積分値算出部１７５の機能の構成例を示す図である。図１１Ｂに示されるブロック積分値算出部１７５は、図２Ｂのブロック積分値算出部２０に対応する。ただし、図１１Ｂの例の場合、ブロック積分値算出部１７５は、局所ヒストグラムの計算を改良して、ビン（輝度ブロック）の中でのレベルの情報を反映できるようにする。
【０１０６】
ブロック積分値算出部１７５は、重み乗算部２３１、並びに、積分器２３２−１乃至積分器２３２−Ｎを有する。以下において、積分器２３２−１乃至積分器２３２−Ｎを互いに区別して説明する必要が無い場合、単に積分器２３２と称する。
【０１０７】
重み乗算部２３１は、非線形変換部１５２から供給された処理対象画素の輝度値L(nl)(p)と、処理対象画素の位置ｐとから、処理対象画素の属する輝度ブロックを特定し、重み算出部２０１から供給された重みを入力信号L(nl)(p)に乗算し、その乗算結果を、各輝度ブロックに対応する積分器２３２−１乃至積分器２３２−Ｎのうち、特定された輝度ブロックに対応する積分器２３２に供給する。
【０１０８】
積分器２３２は、重み乗算部２３１から供給された乗算結果を、保持している値に加算する。このように積分器２３２は、乗算結果の和を１フレーム分算出すると、その乗算結果の和を、ブロック積分値としてブロック積分値メモリ１７６に供給し、記憶させる。積分器２３２は、その後保持している値を初期化する。
【０１０９】
積分器２３２−１乃至積分器２３２−Ｎのそれぞれは、加算部２４１−１乃至加算部２４１−Ｎのそれぞれと、レジスタ２４２−１乃至レジスタ２４２−Ｎのそれぞれとを有する。以下において、加算部２４１−１乃至加算部２４１−Ｎを互いに区別して説明する必要が無い場合、単に加算部２４１と称する。また、以下において、レジスタ２４２−１乃至レジスタ２４２−Ｎを互いに区別して説明する必要が無い場合、単にレジスタ２４２と称する。
【０１１０】
加算部２４１は、重み乗算部２３１から供給された乗算結果を、レジスタ２４２に記録されている値に加算し、その加算結果をレジスタ２４２に記憶させる。レジスタ２４２は、供給された乗算結果の総和を記憶する。レジスタ２４２は、加算部２４１から供給された値を記憶するとともに、記憶している値を加算部２４１や、ブロック積分値メモリ１７６に適宜供給する。
【０１１１】
なお、ブロック積分値算出部１７５の代わりに、図１１Ｃに示されるように、乗算部２５１を設けるようにしてもよい。乗算部２５１は、ブロックヒストグラムメモリ１７４に記憶されるブロックヒストグラムの頻度値（重みの和）に、ビン（輝度ブロック）の中央値を乗算し、その乗算結果をブロック積分値としてブロック積分値メモリ１７６に供給し、記憶させる。
【０１１２】
つまり、図１１Ｂの例の場合、特性値（ブロック積分値）は、輝度値の総和から求められる。これに対して、図１１Ｃの場合、特性値（ブロック積分値）は、ブロックヒストグラムの頻度値とビンの中央値から求められる。
【０１１３】
［重み関数］
以上のように、ヒストグラムのカウントを複数のビンに対して行うようにし、そのためにカウントの単位を小数方向に拡張する。例えば、図１２Ａに示されるように、ビン（輝度ブロック）Ａの中央値を１３とし、その隣のビンＢの中央値を１４とし、その隣のビンＣの中央値を１５とする。このような輝度ブロックにおいて、図２Ａのブロックヒストグラム算出部１０は、例えば図１２Ａに示されるように、輝度値が１３．５未満の場合ビンＡのみをカウントし、輝度値が１３．５以上１４．５未満の場合ビンＢのみをカウントし、輝度値が１４．５以上の場合ビンＣのみをカウントしていた。
【０１１４】
これに対して、図１１Ａのブロックヒストグラム算出部１７３は、カウントの単位を小数方向に１ビット拡張し、例えば図１２Ｂに示されるように、輝度値が１３．２５以上１３．７５未満の場合、つまり、ビンＡとビンＢの中間レベルの平坦な画像が入力された場合、両方のビンをカウントする。つまり、例えば図１２Ｃに示されるように、ビンＡを０．５カウントし、ビンＢを０．５カウントする。このようにすることにより、ブロックヒストグラム算出部１７３は、ビンのカウントの偏りを解消し、その結果として出力の誤差を減少させることができる。
【０１１５】
この拡張するビット数は、２ビット以上であってもよい。つまり、さらに拡張幅を増やし、ビン毎のカウント量（重み）を定めるための重み関数を定義するようにしてもよい。
【０１１６】
この重み関数の様子を図１３に示す。図１３Ａは、ブロックヒストグラム算出部１０によるカウントの様子を、重み関数として表したものである。図１３Ａに示されるように、この場合の各ビンの重み関数は、各ビンに相当する値の範囲全てが「１」でそれ以外が「０」となされている。
【０１１７】
これに対して、ブロックヒストグラム算出部１７３は、例えば図１３Ｂに示されるように、カウントの単位を小数方向に、図１２の例よりも多値に拡張し、重み関数を定義する。このとき、重み関数は、ある入力値について、すべてのビンの重みの総和が１．０となるように定義される。このようにすることにより、従来の場合（図１３Ａの例）と同様に、カウント値を統計量として扱うことができる。つまり、各ビンのカウント値は度数を表す。
【０１１８】
なお、ブロック積分値算出部１７５は、ブロックヒストグラム算出部１７３により算出された重みを乗算する。つまり、ブロックヒストグラム算出部１７３において定義される重み関数は、ブロック積分値算出部１７５にも適用される。
【０１１９】
この重み関数は任意である。図１４に、重み関数の例と、その場合の、入力がDC信号のときの誤差の分布を示す。
【０１２０】
例えば、グラフ２６１−１の曲線２６１Ａは、通常のヒストグラムを重み関数として示したものである。この場合の誤差の分布は、グラフ２６１−２の直線２６１Ｂのようになる。グラフ２６２−１の曲線２６２Ａは、重み関数をＳ字形状にした場合の例を示す。この場合の誤差の分布は、グラフ２６２−２の曲線２６２Ｂのようになる。グラフ２６３−１の曲線２６３Ａは、重み関数を直線（リニア）にした場合の例を示す。この場合の誤差の分布は、グラフ２６３−２の曲線２６３Ｂのようになる。グラフ２６４−１の曲線２６４Ａは、重み関数を逆Ｓ字形状にした場合の例を示す。この場合の誤差の分布は、グラフ２６４−２の曲線２６４Ｂのようになる。
【０１２１】
もちろん、重み関数はこれら以外の関数としてもよい。重み関数は、用途に応じて設定されるようにするのが望ましい。逆Ｓ字形状の重み関数を使うほど、DC信号の入力では誤差が減少するが、同時にヒストグラムの分布を平滑化する働きを持つことにより、バイラテラルフィルタのエッジ保存特性を悪化させる。そこで、例えば、DC信号の誤差が問題になる場合には逆Ｓ字の重み関数を使い、フィルタのエッジ保存の特性が重要な場合にはＳ字の重み関数を使うようにしてもよい。また、用途が特定できない場合や、実装の容易さが重要な場合、リニア特性の重み関数が望ましい。
【０１２２】
図１５は、ヒストグラム算出の方法の違いによる誤差特性の違いの例を示す。直線２７１は、通常手法（図２の例の場合）の誤差特性の例を示す。曲線２７２は、通常手法でビン数を２倍にした場合の誤差特性の例を示す。曲線２７３は、４ビットの小数精度で図１４に示される重み関数２の例を適用した場合の誤差特性の例を示す。
【０１２３】
図１５に示されるように、重み関数２を適用することで、ビン数を増やした場合と同程度の精度の改善効果が得られる。つまり、小数精度の４ビット分のメモリとリニア特性の重み関数の追加のみで、通常手法でビン数を２倍にした場合と同程度、精度が改善される。換言するに、通常手法のヒストグラムのビット精度が４ビット以上であれば、小数精度の手法を用いることにより、通常手法でビン数を２倍にする場合よりも計算量やメモリ量を低減させることができる。
【０１２４】
図１６に、小数精度を3bit追加したときのフィルタ出力を示す。この場合、精度が改善したことで、図１６Ａに示される図３Ａと同様の入力信号（信号４１乃至信号４４）に対して、図１６Ｂに示されるように、入力の輝度によらず安定したフィルタ出力（信号２８１乃至信号２８４）が得られる。
【０１２５】
［加重積和部の構成例］
図１７は、図１０の加重積和部１７７の機能の構成例を示す図である。図１７に示されるように、加重積和部１７７は、補間部２９１、補間部２９２、空間重み関数保持部２９３、積和部２９４、積和部２９５、輝度重み関数保持部２９６、および除算部２９７を有する。
【０１２６】
補間部２９１は、輝度画像上における非線形変換部１５２から供給された輝度値L(nl)(p)の画素、つまり処理対象画素の位置に対する、輝度ブロックの輝度範囲の中央値ごとの補間されたブロック積分値を求めて輝度積分値とし、積和部２９４に供給する。すなわち、輝度ブロック内の画素の取り得る輝度値の範囲の中央値をλとすると、補間部２９１は、処理対象画素の空間方向近傍の４×４個の空間ブロックから分割された各輝度ブロックのうち、中央値がλである１６個の輝度ブロックのブロック積分値のそれぞれに対して補間係数を乗算し、補間係数が乗算されたブロック積分値の和を求めることで、中央値λに対する輝度積分値を求める。
【０１２７】
換言すれば、補間部２９１は、処理対象画素近傍の輝度ブロックのブロック積分値を用いた補間処理を行うことにより、各中央値λに対する輝度積分値を求める。これにより、中央値λごとのＤ個の輝度積分値が求められることになる。ここで、各ブロック積分値に乗算される補間係数は、処理対象画素の位置と、その処理対象画素近傍の空間ブロックとの相対位置関係に基づいて、空間重み関数保持部２９３に保持されている空間重み関数ルックアップテーブルから読み出される。
【０１２８】
補間部２９２は、輝度画像上における非線形変換部１５２から供給された輝度値L(nl)(p)の画素、つまり処理対象画素の位置に対する、輝度ブロックの輝度範囲の中央値ごとの補間されたブロックヒストグラムを求めて輝度ヒストグラムとし、積和部２９５に供給する。すなわち、補間部２９２は、処理対象画素の空間方向近傍の４×４個の空間ブロックから分割された各輝度ブロックのうち、中央値がλである１６個の輝度ブロックのブロックヒストグラムのそれぞれに対して補間係数を乗算し、補間係数が乗算されたブロックヒストグラムの和を求めることで、中央値λに対する輝度ヒストグラムを求める。
【０１２９】
換言すれば、補間部２９２は、処理対象画素近傍の輝度ブロックのブロックヒストグラムを用いた補間処理を行うことにより、各中央値λに対する輝度ヒストグラムを求める。これにより、中央値λごとのＤ個の輝度ヒストグラムが求められることになる。ここで、各ブロックヒストグラムに乗算される補間係数は、処理対象画素の位置と、その処理対象画素近傍の空間ブロックとの相対位置関係に基づいて、空間重み関数保持部２９３に保持されている空間重み関数ルックアップテーブルから読み出される。
【０１３０】
積和部２９４は、補間部２９１から供給されたＤ個の輝度積分値に対して、輝度加重値を積和する計算を行い、積和された輝度積分値を除算部２９７に供給する。すなわち、輝度加重値の乗算された輝度積分値の和が求められる。ここで、輝度積分値に乗算される輝度加重値は、非線形変換部１５２から積和部２９４に供給された輝度値L(nl)(p)と、中央値λとに基づいて、輝度重み関数保持部２９６に保持されている輝度重み関数ルックアップテーブルの輝度重み関数から算出される。
【０１３１】
積和部２９５は、補間部２９２から供給されたＤ個の輝度ヒストグラムに対して、輝度加重値を積和する計算を行い、積和された輝度ヒストグラムを除算部２９７に供給する。すなわち、輝度加重値の乗算された輝度ヒストグラムの和が求められる。ここで、輝度ヒストグラムに乗算される輝度加重値は、非線形変換部１５２から積和部２９５に供給された輝度値L(nl)(p)と、中央値λとに基づいて、輝度重み関数保持部２９６に保持されている輝度重み関数ルックアップテーブルの輝度重み関数から算出される。
【０１３２】
除算部２９７は、積和部２９４からの輝度積和値を、積和部２９５からの輝度ヒストグラムで除算することにより、処理対象画素の大局輝度値Ll(nl)(p)を算出してトーンカーブ算出部１７８およびマッピング部１８０に供給する。
【０１３３】
［画像処理の流れ］
次に、図１８のフローチャートを参照して、DSP１０６により実行される画像処理について説明する。なお、この処理は、例えば、図６のデジタルビデオカメラ１００による撮影が開始され、A/Dコンバータ１０５からDSP１０６への画像データ（モザイク画像）のストリームの供給が開始されたときに開始される。また、DSP１０６に供給された画像データは、逐次、DSP１０６の図示せぬ内部のメモリに格納される。
【０１３４】
ステップＳ１０１において、ホワイトバランス処理部１３１は、モザイク画像を読み込む。具体的には、ホワイトバランス処理部１３１は、DSP１０６の図示せぬ内部のメモリに格納されている先頭のフレームのモザイク画像を読み込む。
【０１３５】
ステップＳ１０２において、ホワイトバランス処理部１３１は、取得したモザイク画像のホワイトバランスを調整し、デモザイク処理部１３２に供給する。
【０１３６】
ステップＳ１０３において、デモザイク処理部１３２は、デモザイク処理を行う。すなわち、デモザイク処理部１３２は、ホワイトバランス処理部１３１からのモザイク画像にデモザイク処理を施してRGB画像を生成し、階調補正処理部１３３に供給する。
【０１３７】
ステップＳ１０４において、階調補正処理部１３３は、階調補正処理を行い、デモザイク処理部１３２からのRGB画像の階調を補正する。そして、階調補正処理部１３３は、階調の補正されたRGB画像をガンマ補正処理部１３４に供給する。なお、階調補正処理の詳細は後述する。
【０１３８】
ステップＳ１０５において、ガンマ補正処理部１３４は、階調補正処理部１３３からのRGB画像にガンマ補正を施してYC変換処理部１３５に供給する。
【０１３９】
ステップＳ１０６において、YC変換処理部１３５は、YC変換処理を行う。例えば、YC変換処理部１３５は、ガンマ補正処理部１３４からのRGB画像に対してYCマトリックス処理およびクロマ成分に対する帯域制限を行うことにより、RGB画像からＹ画像およびＣ画像を生成する。
【０１４０】
そして、ステップＳ１０７において、YC変換処理部１３５は、Ｙ画像およびＣ画像を出力する。例えば、YC変換処理部１３５は、必要に応じてＹ画像およびＣ画像をLCDドライバ１０８またはCODEC１１０に出力する。
【０１４１】
ステップＳ１０８において、ホワイトバランス処理部１３１は、後続するフレームが存在するか否かを判定する。例えば、DSP１０６の図示せぬ内部のメモリに後続するフレームのモザイク画像が蓄積されている場合、後続フレームが存在すると判定される。
【０１４２】
ステップＳ１０８において、後続するフレームが存在すると判定された場合、処理はステップＳ１０１に戻り、処理対象となる次のフレームのモザイク画像が読み込まれる。これに対して、ステップＳ１０８において、後続するフレームが存在しないと判定された場合、画像処理は終了する。
【０１４３】
［階調補正処理の流れ］
次に、図１９および図２０のフローチャートを参照して、図１１のステップＳ１０４の処理に対応する階調補正処理について説明する。
【０１４４】
ステップＳ１２１において、加重積和部１７７およびトーンカーブ算出部１７８は、中間データを読み込む。すなわち、加重積和部１７７の補間部２９１は、ブロック積分値メモリ１７６から中間データとしてのブロック積分値を読み込み、加重積和部１７７の補間部２９２は、ブロックヒストグラムメモリ１７４から中間データとしてのブロックヒストグラムを読み込む。また、トーンカーブ算出部１７８は、輝度域情報メモリ１７２から中間データとしての輝度域情報を読み込む。
【０１４５】
ステップＳ１２２において、輝度域情報算出部１７１は、DSP１０６の図示せぬ内部のメモリからnoise Level(nl)およびsaturation Level(nl)を読み込む。
【０１４６】
ステップＳ１２３において、階調補正処理部１３３は、デモザイク処理部１３２から、RGB画像の処理対象画素の画素値を読み込む。すなわち、非線形変換部１５４−１乃至非線形変換部１５４−３は、処理対象画素のＲ成分の画素値Rw(p)、Ｇ成分の画素値Gw(p)、およびＢ成分の画素値Bw(p)を読み込み、輝度算出部１５１は、処理対象画素のＲ、Ｇ、およびＢの成分の画素値を読み込む。
【０１４７】
ステップＳ１２４において、輝度算出部１５１は、読み込んだ画素値に基づいて、処理対象画素の輝度値L(p)を算出し、非線形変換部１５２に供給する。例えば、輝度算出部１５１は、読み込んだＲ、Ｇ、およびＢの成分の画素値に所定の係数を乗算して線形和を求めて輝度値としたり、Ｒ、Ｇ、およびＢの成分の画素値のうちの最大値を輝度値としたりする。
【０１４８】
ステップＳ１２５において、非線形変換部１５２は、輝度算出部１５１からの輝度値L(p)を非線形変換し、変換により得られた輝度値L(nl)(p)を、輝度階調補正部１５３および階調補正部１５５に供給する。例えば、非線形変換部１５２は、１より小さい指数によるべき乗特性や対数特性など、上に凸の単調増加特性を有する関数を用いて輝度値L(p)を非線形変換する。
【０１４９】
ステップＳ１２６において、輝度階調補正部１５３および階調補正部１５５は、非線形変換部１５２から、処理対象画素の輝度値L(nl)(p)を読み込む。
【０１５０】
ステップＳ１２７において、輝度階調補正部１５３の輝度域情報算出部１７１は、輝度域情報算出のための画素処理を行う。輝度域情報算出のための画素処理において、これまでに供給された輝度画像の画素の輝度値と、非線形変換部１５２から読み込んだ輝度値L(nl)(p)とが比較され、ソーティングが行われる。
【０１５１】
ステップＳ１２８において、ブロックヒストグラム算出部１７３は、ブロックヒストグラム算出のための画素処理を行う。
【０１５２】
ステップＳ１２９において、ブロック積分値算出部１７５は、ブロック積分値算出のための画素処理を行う。
【０１５３】
ステップＳ１３０において、加重積和部１７７は、大局輝度値算出処理を行って、処理対象画素の大局輝度値Ll(nl)(p)を算出し、トーンカーブ算出部１７８およびマッピング部１８０に供給する。
【０１５４】
ステップＳ１３１において、トーンカーブ算出部１７８は、輝度域情報メモリ１７２から読み出した輝度域情報と、加重積和部１７７からの大局輝度値Ll(nl)(p)とから、トーンカーブを求める。
【０１５５】
ステップＳ１３２において、マッピング部１８０は、加重積和部１７７から供給された大局輝度値Ll(nl)(p)を、トーンカーブメモリ１７９に記録されているトーンカーブに基づいて補正し、コントラスト補正部１８２に供給する。すなわち、マッピング部１８０は、トーンカーブメモリ１７９に記録されているコントロールポイントを用いて、B-Spline補間処理によりトーンカーブを求め、求めたトーンカーブを用いて大局輝度値Ll(nl)(p)を大局輝度値Lcl(nl)(p)に変換することにより、大局輝度値Ll(nl)(p)の階調を補正する。
【０１５６】
ステップＳ１３３において、マッピング部１８１は、読み込んだ処理対象画素の輝度値L(nl)(p)を、トーンカーブメモリ１７９に記録されているトーンカーブに基づいて補正し、コントラスト補正部１８２に供給する。すなわち、マッピング部１８１は、トーンカーブメモリ１７９に記録されているコントロールポイントを用いて、B-Spline補間処理によりトーンカーブを求め、求めたトーンカーブを用いて輝度値L(nl)(p)を輝度値Lc(nl)(p)に変換することにより、輝度値L(nl)(p)の階調を補正する。
【０１５７】
ステップＳ１３４において、コントラスト補正部１８２は、コントラスト補正処理を行い、トーンカーブにより階調が補正され、コントラストが劣化した輝度値Lc(nl)(p)からなる輝度画像を元の画像と同程度のコントラストに補償する。コントラスト補正部１８２は、コントラスト補正された輝度値Lu(nl)(p)を階調補正部１５５に供給する。
【０１５８】
図２０のステップＳ１４１において、非線形変換部１５４は、読み込んだ処理対象画素の画素値を非線形変換し、階調補正部１５５に供給する。すなわち、非線形変換部１５４−１乃至非線形変換部１５４−３は、RGB画像の画素値Rw(p)、Gw(p)、およびBw(p)のそれぞれに対して、ステップＳ１４１の処理においてなされる非線形変換と同じ非線形変換を行う。
【０１５９】
ステップＳ１４２において、階調補正部１５５−１乃至階調補正部１５５−３は、非線形変換部１５２からの輝度値L(nl)(p)と、輝度階調補正部１５３からの輝度値Lu(nl)(p)とを用いて、非線形変換部１５４からの画素値を階調補正する。そして、階調補正部１５５は、階調補正された画素値を、非線形逆変換部１５６に供給する。
【０１６０】
例えば、階調補正部１５５は、輝度値L(nl)(p)と、階調補正された輝度値Lu(nl)(p)との比を各色の成分の画素値に乗算する。より具体的には、例えば、階調補正部１５５−１は、次式（２）を計算することにより、階調補正された画素値Ru(nl)(p)を求める。
【０１６１】
【数２】
2012058850.tif 000004
・・・（２）
【０１６２】
式（２）では、階調補正前後の輝度値の比率、つまり階調補正された輝度値Lu(nl)(p)を階調補正前の輝度値L(nl)(p)で除算した値が、非線形変換された画素値R(nl)(p)に対して乗算されている。階調補正部１５５−２および階調補正部１５５−３においても、上述した式（２）と同様の計算が行われ、画素値が階調補正される。
【０１６３】
なお、非線形変換部１５２および非線形変換部１５４において行われる非線形変換が、対数変換である場合には、式（３）に示す計算を行うことにより、画素値が階調補正されてもよい。
【０１６４】
【数３】
2012058850.tif 000005
・・・（３）
【０１６５】
式（３）では、階調補正された輝度値Lu(nl)(p)と、階調補正前の輝度値L(nl)(p)との差分値が、画素値R(nl)(p)に加算されて、階調補正された画素値R u(nl)(p)とされている。
【０１６６】
ステップＳ１４３において、非線形逆変換部１５６−１乃至非線形逆変換部１５６−３は、階調補正部１５５からの画素値に、非線形変換部１５４による非線形変換の逆変換となる非線形逆変換を施す。そして、ステップＳ１４４において、非線形逆変換部１５６−１乃至非線形逆変換部１５６−３は、非線形逆変換により得られた画素値Ru(p)、Gu(p)、およびBu(p)を、ガンマ補正処理部１３４に出力する。
【０１６７】
ステップＳ１４５において、階調補正処理部１３３は、処理対象となっているフレームのRGB画像上の全ての画素を処理したか否かを判定する。ステップＳ１４５において、まだ全ての画素を処理していない、つまり全ての画素が処理対象画素とされていないと判定された場合、処理はステップＳ１２３に戻り、上述した処理が繰り返される。
【０１６８】
これに対して、ステップＳ１４５において、全ての画素が処理されたと判定された場合、ステップＳ１４６において、輝度域情報算出部１７１（図１０）は、輝度域情報を求める。
【０１６９】
ステップＳ１４７において、ブロックヒストグラム算出部１７３は、ブロックヒストグラムを求める。すなわち、ブロックヒストグラム算出部１７３は、カウンタ２０２−１乃至カウンタ２０２−Ｎのそれぞれに保持されている値を、各輝度ブロックのブロックヒストグラムとしてブロックヒストグラムメモリ１７４に供給させ、記録させる。
【０１７０】
ステップＳ１４８において、ブロック積分値算出部１７５は、ブロック積分値を求め、階調補正処理は終了し、処理は図１８のステップＳ１０４に戻り、ステップＳ１０５に進む。すなわち、ブロック積分値算出部１７５は、レジスタ２４２−１乃至レジスタ２４２−Ｎのそれぞれに記録されている輝度値L(nl)(p)の総和を、ブロック積分値としてブロック積分値メモリ１７６に供給させ、記録させる。
【０１７１】
このように、階調補正処理においては、１フレーム分の輝度画像に基づいて、中間データが求められる。そして、中間データが求められると、中間データとしての輝度域情報、ブロックヒストグラム、およびブロック積分値が輝度域情報メモリ１７２、ブロックヒストグラムメモリ１７４、およびブロック積分値メモリ１７６に格納される。輝度階調補正部１５３では、現在処理しているフレームよりも時間的に１つ前のフレームから求められた中間データが用いられて処理対象画素の大局輝度値やトーンカーブが算出されるため（エッジ保存平滑化処理が行われるため）、処理対象の画像が動画像であっても、画像の全画素を２回スキャンすることなく、少ないワーキングメモリで、大きいオペレータサイズのエッジ保存平滑化処理を行うことができる。
【０１７２】
［ブロックヒストグラム算出のための画素処理の流れ］
次に、図２１のフローチャートを参照して、図１９のステップＳ１２８において実行されるブロックヒストグラム算出のための画素処理の流れの例を説明する。
【０１７３】
ブロックヒストグラム算出のための画素処理が開始されると、重み算出部２０１は、ステップＳ１６１において、処理対象画素の輝度値L(nl)(p)を読み込み、その輝度値に対応する輝度ブロックを特定する。ステップＳ１６２において、重み算出部２０１は、適用された重み関数に従って、輝度値に対応する各輝度ブロックの重みを特定する。
【０１７４】
ステップＳ１６３において、輝度値が対応する輝度ブロックのカウンタ２０２は、ステップＳ１６２において算出された重みを、自分自身が保持している値に加算する。
【０１７５】
ステップＳ１６３の処理を終了すると、カウンタ２０２は、ブロックヒストグラム算出のための画素処理を終了し、処理を図１９のステップＳ１２８に戻し、ステップＳ１２９以降の処理を実行させる。
【０１７６】
［ブロック積分値算出のための画素処理の流れ］
次に、図２２のフローチャートを参照して、図１９のステップＳ１２９において実行されるブロック積分値算出のための画素処理の流れの例を説明する。
【０１７７】
ブロック積分値算出のための画素処理が開始されると、重み乗算部２３１は、ステップＳ１８１において、処理対象画素の輝度値L(nl)(p)を読み込み、その輝度値に対応する輝度ブロックを特定する。ステップＳ１８２において、重み乗算部２３１は、重み算出部２０１から供給される、輝度値に対応する輝度ブロックの重みを読み込み、輝度値L(nl)(p)に乗算する。
【０１７８】
ステップＳ１８３において、輝度値が対応する輝度ブロックの積分器２３２は、ステップＳ１８２において算出された乗算結果を、自分自身が保持している値に加算する。
【０１７９】
ステップＳ１８３の処理を終了すると、積分器２３２は、ブロックヒストグラム算出のための画素処理を終了し、処理を図１９のステップＳ１２９に戻し、ステップＳ１３０以降の処理を実行させる。
【０１８０】
図１１Ｃの例の場合、ブロック積分値算出のための画素処理の流れは、図２３に示されるフローチャートのようになる。
【０１８１】
この場合、ブロック積分値算出のための画素処理が開始されると、乗算部２５１は、ステップＳ２０１において、ブロックヒストグラムメモリ１７４からブロックヒストグラムの値を取得し、ステップＳ２０２において、ヒストグラムのビン毎にビンの代表値を乗算してブロック積分値メモリ１７６に記録する。
【０１８２】
ステップＳ２０２の処理を終了すると、乗算部２５１は、ブロックヒストグラム算出のための画素処理を終了し、処理を図１９のステップＳ１２９に戻し、ステップＳ１３０以降の処理を実行させる。
【０１８３】
以上のように、各処理を実行することにより、DSP１０６は、負荷の増大を抑制しながらバイラテラルフィルタの計算精度を向上させることができる。これにより、例えばノイズリダクション（NR処理）や階調補正処理といった画像信号処理の画質性能を向上させることができる。つまり、DSP１０６は、負荷の増大を抑制しながら画像信号処理の画質性能を向上させることができる。
【０１８４】
＜２．第２の実施の形態＞
［バイラテラルフィルタの概要］
【０１８５】
第１の実施の形態において説明した手法を用いると、小数精度の演算ためにビット長が増加してしまう。そこで、間引き処理を併用することにより、ビット長を固定にするようにしてもよい。
【０１８６】
例えば、Ｎビットの小数精度を持たせる場合、間引き処理にてサンプル数を０．５Ｎ倍に間引くようにする（以下、この倍数の逆数を間引きレートと呼ぶ。間引かれるサンプルが増すほど、間引きレートは大きくなる）。このようにすると、度数の最大値がＮビット分だけ減少するため、小数精度でのＮビットの増分と相殺され、最終的なビット長は固定となる。
【０１８７】
この処理は、１回のサンプルから、サンプル点の周囲２Ｎ個のピクセルの重みの総和を推定することで、重みの値を整数化としているという解釈もできる。あるＮビット小数精度の重み値は、一度に２Ｎ個分カウントされることで整数精度になる。
【０１８８】
［ブロックヒストグラム算出部の構成］
図２４Ａは、その場合のブロックヒストグラム算出部１７３の主な構成例を示すブロック図である。
【０１８９】
図２４Ａの例の場合、ブロックヒストグラム算出部１７３は、図１１の例の場合の構成に加え、ローパスフィルタ３０１および間引き処理部３０２を有する。
【０１９０】
ローパスフィルタ３０１は、エイリアシングを防ぐため、入力の輝度値を平滑化する。間引き処理部３０２は、その平滑化された輝度値を間引いて、代表の輝度値を求める。重み算出部２０１は、間引き処理部３０２より出力される代表の輝度値について、重みを算出する。
【０１９１】
［ブロック積分値算出部の構成］
図２４Ｂは、その場合のブロック積分値算出部１７５の主な構成例を示すブロック図である。
【０１９２】
図２４Ｂの例の場合、ブロック積分値算出部１７５も、図１１の例の場合の構成に加え、ローパスフィルタ３０１および間引き処理部３０２を有する。つまり、ブロック積分値算出部１７５は、ローパスフィルタ３０１および間引き処理部３０２をブロックヒストグラム算出部１７３と共有する。
【０１９３】
重み乗算部２３１は、間引き処理部３０２より出力される代表の輝度値に、ブロックヒストグラム算出部１７３から供給される重みを乗算し、代表の輝度値に対応する輝度ブロックの積分器２３２に、その乗算結果を供給する。
【０１９４】
なお、この場合も、ブロック積分値算出部１７５の代わりに、図１１Ｃに示されるような乗算部２５１を適用するようにしてもよい。
【０１９５】
また、ブロック積分値算出部１７５が、ブロックヒストグラム算出部１７３のローパスフィルタ３０１および間引き処理部３０２とは別の、ローパスフィルタ３０１および間引き処理部３０２を有するようにしてもよい。
【０１９６】
［ブロックヒストグラム算出のための画素処理］
この場合の、ブロックヒストグラム算出のための画素処理の流れの例を、図２５のフローチャートを参照して説明する。
【０１９７】
ブロックヒストグラム算出のための画素処理が開始されると、ステップＳ３０１において、ローパスフィルタ３０１は、入力の輝度値を平滑化し、間引き処理部３０２は、その平滑化された輝度値を間引いて、処理対象の領域を代表する輝度値を算出する。
【０１９８】
ステップＳ３０２において、重み算出部２０１は、適用された重み関数に従って、代表の輝度値に対応する各輝度ブロックの重みを特定する。
【０１９９】
ステップＳ３０３において、輝度値が対応する輝度ブロックのカウンタ２０２は、ステップＳ３０２において算出された重みを、自分自身が保持している値に加算する。
【０２００】
ステップＳ３０３の処理を終了すると、カウンタ２０２は、ブロックヒストグラム算出のための画素処理を終了し、処理を図１９のステップＳ１２８に戻し、ステップＳ１２９以降の処理を実行させる。
【０２０１】
［ブロック積分値算出のための画素処理の流れ］
次に、図２６のフローチャートを参照して、図１９のステップＳ１２９において実行されるブロック積分値算出のための画素処理の流れの例を説明する。
【０２０２】
ブロック積分値算出のための画素処理が開始されると、ステップＳ３２１において、ローパスフィルタ３０１は、入力の輝度値を平滑化し、間引き処理部３０２は、その平滑化された輝度値を間引いて、処理対象の領域を代表する輝度値を算出する。重み乗算部２３１は、その輝度値を読み込む。
【０２０３】
ステップＳ３２２において、重み乗算部２３１は、重み算出部２０１から供給される、輝度値に対応する輝度ブロックの重みを読み込み、処理対象の領域を代表する輝度値に乗算する。
【０２０４】
ステップＳ３２３において、処理対象の領域を代表する輝度値が対応する輝度ブロックの積分器２３２は、ステップＳ３２２において算出された乗算結果を、自分自身が保持している値に加算する。
【０２０５】
ステップＳ３２３の処理を終了すると、積分器２３２は、ブロックヒストグラム算出のための画素処理を終了し、処理を図１９のステップＳ１２９に戻し、ステップＳ１３０以降の処理を実行させる。
【０２０６】
以上のように、各処理を実行することにより、DSP１０６は、ビット長を増大させずに、バイラテラルフィルタの計算精度を向上させることができる。これにより、例えばノイズリダクション（NR処理）や階調補正処理といった画像信号処理の画質性能を、より容易に向上させることができる。つまり、DSP１０６は、負荷の増大をさらに抑制しながら画像信号処理の画質性能を向上させることができる。
【０２０７】
＜３．第３の実施の形態＞
［バイラテラルフィルタの概要］
第２の実施の形態において上述したように輝度値を間引く方法では、サンプリングの間引きレートが大きくなるほど、細かい空間パターンに対するエッジ保存性能が低下する傾向がある。そこで、不要にエッジ保存性能を低下させないように、例えば図２７に示される表のように、入力画像に合わせて間引きレートと小数精度を設定するようにしてもよい。
【０２０８】
例えば、フィルタの処理に先立って画像を解析するようにし、図２７に示される表のように、画像に含まれる空間パターン（主な周波数成分）に応じて小数精度と間引きレートを決定するようにしてもよい。
【０２０９】
図２７の例においては、画像の空間パターンが３段階に分別される。画像に細かい空間パターンが多い場合（高周波成分が多い場合）、小数精度と間引きレートが小さな値に設定される（間引きレートが１とされ、小数精度が０ビットとされる）。また、画像に含まれる細かい空間パターンが中程度の場合（中程度の周波成分が多い場合）、小数精度と間引きレートが中程度の値に設定される（間引きレートが１／４とされ、小数精度が２ビットとされる）。さらに、画像に細かい空間パターンが少ない場合（低周波成分が多い場合）、小数精度と間引きレートが大きな値に設定される（間引きレートが１／１６とされ、小数精度が４ビットとされる）。
【０２１０】
［輝度階調補正部の構成例］
図２８は、この場合の輝度階調補正部１５３の主な構成例を示すブロック図である。図２８は、図１０に対応する。図２８の例の場合、輝度階調補正部１５３は、図１０の例の場合の構成に加え、空間パターン解析部４０１を有する。
【０２１１】
空間パターン解析部４０１は、空間パターンの細かさを判定する。この判定方法は任意であるが、例えば、空間パターン解析部４０１は、画像の各周波数帯域でのエネルギを求めることで、空間パターンの細かさを判定する。例えば、空間パターン解析部４０１は、図２７に示される表のような判定基準（判定ロジック）を有しており、非線形変換部１５２から供給される処理対象画素の輝度値L(nl)(p)を解析し、その基準に従って解析結果の判定を行い、エネルギが高周波成分に偏っているほど細かいパターンと判定し、逆に低周波成分に偏っているほど粗いパターンと判定する。
【０２１２】
空間パターン解析部４０１は、その判定結果をブロックヒストグラム算出部１７３およびブロック積分値算出部１７５に供給する。
【０２１３】
［空間パターン解析部の構成例］
図２９は、空間パターン解析部４０１の主な構成例を示すブロック図である。図２９に示されるように、空間パターン解析部４０１は、ローパスフィルタ４２１、ローパスフィルタ４２２、演算部４２３、演算部４２４、エネルギ計算部４２５、エネルギ計算部４２６、チューニングパラメータ提供部４２７、および判定処理部４２８を有する。
【０２１４】
ローパスフィルタ４２１およびローパスフィルタ４２２は、それぞれ、非線形変換部１５２から供給される処理対象画素の輝度値L(nl)(p)に対してローパスフィルタ処理を行い、比較的低域な周波数成分のみを通過させる。
【０２１５】
ローパスフィルタ４２１およびローパスフィルタ４２２は、互いに通過帯域が異なる。ローパスフィルタ４２２の方が、ローパスフィルタ４２１よりも通過帯域が広く、より高周波な成分も通過させることができる。
【０２１６】
以下においては、説明を簡略化するために、周波数成分を高周波成分、中周波成分、および低周波成分の３段階とし、ローパスフィルタ４２２が、中周波成分および低周波成分を通過させ、ローパスフィルタ４２１が、低周波成分のみを通過させるものとする。
【０２１７】
演算部４２３は、非線形変換部１５２から供給される処理対象画素の輝度値L(nl)(p)から、ローパスフィルタ４２１の出力LP0を減算し、差分値（ハイパス信号）HP0を生成する。ローパスフィルタ４２１の出力LP0が低周波成分のみを含むので、ハイパス信号HP0は高周波成分および中周波成分を含む。演算部４２３は、そのハイパス信号HP0をエネルギ計算部４２５に供給する。
【０２１８】
演算部４２４は、非線形変換部１５２から供給される処理対象画素の輝度値L(nl)(p)から、ローパスフィルタ４２２の出力LP1を減算し、差分値（ハイパス信号）HP1を生成する。ローパスフィルタ４２２の出力LP1が低周波成分および中周波成分を含むので、ハイパス信号HP1は高周波成分のみを含む。演算部４２４は、そのハイパス信号HP1をエネルギ計算部４２６に供給する。
【０２１９】
エネルギ計算部４２５は、供給されたハイパス信号HP0を、判定対象の領域内で二乗積分することで、ハイパス信号HP0のエネルギを算出する。エネルギ計算部４２５は、算出したエネルギE0を、判定処理部４２８に供給する。
【０２２０】
エネルギ計算部４２６は、供給されたハイパス信号HP1を、判定対象の領域内で二乗積分することで、ハイパス信号HP1のエネルギを算出する。エネルギ計算部４２６は、算出したエネルギE1を、判定処理部４２８に供給する。
【０２２１】
例えば、図３０に示されるように、非線形変換部１５２から供給される処理対象画素の輝度値L(nl)(p)の周波数特性（入力時の周波数特性）が、直線４３１のように、低周波成分から高周波成分までを含むとする。
【０２２２】
ローパスフィルタ４２１および演算部４２３の処理により、この入力信号から曲線４３２に示されるような周波数特性を有するハイパス信号HP0が得られる。同様に、ローパスフィルタ４２２および演算部４２４の処理により、この入力信号から曲線４３３に示されるような周波数特性を有するハイパス信号HP1が得られる。
【０２２３】
エネルギ計算部４２５は、曲線４３２の下の部分（斜線で示される部分）の面積に相当するエネルギ（信号強度E0）を算出する。エネルギ計算部４２６は、曲線４３３の下の部分（斜線で示される部分）の面積に相当するエネルギ（信号強度E1）を算出する。
【０２２４】
判定処理部４２８は、このエネルギの周波数分布の傾向に従って、空間パターンを判定する。例えば、図３０に示されるように、信号強度E1が大きい場合、判定処理部４２８は、高周波成分が多いと判定し、画像に細かい空間パターンが多く含まれると判定する。また、信号強度E1が小さく、信号強度E0が大きい場合、判定処理部４２８は、中周波成分が多いと判定し、画像に中程度の空間パターンが多く含まれると判定する。さらに、信号強度E0および信号強度E1がともに小さい場合、判定処理部４２８は、低周波成分が多いと判定し、画像に粗い空間パターンが多く含まれると判定する。
【０２２５】
チューニングパラメータ提供部４２７は、この信号強度が大きいか小さいかの判定基準となる閾値Th0および閾値Th1をチューニングパラメータとして予め保持しており、適宜、それらを判定処理部４２８に提供する。閾値Th0および閾値Th1は、予め定められていてもよいし、適宜更新可能としてもよい。
【０２２６】
判定処理部４２８は、チューニングパラメータ提供部４２７から提供される閾値Th0および閾値Th1を用いて、画像に含まれる空間パターンを判定すると、その判定結果をブロックヒストグラム算出部１７３およびブロック積分値算出部１７５に供給する。
【０２２７】
［ブロックヒストグラム算出部の構成例］
図３１は、この場合のブロックヒストグラム算出部１７３の主な構成例を示すブロック図である。
【０２２８】
図３１に示されるように、この場合、ブロックヒストグラム算出部１７３は、重み算出部２０１の前に、ローパスフィルタ４４１、間引き処理部４４２、ローパスフィルタ４４３、間引き処理部４４４、およびセレクタ４４５を有する。
【０２２９】
ローパスフィルタ４４１および間引き処理部４４２、並びに、ローパスフィルタ４４３および間引き処理部４４４は、それぞれ、第２の実施の形態において説明したローパスフィルタ３０１および間引き処理部３０２（図２４Ａ）と同様に、小数精度の演算によるビット長の増加分を吸収する（ビット長が増大しないようにする）ために、サンプル数を低減させる。
【０２３０】
つまり、ローパスフィルタ４４１およびローパスフィルタ４４３は、それぞれ、ローパスフィルタ３０１に対応し、ローパスフィルタ３０１と同様の処理を行う。間引き処理部４４２および間引き処理部４４４は、それぞれ、間引き処理部３０２に対応し、間引き処理部３０２と同様の処理を行う。
【０２３１】
ただし、ローパスフィルタ４４３および間引き処理部４４４のパスにおいては、ローパスフィルタ４４１および間引き処理部４４２のパスよりも、より多く間引きが行われる。つまり、間引きレートが高い。
【０２３２】
より具体的には、ローパスフィルタ４４３の方がローパスフィルタ４４１よりも通過帯域が狭く、間引き処理部４４４の方が間引き処理部４４２よりも間引きレートが高い。
【０２３３】
これらのパスに加え、間引きが行われないパスがセレクタ４４５に供給される。つまり、セレクタ４４５には、間引きが行われないパス、低いレートで間引きが行われるパス、および、高いレートで間引きが行われるパスの３本のパスが供給される。
【０２３４】
セレクタ４４５は、空間パターン解析部４０１から供給される空間パターン判定結果に基づいて、供給された３本のパスの中から１つを選択し、そのパスの輝度値を重み算出部２０１に供給する。重み算出部２０１は、図２４Ａの場合と同様に、供給された輝度値の重みの算出等を行う。ただし、この場合、重み算出部２０１は、図２７の表に示されるように、供給された輝度値の間引きレートに応じた小数精度で重みを算出する。
【０２３５】
つまり、セレクタ４４５には、互いに異なる間引きレートで輝度値を間引く複数のパス（間引きレート１の（間引きを行わない）パスを含んでもよい）で輝度値が供給されるが、このパス数および各パスの間引きレート（および重み関数の小数精度）は、図２７に示される表のように、空間パターン解析部４０１の空間パターンの分類数に対応して設定されている。
【０２３６】
したがって、例えば、空間パターン解析部４０１が空間パターンを４段階以上に分類する場合、ブロックヒストグラム算出部１７３も、間引きレートが互いに異なる４本以上のパスを有する。
【０２３７】
［ブロック積分値算出部の構成例］
図３２は、この場合のブロック積分値算出部１７５の主な構成例を示すブロック図である。
【０２３８】
図３２に示されるように、この場合、ブロック積分値算出部１７５は、重み乗算部２３１の前に、ローパスフィルタ４４１、間引き処理部４４２、ローパスフィルタ４４３、間引き処理部４４４、およびセレクタ４４５を有する。つまり、ブロック積分値算出部１７５は、ローパスフィルタ４４１、間引き処理部４４２、ローパスフィルタ４４３、間引き処理部４４４、およびセレクタ４４５を、ブロックヒストグラム算出部１７３と共有する。
【０２３９】
重み乗算部２３１は、セレクタ４４５により、空間パターン解析部４０１から供給される空間パターン判定結果に基づいて選択されたパスの輝度値に、重み算出部２０１において算出された重みを乗算する。
【０２４０】
つまり、ブロック積分値算出部１７５のパス数および各パスの間引きレート（および重み関数の小数精度）も、ブロックヒストグラム算出部１７３の場合と同様に、図２７に示される表のように、空間パターン解析部４０１の空間パターンの分類数に対応して設定されている。
【０２４１】
なお、ブロック積分値算出部１７５が、ブロックヒストグラム算出部１７３が有するものとは別に、ローパスフィルタ４４１、間引き処理部４４２、ローパスフィルタ４４３、間引き処理部４４４、およびセレクタ４４５を有するようにしてもよい。
【０２４２】
以上のようにすることにより、輝度階調補正部１５３は、入力画像の内容（空間パターン）に応じた間引きレートと小数精度を設定することができる。したがって、輝度階調補正部１５３は、ビンのカウントの精度の小数方向の拡張量をより適切にすることができ、不要なエッジ保存性能の低減を抑制することができる。
【０２４３】
つまり、DSP１０６は、負荷の増大を抑制しながらバイラテラルフィルタの計算精度を向上させることができる。これにより、例えばノイズリダクション（NR処理）や階調補正処理といった画像信号処理の画質性能を向上させることができる。
【０２４４】
［階調補正処理の流れ］
図３３および図３４のフローチャートを参照して、この場合の階調補正処理の流れの例を説明する。このフローチャートは、図１９および図２０のフローチャートに対応する。
【０２４５】
階調補正処理が開始されると、図３３のステップＳ４０１乃至ステップＳ４０７の各処理が、図１９のステップＳ１２１乃至ステップＳ１２７の各処理と同様に実行される。
【０２４６】
図３３のステップＳ４０８において、空間パターン解析部４０１は、入力画像の空間パターンを解析する。
【０２４７】
図３３のステップＳ４０９乃至ステップＳ４１５の各処理は、図１９のステップＳ１２８乃至ステップＳ１３４の各処理と同様に実行される。
【０２４８】
また、図３４のステップＳ４２１乃至ステップＳ４２８の各処理は、図２０のステップＳ１４１乃至ステップＳ１４８の各処理と同様に実行される。
【０２４９】
［空間パターン解析処理の流れ］
次に、図３３のステップＳ４０８において実行される空間パターン解析処理の流れの例を図３５のフローチャートを参照して説明する。
【０２５０】
空間パターン解析処理が開始されると、ステップＳ４４１において、ローパスフィルタ４２１は、タップ数が比較的大きいローパスフィルタ処理を行う。ステップＳ４４２において、演算部４２３は、入力と、ステップＳ４４１のフィルタ処理結果（LP0）の差分を算出する。ステップＳ４４３において、エネルギ計算部４２５は、ステップＳ４４２において算出された差分値（HP0）のエネルギ（信号強度E0）を算出する。
【０２５１】
ステップＳ４４４おいて、ローパスフィルタ４２２は、タップ数が比較的小さいローパスフィルタ処理を行う。ステップＳ４４５において、演算部４２４は、入力と、ステップＳ４４４のフィルタ処理結果（LP1）の差分を算出する。ステップＳ４４６において、エネルギ計算部４２６は、ステップＳ４４５において算出された差分値（HP1）のエネルギ（信号強度E1）を算出する。
【０２５２】
ステップＳ４４７において、判定処理部４２８は、チューニングパラメータ提供部４２７から供給される各ローパスフィルタ用の閾値（閾値Th0および閾値Th1）を取得する。ステップＳ４４８において、判定処理部４２８は、ステップＳ４４７において取得された閾値を用いて、ステップＳ４４３およびステップＳ４４５において算出されたエネルギから入力画像の空間パターンを判定する。
【０２５３】
ステップＳ４４８の処理を終了すると判定処理部４２８は、空間パターン判定処理を終了し、図３３のステップＳ４０８に処理を戻し、ステップＳ４０９以降の処理を実行させる。
【０２５４】
［空間パターン判定処理の流れ］
図３６のフローチャートを参照して、図３５のステップＳ４４８において実行される空間パターン判定処理の流れの例を説明する。
【０２５５】
空間パターン判定処理が開始されると、判定処理部４２８は、ステップＳ４６１において、信号強度E1が閾値Th1より大きいか否かを判定する。信号強度E1が閾値Th1より大きいと判定された場合、判定処理部４２８は、処理をステップＳ４６２に進め、空間パターンを”細かい”と判定する。
【０２５６】
また、ステップＳ４６１において、信号強度E1が閾値Th1より大きくないと判定された場合、判定処理部４２８は、処理をステップＳ４６３に進め、信号強度E0が閾値Th0より大きいか否かを判定する。信号強度E0が閾値Th0より大きいと判定された場合、判定処理部４２８は、処理をステップＳ４６４に進め、空間パターンを”中”と判定する。
【０２５７】
さらに、ステップＳ４６３において、信号強度E0が閾値Th0より大きくないと判定された場合、判定処理部４２８は、処理をステップＳ４６５に進め、空間パターンを”粗い”と判定する。
【０２５８】
ステップＳ４６２、ステップＳ４６４、若しくはステップＳ４６５の処理が終了すると判定処理部４２８は、空間パターン判定処理を終了し、処理を図３５のステップＳ４４８に戻し、空間パターン解析処理を終了させ、処理を図３３のステップＳ４０８に戻させ、ステップＳ４０９以降の処理を実行させる。
【０２５９】
［ブロックヒストグラム算出のための画素処理の流れ］
次に、図３７のフローチャートを参照して、図３３のステップＳ４０９において実行されるブロックヒストグラム算出のための画素処理の流れの例を説明する。
【０２６０】
ブロックヒストグラム算出のための画素処理が開始されると、セレクタ４４５は、ステップＳ４８１において、空間パターン判定処理による空間パターン判定結果に基づいて、その判定結果に対応する間引きレートや小数精度を決定する。
【０２６１】
ステップＳ４８２において、ローパスフィルタ４４１乃至セレクタ４４５は、ステップＳ４８１の処理により決定された間引きレートを用いて、空間パターン判定処理による空間パターン判定結果に対応する、処理対象の領域を代表する輝度値を計算する。例えば、上述したように、空間パターンの判定結果の各選択肢に対応する輝度値が算出され、その中から、空間パターン判定結果に対応するものが選択される。
【０２６２】
ステップＳ４８３において、重み算出部２０１は、ステップＳ４８１において決定された小数精度の設定を用いて、処理対象の領域を代表する輝度値に対応する輝度ブロック（ビン）の重みを特定する。
【０２６３】
ステップＳ４８４において、処理対象の領域を代表する輝度値に対応する輝度ブロックのカウンタ２０２は、自身が記憶する重みに、ステップＳ４８３において特定された重みを加算し、その加算結果を記憶する。
【０２６４】
ステップＳ４８４の処理が終了すると、カウンタ２０２は、ブロックヒストグラム算出のための画素処理を終了し、図３３のステップＳ４０９に処理を戻し、ステップＳ４１０以降の処理を実行させる。
【０２６５】
［ブロックヒストグラム算出のための画素処理の流れ］
次に、図３８のフローチャートを参照して、図３３のステップＳ４１０において実行されるブロック積分値算出のための画素処理の流れの例を説明する。
【０２６６】
ブロック積分値算出のための画素処理が開始されると、ステップＳ５０１において、重み乗算部２３１は、ローパスフィルタ４４１乃至セレクタ４４５により生成された、空間パターン判定処理による空間パターン判定結果に対応する、処理対象の領域を代表する輝度値を読み込む。
【０２６７】
ステップＳ５０２において、重み乗算部２３１は、重み算出部２０１により算出された、ステップＳ５０１において読み込んだ輝度値に対応する輝度ブロックの重みを読み込み、その重みをステップＳ５０１において読み込んだ輝度値に乗算する。
【０２６８】
ステップＳ５０３において、ステップＳ５０１において読み込んだ輝度値に対応する輝度ブロックの積分器２３２は、重み乗算部２３１において算出された乗算結果を、自身が記憶する乗算結果に加算し、その加算結果を記憶する。
【０２６９】
ステップＳ５０３の処理を終了すると、積分器２３２は、ブロック積分値算出のための画素処理を終了し、処理を図３３のステップＳ４１０に戻し、ステップＳ４１１以降の処理を実行させる。
【０２７０】
以上のように各処理を行うことにより、輝度階調補正部１５３は、ビンのカウントの精度の小数方向の拡張量をより適切にすることができ、不要なエッジ保存性能の低減を抑制することができる。つまり、DSP１０６は、負荷の増大を抑制しながらバイラテラルフィルタの計算精度を向上させることができる。これにより、例えばノイズリダクション（NR処理）や階調補正処理といった画像信号処理の画質性能を向上させることができる。
【０２７１】
＜４．第４の実施の形態＞
［バイラテラルフィルタの概要］
第３の実施の形態においては、サンプリングの間引きレートと小数精度を入力画像全体に対して一律に設定するように説明した。しかしながら、入力画像のなかで、空間パターンの細かさに大きなばらつきがある場合、画像のすべてに対して最適な設定をすることができないことが考えられる。そこで、画像の領域ごとにサンプリングの間引きレートと小数精度を変化させるようにしてもよい。
【０２７２】
例えば、図３９Ａに示されるように、１枚の画像６００に、空間パターンが”細かい”部分６０１と、空間パターンが”中”の部分６０２と、空間パターンが”粗い”部分６０３とが含まれる場合が考えられる。
【０２７３】
このような画像に対して、図３９Ｂに示されるように、所定の大きさの領域毎にヒストグラム（局所ヒストグラム）を求めるようにし、その局所ヒストグラム毎に、その内部のパターンの細かさに応じて、間引きレートと小数精度が設定されるようにする。
【０２７４】
図３９Ｂの例では、１つの点線の四角が、１つの局所ヒストグラムを計算する画像の領域を示している。局所ヒストグラムの計算精度の設定は、その局所ヒストグラムの計算領域の中で、第３の実施の形態において説明したように空間パターン判定をして決定される。
【０２７５】
この局所ヒストグラムを計算する単位となる領域の大きさは、任意であり、予め設定されていても良いし、画像に応じて設定されるようにしてもよい。また、各領域の形や大きさが互いに異なるようにしてもよい。一部の領域の形や大きさが、その他の領域の形や大きさと異なるようにしてもよい。
【０２７６】
次に各処理部の構成について説明する。
【０２７７】
この場合、輝度階調補正部１５３は、第３の実施の形態で説明した場合と同様に構成される（図２８）。また、空間パターン解析部４０１の内部も、第３の実施の形態で説明した場合と同様に構成される（図２９）。
【０２７８】
ただし、この場合、空間パターン解析部４０１は、所定の領域（図３９Ｂの例の場合、点線で区切られた領域）毎に解析し、空間パターン（局所別空間パターンと称する）を判定する。
【０２７９】
［ブロックヒストグラム算出部の構成］
図４０は、この場合のブロックヒストグラム算出部１７３の主な構成例を示すブロック図である。この場合、ブロックヒストグラム算出部１７３は、第３の実施の形態において説明した場合（図３１の例）と基本的に同様の構成を有するが、さらに、局所ヒストグラム特定部６１１および精度設定部６１２を有する。
【０２８０】
局所ヒストグラム特定部６１１は、空間パターン解析部４０１から供給される局所別空間パターン判定結果と、座標信号ｐから、現在計算中の局所ヒストグラムを特定する。精度設定部６１２は、局所ヒストグラム特定部６１１により特定された局所ヒストグラムに対応する間引きレートと小数精度（およびその小数精度に応じた重み関数）とをセレクタ４４５および重み算出部２０１に設定する。
【０２８１】
セレクタ４４５は、精度設定部６１２により設定された間引きレートのパスを選択し、そのパスの輝度値を重み算出部２０１に供給する。重み算出部２０１は、精度設定部６１２により設定された小数精度（およびその小数精度に応じた重み関数）で重みを算出する。
【０２８２】
［ブロック積分値算出部の構成］
図４１は、この場合のブロック積分値算出部１７５の主な構成例を示すブロック図である。この場合、第３の実施の形態において説明した場合（図３２の例）と同様に、ブロック積分値算出部１７５は、ローパスフィルタ４４１乃至セレクタ４４５をブロックヒストグラム算出部１７３と共有する。
【０２８３】
この場合、ブロック積分値算出部１７５は、さらに、局所ヒストグラム特定部６１１および精度設定部６１２も共有する。
【０２８４】
つまり、重み乗算部２３１は、空間パターン解析部４０１から供給される局所別空間パターン判定結果に対応する間引きレートで間引きが行われた輝度値に、重み算出部２０１により算出された重みを乗算する。
【０２８５】
以上のようにすることにより、領域毎に判定された空間パターンに応じて、サンプリングの間引きレートや小数精度が設定されるので、輝度階調補正部１５３は、ビンのカウントの精度の小数方向の拡張量をより画像の内容に応じた値にすることができ、不要なエッジ保存性能の低減を、より抑制することができる。
【０２８６】
つまい、DSP１０６は、負荷の増大を抑制しながらバイラテラルフィルタの計算精度を向上させることができる。これにより、例えばノイズリダクション（NR処理）や階調補正処理といった画像信号処理の画質性能を向上させることができる。
【０２８７】
次に各部により実行される処理の流れの例について説明する。上述したように、輝度階調補正部１５３は、第３の実施の形態の場合と同様の空間パターン解析部４０１を有し、第３の実施の形態の場合と同様の処理を行う。したがって、この場合も、輝度階調補正部１５３は、図３３および図３４のフローチャートを参照して説明した第３の実施の形態の場合と同様に階調補正処理を行う。
【０２８８】
また、空間パターン解析部４０１は、第３の実施の形態の場合と同様の構成を有し（図２９）、空間パターンの解析を部分領域毎に行うこと以外、第３の実施の形態の場合と同様の処理を行う。つまり、空間パターン解析部４０１は、図３５のフローチャートを参照して説明した第３の実施の形態の場合と同様に空間パターン解析処理を行う。
【０２８９】
［ブロックヒストグラム算出のための画素処理の流れ］
次に、図４２のフローチャートを参照して、図３３のステップＳ４０９において実行されるブロックヒストグラム算出のための画素処理の流れの例を説明する。
【０２９０】
ブロックヒストグラム算出のための画素処理が開始されると、局所ヒストグラム特定部６１１および精度設定部６１２は、ステップＳ６０１において、空間パターン判定処理が行われる領域毎に、その領域毎に算出される局所別空間パターン判定結果に基づいて、その判定結果に対応する間引きレートや小数精度を決定する。
【０２９１】
ステップＳ６０２において、ローパスフィルタ４４１乃至セレクタ４４５は、ステップＳ６０１の処理により決定された間引きレートを用いて、局所別空間パターン判定結果に対応する、処理対象の領域を代表する輝度値を計算する。例えば、上述したように、局所別空間パターンの判定結果の各選択肢に対応する輝度値が算出され、その中から、実際の局所別空間パターン判定結果に対応するものが選択される。
【０２９２】
ステップＳ６０３において、重み算出部２０１は、ステップＳ６０１において決定された小数精度の設定を用いて、処理対象の領域を代表する輝度値に対応する輝度ブロック（ビン）の重みを特定する。
【０２９３】
ステップＳ６０４において、処理対象の領域を代表する輝度値に対応する輝度ブロックのカウンタ２０２は、自身が記憶する重みに、ステップＳ６０３において特定された重みを加算し、その加算結果を記憶する。
【０２９４】
ステップＳ６０４の処理が終了すると、カウンタ２０２は、ブロックヒストグラム算出のための画素処理を終了し、図３３のステップＳ４０９に処理を戻し、ステップＳ４１０以降の処理を実行させる。
【０２９５】
なお、ブロック積分値算出部１７５は、図３８のフローチャートを参照して説明した第３の実施の形態の場合と同様に、ブロック積分値算出のための画素処理を実行することができる。
【０２９６】
以上のように各処理を実行することにより、領域毎に判定された空間パターンに応じて、サンプリングの間引きレートや小数精度が設定されるので、輝度階調補正部１５３は、ビンのカウントの精度の小数方向の拡張量をより画像の内容に応じた値にすることができ、不要なエッジ保存性能の低減を、より抑制することができる。
【０２９７】
つまり、DSP１０６は、負荷の増大を抑制しながらバイラテラルフィルタの計算精度を向上させることができる。これにより、例えばノイズリダクション（NR処理）や階調補正処理といった画像信号処理の画質性能を向上させることができる。
【０２９８】
なお、上述した第２の実施の形態乃至第４の実施の形態においても、ブロック積分値算出部１７５の代わりに、図１１Ｃに示されるような乗算部２５１を用いた構成とするようにしてもよい。
【０２９９】
＜５．第５の実施の形態＞
［パーソナルコンピュータ］
上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。この場合、例えば、図４３に示されるようなパーソナルコンピュータとして構成されるようにしてもよい。
【０３００】
図４３において、パーソナルコンピュータ７００のCPU（Central Processing Unit）７０１は、ROM（Read Only Memory）７０２に記憶されているプログラム、または記憶部７１３からRAM（Random Access Memory）７０３にロードされたプログラムに従って各種の処理を実行する。RAM７０３にはまた、CPU７０１が各種の処理を実行する上において必要なデータなども適宜記憶される。
【０３０１】
CPU７０１、ROM７０２、およびRAM７０３は、バス７０４を介して相互に接続されている。このバス７０４にはまた、入出力インタフェース７１０も接続されている。
【０３０２】
入出力インタフェース７１０には、キーボード、マウスなどよりなる入力部７１１、CRT（Cathode Ray Tube）やLCD（Liquid Crystal Display）などよりなるディスプレイ、並びにスピーカなどよりなる出力部７１２、ハードディスクなどより構成される記憶部７１３、モデムなどより構成される通信部７１４が接続されている。通信部７１４は、インターネットを含むネットワークを介しての通信処理を行う。
【０３０３】
入出力インタフェース７１０にはまた、必要に応じてドライブ７１５が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア７２１が適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部７１３にインストールされる。
【０３０４】
上述した一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、ネットワークや記録媒体からインストールされる。
【０３０５】
この記録媒体は、例えば、図４３に示されるように、装置本体とは別に、ユーザにプログラムを配信するために配布される、プログラムが記録されている磁気ディスク（フレキシブルディスクを含む）、光ディスク（CD-ROM（Compact Disc - Read Only Memory）,DVD（Digital Versatile Disc）を含む）、光磁気ディスク（MD（Mini Disc）を含む）、若しくは半導体メモリなどよりなるリムーバブルメディア７２１により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに配信される、プログラムが記録されているROM７０２や、記憶部７１３に含まれるハードディスクなどで構成される。
【０３０６】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【０３０７】
また、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０３０８】
また、本明細書において、システムとは、複数のデバイス（装置）により構成される装置全体を表すものである。
【０３０９】
また、以上において、１つの装置（または処理部）として説明した構成を分割し、複数の装置（または処理部）として構成するようにしてもよい。逆に、以上において複数の装置（または処理部）として説明した構成をまとめて１つの装置（または処理部）として構成されるようにしてもよい。また、各装置（または各処理部）の構成に上述した以外の構成を付加するようにしてももちろんよい。さらに、システム全体としての構成や動作が実質的に同じであれば、ある装置（または処理部）の構成の一部を他の装置（または他の処理部）の構成に含めるようにしてもよい。つまり、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【符号の説明】
【０３１０】
１００  デジタルビデオカメラ，  １０６  DSP，  １３３  階調補正処理部，  １５３  輝度階調補正部，  １７３  ブロックヒストグラム算出部，  １７５  ブロック積分値算出部，  ２０１  重み算出部，  ２３１  重み乗算部，  ３０１  ローパスフィルタ，  ３０２  間引き処理部，  ４０１  空間パターン解析部，  ４２１  ローパスフィルタ，  ４２２  ローパスフィルタ，  ４２３  演算部，  ４２４  演算部，  ４２５  エネルギ計算部，  ４２６  エネルギ計算部，  ４２７  チューニングパラメータ提供部，  ４２８  判定処理部，  ４４１  ローパスフィルタ，  ４４２  間引き処理部，  ４４３  ローパスフィルタ，  ４４４  間引き処理部，  ４４５  セレクタ，  ６１１  局所ヒストグラム特定部，  ６１２  精度設定部
【図１】
2012058850.tif 000006
【図２】
2012058850.tif 000007
【図３】
2012058850.tif 000008
【図４】
2012058850.tif 000009
【図５】
2012058850.tif 000010
【図６】
2012058850.tif 000011
【図７】
2012058850.tif 000012
【図８】
2012058850.tif 000013
【図９】
2012058850.tif 000014
【図１０】
2012058850.tif 000015
【図１１】
2012058850.tif 000016
【図１２】
2012058850.tif 000017
【図１３】
2012058850.tif 000018
【図１４】
2012058850.tif 000019
【図１５】
2012058850.tif 000020
【図１６】
2012058850.tif 000021
【図１７】
2012058850.tif 000022
【図１８】
2012058850.tif 000023
【図１９】
2012058850.tif 000024
【図２０】
2012058850.tif 000025
【図２１】
2012058850.tif 000026
【図２２】
2012058850.tif 000027
【図２３】
2012058850.tif 000028
【図２４】
2012058850.tif 000029
【図２５】
2012058850.tif 000030
【図２６】
2012058850.tif 000031
【図２７】
2012058850.tif 000032
【図２８】
2012058850.tif 000033
【図２９】
2012058850.tif 000034
【図３０】
2012058850.tif 000035
【図３１】
2012058850.tif 000036
【図３２】
2012058850.tif 000037
【図３３】
2012058850.tif 000038
【図３４】
2012058850.tif 000039
【図３５】
2012058850.tif 000040
【図３６】
2012058850.tif 000041
【図３７】
2012058850.tif 000042
【図３８】
2012058850.tif 000043
【図３９】
2012058850.tif 000044
【図４０】
2012058850.tif 000045
【図４１】
2012058850.tif 000046
【図４２】
2012058850.tif 000047
【図４３】
2012058850.tif 000048