(58)【調査した分野】(Int.Cl.,DB名)
前記累積ヒストグラムが、前記入力信号の標本の第1階調値と、前記入力信号に含まれる当該第1階調値未満の値に係る標本の累積数との関係を示す累積ヒストグラムである
請求項1に記載の階調変換装置。
【発明の概要】
【発明が解決しようとする課題】
【0004】
ヒストグラム平坦化方式によれば、繰り返し演算を行うことなく、入力信号の階調を変換することができる。しかしながら、入力信号によっては、出力信号に使用されない階調値が含まれ、階調値を有効に活用することができない場合がある。
他方、Lloyd−Max量子化によれば、最適化演算により、全ての階調値が有効に活用されるように入力信号の階調が変換される。しかしながら、Lloyd−Max量子化は、最適化演算のために繰り返し演算を行う必要があるため、演算コストが高い。
本発明の目的は、上述した課題を解決する階調変換装置およびプログラムを提供することにある。
【課題を解決するための手段】
【0005】
本発明の第1の態様によれば、階調変換装置は、第1階調数で量子化された入力信号に含まれる標本の第1階調値とその累積数との関係を示す累積ヒストグラムを特定するヒストグラム特定部と、前記累積ヒストグラム上の点(x、y)と点(Ay/S、y)とを所定の比で内分する点を通る内分関数を求める内分関数特定部と、累積数の最大値を第2階調数に等分する各累積数を前記内分関数に代入して得られる各第1階調値と、当該第1階調値に対応する第2階調値との関係を示す変換関数を特定する変換関数特定部と、前記変換関数に基づいて、前記入力信号の各標本の第1階調値を第2階調値に変換することで、前記第2階調数で量子化された出力信号を生成する階調変換部とを備え、前記xが前記累積ヒストグラムにおける前記第1階調値であり、前記yが前記累積ヒストグラムにおける前記累積数であり、前記Aが第1階調数であり、前記Sが前記入力画像の標本数である。
【0006】
本発明の第2の態様によれば、第1の態様に係る階調変換装置は、前記累積ヒストグラムが、前記入力信号の標本の第1階調値と、前記入力信号に含まれる当該第1階調値未満の値に係る標本の累積数との関係を示す累積ヒストグラムである。
【0007】
本発明の第3の態様によれば、第1または第2の態様に係る階調変換装置は、前記第2階調数が、前記第1階調数より小さい。
【0008】
本発明の第4の態様によれば、第1から第3の何れかの態様に係る階調変換装置は、前記内分関数が、前記点(x、y)と前記点(Ay/S、y)とを第1階調値の軸において所定の比で内分する関数である。
【0009】
本発明の第5の態様によれば、第1から第4の何れかの態様に係る階調変換装置は、前記内分関数が、前記点(x、y)と前記点(Ay/S、y)とを、第1階調値の軸においてt:1−tに内分する点を通る関数であって、前記tが、0より大きく、かつ前記第1階調数と前記第2階調数の差を前記第1階調数で除算した値以下の値である。
【0010】
本発明の第6の態様によれば、プログラムは、コンピュータを、第1階調数で量子化された入力信号に含まれる標本の第1階調値とその累積数との関係を示す累積ヒストグラムを特定するヒストグラム特定部、前記累積ヒストグラム上の点(x、y)と点(Ay/S、y)とを所定の比で内分する点を通る内分関数を求める内分関数特定部、累積数の最大値を第2階調数に等分する各累積数を前記内分関数に代入して得られる各第1階調値と、当該第1階調値に対応する第2階調値との関係を示す変換関数を特定する変換関数特定部、前記変換関数に基づいて、前記入力信号の各標本の第1階調値を第2階調値に変換することで、前記第2階調数で量子化された出力信号を生成する階調変換部として機能させ、前記xが前記累積ヒストグラムにおける前記第1階調値であり、前記yが前記累積ヒストグラムにおける前記累積数であり、前記Aが第1階調数であり、前記Sが前記入力画像の標本数である。
【発明の効果】
【0011】
上記態様のうち少なくとも1つの態様によれば、階調変換装置は、累積ヒストグラムと所定の一次関数とを内分する内分関数から導かれる変換関数に基づいて入力信号の階調を変換する。これにより、階調変換装置は、繰り返し演算を行うことなく、かつ階調値が有効に活用されるように入力信号の階調を変換することができる。
【発明を実施するための形態】
【0013】
以下、図面を参照しながら実施形態について詳しく説明する。
図1は、一実施形態による階調変換装置の構成を示す概略ブロック図である。
階調変換装置1は、第1階調数で量子化された入力画像を第2階調数で量子化された出力画像に変換する装置である。なお、第2階調数は、第1階調数より小さい。入力画像は、入力信号の一例である。出力画像は、出力信号の一例である。以下、入力画像に含まれる画素の階調値、すなわち階調変換前の階調値を、第1階調値とよぶ。また出力画像に含まれる画素の階調値、すなわち階調変換後の階調値を、第2階調値とよぶ。なお、ビット深度をDとおくと、階調数は2
Dで表される。
【0014】
階調変換装置1は、信号入力部11、ヒストグラム特定部12、一次関数特定部13、内分関数特定部14、変換関数特定部15、階調変換部16、信号出力部17を備える。
信号入力部11は、入力画像の入力を受け付ける。
【0015】
ヒストグラム特定部12は、入力画像に含まれる画素(標本)の第1階調値とその累積数との関係を示す累積ヒストグラムを特定する。具体的には、ヒストグラム特定部12は、以下の手順で累積ヒストグラムを特定する。まずヒストグラム特定部12は、入力画像における各第1階調値の出現頻度を算出する。次に、ヒストグラム特定部12は、算出した出現頻度を積分することにより、累積ヒストグラムを生成する。つまり、当該累積ヒストグラムは、第1階調値の昇順に、入力信号に含まれる当該第1階調値未満の値に係る標本の累積数を並べた累積ヒストグラムである。なお、当該累積ヒストグラムにおいて、第1階調値の最小値は0であり、対応する累積数は0となる。また、当該累積ヒストグラムにおいて、第1階調値の最大値は第1階調数であり、対応する累積数は入力信号の総画素数となる。
なお、ヒストグラム特定部12が特定する累積ヒストグラムa(x−1)は、以下の式(1)により表される。
【0017】
ここで、I(s)は、入力信号のs番目の画素の値を示す。sは、画素位置を示すインデックスであり、0以上かつ総画素数S未満の整数である。xは、第1階調値を示し、0以上かつ第1階調数A以下の整数である。また、|・|は、集合の要素数を示す。なお、ヒストグラム特定部12が特定する累積ヒストグラムは、特定の第1階調値以下の画素の累積数を示す累積ヒストグラムを、1つ右へ(正数方向へ)シフトした関数と等価である。
【0018】
一次関数特定部13は、入力画像または累積ヒストグラムに基づいて、以下の式(2)により表される一次関数を特定する。
【0020】
ここで、Sは、入力信号の総画素数を示す。Aは、第1階調数を示す。xは、第1階調値を示し、0以上かつ第1階調数A未満の数である。なお、当該一次関数は、階調値の最小値および累積数の最小値の組と第1階調値の最大値+1および累積数の最大値の組とを通る一次関数である。当該一次関数は、点(Ay/S、y)を通る関数である。ここで、yは、累積ヒストグラムにおける累積数である。
【0021】
内分関数特定部14は、ヒストグラム特定部12が特定した累積ヒストグラム上の点(x、y)と、一次関数特定部13が特定した一次関数上の点(Ay/S、y)とを所定の比(例えば、(1−t):t。tは0以上1以下の値)で内分する点を通る内分関数を特定する。具体的には、内分関数特定部14は、以下の手順で内分関数を特定する。まず内分関数特定部14は、累積ヒストグラム上の各点における累積数yを特定する。次に、内分関数特定部14は、各累積数yを一次関数b(x)に代入することで、各累積数yに対応する一次関数上の点(Ay/S、y)を特定する。このとき特定される点(Ay/S、y)に係る第1階調値Ay/Sは、必ずしも整数値とは限らない。次に、内分関数特定部14は、累積ヒストグラム上の点(x、y)と一次関数上の点(Ay/S、y)について、同じ累積数に係る点どうしを、所定の比で内分する内分点を特定する。そして内分関数特定部14は、特定した内分点を通る関数を推定する。内分点を通る関数は、各点どうしを線分で繋いだものでも良いし、カーブフィッティングにより求めた曲線関数であっても良い。
例えば、内分関数特定部14が特定する内分関数c(x)のうち、累積ヒストグラムの傾きが0となる区間以外の区間は、以下の式(3)により求めることができる。
【0023】
ここで、a
−1(y)、b
−1(y)、およびc
−1(y)は、それぞれ累積ヒストグラムa(x)の逆関数、一次関数b(x)の逆関数、および内分関数c(x)の逆関数を示す。yは画素の累積数を示す。tは、内分比を示す。
【0024】
変換関数特定部15は、内分関数に基づいて、第1の階調値を第2の階調値に変換するための変換関数を特定する。具体的には、変換関数特定部15は、以下の手順で変換関数を特定する。まず変換関数特定部15は、入力画像の総画素数を第2階調数に等分する画素数(累積数)を特定する。次に変換関数特定部15は、特定した画素数を内分関数に代入することで、各画素数に対応する内分関数上の点を特定する。このとき特定された点に係る第1階調値は、必ずしも整数値とは限らない。
なお、変換関数特定部15が特定する変換関数h(x)は、以下の式(4)により表される。
【0026】
ここで、Bは、第2の階調数を示す。つまり、変換関数h(x)は、内分関数c(x)を、総画素数Sを第2階調値Bで除算して得られる量子化幅で量子化した関数である。
【0027】
階調変換部16は、変換関数に基づいて、入力画像の各画素の第1階調値を第2階調値に変換することで、第2階調数で量子化された出力画像を生成する。すなわち、階調変換部16は、入力画像の各画素の第1階調値I(s)を、変換関数h(x)に代入することで、出力画像の各画素の第2階調値J(s)を特定する。
信号出力部17は、出力画像を出力する。
【0028】
次に、階調変換装置1の動作について説明する。
図2は、一実施形態に係る階調変換装置の動作を示すフローチャートである。
まず階調変換装置1の信号入力部11は、入力画像の入力を受け付ける(ステップS1)。入力画像は、利用者により手動で入力されるものでも良いし、プログラム等により自動的に入力されるものでも良い。次に、ヒストグラム特定部12は、ステップS1で入力された入力画像を解析し、累積ヒストグラムを生成する(ステップS2)。また、一次関数特定部13は、ステップS1で入力された入力画像を解析し、上記式(2)により表される一次関数を特定する(ステップS3)。
【0029】
次に、内分関数特定部14は、内分比tとして、0より大きく、かつ第1階調数Aと第2階調数Bの差を第1階調数Aで除算した値以下となる値を求める(ステップS4)。つまり、内分関数特定部14は、以下の式(5)が成立する内分比tを特定する。
【0031】
次に、内分関数特定部14は、ステップS2で生成した累積ヒストグラムとステップS3で生成した一次関数とに基づいて、累積ヒストグラム上の点と一次関数上の点とを、内分比((1−t):t)で内分する内分点を通る内分関数を生成する(ステップS5)。次に、変換関数特定部15は、ステップS5で生成した内分関数に基づいて変換関数を生成する(ステップS6)。
【0032】
次に、階調変換部16は、ステップS1で入力された入力画像の各画素について、第1階調値をステップS6で生成した変換関数に代入することで第2階調値を特定し、出力画像を生成する(ステップS7)。そして信号出力部17は、生成した出力画像を出力する(ステップS8)。出力画像の出力は、例えばディスプレイなどの表示装置に表示させることによりなされても良いし、記憶装置への記録によりなされても良い。
以上の手順により、階調変換装置1は、第1階調数の入力画像を第2階調数の出力画像に階調変換することができる。
【0033】
ここで、内分比tとして式(5)に示す値を用いる理由を説明する。内分比tを用いて内分関数を生成することで、内分関数における傾きは、全ての点において0以上1/(1−t)未満となる。したがって、内分比tとして式(5)に示す値を用いると、内分関数における傾きがA/B未満となる。つまり、内分比tとして式(5)に示す値を用いることで、階調変換装置1は、第2階調値を出力画像の全ての画素に割り当てることができる。
【0034】
ここで、具体的な例を用いて本実施形態に係る階調変換装置1による階調変換方法を説明する。
図3は、変換関数の算出経過の例を示す図である。
階調数8(第1の階調数)の入力画像を、階調数4(第2の階調数)の出力画像に変換する例について説明する。具体的には、
図3に示す例では、第1階調値が0を示す画素の出現数が1、第1階調値が1を示す画素の出現数が1、第1階調値が2を示す画素の出現数が1、第1階調値が3を示す画素の出現数が9、第1階調値が4を示す画素の出現数が2、第1階調値が5を示す画素の出現数が1、第1階調値が6を示す画素の出現数が0、第1階調値が7を示す画素の出現数が1の入力画像が入力される。
ヒストグラム特定部12は、当該入力画像に基づいて、
図3(A)に示すように累積ヒストグラムa(x)を生成する。また、一次関数特定部13は、
図3(A)に示すように一次関数b(x)を生成する。そして内分関数特定部14は、
図3(A)に示すように内分関数c(x)を生成する。ここで、
図3に示す例では、内分比tは、0.5である。なお、内分比0.5は、第1の階調数と第2の階調数の差を第1の階調数で除算した値に等しい。
【0035】
そして、変換関数特定部15は、当該内分関数c(x)に基づいて、
図3(B)に示すように変換関数h(x)を生成する。当該変換関数h(x)は、
図3(B)に示すように、第1の階調値が0〜2を示す画素の第2の階調値を0とし、第1の階調値が3を示す画素の第2の階調値を1とし、第1の階調値が4を示す画素の第2の階調値を2とし、第1の階調値が5〜7を示す画素の第2の階調値を3とする関数である。このように、本実施形態によれば、階調変換装置1は、第2階調値を出力画像の全ての画素に割り当てることができる。
【0036】
図3(C)は、従来のヒストグラム平坦化による変換関数h′(x)の例を示す図である。従来のヒストグラム平坦化によれば、変換関数は、累積ヒストグラムa(x)をB/Sで量子化することにより生成される。この場合、従来のヒストグラム平坦化により生成される変換関数h′(x)は、
図3(C)に示すように、第1の階調値が0〜2を示す画素の第2の階調値を0とし、第1の階調値が3を示す画素の第2の階調値を1とし、第1の階調値が4〜7を示す画素の第2の階調値を3とする関数である。つまり、従来のヒストグラム平坦化による階層変換では、2を示す第2階調値が出力画像の何れの画素にも割り当てられず、階調値を有効に活用することができない。
【0037】
このように、本実施形態によれば、階調変換装置1は、繰り返し演算を行うことなく、かつ階調値が有効に活用されるように入力信号の階調を変換することができる。
【0038】
以上、図面を参照して一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、様々な設計変更等をすることが可能である。
例えば、上述した実施形態に係る階調変換装置1は、画像の階層変換を行うが、これに限らず、他の信号について階層変換処理を行っても良い。例えば、他の実施形態に係る階調変換装置1は、音声の階層変換を行っても良い。この場合、階調変換装置1は、音声信号の量子化ビット数(階層数)を変換する。
【0039】
また、上述した実施形態に係る階調変換装置1は、一次関数特定部13が入力画像に基づいて一次関数を生成するが、これに限られない。例えば、一次関数特定部13は、ヒストグラム特定部12が特定した累積ヒストグラムに基づいて一次関数を生成しても良い。また、入力画像の総画素数および階調数が予め分かっているのであれば、階調変換装置1は、一次関数特定部13を備えず、内分関数特定部14が予め特定しておいた一次関数に基づいて内分関数を生成しても良い。
【0040】
また、上述した実施形態に係る階調変換装置1は、入力画像の階調数を減少させるものであるが、これに限られない。つまり、他の実施形態に係る階調変換装置1は、階調数を増加させても良い。階調数の増加処理は、例えば画像の拡大、縮小、平滑化などの所定の画像処理により計算上の画素数に非整数値が生じた場合などに、当該非整数値を適切な階調値に当てはめるために用いることができる。
【0041】
図4は、少なくとも1つの実施形態に係るコンピュータの構成を示す概略ブロック図である。
コンピュータ9は、CPU91、主記憶装置92、補助記憶装置93、インタフェース94を備える。
上述の階調変換装置1は、コンピュータ9に実装される。そして、上述した各処理部の動作は、プログラムの形式で補助記憶装置93に記憶されている。CPU91は、プログラムを補助記憶装置93から読み出して主記憶装置92に展開し、当該プログラムに従って上記処理を実行する。
【0042】
なお、少なくとも1つの実施形態において、補助記憶装置93は、一時的でない有形の媒体の一例である。一時的でない有形の媒体の他の例としては、インタフェース94を介して接続される磁気ディスク、光磁気ディスク、CD−ROM、DVD−ROM、半導体メモリ等が挙げられる。また、このプログラムが通信回線によってコンピュータ9に配信される場合、配信を受けたコンピュータ9が当該プログラムを主記憶装置92に展開し、上記処理を実行しても良い。
【0043】
また、当該プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、当該プログラムは、前述した機能を補助記憶装置93に既に記憶されている他のプログラムとの組み合わせで実現するもの、いわゆる差分ファイル(差分プログラム)であっても良い。