(57)【要約】【課題】  スライダーバーを操作した場合に変換カーブがリアルタイムに反映されることを可能にする。更には、変換カーブを定義する指標軸をダイレクトに変更した場合にはその結果に基づいてスライダーバーの状態を変更することで、指標軸のダイレクト調整結果が明るさ等にどのような影響を与えるのかについても客観的に把握可能にする。【解決手段】    入力画素値に対する出力画素値の関係を示す変換カーブを所定の表示エリア２５０と、スライダーバー２６０（又は２７０）を有するウインドウ２００を表示する。スライダーバー２６０は、そのツマミ２６０ａを用いて表示エリア２５０内の変換カーブ調整することになる。また、表示エリア２５０にて、変換カーブを定義する複数の指標軸の１つの位置を変更することで前記変換カーブを調整することができる。この指標軸の位置を変更して変換カーブを調整した場合には、調整後の変換カーブに基づいてスライダーバー２６０の状態も併せて更新する。【選択図】  図２
2005217655.tif 000002
【特許請求の範囲】
【請求項１】
入力画素値に対する出力画素値の関係を示す変換カーブを所定の表示エリアに表示する変換カーブ表示手段と、
前記表示エリア外に設けられたスライダーバーを用いて前記変換カーブを調整し、表示された変換カーブを更新する第１の調整手段と、
前記表示エリア内にて、前記変換カーブを定義する複数の指標軸の１つの位置を変更することで前記変換カーブを調整し、表示された変換カーブを更新する第２の調整手段と、
前記第２の調整手段で前記変換カーブを調整した場合、調整後の変換カーブに基づいて前記スライダーバーの状態を更新する更新手段と
を備えることを特徴とする画像処理装置。
【請求項２】
前記スライダーバーには、明るさを調整する明るさスライダーバー及びコントラストを調整するコントラストスライダーバーが含まれることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記指標軸には、出力画素値の上限を既定する出力画素最大値の軸、出力画素値の下限を既定する出力画素最小値の軸、入力画素値がそれ以上である場合に前記出力画素最大値にするハイライト軸、入力画素値がそれ以下の場合に前記出力画素最小値にするシャドウ軸が含まれることを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
入力画素値に対する出力画素値の関係を示す変換カーブを所定の表示エリアに表示する変換カーブ表示工程と、
前記表示エリア外に設けられたスライダーバーを用いて前記変換カーブを調整し、表示された変換カーブを更新する第１の調整工程と、
前記表示エリア内にて、前記変換カーブを定義する複数の指標軸の１つの位置を変更することで前記変換カーブを調整し、表示された変換カーブを更新する第２の調整工程と、
前記第２の調整工程で前記変換カーブを調整した場合、調整後の変換カーブに基づいて前記スライダーバーの状態を更新する更新工程と
を備えることを特徴とする画像処理方法。
【請求項５】
画像処理装置として機能するためのコンピュータプログラムであって、
入力画素値に対する出力画素値の関係を示す変換カーブを所定の表示エリアに表示する変換カーブ表示手段と、
前記表示エリア外に設けられたスライダーバーを用いて前記変換カーブを調整し、表示された変換カーブを更新する第１の調整手段と、
前記表示エリア内にて、前記変換カーブを定義する複数の指標軸の１つの位置を変更することで前記変換カーブを調整し、表示された変換カーブを更新する第２の調整手段と、
前記第２の調整手段で前記変換カーブを調整した場合、調整後の変換カーブに基づいて前記スライダーバーの状態を更新する更新手段
として機能するコンピュータプログラム。
【請求項６】
請求項５に記載のコンピュータプログラムを格納することを特徴とするコンピュータ可読記憶媒体。
【請求項７】
コントラスト、明るさを調整する画像処理装置であって、
変換対象の画像データを入力する入力手段と、
入力画素値＝出力画素値の関係を有する初期の変換カーブを所定の表示エリアに表示すると共に、前記変換カーブにて変換して得た画像の各色成分のヒストグラムを前記表示エリア内に合成表示する表示手段と、
前記表示エリア外に設けられたスライダーバーを用いて前記変換カーブを調整し、表示された変換カーブを更新する第１の調整手段と、
前記表示エリア内にて、前記変換カーブを定義する複数の指標軸の１つの位置を変更することで前記変換カーブを調整し、表示された変換カーブを更新する第２の調整手段と、
前記第２の調整手段で前記変換カーブを調整した場合、調整後の変換カーブに基づいて前記スライダーバーの状態を更新する更新手段とを備え、
前記第１、第２の調整手段による変換カーブを調整する毎に、調整後の変換カーブに従って画像の変換、及び、ヒストグラムを更新することを特徴とする画像処理装置。
【請求項８】
コントラスト、明るさを調整する画像処理方法であって、
変換対象の画像データを入力する入力工程と、
入力画素値＝出力画素値の関係を有する初期の変換カーブを所定の表示エリアに表示すると共に、前記変換カーブにて変換して得た画像の各色成分のヒストグラムを前記表示エリア内に合成表示する表示工程と、
前記表示エリア外に設けられたスライダーバーを用いて前記変換カーブを調整し、表示された変換カーブを更新する第１の調整工程と、
前記表示エリア内にて、前記変換カーブを定義する複数の指標軸の１つの位置を変更することで前記変換カーブを調整し、表示された変換カーブを更新する第２の調整工程と、
前記第２の調整工程で前記変換カーブを調整した場合、調整後の変換カーブに基づいて前記スライダーバーの状態を更新する更新工程とを備え、
前記第１、第２の調整工程による変換カーブを調整する毎に、調整後の変換カーブに従って画像の変換、及び、ヒストグラムを更新することを特徴とする画像処理方法。
【請求項９】
コンピュータが読み込み実行することで、コントラスト、明るさを調整する画像処理装置として機能するコンピュータプログラムであって、
変換対象の画像データを入力する入力手段と、
入力画素値＝出力画素値の関係を有する初期の変換カーブを所定の表示エリアに表示すると共に、前記変換カーブにて変換して得た画像の各色成分のヒストグラムを前記表示エリア内に合成表示する表示手段と、
前記表示エリア外に設けられたスライダーバーを用いて前記変換カーブを調整し、表示された変換カーブを更新する第１の調整手段と、
前記表示エリア内にて、前記変換カーブを定義する複数の指標軸の１つの位置を変更することで前記変換カーブを調整し、表示された変換カーブを更新する第２の調整手段と、
前記第２の調整手段で前記変換カーブを調整した場合、調整後の変換カーブに基づいて前記スライダーバーの状態を更新する更新手段として機能し、
前記第１、第２の調整手段による変換カーブを調整する毎に、調整後の変換カーブに従って画像の変換、及び、ヒストグラムを更新することを特徴とするコンピュータプログラム。
【請求項１０】
請求項９に記載のコンピュータプログラムを格納することを特徴とするコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データを処理する技術に関するものである。
【背景技術】
【０００２】
近年、デジタルカメラとダイレクトに接続するプリンタが登場し、印刷に関してはその操作が簡便なものとなってきている。
【０００３】
しかし、その一方で、画像の明るさやコントラスト等を意図的に調整、変更する場合には、パーソナルコンピュータ（ＰＣ）で編集することが必要になる。
【０００４】
ここで、ＰＣ上に稼働するアプリケーションについて考察する。
【０００５】
一般的な、画像データの明るさやコントラスト等を処理するアプリケーションプログラムの多く（たとえば、特許文献１）は、明るさスライダーバーやコントラストスライダーバーを有するＧＵＩ（グラフィカルユーザインタフェース）上で、各スライダーバーのスライド位置を調整することで行うことが多い。
【特許文献１】特開２００１−５７６６３公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、これまでの明るさ、コントラストの調整では、それぞれが独立したものであった。例えば、明るさを或る程度の設定を行った後、コントラストを上げる操作を行うと、画像の明るさが更に明るくなるという現象が発生する。つまり、目的とする明るさに設定したにもかかわらず、コントラストを調整することで明るさも変化しまうことになり、明るさ、コントラストを交互に何度も調整しないと、意図した変換を得ることができないものであった。これは、明るさとコントラストの相関関係が不明瞭であり、明るさやコントラストを変更することは、画像データに対してどのような変更が加えられるかが判然としないためである。
【０００７】
本発明は、上記の問題を鑑みたものであり、明るさ、コントラスト等の調整用のスライダーバーと変換カーブとの相関関係を判りやすくし、変換カーブを定義する指標軸をダイレクトに操作した場合にも、その結果が明るさやコントラストといったパラメータに如何なる影響を与えたのかについても一目瞭然とするユーザインタフェース技術を提供しようとするものである。
【課題を解決するための手段】
【０００８】
この課題を解決するため、例えば、発明の画像処理装置は以下の構成を備える。すなわち、
入力画素値に対する出力画素値の関係を示す変換カーブを所定の表示エリアに表示する変換カーブ表示手段と、
前記表示エリア外に設けられたスライダーバーを用いて前記変換カーブを調整し、表示された変換カーブを更新する第１の調整手段と、
前記表示エリア内にて、前記変換カーブを定義する複数の指標軸の１つの位置を変更することで前記変換カーブを調整し、表示された変換カーブを更新する第２の調整手段と、
前記第２の調整手段で前記変換カーブを調整した場合、調整後の変換カーブに基づいて前記スライダーバーの状態を更新する更新手段とを備える。
【発明の効果】
【０００９】
本発明によれば、スライダーバーを操作した場合に変換カーブがリアルタイムに反映されることが可能になる。更に、変換カーブを定義する指標軸をダイレクトに変更した場合にはその結果に基づいてスライダーバーの状態を変更することで、指標軸のダイレクト調整結果が明るさ等にどのような影響を与えるのかについても客観的に把握することも可能になる。
【発明を実施するための最良の形態】
【００１０】
以下、添付図面に従って本発明に係る実施形態を詳細に説明する。
【００１１】
＜装置構成の説明＞
図１は、本発明の実施形態における画像処理装置の主要な構成要素を示すブロック図である。
【００１２】
図１において、１０１は、ユーザからの指示や、データを入力する入力部で、キーボードやマウス（登録商標）などのポインティングデバイスを含む。１０２は、本実施形態の画像編集アプリケーションを操作するためのＧＵＩなどを表示する表示部で、通常はＣＲＴや、液晶ディスプレイなどが用いられる。１０３は、ＯＳ、複数のアプリケーション（本実施形態の画像編集アプリケーションを含む）並びに様々な形式の画像ファイルを記憶する記憶部で、通常は、ハードディスクが用いられる。１０４は装置全体の制御をプログラムによって司るＣＰＵである。１０５はＢＩＯＳやブートプログラムを記憶するＲＯＭであり、１０６はＣＰＵ１０４のワークエリアとして使用されるＲＡＭである。電源投入時は、ＣＰＵ１０４はＲＯＭ１０５のブートプログラムに従って、記憶部１０３に格納されたＯＳをＲＡＭ１０６にロードし、それを実行し、そのＯＳの起動後に本実施形態の画像編集アプリケーションを記憶部１０３よりＲＡＭ１０６にロードして実行することになる。１０７は画像を入力するための画像入力部である。画像入力部１０７は、デジタルカメラと通信するのであればＵＳＢインタフェース、或いはメモリカードリーダを接続するインタフェースとなるし、ネットワークから画像データを入力するのであればネットワークインタフェース、原稿画像を読取るのであればイメージスキャナを接続するインタフェースとなる。
【００１３】
なお、図１に示す画像処理装置の構成は一例であってこれによって本願発明が限定されるものではない。また、上記構成において、画像処理装置が起動して、本実施形態における画像編集アプリケーションを実行することになる。
【００１４】
＜画像調整の説明＞
図２は、本実施形態の画像編集アプリケーションを操作するためのＧＵＩを示している。
【００１５】
図２において、２００が調整用ＧＵＩであるウインドウを示している。ウインドウ２００には、変換対象となる画像ファイルを示す情報（パス＋ファイル名）を指定するエリア２０１、及び、指定された画像ファイルの画像をデコードして表示する画像表示領域２０２が設けられている。２０３は、指定された画像ファイルに対して実際に変換処理を行うボタン、２０４は変換をキャンセルするボタンであり、それぞれは入力部１０１に連動するカーソルを移動し、クリックすることで実行される。
【００１６】
また、２４０は調整対象の色成分選択エリアであり、全色、Ｒ、Ｇ、Ｂの４つボタンで構成され、ユーザは入力部１０１に連動するカーソルをいずれかに移動して指示（クリック）することで、変更対象の色成分が選択できる。なお、デフォルトでは「全色」が選択状態になっている。
【００１７】
２５０は全色、Ｒ、Ｇ又はＢに対応するトーンカーブ（変換テーブルの変換曲線でもある）を表示するトーンカーブエリア、２６０は明るさスライダーバー、２７０はコントラストスライダーバーである。本実施形態では、トーンカーブエリア２５０、明るさスライダーバー２６０及びコントラストスライダーバー２７０を操作することによって全色、Ｒ、Ｇ又はＢの調整が可能である。
【００１８】
なお、本実施形態におけるトーンカーブエリア２５０には、ユーザが指定した画像ファイルの各色成分（本実施形態ではＲ、Ｇ、Ｂ）のヒストグラムを、トーンカーブに重畳表示するようにした。なお、表示するヒストグラムは、色成分選択エリア２４０で指定された色とは無関係で、常にＲ、Ｇ、Ｂそれぞれの輝度を横軸に、度数を縦軸にして表示するようにした。ただし、色成分選択エリア２４０で指定された色成分のみのヒストグラムを表示しても構わない。ヒストグラムを表示する理由は、各色成分のトーンカーブを調整する際の指標とするためであり、トーンカーブエリア２５０内に表示するのは、ユーザが視点位置を頻繁に変化させないで、以下に説明するトーンカーブの調整を行えるようにするためである。
【００１９】
以下、本実施形態のトーンカーブエリア２５０を更に詳細に説明する。
【００２０】
本実施形態のトーンカーブエリア２５０は、ほぼ正方形であって、横軸は入力画素値（補正前の画素値でもある）、縦軸は出力画素値（補正後の画素値でもある）、それぞれは０〜２５５の範囲である。すなわち、ＲＧＢそれぞれが８ビットで表現されている。
【００２１】
図３（Ａ）はトーンカーブエリア２５０の詳細を示しており、初期状態でもある。なお、上記のようにヒストグラムも重畳表示するものであるが、以下の説明では理解を容易にするため、各色のヒストグラムについては示しない。
【００２２】
さて、図３（Ａ）において、２５１は全色、Ｒ、Ｇ又はＢに対応するトーンカーブであって、初期状態では入力画素値＝出力画素値の関係を維持された直線状である。ここで、ユーザは例えばトーンカーブ２５１上の点Ａを入力部１０１を用いて点Ａ’に移動させることで、図３（Ｂ）のように変更することもでき、且つ、図３（Ｂ）のＢ点を点Ｂ’に移動させて図３（Ｃ）のように変更することもできる。トーンカーブ２５１を変更を行うと、入出力関係が変るので、図２の画像表示領域２０２における色調も、これに応じて変化するようにした。トーンカーブの形状変化は、例えば、図３（Ａ）から図３（Ｂ）への変化の際には、点Ａを点Ａ’に移動させたとき、トーンカーブ２５１上の点Ａに近い部分ほど、移動後の点Ａ’の影響を受けるように補正することで行った。これは点Ｂ→Ｂ’の変更でも同様である。従って、ユーザはトーンカーブ２５１の形状を自由に変更することができる。なお、トーンカーブ２５１をガンマ曲線で表現する場合には、そのガンマ曲線のパラメータのスライダーバーを設けるようにしても構わない。
【００２３】
次に、明るさスライダーバー２６０、コントラストスライダーバー２７０とトーンカーブ２５１との関係について説明する。
【００２４】
明るさスライダーバー２６０は、水平方向に移動可能なツマミ２６０ａ（ユーザが移動操作する対象）と、現在のツマミ２６０の位置に応じた補正量を表示するエリア２６０ｂで構成される。ツマミ２６０ａは初期状態で、中央位置にあるので、補正量エリア２６０ｂには「０」が表示され、ツマミ２６０ａを右に移動すると、補正量エリア２６０ｂ内の数値は増加する。逆に、ツマミ２６０ａを左に移動すると、補正量エリア２６０ｂ内の数値は減少（マイナス）になる。
【００２５】
上記動作は、コントラストスライダーバー２７０についても同様である。つまり、ツマミ２７０ａの位置を変化させると、それに応じた値によって補正量エリア２７０ｂの数値が変化する。
【００２６】
本実施形態では、明るさスライダーバー２６０やコントラストスライダーバー２７０を操作すると、それに応じてリアルタイムにトーンカーブ２５１が変化するものである。以下、その具体例を説明する。
【００２７】
なお、以下の説明に先立ち、用語について定義しておくこととする。
（１）出力画素最大値（OUT_MAX）：トーンカーブ２５１で変換された出力画素値の取り得る最大値。
（２）出力画素最小値(OUT_MIN）：トーンカーブ２５１で変換された出力画素値の取り得る最小値。
（３）入力画素ハイライト値（IN_HLT)：「出力画素最大値」となる入力画素値の最小値（つまり、これ以上の値を持つ入力画素値はすべて「出力画素最大値」となること意味する）。
（４）入力画素シャドウ値(IN_SDW)：「出力画素最小値」となる入力画素値の最大値（つまり、これ以下の値を持つ入力画素値はすべて「出力画素最小値」となること意味する）。
【００２８】
図４（Ａ）乃至（Ｃ）は、明るさスライダーバー２６０を操作した際のトーンカーブ２５１の変化を示す図である。図４（Ａ）の場合、出力画素最大値＝２５５、出力画素最小値＝０、入力画素ハイライト値＝２５５、入力画素シャドウ値＝０の場合でもある。トーンカーブ２５１はデフォルトのままで直線状態である。
【００２９】
今、明るさスライダーバー２６０のツマミ２６０ａを右側（＋）に移動させると、図４（Ｂ）に示すようにトーンカーブ２５１が上方向に移動する。図４（Ｂ）の場合、IN_HLT＝Ｉ1、IN_SDW＝０、OUT_MAX＝２５５、OUT_MIN＝Ｏ1となる。
【００３０】
一方、図４（Ｃ）は明るさを減少させた場合、すなわち、明るさスライダーバー２６０のツマミ２６０ａを左方向（−方向）に移動させた場合のトーンカーブを示している。図４（Ｃ）の場合、IN_HLT＝２５５、IN_SDW＝Ｉ2、OUT_MAX＝Ｏ2、OUT_MIN＝０となる。
【００３１】
図５（Ａ）乃至（Ｃ）はコントラストスライダーバー２７０を操作した際のトーンカーブ２５１の変化を示す図である。図５（Ａ）は初期状態である。
【００３２】
今、コントラストスライダーバー２７０のツマミ２７０ａを右側（＋）に移動させると、図５（Ｂ）に示すようにトーンカーブ２５１の傾きが大きくなり、IN_SDW＝Ｉ3、IN_HLT＝Ｉ4となる。また、OUT_MAX＝２５５、OUT_MIN＝０であり、変化はない。
【００３３】
また、図５（Ａ）の状態で、コントラストスライダーバー２７０のツマミ２７０ａを左側（−）に移動させると、図５（Ｃ）のようにトーンカーブ２５１の傾きが小さくなる。図５（Ｃ）の場合、IN_SDW＝０、IN_HLT＝２５５で図５（Ａ）と変らないが、OUT_MAX=Ｏ3、OUT_MIN＝Ｏ4となる。
【００３４】
上記は、初期状態に対して、明るさスライダーバー２６０、コントラストスライダーバー２７０の一方のみを操作した例であった。そこで、両方を操作した場合について説明する。
【００３５】
例えば、図４（Ｂ）の状態で、コントラストを上げる操作（コントラストスライダーバー２７０のツマミ２７０ａを右に移動した場合）に、飽和していない斜線部分の傾きを大きくすることになるから、例えば図６（Ａ）のようになる。
【００３６】
図４（Ｂ）での４つのパラメータは、
IN_HLT＝Ｉ1、IN_SDW＝０、OUT_MAX＝２５５、OUT_MIN＝Ｏ1
であったのに対し、図６（Ａ）では、
IN_HLT＝Ｉ6、IN_SDW＝Ｉ5、OUT_MAX＝２５５、OUT_MIN＝Ｏ1
となる。
【００３７】
なお、図６（Ａ）は、図５（Ｂ）の状態で、明るさを上げるようにした場合でもあるのは、容易に理解できよう。
【００３８】
また、図４（Ｂ）の状態で、コントラストを下げた（コントラストスライダーバー２７０のツマミ２７０ａを左に移動した場合）には、図６（Ｂ）のようになる。
【００３９】
以上、本実施形態における明るさスライダーバー２６０、コントラストスライダーバー２７０の操作によるトーンカーブ２５１の変化について説明したが、本実施形態におけるトーンカーブによる変換は、次のようにまとめることができる。
【００４０】
図７の外枠は、図２におけるトーンカーブエリア２５０を示している。図示のように、IN_SDW線分（垂直線分）とOUT_MIN線分（水平線分）との交点を点Ａ（ｘ１，ｙ１）と定義し、IN_HLT線分（垂直線分）とOUT_MAX線分（水平線分）との交点を点Ｂ（ｘ２、ｙ２）と定義し、入力画素値をＤとしたとき、
ｉ.  Ｄ＜IN_SDW（ｘ１）の場合には出力値はｙ１に固定、
ii.  IN_SDW≦Ｄ≦IN_HLT（ｘ２）の場合、出力値は点Ａ−Ｂを結ぶトーンカーブ（の形状）に依存した値、
iii. IN_HLT＜Ｄの場合、出力値はｙ２に固定、
なお、点Ａ−Ｂ間を結ぶトーンカーブは先に説明したように、その形状に変化を持たせることが可能であるが、明るさスライダーバー２６０、コントラストスライダーバー２７０を調整することで、その形状が水平或いは垂直軸に沿って伸縮することになる。
【００４１】
＜明るさスライダーバーの操作した場合の処理＞
明るさスライダーバーの操作した場合の処理を図８（Ａ）及び（Ｂ）を用いて説明する。図８（Ａ）及び（Ｂ）で説明される処理は、ＣＰＵ１０４が画像編集アプリケーションに従って実行する処理である。
【００４２】
先ず、ステップＳ３０１では、明るさスライダーバーが動き、新しい明るさ量Ｂｒ１が決定する。ステップＳ３０２では、図１２（Ａ）におけるシャドウIN_SDWと出力画素最小値OUT_MINとの交点Ａと、ハイライトIN_HLTと出力画素最大値OUT_MAXとの交点Ｂを求め、２点Ａ，Ｂを結ぶ直線Ｌを求める。
【００４３】
次にステップＳ３０３では、直線Ｌと、ｘ=０との交点である点Ａ１と、直線ＬとＸ＝２５５との交点である点Ｂ１を求める。ステップＳ３０４では、現時点での明るさBr０を求める。トーンカーブでの明るさの定義は、点Ａ１とＢ１の中点のｙ座標であるので、そこから、Ｂｒ０を求めればよい。ステップＳ３０５では、Br１と、Br０との差より、明るさの変化量Ｄを算出する。ステップＳ３０６では、点Ａ１と、Ｂ１のＹ座標を、Ｄ分移動させた点Ａ２、Ｂ２の位置を算出する。ステップＳ３０７では、点Ａ２、Ｂ２を結ぶ直線Ｌ１を算出する（図１２（Ａ）参照）。ステップＳ３０８では、直線Ｌ１とハイライトIN_HLTとの交点を算出し、そのｙ座標を新しい出力画素最大値Ｍａｘ１とし、OUT_MAXをその位置に更新する。
【００４４】
ステップＳ３０９では、直線Ｌ１と、シャドウIN_SDWとの交点を算出し、その交点のｙ座標を、新しい出力画素最小値Ｍｉｎ１とし、その位置にOUT_MINを更新する。
【００４５】
ステップＳ３１０では、図１１（Ｂ）のように、Max１＞２５５である場合の処理を行う。Max１＞２５５の場合、Ｍａｘ１を“２５５”に設定し、Max２とする。そして、Max２と、直線Ｌ１との交点のＸ座標を、新しいハイライトＨ１とし、その位置にハイライトIN_HLTを移動させる。
【００４６】
ステップＳ３１１では、Min１＜０の場合、Min１=０とし、その位置をMin２とする。そして、Min２と直線Ｌ１との交点のＸ座標を、新しいシャドウＳ１とし、その位置にシャドウIN_SDWを移動させる。
【００４７】
ステップＳ３１２では、移動後のハイライトIN_HLT、シャドウIN_SDW、出力画素最大値OUT_MAX、出力画素最小値OUT_MINに従ってトーンカーブをリアルタイムに伸縮させる。伸縮は、図１４に示したように、曲線の形状を保ったまま、水平、或いは、垂直方向に伸縮されることで行う。さらに、ＣＰＵ１０４は、各色のヒストグラムを再計算し、その結果を変更後のトーンカーブとともにリアルタイムにトーンカーブエリア２５０に表示する。
【００４８】
＜明るさをトーンカーブ上で操作した場合の説明＞
上記は、明るさスライダーバー２６０を左右に移動させることで明るさを変えるものであったが、ハイライトIN_HLT、シャドウIN_SDW、出力画素最大値OUT_MAX、出力画素最小値OUT_MINのいずれか１つの位置を変更した場合に、明るさスライダーバー２６０に反映させる例を図９を用いて説明する。
【００４９】
４つのパラメータ（ハイライトIN_HLT、シャドウIN_SDW、出力画素最大値OUT_MAX、出力画素最小値OUT_MIN）のそれぞれは、初期状態では、トーンカーブエリア２５０の外枠の４辺に等しい状態にあり、先に説明した意味を持つ指標軸である。
【００５０】
ユーザは、このトーンカーブエリア２５０のいずれかの一辺を、入力部１０１で指定し、ドラッグ操作することで、トーンカーブエリア２５０の内側の所望とする位置に所望とする指標軸を移動させることができる。ただし、各パラメータは、水平線、垂直線のいずれかであるので、この特性は維持したままの移動となる。例えば、トーンカーブエリア２５０の右端の垂直線をクリックすると、そこに垂直線ハイライトIN_HLTが移動可能であることを示すハンドラが表示されるので、そのハンドラをドラッグ操作することで、垂直線まま、トーンカーブエリア２５０内で移動可能となる。そして、必要なら４つのパラメータの線分をすべて移動させることもできる。
【００５１】
図９で説明される処理は、ＣＰＵ１０４が画像編集アプリケーションに従って実行する処理である。
【００５２】
先ず、ステップＳ４０１では、ハイライトIN_HLT、シャドウIN_SDW、出力画素最大値OUT_MAX、出力画素最小値OUT_MINのいずれかが、ユーザによって移動させられる。このとき、点Ａ、Ｂのいずれかが移動することになるが、その際には点Ａ，Ｂ間のトーンカーブも連動して伸縮してリアルタイムに表示更新することになる。さらに、ＣＰＵ１０４は、各色のヒストグラムを再計算し、その結果を変更後のトーンカーブとともにリアルタイムにトーンカーブエリア２５０に表示する。
【００５３】
ステップＳ４０２では、図１２（Ａ）の点Ａ，Ｂより、直線Ｌを算出する。ステップＳ４０３では、直線Ｌと、ｘ=０、ｘ=２５５との交点である、点Ａ１、Ｂ１を求める。次いでステップＳ４０４では、点Ａ、Ｂ１の中点のｙ座標より、明るさＢｒを算出する。
【００５４】
ステップＳ４０５では、求めた明るさＢｒの値に応じて、明るさスライダーバー２６０のツマミ２６０ａの位置を変更する。
【００５５】
以上説明したように、本実施形態によれば、明るさスライダーバー２６０のツマミ２６０ａを移動させて明るさを調整した場合には、その調整の結果がリアルタイムにトーンカーブに反映されることになり、視覚的に明るさが如何なる状態になったのかを把握できるようになる。また、シャドウIN_SDW、ハイライトIN_HLT、出力画素最大値OUT_MAX、出力画素最小値OUT_MINのいずれかが、ユーザによって移動させた場合にも、それによる明るさ量がスライダーバー２６０のツマミ位置２６０ａに反映されることになり、ユーザは自身の操作が明るくなるように作用させたのかどうかを簡単にして直感的に把握することができる。
【００５６】
＜コントラストスライダーバーの操作した場合の処理＞
次に、本実施形態におけるコントラスト調整とトーンカーブを連動させる例について図１０を用いて説明する。
【００５７】
図１０で説明される処理は、ＣＰＵ１０４が画像編集アプリケーションに従って実行する処理である。
【００５８】
先ず、ステップＳ５０１では、コントラストスライダーバー２７０のツマミ２７０ａの操作により、新しいコントラストＣｔ１を決定する。次に、ステップＳ５０２では、図１３（Ａ）の、シャドウIN_SDWと出力画素最小値OUT_MINとの交点Ａ、ハイライトIN_HLTと出力画素最大値OUT_MAXとの交点Ｂを求め、点Ａ、Ｂ結ぶ直線Ｌを求める。次に、ステップＳ５０３では、直線Ｌと、Ｘ＝０との交点である点Ａ１と、直線ＬとＸ=２５５との交点である点Ｂ１を求める。ステップＳ５０４では、点Ａ１と点Ｂ１との中点である点Ｍを求める。ステップＳ５０５では、Ｃｔ１より、新しい直線を算出する。コントラスト(Ct)と、直線Ｌの傾きａとの関係は、
ａ ＝ tan( Ct*π/２/２５５);
で与えられる。この式に則り、Ｃｔ１より、新しい直線の傾きａ１を算出し、点Ｍを通る直線Ｌ１を算出する。ステップＳ５０６では、直線Ｌ１と出力画素最大値OUT_MAXとの交点を求め、そのｘ座標を新しいハイライトＨ１とする。
【００５９】
ステップＳ５０７では、直線Ｌ１と出力画素最小値OUT_MINと交点を求め、そのｘ座標を新しいシャドウＳ１とする。
【００６０】
ステップＳ５０８では、図１３（Ｂ）のように、Ｈ１＞２５５の場合、Ｈ１＝２５５とし、その位置をＨ２とする。そして、Ｈ２と直線Ｌ１との交点のＹ座標を、新しい画素最大値Ｍａｘ１とする。
【００６１】
ステップＳ５０９では、図１３（Ｂ）のように、Ｓ１＜０の場合、Ｓ１＝０とし、その位置をＳ２とする。そして、Ｓ２と直線Ｌ１との交点のＹ座標を、新しい画素最小値Ｍｉｎ１とする。
【００６２】
最後に、ステップＳ５１０において、移動後のハイライトIN_HLT、シャドウIN_SDW、出力画素最大値OUT_MAX、出力画素最小値OUT_MINに従ってトーンカーブをリアルタイムに伸縮させる。さらに、ＣＰＵ１０４は、各色のヒストグラムを再計算し、その結果を変更後のトーンカーブとともにリアルタイムにトーンカーブエリア２５０に表示する。
【００６３】
＜コントラストをトーンカーブ上で操作した場合の説明＞
コントラストを調整するのは、上記のコントラストスライドバー２７０だけでなく、４つのパラメータ｛ハイライトIN_HLT、シャドウIN_SDW、出力画素最大値OUT_MAX、出力画素最小値OUT_MIN｝のいずれか１つを移動させた場合にも可能である。この処理を図１１を用いて説明する。図１１で説明される処理は、ＣＰＵ１０４が画像編集アプリケーションに従って実行する処理である。
【００６４】
先ず、ステップＳ６０１で、シャドウIN_SDW、ハイライトIN_HLT、出力画素最大値OUT_MAX、出力画素最小値OUT_MINのいずれか１つがユーザによって移動させる。この結果、点Ａ，Ｂのいずれか一方も移動することになるので、トーンカーブもそれに応じて伸縮表示更新することになる。さらに、ＣＰＵ１０４は、各色のヒストグラムを再計算し、その結果を変更後のトーンカーブとともにリアルタイムにトーンカーブエリア２５０に表示する。
【００６５】
ステップＳ６０２では、図１２（Ａ）のトーンカーブ７０１での点Ａ、Ｂより、直線Ｌを算出する。ステップＳ６０３では、直線Ｌと、Ｘ=０、Ｘ=２５５との交点であるＡ１、Ｂ１を求める。
【００６６】
ステップＳ６０４では、点Ａ、Ｂ１を結ぶ直線の傾きから、新しいコントラストＣｔを算出する。コントラスト算出では、以下の式を用いる。このとき、Ａ１の座標を(X１, Y１)、B１の座標を(X２, Y２)とする。
Ct = atan( (Y２-Y１)/(X２-X１)/(π/２)*２５５ );
ステップＳ６０５では、求めたコントラストＣｔの値に従い、コントラストスライダーバー２７０のツマミ２７０ａの位置に変更し、表示更新する。
【００６７】
以上のように、コントラストスライダーバー２７０によってトーンカーブを変更した場合には、ユーザはそのツマミ２７０ａの位置でもってコントラストをどの程度変更したのかを把握できると共に、トーンカーブのシャドウIN_SDW、ハイライトIN_HLT、出力画素最大値OUT_MAX、出力画素最小値OUT_MINのいずれかの移動によっても、ツマミ２７０ａの位置にそれが反映されることになり、コントラストを一意に設定できるようになり、ユーザインタフェース上でのまぎらわしさを軽減できるようになる。
【００６８】
なお、明るさ及びコントラストの調整は、図２における色成分選択エリア２４０で選択した色成分についてのみなされる。また、トーンカーブ上でハイライトIN_HLT、シャドウIN_SDW、出力画素最大値OUT_MAX、出力画素最小値OUT_MINのいずれかの位置を変更した場合、その結果は明るさ及びコントラストの両方に影響を与えることも当然に有り得る。従って、実際には図９の処理を終えたら図１１の処理に進むものである（順序は逆でも構わない）。
【００６９】
＜メイン処理の説明＞
次に、本実施形態におけるＣＰＵ１０４が画像編集アプリケーションに従って実行するメイン処理を図１６のフローチャートに従って説明する。
【００７０】
先ず、ステップＳ１にて、編集したい画像ファイルを選択する。この選択は、図２のＧＵＩウインドウ２００内のエリア２０１にパス付きのファイル名を入力することで行う。例えば、ファイル一覧を表示してその中から入力部１０１で指定することで行う。画像ファイルの選択が行われると、ステップＳ２に進み、トーンカーブを初期化する。この初期化では、入力画素値＝出力画素値（すなわち、ｘ、ｙ座標系でいうと「ｙ＝ｘ」なる傾き「１」の線形）に設定する。
【００７１】
次に、ステップＳ３に進み、現在のトーンカーブに従って画像ファイルの画像データを変換する。変換結果はＲＡＭ１０６に格納するものとする。初期化直後のトーンカーブは、「入力画素値＝出力画素値」の関係にあるので、結局のところ、選択した画像ファイルに対して何も変換していないことと等価のものとなる。変換結果の画像は、図２の画像表示領域２０２に表示される（原画像に比べて小さいので間引き表示する）。
【００７２】
次に、ステップＳ４に進み、変換後の画像データのヒストグラムを生成し、トーンカーブエリア２５０に表示する。本実施形態で表示するヒストグラムはＲＧＢの各色成分についてのものであるので、それぞれの色のヒストグラムを表示する。画像ファイルを選択し、トーンカーブの初期化直後のトーンカーブエリア２５０の状態を示すのが図１５（Ａ）である。なお、ヒストグラムを作成する処理は、単純である。一次元変数Ｒｅｄ（）、Ｇｒｅｅｎ（）、Ｂｌｕｅ（）を用意し、入力した画素のＲ、Ｇ、Ｂの成分をＰｒ，Ｐｇ，Ｐｂ（いずれも整数）としたとき、
Ｒｅｄ（Ｐｒ）←Ｒｅｄ（Ｐｒ）＋１
Ｇｒｅｅｎ（Ｐｇ）←Ｇｒｅｅｎ（Ｐｇ）＋１
Ｂｌｕｅ（Ｐｂ）←Ｂｌｕｅ（Ｐｂ）＋１
として、全画素について求めていけばよい。
【００７３】
次に、ステップＳ５に進み、ユーザによる指示入力を待ち、その指示入力をステップＳ６、８、９にて判定することになる。
【００７４】
先ず、トーンカーブの形状変更指示、明るさスライダーバー２６０やコントラストスライダーバー２７０の操作、或いは、トーンカーブエリア２５０におけるハイライトIN_HLT、シャドウIN_SDW、出力画素最大値OUT_MAX、出力画素最小値OUT_MINの移動操作であると判断した場合、ステップＳ６からステップＳ７に進み、先に説明したトーンカーブの変更処理を行う。トーンカーブの変更処理が行われると、変更後のトーンカーブに従って画像変換を行うべくステップＳ３に戻ることになる。この結果、ヒストグラムが再度生成され、更新されることになる。図１２（Ｂ）は、明るさを上げた操作をした場合におけるトーンカーブエリアの表示状態を示している。図１２（Ｂ）に示す如く、本実施形態の画像編集アプリケーションによれば、トーンカーブをリアルタイムに変更することができ、その結果に基づく各色のヒストグラムの変化をリアルタイムに知ることができる。
【００７５】
以上、ステップＳ３乃至Ｓ７を繰り返すことで、ユーザは、意図したトーンカーブを決定することになる。
【００７６】
さて、ステップＳ５にて入力された操作がＯＫボタン２０３であると判定した場合には、その時点で変換されていた画像を保存する。保存する際には、オリジナル画像ファイルに上書きするものとするが、名前を変えて保存しても構わない。また、キャンセルボタン２０４が押下された場合には本処理を終了することになる。
【００７７】
以上説明したように本実施形態によれば、画像のトーンカーブを調整するためのＧＵＩウインドウにおいて、スライダーバーによる調整結果がリアルタイムにトーンカーブに反映することにより、ユーザの操作とトーンカーブとの関係が一目瞭然とさせることができる。また、ハイライトIN_HLT、シャドウIN_SDW、出力画素最大値OUT_MAX、出力画素最小値OUT_MINの１つを移動させる操作を行った場合にも、その結果が、明るさ及びコントラストスライダーバーに反映されることになるので、明るさ及びコントラストに対してどのような操作を行ったのかも容易に理解しつつ操作することが可能となる。また、トーンカーブの調整を行えば、各色のヒストグラムもそれに応じてリアルタイムに変化するので、画像データの変換結果を客観的に評価することも可能となる。更にまた、トーンカーブの変化と各色のヒストグラムの変化とを視点を変えずに知ることもできる優れたユーザインタフェースを提供することが可能となる。
【００７８】
なお、本実施形態から明らかなように、本発明は、パーソナルコンピュータ等の汎用コンピュータ上で実行するコンピュータプログラムに適用されるものである。また、通常、コンピュータプログラムはＣＤ−ＲＯＭ等のコンピュータ可読記憶媒体に格納されている。そして、その媒体をコンピュータが有するドライブにセットしてシステムにコピーもしくはインストールされて実行可能となるわけであるから、当然、本発明はかかるコンピュータ可読記憶媒体をもその範疇とする。
【００７９】
また、本実施形態で説明したＧＵＩは、本発明の一つの例であって、上記実施形態のみによって本発明が限定されるものでもない。
【図面の簡単な説明】
【００８０】
【図１】画像処理装置の主要な構成要素を示すブロック図である。
【図２】本実施形態におけるＧＵＩウインドウを示す図である。
【図３】本実施形態におけるトーンカーブの変更処理を説明するための図である。
【図４】明るさスライダーバーを操作した場合のトーンカーブの状態の例を示す図である。
【図５】コントラストスライダーバーを操作した場合のトーンカーブの状態の例を示す図である。
【図６】明るさスライダーバー及びコントラストスライダーバーを操作した場合のトーンカーブの状態の例を示す図である。
【図７】本実施形態におけるトーンカーブの一例を示す図である。
【図８（Ａ）】明るさスライダーバーの操作した場合の処理手順を示すフローチャートである。
【図８（Ｂ）】明るさスライダーバーの操作した場合の処理手順を示すフローチャートである。
【図９】トーンカーブ上での操作した場合の明るさスライダーバー更新処理手順を示すフローチャートである。
【図１０】コントラストスライダーバーの操作した場合の処理手順を示すフローチャートである。
【図１１】トーンカーブ上での操作した場合のコントラストスライダーバー更新処理手順を示すフローチャートである。
【図１２】明るさ調整結果をトーンカーブに反映させる原理を説明するための図である。
【図１３】コントラスト調整結果をトーンカーブに反映させる原理を説明するための図である。
【図１４】トーンカーブの伸縮処理を説明するための図である。
【図１５】ＧＵＩウインドウのトーンカーブエリアの表示例を示す図である。
【図１６】本実施形態における画像調整処理のメインルーチンを示すフローチャートである。
【図１】
2005217655.tif 000003
【図２】
2005217655.tif 000004
【図３】
2005217655.tif 000005
【図４】
2005217655.tif 000006
【図５】
2005217655.tif 000007
【図６】
2005217655.tif 000008
【図７】
2005217655.tif 000009
【図８（Ａ）】
2005217655.tif 000010
【図８（Ｂ）】
2005217655.tif 000011
【図９】
2005217655.tif 000012
【図１０】
2005217655.tif 000013
【図１１】
2005217655.tif 000014
【図１２】
2005217655.tif 000015
【図１３】
2005217655.tif 000016
【図１４】
2005217655.tif 000017
【図１５】
2005217655.tif 000018
【図１６】
2005217655.tif 000019