以下に、図面を参照しながら、本発明を実施するための形態(実施形態)について説明する。
(第1の実施形態)
まず、本発明の第1の実施形態について説明する。
図1は、本発明の第1の実施形態に係る画像処理装置の内部のシステム構成の一例を示すブロック図である。
画像処理装置100は、図1に示すように、CPU101、ROM102、RAM103、蓄積装置104、入力装置105、表示装置106、及び、バス107を有して構成されている。
CPU101は、例えば、ROM102或いは蓄積装置104に記憶されているプログラムや各種の情報を用いて、画像処理装置100の全体を統括的に制御する。
ROM102は、変更を必要としないプログラムや各種のパラメータ等の情報などを格納している。
RAM103は、ROM102或いは蓄積装置104からロードされたプログラムや各種の情報を一時的に記憶するエリアを備えるとともに、CPU101が各種の処理を行うために必要とするワークエリアを備える。
蓄積装置104は、例えば、ハードディスクを含み構成され、オペレーティングシステム(OS)やCPUが実行するプログラム、更には本実施形態の説明において既知としている情報(画像データ等も含む)などを記憶している。
入力装置105は、利用者(ユーザ)からの指示や各種の情報を画像処理装置100に入力するための装置であり、キーボードやマウスなどの入力デバイスを含み構成されている。
表示装置106は、例えば、CRTや液晶ディスプレイ等を具備して構成されており、CPU101の制御に基づいて、前記プログラムによって生成処理された表示画像(表示画面)等をCRTや液晶ディスプレイ等に出力する。例えば、表示装置106は、編集処理の前後の画像やアルバム編集ソフトにおけるGUI画像などを表示出力する。
バス107は、CPU101と、ROM102、RAM103、蓄積装置104、入力装置105、表示装置106及びバス107とを相互に通信可能に接続する。
なお、図1に示すシステム構成は一例を示したものであり、例えば、図1に示す構成に加えて、利用者(ユーザ)の指示に基づき、画像の編集処理結果を印刷する印刷装置(不図示)を備える構成としてもよい。この場合、印刷装置としては、例えば、インクジェットプリンタやレーザープリンタなどを適用することができる。また、例えば、図1に示す構成に加えて、外部装置と通信を行う通信装置を備える構成としてもよい。この場合、例えば、通信装置及びインターネットを介して、編集処理結果の画像データを、印刷処理を行う業者の外部装置に送信して、当該業者に印刷処理をしてもらうようにすることも可能である。なお、図1に示すシステム構成については、上述した以外にも、様々な構成要素が存在するが、本発明の主眼ではないため、その記載及び説明は省略する。
ここで、本実施形態では、利用者(ユーザ)がアルバム作成ソフトウェアプログラムを利用して、複数の撮影画像を使って電子アルバムを作成する場合について説明する。
ここで、本実施形態では、利用者(ユーザ)が電子アルバムの作成に利用する撮影画像は、デジタルカメラ用の標準規格であるExifファイルとして、例えば蓄積装置104に保存されているものとする。なお、当該撮影画像は、例えば、CD−ROMなどの外部記憶装置から読み込まれたものや、Webなどのネットワーク先にある外部装置に保存されているものであっても本実施形態に適用可能である。
また、本実施形態では、説明を簡単にするために、アルバム作成ソフトウェアプログラムは、例えば蓄積装置104に保存されており、当該アルバム作成ソフトウェアプログラムを用いてアルバム作成を行うものとする。しかしながら、本発明においては、この形態に限定されるものではなく、例えば、Web上にあるシステムプログラムを用いてアルバム作成をする形態であってもよい。
利用者(ユーザ)が入力装置105を介してアルバム作成ソフトウェアプログラムの起動指示を行うと、CPU101は、蓄積装置104に記憶されているアルバム作成ソフトウェアプログラムを起動する処理を行う。その後、利用者(ユーザ)が入力装置105を介してアルバム作成に利用する画像が格納されているフォルダを指定すると、CPU101は、アルバム作成処理を開始する。ここで、アルバム作成に利用される画像は、複数のフォルダ内に存在していてもよいが、複数のフォルダ内に存在するか否かは重要でないため、本実施形態では、説明を簡単にするために、同一フォルダ内に全ての撮影画像が格納されているものとする。
図2は、本発明の第1の実施形態を示し、図1の表示装置106に表示されるアルバム作成に係るGUI画面の一例を示す模式図である。この図2のGUI画面200のウィンドウは、利用者(ユーザ)からアルバム作成指示がなされた際に、CPU101の処理によって表示装置106に表示される。そして、本実施形態では、利用者(ユーザ)は、例えば、図2に示すGUI画面200を見ながら、入力装置105であるキーボードやマウスを使って、アルバムの編集を行うことになる。
アルバム作成ウィンドウであるGUI画面200は、サムネイル画像一覧表示領域210、テンプレート一覧表示領域220、画像編集領域230、及び、メニュー一覧表示領域240を有して構成されている。
サムネイル画像一覧表示領域210は、アルバム作成に利用する撮影画像が格納されているフォルダとして利用者(ユーザ)が選択したフォルダの中の、全ての撮影画像に係るサムネイル画像を一覧表示する領域である。図2に示す例では、サムネイル画像一覧表示領域210には、サムネイル画像211〜214の4枚のサムネイル画像が示されているが、スクロールバーによって全ての撮影画像に係るサムネイル画像を確認することができるように構成されている。
ここで、サムネイル画像の表示は、本実施形態のように撮影画像がExifファイルとして保存されている場合には、Exif内部に格納されているサムネイル画像を用いてもよいし、或いは、CPU101が当該撮影画像を縮小して作成してもよい。このサムネイル画像の作成及び表示の方法については、本発明の主眼ではないため、その詳しい説明は省略する。利用者(ユーザ)は、サムネイル画像一覧表示領域210に表示されているサムネイル画像をマウス等で指定することによって、サムネイル画像を選択することができる。
テンプレート一覧表示領域220は、本アルバム作成ソフトウェアで利用できるページレイアウトのテンプレートに係るサムネイル画像の一覧を表示する領域である。図2に示す例では、テンプレート画像221〜224の4枚のサムネイル画像が示されているが、テンプレート一覧表示領域220にあるスクロールバーでスクロールすることにより、その他のテンプレート画像も閲覧・選択できるように構成されている。
利用者(ユーザ)は、テンプレート一覧表示領域220に表示されているテンプレートのサムネイル画像をマウス等で指定することによって、画像編集領域230に表示するテンプレート画像を選択することができる。本実施形態では、テンプレート一覧表示領域220において、選択されたテンプレート画像の輪郭を太線表示することによって、選択状態を示している。この際、選択状態を示す方法は、選択されたテンプレート画像にマークを付けたり、色を変えたりするなどの他の方法を用いて、非選択のテンプレート画像と識別する形態であってもよい。
また、本例では、リボンマーク225が左上に付いているテンプレート画像については、背景にユーザ指定の画像を利用可能であることを示すものとする。具体的に、図2に示す例では、テンプレート画像223は、背景にユーザ指定の画像を利用できるが、テンプレート画像221、222及び224は、予め決められた色や模様の背景画像のみの利用になる。ここで利用できるテンプレート画像は、例えば、CD−ROMなどの外部記憶装置から読み込む方法や、ネットワーク先の専用サイトからダウンロードする方法など様々な方法で取得可能である。なお、このテンプレート画像の取得方法については、本発明の主眼ではないため、その詳しい説明は省略する。
画像編集領域230は、アルバムの各ページの編集を行う際に、その編集結果をプレビュー表示する領域である。画像編集領域230では、テンプレート一覧表示領域220の中から選択されたテンプレート画像が背景に表示される。また、サムネイル画像一覧表示領域210で選択されたサムネイル画像をテンプレート画像の所定領域にマウスを用いてドラッグ&ドロップすることにより、テンプレート画像上に撮影画像を合成した合成画像を生成することができるように構成されている。
GUI画面200では、画像編集領域230の下方の両端にあるBACKボタン238及びNEXTボタン239をクリックすることにより、それぞれ、前及び後のページのプレビュー・編集が可能に構成されている。
ここで、本例では、画像編集領域230の背景として、リボンマーク225が付された(即ちユーザ指定の画像が利用できる)、テンプレート画像223が選択された場合について説明する。
利用者(ユーザ)がテンプレート画像223を選択すると、CPU101は、当該テンプレート画像223を、画像編集領域230の背景として表示する処理を行う。ここで、テンプレート画像223のみが選択されている時点では、撮影画像がまったく貼り付けられていない、ただの枠等のみの画像が表示される状態である。
そして、画像編集領域230に表示されたテンプレート画像223の背景領域部分に、サムネイル画像一覧表示領域210から選択された撮影画像(サムネイル画像)がドラック&ドロップされると、CPU101は、これを検知する。そして、CPU101は、背景画像231として、当該撮影画像(及びテンプレート画像223も含む)を表示する。ここで、図2に示す例では、背景画像231として表示された撮影画像は、サムネイル画像一覧表示領域210に図示されていないが、サムネイル画像一覧表示領域210のスクロールバーを上下させることにより、背景として選択された撮影画像である。
また、画像編集領域230に表示されたテンプレート画像223のフレーム232、233及び234の枠内に、背景のときと同様に、それぞれ、選択された撮影画像がドラッグ&ドロップされると、CPU101は、当該フレームの枠内に撮影画像を貼り付ける。図2に示す例では、サムネイル画像211、213及び214が、それぞれ、フレーム232、233及び234に貼り付けられた様子を示している。
ここで、本実施形態において、背景画像231は、背景となる第1画像を構成し、当該背景画像231の上に配置され、複数のフレーム232、233及び234の枠内に貼り付けられるフレーム枠内画像は、第2画像を構成する。
本実施形態では、背景画像及びフレーム枠内画像の指定方法として、ドラッグ&ドロップを用いる例を示したが、この形態に限定されるものではなく、例えば、背景画像選択モードとフレーム枠内画像選択モードを切り替える方法などの他の方法を用いてもよい。
本実施形態では、CPU101は、撮影画像がテンプレート画像のフレーム(232〜234)の枠内に貼り付けられた時点でその背景に係る背景画像が既に選択されている場合、フレーム枠内画像に応じて当該背景画像の色変換処理を行う。そして、この場合、CPU101は、画像編集領域230に色変換処理後の背景画像231を表示する。
また、CPU101は、逆に、テンプレート画像のフレーム(232〜234)の枠内の撮影画像の選択後にその背景に係る背景画像が指定された場合、指定された時点でフレーム枠内画像に応じて当該背景画像の色変換処理を行う。そして、この場合、CPU101は、画像編集領域230に色変換処理後の背景画像231を表示する。
メニュー一覧表示領域240は、GUI画面200における各種のメニューの一覧を表示する領域である。
図3は、本発明の第1の実施形態に係る画像処理装置による画像処理方法の処理手順の一例を示すフローチャートである。具体的に、図3には、背景画像の色変換処理(より詳細には、色変換済み背景画像の取得処理)における処理手順の一例が示されている。また、図3に示すフローチャートにおける処理は、CPU101が、例えばROM102或いは蓄積装置104に記憶されているプログラムを実行することにより実現される。
まず、ステップS301において、CPU101は、テンプレート画像のフレーム枠内に貼り付ける画像として指定された撮影画像の枚数Nを取得する。ここで、枚数Nの取得方法としては、各フレームに関連付けられている画像があるか否かを確認し、関連付けられている画像の枚数を数えることにより取得する。図2に示す例の場合には、サムネイル画像211、213及び214の3枚がフレーム枠内に貼り付ける撮影画像として指定されているので、この場合は、枚数N=3となる。
続いて、ステップS302において、CPU101は、ステップS301で取得した枚数Nが、0よりも大きいか否か(即ち、フレーム枠内に貼り付ける撮影画像として画像が1枚以上指定されたか否か)を判断する。
ステップS302の判断の結果、ステップS301で取得した枚数Nが0よりも大きくない(即ち0である)場合には、フレーム枠内に貼り付ける画像がないため、背景画像が指定されているか否かに関わらず、何らの処理を行うことなく、図3の処理を終了する。
一方、ステップS302の判断の結果、ステップS301で取得した枚数Nが、0よりも大きい場合には、フレーム枠内に貼り付ける画像があると判定し、ステップS303に進む。
ステップS303に進むと、CPU101は、背景画像が指定されているか否かを判断する。ここで、背景画像の指定の有無は、背景画像として関連付けられている画像の有無によって判定する。
ステップS303の判断の結果、背景画像が指定されていない場合には、図3の処理を終了する。
一方、ステップS303の判断の結果、背景画像が指定されている場合には、ステップS304に進む。
ステップS304に進むと、CPU101は、フレーム枠内画像として指定されているN枚の画像を解析し、各画像について代表色相Ha[n](n=0,1,…,N−1)を決定する処理を行う。ここで、このステップS304の処理を行うCPU101は、代表色相決定手段を構成する。このステップS304における代表色相Ha[n]の具体的な決定方法については、図4を用いて後述する。
続いて、ステップS305において、CPU101は、背景画像の明度変換パラメータを算出する処理を行う。ここで、このステップS305の処理を行うCPU101は、明度変換パラメータ算出手段を構成する。このステップS305における背景画像の明度変換パラメータの具体的な算出方法については、図6を用いて後述する。
続いて、ステップS306において、CPU101は、ステップS305の算出の結果得られた明度変換パラメータと、ステップS304で決定した代表色相Ha[n]に応じて、背景画像の色変換処理を行う。そして、CPU101は、背景画像(例えば図2に示す231)と、当該背景画像の上に配置される複数のフレーム枠内画像(例えば図2に示す232〜234)とを合成する合成処理を行う。ここで、このステップS306の処理を行うCPU101は、画像処理手段を構成する。このステップS306における背景画像の具体的な色変換処理方法については、図7を用いて後述する。
ステップS306の処理が終了すると、図3のフローチャートにおける処理が終了する。
次に、図3のステップS304(各フレーム枠内画像の代表色相Ha[n]の決定方法)の具体的な処理について説明する。
図4は、図3のステップS304の具体的な処理手順の一例を示すフローチャートである。
図3のステップS304の処理が開始されると、まず、図4のステップS401において、CPU101は、テンプレート画像の各フレームの枠内に指定された撮影画像のファイルI_f[n](n=0,1,…,N−1)を取得する。図2に示す例の場合には、例えば、以下の(1)式〜(3)式のように取得される。
I_f[0]=画像211 ・・・(1)
I_f[1]=画像213 ・・・(2)
I_f[2]=画像214 ・・・(3)
続いて、ステップS402において、CPU101は、ファイルカウンタnに0を入れて初期化する。
続いて、ステップS403において、CPU101は、画像I_f[n]を解析し、平均彩度Sa[n]、平均明度Va[n]、及び、最頻出色相範囲Ha[n]を算出する。このステップS403の具体的な算出方法については、図5を用いて後述する。
続いて、ステップS404において、CPU101は、ファイルカウンタnに1を足してファイルカウンタをインクリメントする。
続いて、ステップS405において、CPU101は、ファイルカウンタnと図3のステップS301で取得した撮影画像の枚数Nとを比較して、フレーム枠内に指定された全ての画像について解析を終了したか否かを判断する。ここで、フレーム枠内に指定された全ての画像について解析を終了したか否かの判断は、n=Nであるか否かに基づき行う。
ステップS405の判断の結果、フレーム枠内に指定された全ての画像については解析を終了していない(即ち、未解析の画像が存在する)場合には、ステップS403に戻り、ステップS403以降の処理を再度行う。
一方、ステップS405の判断の結果、フレーム枠内に指定された全ての画像について解析を終了した場合には、図4のフローチャートにおける処理を終了する。
次に、図4のステップS403(平均彩度、平均明度及び最頻出色相範囲の算出方法)の具体的な処理について説明する。
図5は、図4のステップS403の具体的な処理手順の一例を示すフローチャートである。
まず、図5のステップS501において、CPU101は、ステップS401で取得した画像I_f[n]をデコードし、RGB画像データと、当該画像の幅に係る画素数W[pixel]及びその高さに係る画素数L[pixel]を取得する。
ここで、本実施形態の場合、画像I_f[n]はExifファイルであるため、JPEGデータである場合には、JPEGのSOFマーカを読むことにより、画像の幅Wと画像の高さLを取得する。また、非圧縮データである場合には、ImageWidthタグ(タグ番号0x100)を検索し、このタグの値を読むことにより画像の幅Wを取得し、I
mageLengthタグ(タグ番号0x101)のタグの値を読むことにより画像の高
さLを取得する。また、Exifファイルの画像をデコードし、RGB画像データを得る方法については、公知であるので、その説明は省略する。
続いて、ステップS502において、CPU101は、色相のヒストグラムを作成する配列hist[c]を初期化する。
ここで、本実施形態では、色相(0度〜360度)を0度から30度ずつ区切り、12個の色相範囲としてカウントするものとする。具体的に、hist[0]は0.0度〜30.0度、hist[1]は30.0度〜60.0度、…、hist[11]は330.0度〜360.0度の色相範囲に含まれる画素数に係るカウント値を保存するものとする。そのため、配列hist[c]は要素数が12であり、ステップS502では、hist[0]〜hist[11]のカウント値を全て0にすることで初期化する。
続いて、ステップS503において、CPU101は、画像の縦方向の画素数をカウントするカウンタyに0を代入して初期化する。
続いて、ステップS504において、CPU101は、画像の横方向の画素数をカウントするカウンタxに0を代入して初期化する。
続いて、ステップS505において、CPU101は、ステップS501で取得した画像I_f[n]の画素P(x,y)のRGBデータ(Rxy,Gxy,Bxy)をHSV
データ(Hxy,Sxy,Vxy)に変換する。
このRGBデータからHSVデータへの変換方法は、公知の方法を用いることができる。例えば、RGBデータが各8bitであって、値の範囲が0〜255である場合には、以下のようになる。
この際、以下の(4)式〜(5)式を定義する。
Max=Rxy,Gxy,Bxyの中の最大値 ・・・(4)
Min=Rxy,Bxy,Bxyの中の最小値 ・・・(5)
この場合、(4)式〜(5)式を用いて、以下の(6)式〜(10)式のように示すことができる。
明度Vxy=Max/255.0 ・・・(6)
彩度Sxy=(Max−Min)/Max ・・・(7)
Max=Rxy、かつ、Sxy>0.0である場合、
色相Hxy=60×(Gxy−Bxy)/(Max−Min) ・・・(8)
Max=Gay、かつ、Sxy>0.0である場合、
色相Hxy=120+60×(Bxy−Rxy)/(Max−Min) ・・・(9)
Max=Bxy、かつ、Sxy>0.0である場合、
色相Hxy=240+60×(Rxy−Gxy)/(Max−Min) ・・(10)
また、Sxy=0.0である場合、色相Hxyは未定義となる。
したがって、明度Vxy及び彩度Sxyの値の範囲は0.0〜1.0であり、色相Hxyの値の範囲は0.0度〜360.0度である。
続いて、ステップS506において、CPU101は、ステップS505で取得したHxyから、ヒストグラムhist[c]の値をカウントし、ヒストグラムhist[c]を作成する。具体的に、本実施形態では、色相を30度ずつ区切ってヒストグラムを作成するので、Hxyの値を30.0で割った商の番号aを使って、hist[a]の値を1つカウントアップして処理をすればよい。例えば、Hxyの値が40.0であれば、40.0÷30.0の商が1であるので、hist[1]の値を1つカウントアップすればよい。ただし、彩度Sxyが0.0の場合には、色相Hxyは未定義であるので、hist[c](c=0〜11)のいずれのヒストグラムの値もカウントアップしない。
続いて、ステップS507において、CPU101は、画像の横方向のカウンタxに1を足して、カウンタxと画像の幅の画素数Wとを比較することにより、1ライン分(y行目)の画素に対してRGB→HSV変換が終了したか否かを判断する。
ステップS507の判断の結果、1ライン分(y行目)の画素に対してはRGB→HSV変換が終了していない場合には、未だy行目の画素で変換処理が終了していない画素があると判定し、ステップS505に戻って、ステップS505以降の処理を再度行う。
一方、ステップS507の判断の結果、1ライン分(y行目)の全ての画素に対してRGB→HSV変換が終了した場合(即ち、x=Wである場合)には、ステップS508に進む。
ステップS508に進むと、CPU101は、画像の縦方向のカウンタyに1を足して、カウンタyと画像の高さの画素数Lとを比較することにより、当該画像の全ての画素に対してRGB→HSV変換が終了したか否かを判断する。
ステップS508の判断の結果、全ての画素に対してはRGB→HSV変換が終了していない場合には、未だ変換処理が終了していない画素があると判定し、ステップS504に戻って、ステップS504以降の処理を再度行う。
一方、ステップS508の判断の結果、全ての画素に対してRGB→HSV変換が終了した場合(即ち、y=Lである場合)には、ステップS509に進む。
ステップS509に進むと、CPU101は、ステップS505で変換された全画素の彩度Sxy及び明度Vxyと、ステップS501で取得した画像の幅W及び高さLの画素数から、平均彩度Sa[n]と平均明度Va[n]を算出する。ここで、具体的な算出式は下記の(のようになる。
平均彩度Sa[n]=(全画素の彩度Sxyの総和)/(画像の画素数)
・・・(11)
平均明度Va[n]=(全画素の明度Vxyの総和)/(画像の画素数)
・・・(12)
続いて、ステップS510において、CPU101は、ステップS506で作成した色相のヒストグラムhist[c]から、最頻出色相範囲Ha[n]を算出する。その後、図5のフローチャートにおける処理を終了する。
本実施形態の場合、最頻出色相範囲として、30度ずつ区切った色相の番号が決定されるものとする。つまり、hist[0]〜hist[11]のうち、hist[1]の値が最も大きい場合には、最頻出色相範囲Ha[n]=1となり、これは、30.0度〜60.0度の色相角に入る画素が最も多かったことを表す。また、本実施形態では、Ha[0]=2、Ha[1]=1、Ha[2]=1として、最頻出色相範囲が算出されたものとする。
次に、図3のステップS305(背景画像の明度変換パラメータの算出方法)の具体的な処理について説明する。
図6は、図3のステップS305の具体的な処理手順の一例を示すフローチャートである。
基本的には、背景画像231上に貼り付けられる、フレーム枠内画像(232〜234等)の明度が全体的に明るければ、背景画像231の明度を暗くする明度変換パラメータの算出を行う。また、背景画像231上に貼り付けられる、フレーム枠内画像(232〜234等)の明度が全体的に暗ければ、背景画像231の明度を明るくする明度変換パラメータの算出を行う。
図3のステップS305の処理が開始されると、まず、図6のステップS601において、CPU101は、ステップS509で算出された、各フレーム枠内画像I_f[n]の平均明度Va[n]の中から、最大値Vmaxと最小値Vminを算出する。これにより、最大平均明度Vmaxと最小平均明度Vminが算出される。
本実施形態の場合、3つのフレーム枠内画像(232〜234)の平均明度が、それぞれ、0.42、0.56、0.60であったとすると、最大平均明度Vmax=0.60、最小平均明度Vmin=0.42となる。
続いて、ステップS602において、CPU101は、背景画像の明度の圧縮割合Vrを、明度の可能な再現範囲の半分にするように、以下の(13)式を用いて算出する。
Vr=(明度の最大値−明度の最小値)/2 ・・・(13)
本実施形態の場合には、明度Vは、最小値0.0〜最大値1.0の範囲の値であるので、Vr=(1.0−0.0)/2=0.5となる。
続いて、ステップS603では、CPU101は、ステップS601で算出した最小平均明度Vminと最大平均明度Vmaxとの和が、明度の最大値よりも大きいか否かを判断する。
ステップS603の判断の結果、ステップS601で算出した最小平均明度Vminと最大平均明度Vmaxとの和が、明度の最大値よりも大きい場合には、全体的にフレーム枠内画像は明るいものと判定し、ステップS604へ進む。
本例の場合には、Vmax+Vmin=0.60+0.42=1.02>明度の最大値=1.0となるので、全体的にフレーム枠内画像は明るいもの(明るい画像が多い)と判定し、ステップS604へ進むことになる。即ち、本例では、最小平均明度Vminと最大平均明度Vmaxとの和が明度の最大値となる場合を所定の基準とし、当該和が明度の最大値よりも大きい場合に、全体的にフレーム枠内画像における明度が所定の基準よりも明るいと判断される。逆に、当該和が明度の最大値よりも大きくない場合に、全体的にフレーム枠内画像における明度が所定の基準よりも暗いと判断される。
ステップS604に進むと、CPU101は、フレーム枠内画像が明るいと判定しているので、背景画像の明度を暗くしてフレーム枠内画像を目立たせるべく、背景画像の明度のオフセット値Voを明度Vの最小値に設定する。ここで、背景画像の明度のオフセット値Voは、背景画像の明度変換パラメータを構成する。本実施形態の場合、明度Vの値は、0.0〜1.0の範囲の値であるので、ここでは、Vo=0.0を設定する。
一方、ステップS603の判断の結果、ステップS601で算出した最小平均明度Vminと最大平均明度Vmaxとの和が、明度の最大値よりも大きくない場合には、全体的にフレーム枠内画像は暗いものと判定し、ステップS605へ進む。
ステップS605に進むと、CPU101は、フレーム枠内画像が暗いと判定しているので、背景画像の明度を明るくしてフレーム枠内画像を目立たせるべく、背景画像の明度のオフセット値Voを、以下の(14)式のように設定する。
Vo=(明度の最大値−最小値)/2 ・・・(14)
本実施形態の場合、明度Vの値は、0.0〜1.0の範囲の値であるので、ここでは、Vo=(1.0−0.0)/2=0.5を設定する。
つまり、図6のフローチャートにおける処理により、本実施形態の場合、変換後の背景画像の明度は、0.0〜0.5、または、0.5〜1.0になる。
ステップS604又はS605の処理が終了すると、図6のフローチャートにおける処理を終了する。
次に、図3のステップS306(背景画像の色変換処理方法)の具体的な処理について説明する。
図7は、図3のステップS306の具体的な処理手順の一例を示すフローチャートである。
図3のステップS306の処理が開始されると、まず、図7のステップS701において、CPU101は、背景画像Ibを取得する。本実施形態の場合、図2の背景画像231として貼り付けられている画像を取得することになる。この図2に示す背景画像231は、図2のサムネイル画像一覧表示領域210には図示されていないが、サムネイル画像一覧表示領域210にあるスクロールバーでスクロールすることにより、そのサムネイル画像を確認し、取得することができる。
続いて、ステップS702において、CPU101は、ステップS701で取得した背景画像Ibをデコードし、RGB画像データと、当該背景画像の幅に係る画素数Wb及びその高さに係る画素数Lbを取得する。この取得方法については、図5のステップS501においてフレーム枠内画像をデコードしたときと同様の方法で取得可能であるため、その説明は省略する。本実施形態では、Wb=1500、Lb=1004であるものとする。
続いて、ステップS703において、CPU101は、ステップS702で得られた背景画像IbのRGB画像データをHSV画像データに変換する。ここで、このRGB画像データからHSV画像データへの変換方法については、図5のステップS505において説明した、フレーム枠内画像の画素のRGBデータをHSVデータに変換する変換方法と同様の方法で行うことが可能であるため、その説明は省略する。
続いて、ステップS704において、CPU101は、ステップS304で決定されたN枚のフレーム枠内画像における各最頻出色相範囲(各代表色相)Ha[n]を取得する。本実施形態の場合、図5で説明したように、Ha[0]=2、Ha[1]=1、Ha[2]=1として、最頻出色相範囲Ha[n]が決定されたものとする。即ち、画像I_f[0]=画像211は、60.0度〜90.0度の色相角に入る画素が最も多く、画像I_f[1]=画像213、画像I_f[2]=画像214は、30.0度〜60.0度の色相角に入る画素が最も多い。
続いて、ステップS705において、CPU101は、ステップS704で取得した各フレーム枠内画像の各最頻出色相範囲Ha[n]を比較し、全てのフレーム枠内画像が同系色であるか否かを判断する。
ここで、同系色の定義として、本実施形態では、各最頻出色相範囲Ha[n]が60度以内に入っていれば同系色であるものとする。つまり、本実施形態では、各色相範囲を30度(所定の色相角)ずつ区切って番号(値)を振っているので、各最頻出色相範囲Ha[n]の値が同一の色相範囲または隣り合う2つの色相範囲の値であれば同系色であると判断する。ただし、色相は角度で表しているので、0.0度〜30.0度を示す色相範囲0と、330.0度〜360.0度を示す色相範囲11は、隣り合う色相範囲の値であると解釈される。本実施形態の場合、Ha[0]=2、Ha[1]=1、Ha[2]=1であり、3つの色相範囲の値は、同一の色相範囲または隣り合う2つの色相範囲の値で構成されているため、同系色であると判断されることになる。
ステップS705の判断の結果、全てのフレーム枠内画像が同系色である場合には、ステップS706に進む。
ステップS706に進むと、CPU101は、背景画像に対して特定の色相を残す色変換処理を行う。このステップS706の具体的な色変換処理については、図8を用いて後述する。
一方、ステップS705の判断の結果、全てのフレーム枠内画像については同系色でない場合には、ステップS707に進む。
ステップS707に進むと、CPU101は、背景画像に対してモノクロ処理を行う。このステップS707の具体的なモノクロ処理については、図12を用いて後述する。
ステップS706又はS707の処理が終了すると、図7のフローチャートにおける処理が終了する。
次に、本実施形態における、図7のステップS706(背景画像に対して特定の色相を残す色変換処理方法)の具体的な処理について説明する。
図8は、本発明の第1の実施形態を示し、図7のステップS706の具体的な処理手順の一例を示すフローチャートである。
本実施形態では、背景画像に対して特定の色相を残す色変換処理方法として、「決められた色相の角度で反対色の色数を減らす」処理を行う。
具体的には、特定の色相を残すために、まず、同系色である各フレーム枠内画像の最頻出色相範囲に係る角度から、この全フレーム枠内画像を代表する色相を決定し、その色相に近い色相の画素の色はそのまま残して彩度と明度のみを変更する。一方、全フレーム枠内画像を代表する色相と反対に位置する色相(即ち、そのまま残す色相以外の色相)は、ある特定の色相に統一し、色相及び明度を変更する。これにより、フレーム枠内画像と同系色の色相は残し、残す色相以外の色相は減らす処理が行われる。以下、図8について、具体的に説明する。
図7のステップS706の処理が開始されると、まず、図8のステップS801において、CPU101は、ステップS704で取得した各フレーム枠内画像の最頻出色相範囲Ha[n](n=0,1,…,N−1)の中央の色相角を代表色相Hpとして取得する。
本実施形態の場合、Ha[0]=2、Ha[1]=1、Ha[2]=1であり、これらの色相範囲は30.0度〜90.0度であるため、その中央値である色相角60.0度が代表色相Hpとなる。もし、全てのフレーム枠内画像の最頻出色相範囲に係る角度が同一の場合、つまり、Ha[0]=Ha[1]=Ha[2]=1のような場合には、最頻出色相範囲が30.0度〜60.0度であるため、代表色相Hp=45.0度となる。また、フレーム枠内画像の最頻出色相範囲が330.0度〜30.0度のような場合には、代表色相Hp=0.0度となる。
続いて、ステップS802において、CPU101は、背景画像の彩度を圧縮し、コントラストを下げるための彩度圧縮パラメータのデフォルト値Shdを算出する。このステップS802の具体的な算出方法については、図9を用いて後述する。
続いて、ステップS803において、CPU101は、背景画像の縦方向の画素数をカウントするカウンタyに0を代入して初期化する。
続いて、ステップS804において、CPU101は、背景画像の横方向の画素数をカウントするカウンタxに0を代入して初期化する。
続いて、ステップS805において、CPU101は、ステップS703でHSV画像データに変換された背景画像の画素Pb(x,y)の値(Hb_xy,Sb_xy,Vb
_xy)を取得する。
続いて、ステップS806において、CPU101は、ステップS805で取得した画素Pb(x,y)の色相Hb_xyが、ステップS801で取得した代表色相Hpと近い
色か否かを判断する。具体的に、ステップS806では、色相Hb_xyが、代表色相Hpに対して予め決められた閾値の角度である±Rng度以内に入っていれば、Pb(x,
y)の色相Hb_xyは、代表色相Hpに近い色だと判断する。
本実施形態の場合、Rng=75.0度とすると、代表色相Hp=60.0であるので、Hp−Rng=60.0−75.0=−15.0=345.0度、Hp+Rng=60.0+75.0=135.0度となる。したがって、345.0≦Hb_xy≦360.0又は0.0≦Hb_xy≦135.0であれば、Pb(x,y)の色相Hb_xyは代
表色相Hpに近い色だと判断され、そうでなければ、色相Hb_xyは代表色相Hpと異なる色であると判断される。
ステップS806の判断の結果、ステップS805で取得した画素Pb(x,y)の色
相Hb_xyが、ステップS801で取得した代表色相Hpと近い色である場合には、ステップS807に進む。
ステップS807に進むと、CPU101は、画素Pb(x,y)に関して、色相Hb
_xyは変えずに、彩度Sb_xy、及び、明度Vb_xyのみを変更する。このステップS807の具体的な変更方法については、図10を用いて後述する。
一方、ステップS806の判断の結果、ステップS805で取得した画素Pb(x,y
)の色相Hb_xyが、ステップS801で取得した代表色相Hpと近い色でない(即ち、異なる色である)場合には、ステップS808に進む。
ステップS808に進むと、CPU101は、色相Hb_xy、彩度Sb_xy、明度Vb_xyのいずれの値も変更して、色数を減らす処理を行う。このステップS808の具体的な変更方法については、図11を用いて後述する。
ステップS807又はS808の処理が終了すると、ステップS809に進む。
ステップS809に進むと、CPU101は、ステップS807又はS808で変更された画素Pb(x,y)のHSVデータをRGBデータに戻す処理を行う。このHSVデ
ータのRGBデータへの変換処理は、以下の(15)式〜(25)を用いて計算される。
S=0.0であれば、R=G=B=V×255.0 ・・・(15)
S≠0.0であれば、
Hi=(H/60.0)以下の最大の整数値
f=H/60.0−Hi ・・・(16)
p=V×255.0×(1.0−S) ・・・(17)
q=V×255.0×(1.0−S×f) ・・・(18)
t=V×255.0×(1.0−S×(1.0−f)) ・・・(19)
とすると、
Hiが0なら、R=V G=t B=p ・・・(20)
Hiが1なら、R=q G=V B=p ・・・(21)
Hiが2なら、R=p G=V B=t ・・・(22)
Hiが3なら、R=p G=q B=V ・・・(23)
Hiが4なら、R=t G=p B=V ・・・(24)
Hiが5なら、R=V G=p B=q ・・・(25)
となる。
続いて、ステップS810において、CPU101は、背景画像の横方向のカウンタxに1を足して、カウンタxとステップS702で取得した背景画像の幅の画素数Wbとを比較し、1ライン分(y行目)の画素に対する色変換処理が終了したか否かを判断する。ここで、カウンタxの値と背景画像の幅の画素数Wbの値とが等しい場合には、1ライン分(y行目)の画素に対する色変換処理が終了したと判断される。
ステップS810の判断の結果、1ライン分(y行目)の画素に対しては色変換処理が終了していない場合には、未だy行目の画素で色変換処理が終了していない画素があると判定し、ステップS805に戻って、ステップS805以降の処理を再度行う。
一方、ステップS810の判断の結果、1ライン分(y行目)の全ての画素に対して色変換処理が終了した場合(即ち、x=Wbである場合)には、ステップS811に進む。
ステップS811に進むと、CPU101は、背景画像の縦方向のカウンタyに1を足して、カウンタyとステップS702で取得した背景画像の高さの画素数Lbとを比較し、当該背景画像の全ての画素に対して色変換処理が終了したか否かを判断する。ここで、カウンタyの値と背景画像の高さの画素数Lbの値とが等しい場合には、背景画像の全ての画素に対して色変換処理が終了したと判断される。
ステップS811の判断の結果、背景画像の全ての画素に対しては色変換処理が終了していない場合には、未だ色変換処理が終了していない画素があると判定し、ステップS804に戻って、ステップS804以降の処理を再度行う。
一方、ステップS811の判断の結果、背景画像の全ての画素に対して色変換処理が終了した場合(即ち、y=Lbである場合)には、図8のフローチャートにおける処理を終了する。
次に、図8のステップS802(彩度圧縮パラメータのデフォルト値算出方法)の具体的な処理について説明する。
図9は、図8のステップS802の具体的な処理手順の一例を示すフローチャートである。
背景画像の彩度を圧縮することによりコントラストが低下し、フレーム枠内画像がより目立つことになる。また、背景画像の彩度にばらつきがあるよりも、ほぼ同じ彩度で合っている方が、背景画像の印象がおとなしいものになり、フレーム枠内画像がより目立つことになる。そこで、本実施形態では、このような考えの下に、彩度をどの程度圧縮するのかを決定する。以下、図9を用いて具体的に説明する。
図8のステップS802の処理が開始されると、まず、図9のステップS901において、CPU101は、ステップS703で取得した、背景画像IbのHSV画像データから、彩度のヒストグラムを作成する。この際、ヒストグラムの作成方法は、図5のステップS506で色相のヒストグラムを作成した場合と同様に、彩度Sb_xyの出現頻度を数えることで行うことができる。
本実施形態の場合、0.0〜1.0の範囲にある彩度を0.2ずつ刻んで、0.0〜0.2、0.2〜0.4、…、0.8〜1.0のそれぞれの範囲に含まれる画素数がいくつあるのかをカウントして、ヒストグラムを作成する。そして、本実施形態では、以下の(26)式〜(30)式に示す結果を得たものとする。
彩度0.0〜0.2の範囲=872912画素 ・・・(26)
彩度0.2〜0.4の範囲=304256画素 ・・・(27)
彩度0.4〜0.6の範囲=148187画素 ・・・(28)
彩度0.6〜0.8の範囲=135851画素 ・・・(29)
彩度0.8〜1.0の範囲= 44794画素 ・・・(30)
続いて、ステップS902において、CPU101は、ステップS901で取得した彩度のヒストグラムから、最頻出の彩度の範囲(最頻出彩度範囲)に含まれる画素数Csを取得する。本実施形態の場合、上述した(26)式に示されるCs=872912画素となる。
続いて、ステップS903において、CPU101は、背景画像に彩度のばらつきがあるか否かを判断する。具体的に本実施形態では、背景画像全体の画素数のa倍(0.0<a<1.0)を閾値とし、ステップS902で取得した画素数Csが当該閾値よりも小さい場合にばらつきがあると判断し、画素数Csが当該閾値よりも小さくない場合にばらつきがないと判断する。
ここで、本実施形態において例えばa=0.5とし、また、ステップS702において、背景画像の幅の画素数Wb=1500及びその高さの画素数Lb=1004の値を取得している。この場合、Cs=872912と、Wb×Lb×a=1500×1004×0.5=753000とを比較すると、Csの方が大きいので、彩度のばらつきがないと判断されることになる。
ステップS903の判断の結果、背景画像に彩度のばらつきがある(画素数Csが閾値よりも小さい)場合には、ステップS904に進む。
ステップS904に進むと、CPU101は、彩度の圧縮割合を大きくするために、彩度圧縮パラメータのデフォルト値Shdに0.4を設定する。この場合、デフォルト値Shdを使うと、背景画像の彩度は、0.0〜0.4の再現範囲に圧縮されることになる。
一方、ステップS903の判断の結果、背景画像に彩度のばらつきがない(画素数Csが閾値以上である)場合には、ステップS905に進む。
ステップS905に進むと、CPU101は、彩度の圧縮割合を小さくするために、彩度圧縮パラメータのデフォルト値Shdに0.8を設定する。この場合、デフォルト値Shdを使うと、背景画像の彩度は、0.0〜0.8の再現範囲に圧縮されることになる。
ステップS904又はS905の処理が終了すると、図9のフローチャートにおける処理が終了する。
なお、本実施形態では、ステップS903の処理で用いる定数aとして0.5を用いたが、これは、彩度のヒストグラムを作成する際に、どのように彩度の再現範囲を分けたのかに依存する。本実施形態の場合、0.0〜1.0の範囲を0.2刻みの5つの範囲に分けてヒストグラムを計算したので、これらの範囲に平均的に分布した場合、画像の全画素の1/5ずつがカウントされることになる。したがって、少なくとも、この1/5=0.2よりも大きな値を定数aに適用すべきである。
また、本実施形態では、ステップS904及びS905の処理で用いる彩度圧縮パラメータのデフォルト値Shdとして、それぞれ、0.4及び0.8を用いているが、この値に限定されるものではなく、0.0〜1.0の間の値であれば構わない。ただし、あまりに小さい値を入れると、ほとんど色が残らずに無彩色の画像になってしまう。逆に、あまりに大きい値を入れると、彩度が抑えられずにフレーム枠内画像が目立たなくなるので、程よい値を用いることが望まれる。
次に、図8のステップS807(背景画像の彩度と明度のみの変換処理方法)の具体的な処理について説明する。
図10は、図8のステップS807の具体的な処理手順の一例を示すフローチャートである。
図8のステップS807の処理が開始されると、まず、図10のステップS1001において、CPU101は、ステップS805で取得した背景画像Ibの画素Pb(x,y
)の色相Hb_xyが、赤系の色(所定の色)か否かを判断する。具体的に、ここでは、Hb_xyの色相範囲の角度が0度以上60度以下、または、330度以上360度以下であれば、赤系の色であると判断し、それ以外の色相範囲の角度であれば、赤系の色でないと判断する。
ステップS1001の判断の結果、ステップS805で取得した背景画像Ibの画素Pb(x,y)の色相Hb_xyが赤系の色である場合には、ステップS1002に進む。
ステップS1002に進むと、CPU101は、画素Pb(x,y)に対する彩度圧縮
割合を示す彩度圧縮パラメータShrとして、ステップS802で取得した彩度圧縮パラメータのデフォルト値Shdに0.8を掛けた値を設定する。
一方、ステップS1001の判断の結果、ステップS805で取得した背景画像Ibの画素Pb(x,y)の色相Hb_xyが赤系の色でない場合には、ステップS1003に
進む。
ステップS1003に進むと、CPU101は、画素Pb(x,y)に対する彩度圧縮
割合を示す彩度圧縮パラメータShrとして、ステップS802で取得した彩度圧縮パラメータのデフォルト値Shdを設定する。
ステップS1002又はS1003の処理が終了すると、ステップS1004に進む。
ステップS1004に進むと、CPU101は、ステップS805で取得した背景画像Ibの画素Pb(x,y)の色相Hb_xyは変更せずに、彩度Sb_xy及び明度Vb
_xyを、それぞれ、以下の(31)式及び(32)式のように変更する。
Sb_xy=Sb_xy×Shr ・・・(31)
Vb_xy=Vb_xy×Vr+Vo ・・・(32)
ここで、(31)式のShrは、ステップS1002又はS1003で取得した画素Pb(x,y)に対する彩度圧縮パラメータである。また、(32)式のVrは、ステップ
S602で算出した背景画像Ibの明度の圧縮割合であり、Voは、ステップS604又はS605で算出した背景画像Ibの明度のオフセット値である。
ステップS1004の処理が終了すると、図10に示すフローチャートにおける処理が終了する。
次に、図8のステップS808(背景画像の色相、彩度及び明度の変換処理方法)の具体的な処理について説明する。
図11は、本発明の第1の実施形態を示し、図8のステップS808の具体的な処理手順の一例を示すフローチャートである。
図8のステップS808の処理が開始されると、まず、図11のステップS1101において、CPU101は、ステップS801で取得した色相角に係る代表色相Hpの補色に係る色相(Hp+180度)が、赤系の色(所定の色)か否かを判断する。ここで、赤系の色か否かの判断については、図10のステップS1001と同様の判断方法を用いることができる。
本実施形態の場合には、代表色相Hp=60.0度であるので、Hp+180.0度=60.0度+180.0度=240.0度となり、赤系の色ではないと判断されることになる。
ステップS1101の判断の結果、ステップS801で取得した色相角に係る代表色相Hpの補色に係る色相(Hp+180度)が赤系の色である場合には、ステップS1102に進む。
ステップS1102に進むと、CPU101は、画素Pb(x,y)に対する彩度圧縮
割合を示す彩度圧縮パラメータShrとして、ステップS802で取得した彩度圧縮パラメータのデフォルト値Shdに0.5を掛けた値を設定する。
一方、ステップS1101の判断の結果、ステップS801で取得した色相角に係る代表色相Hpの補色(Hp+180度)が赤系の色でない場合には、ステップS1103に進む。
ステップS1103に進むと、CPU101は、画素Pb(x,y)に対する彩度圧縮
割合を示す彩度圧縮パラメータShrとして、ステップS802で取得した彩度圧縮パラメータのデフォルト値Shdを設定する。
ステップS1102又はS1103の処理が終了すると、ステップS1104に進む。
ステップS1104に進むと、CPU101は、画素Pb(x,y)の色相Hb_xy
を、ステップS801で取得した全フレーム枠内画像の代表色相Hpの補色(Hp+180)に変換し、明るさと彩度に関しては、ステップS1004と同様の変更を行う。即ち、ステップS1104では、画素Pb(x,y)のHb_xy、Sb_xy及びVb_x
yを、それぞれ、以下の(33)式、(34)式及び(35)式のように変更する。
Hb_xy=Hp+180 ・・・(33)
Sb_xy=Sb_xy×Shr ・・・(34)
Vb_xy=Vb_xy×Vr+Vo ・・・(35)
ここで、(34)式のShrは、ステップS1102又はS1103で取得した画素Pb(x,y)に対する彩度圧縮パラメータである。また、(35)式のVrは、ステップ
S602で算出した背景画像Ibの明度の圧縮割合であり、Voは、ステップS604又はS605で算出した背景画像Ibの明度のオフセット値である。
ステップS1104の処理が終了すると、図11に示すフローチャートにおける処理が終了する。
本実施形態では、図10及び図11で説明したように、赤い色の彩度を、他の色よりも更に落とすことにより、他の色よりも視覚に訴える赤の色を抑えるようにしている。これにより、背景画像の中に赤い色のオブジェクトがあっても、その上に重ねられたフレーム枠内画像を邪魔しないような効果が得られ、より見栄えの良い合成画像の生成が実現可能である。
次に、図7のステップS707(背景画像に対するモノクロ処理方法)の具体的な処理について説明する。
図12は、図7のステップS707の具体的な処理手順の一例を示すフローチャートである。
図7のステップS707の処理が開始されると、まず、図12のステップS1201において、CPU101は、背景画像Ibの縦方向の画素数をカウントするカウンタyに0を代入して初期化する。
続いて、ステップS1202において、CPU101は、背景画像Ibの横方向の画素数をカウントするカウンタxに0を代入して初期化する。
続いて、ステップS1203において、CPU101は、背景画像Ibの画素Pb(x
,y)の彩度Sb_xを0に設定する。さらに、CPU101は、ステップS602で算出した背景画像Ibの明度の圧縮割合Vr、及び、ステップS604又はS605で算出した背景画像Ibの明度のオフセット値Voを用いて、その明度Vb_xyをVb_xy×Vr+Voに変換する。
続いて、ステップS1204において、CPU101は、ステップS1203で変換された画素Pb(x,y)のHSVデータをRGBデータに戻す処理を行う。このHSVデ
ータのRGBへの変換処理については、図8のステップS809で説明した方法と同様の方法を用いることが可能であるため、ここでの説明は省略する。
続いて、ステップS1205において、CPU101は、背景画像の横方向のカウンタxに1を足して、ステップS702で取得した背景画像の幅の画素数Wbと比較し、1ライン分(y行目)の画素に対する処理が終了したか否かを判断する。ここで、カウンタxの値と背景画像の幅の画素数Wbの値とが等しい場合には、1ライン分(y行目)の画素に対する色変換処理が終了したと判断される。
ステップS1205の判断の結果、1ライン分(y行目)の画素に対しては処理が終了していない場合には、未だy行目の画素で処理が終了していない画素があると判定し、ステップS1203に戻って、ステップS1203以降の処理を再度行う。
一方、ステップS1205の判断の結果、1ライン分(y行目)の全ての画素に対して処理が終了した場合(即ち、x=Wbである場合)には、ステップS1206に進む。
ステップS1206に進むと、CPU101は、背景画像の縦方向のカウンタyに1を足して、ステップS702で取得した背景画像の高さの画素数Lbを比較し、当該背景画像の全ての画素に対して処理が終了したか否かを判断する。ここで、カウンタyの値と背景画像の高さの画素数Lbの値とが等しい場合には、背景画像の全ての画素に対して処理が終了したと判断される。
ステップS1206の判断の結果、背景画像の全ての画素に対しては処理が終了していない場合には、未だ処理が終了していない画素があると判定し、ステップS1202に戻って、ステップS1202以降の処理を再度行う。
一方、ステップS1206の判断の結果、背景画像の全ての画素に対して処理が終了した場合(即ち、y=Lbである場合)には、図12のフローチャートにおける処理を終了する。
本実施形態の画像処理装置では、フレーム枠内画像の代表色相に応じて、どの色を減色するのかを自動的に決定し、当該色を減色するようにしている。したがって、背景画像にたくさんの色が使われて散漫になることを避けることができる。
さらに、本実施形態の画像処理装置では、フレーム枠内画像の代表色相が同系色であれば、それらから代表色を決定し、背景画像でもこの代表色と同系色に近い色を残すように処理を行うようにしている。これにより、背景画像とその上に貼り付けられたフレーム枠内画像とを同系色でまとまることができ、落ち着いた色合いのアルバムのページにすることができる。また、背景画像のうち、代表色とは反対に位置する色群を、代表色の補色に統一することにより、アクセントカラーのような効果を生み出すことができ、まとまりがあるだけでなく、メリハリ感のある仕上がり効果を生み出すことができる。
さらに、本実施形態の画像処理装置では、フレーム枠内画像の代表色が同系色ではない場合には、背景画像をモノクロ画像にするようにしている。これにより、色の傾向がばらばらなフレーム枠内画像だけでは散漫な印象になりがちなページを、落ち着いた印象に変える効果を生み出すことができる。
さらに、本実施形態の画像処理装置では、フレーム枠内画像の明度が全体に明るければ背景画像の明度を全体に暗くし、逆に、フレーム枠内画像の明度が全体に暗ければ、背景画像の明度を全体に明るくするようにしている。これにより、背景画像とフレーム枠内画像との差をつけることができ、背景画像の中にフレーム枠内画像が埋もれてしまうのを防ぐことができる。
さらに、本実施形態の画像処理装置では、背景画像の彩度を全体的に下げるようにしているため、背景画像の色がフレーム枠内画像の色よりも目立たなくなり、フレーム枠内画像の色が際立つという効果が得られる。さらに、本実施形態の画像処理装置では、背景画像の彩度の再現範囲を圧縮して背景画像のコントラストを全体に下げるようにしているため、フレーム枠内画像と背景画像とのコントラストの差、及び、フレーム枠内画像のコントラストが際立つ効果が得られる。さらに、本実施形態の画像処理装置では、背景画像の中にもともと目を引きやすい赤い色がある場合に、当該赤い色の彩度を他の色よりも低下させることにより、当該赤い色を目立ち難くし、フレーム枠内画像に目を行きやすくする効果を得ることができる。
さらに、本実施形態では、彩度の低下度合いは、赤い色の方を大きくしており、その中でも、残す色が赤い場合よりも、変更した色相が赤い場合(代表色相の補色が赤い場合)の方が、彩度低下の度合いを大きくしている。代表色と同系色と判定されない色相角にある色すべてを1つの色相に統一すると、その色の面積が大きくなる可能性があり、統一した赤の色相の彩度をより低下させて、背景画像中の赤い色が広い面積になった場合でも、背景画像を目立ち難くする効果が得られる。このような効果が得られれば、彩度低下の割合は、本実施形態で記載した値である必要はない。
(第2の実施形態)
次に、本発明の第2の実施形態について説明する。
第1の実施形態では、図7のステップS706における色変換処理において、フレーム枠内画像が同系色であった場合、その代表色相によらずに予め定めた固定角を判定角度とし、この判定角度の範囲に入る色相を残す処理を行っていた。
この場合、予め定めた固定角が狭いと、代表色が青などの寒色系であれば、残る色が寒色のもののみになり、色が残っていても、無彩色に近いような印象を受け、背景画像として面白味のないものになる恐れがある。また、逆に、予め定めた固定角が広いと、代表色が紫や緑などの中間色であれば、残る色が寒色系の色と暖色系の色との双方になり、色数を減らしたとはいえ、背景画像の配色が散漫になる恐れがある。
そこで、第2の実施形態では、図7のステップS706における、背景画像に対して特定の色相を残す色変換処理方法として、「代表色相Hpに応じて背景画像に残す色相範囲を変更する」処理を行う。
以下、第2の実施形態における説明として、第1の実施形態と異なる部分についてのみ説明を行う。
図13は、本発明の第2の実施形態を示し、図7のステップS706の具体的な処理手順の一例を示すフローチャートである。ここで、図13において、第1の実施形態における図8の処理と同様の処理については、同じ符号を付し、その詳細な説明は省略する。
まず、図13のステップS801において、CPU101は、図8のステップS801と同様に、ステップS704で取得した各フレーム枠内画像の最頻出色相範囲Ha[n](n=0,1,…,N−1)の中央の色相角を代表色相Hpとして取得する。
続いて、ステップS1301において、CPU101は、図13のステップS801で取得した代表色相Hpに応じた色相範囲R(Hp)を取得する。具体的に、本実施形態では、以下の(36)式に従って、色相範囲R(Hp)を取得する。
R(Hp)=Hp×Hp/540.0+30.0 ・・・(36)
したがって、本実施形態において、Hp=60.0であれば、R(60)=36.67となる。
続いて、第1の実施形態における図8のステップS802〜S805と同様の処理を経る。
続いて、ステップS1302において、CPU101は、ステップS1301で取得したR(Hp)を用いて、ステップS805で取得した画素Pb(x,y)の色相Hb_x
yが、ステップS801で取得した代表色相Hpと近い色か否かを判断する。具体的に、ステップS1302では、色相Hb_xyが、代表色相Hp±R(Hp)以内に入っていれば、Pb(x,y)の色相Hb_xyは、代表色相Hpに近い色だと判断する。
本実施形態の場合、Hp−R(Hp)=60.0−36.7=23.3、Hp+R(Hp)=60.0+36.7=96.7となる。したがって、Hb_xyが、23.3度以上96.7度以下であれば、代表色相Hpに近い色だと判断され、そうでなければ、代表色相Hpと異なる色であると判断される。
ステップS1302の判断の結果、ステップS805で取得した画素Pb(x,y)の
色相Hb_xyが、ステップS801で取得した代表色相Hpと近い色である場合には、ステップS807に進む。一方、ステップS1302の判断の結果、ステップS805で取得した画素Pb(x,y)の色相Hb_xyが、ステップS801で取得した代表色相
Hpと近い色でない(即ち、異なる色である)場合には、ステップS808に進む。
図13のステップS807の処理、及び、ステップS808の処理、並びに、それに続くステップS809〜S811の処理は、第1の実施形態における図8の処理と同様であるため、ここでの説明は省略する。
本実施形態の画像処理装置では、代表色相Hpに応じて近い色として判定する色相角に係る色相範囲を変更する処理を行うようにしている。この処理を行うことは、やや煩雑ではあるが、背景画像に寒色系の色と暖色系の色との双方が残って散漫な印象を与えたり、寒色系の色のみが残って無彩色の印象を与えたりするといった事態を防止することができる。
なお、本実施形態では、(36)式を用いて色相範囲R(Hp)を連続値として算出するようにしているが、もちろん、離散値を用いてもよい。例えば、図14に示すテーブルを用いて色相範囲R(Hp)を離散的に取得することも適用可能である。図14は、本発明の第2の実施形態を示し、図13のステップS1301において色相範囲R(Hp)を取得する際に用いるテーブルの一例を示す模式図である。この図14に示すテーブルを用いる場合、当該テーブルを蓄積装置104等に予め用意しておき、図14に示すテーブルから、代表色相Hpに対応した色相範囲R(Hp)を取得して、ステップS1301の処理を実施することも可能である。
(第3の実施形態)
次に、本発明の第3の実施形態について説明する。
第1及び第2の実施形態では、図7のステップS706における色変換処理において、フレーム枠内画像の最頻出色相範囲が同系色である場合に、その同系色の色を背景画像の中でも残すようにして、背景画像の減色を行う色変換処理を行うものであった。
しかしながら、人によっては、フレーム枠内画像と同系色の背景画像を生成すると、メリハリがあまりなく、好ましくないと感じる場合もある。
そこで、第3の実施形態では、同系色のフレーム枠内画像から得られた代表色相Hpとは逆の色を背景画像に残して、同系色の色は、1つの色相に変更することで色数を減らす処理を行う。具体的に、第3の実施形態では、図7のステップS706における、背景画像に対して特定の色相を残す色変換処理方法として、「決められた色相の角度で同系色の色数を減らす」処理を行う。
以下、第3の実施形態における説明として、第1の実施形態と異なる部分についてのみ説明を行う。
図15は、本発明の第3の実施形態を示し、図7のステップS706の具体的な処理手順の一例を示すフローチャートである。ここで、図15において、第1の実施形態における図8の処理と同様の処理については、同じ符号を付し、その詳細な説明は省略する。
まず、第3の実施形態における図7のステップS706の処理では、第1の実施形態における図8のステップS801〜S805の処理を経る。
続いて、ステップS1501において、CPU101は、ステップS805で取得した画素Pb(x,y)の色相Hb_xyが、ステップS801で取得した代表色相Hpと反
対の色か否かを判断する。具体的に、ステップS1501では、色相Hb_xyが、代表色相Hpに対して予め決められた角度である±Rv度に含まれないか否かによって、色相Hb_xyが、代表色相Hpと反対の色か否かを判断する。より詳細には、Hb_xy≦(Hp−Rv)または(Hp+Rv)≦Hb_xyであれば、色相Hb_xyが代表色相Hpと反対色であると判断し、そうでなければ、色相Hb_xyが代表色相Hpと反対色でないと判断する。
ステップS1501の判断の結果、ステップS805で取得した画素Pb(x,y)の
色相Hb_xyが、ステップS801で取得した代表色相Hpと反対の色である場合には、ステップS807に進む。ここで、図15のステップS807の処理は、第1の実施形態における図8に示すステップS807の処理と同様であるため、ここでの説明は省略する。
一方、ステップS1501の判断の結果、ステップS805で取得した画素Pb(x,
y)の色相Hb_xyが、ステップS801で取得した代表色相Hpと反対の色でない場合には、ステップS1502に進む。
ステップS1502に進むと、CPU101は、代表色に近い色相を全て代表色相Hpに変換し、さらに、彩度及び明度の変換処理を行う。このステップS1502の具体的な処理については、図16を用いて後述する。
ステップS807又はS1502の処理が終了すると、ステップS809に進む。そして、図13のステップS809〜ステップS811の処理は、第1の実施形態における図8のステップS809〜S811の処理と同様であるため、ここでの説明は省略する。以上の処理により、図15のフローチャートにおける処理が終了する。
次に、図15のステップS1502の具体的な処理について説明する。
図16は、図15のステップS1502の具体的な処理手順の一例を示すフローチャートである。ここで、図16において、第1の実施形態における図11の処理と同様の処理については、同じ符号を付し、その詳細な説明は省略する。
図15のステップS1502の処理が開始されると、まず、図16のステップS1601において、CPU101は、代表色相Hpが赤系の色か否かを判断する。ここでは、Hp≦60.0、または、330.0≦Hpであれば、赤系の色であると判断する。
ステップS1601の判断の結果、代表色相Hpが赤系の色である場合には、ステップS1102に進む。一方、ステップS1601の判断の結果、代表色相Hpが赤系の色でない場合には、ステップS1103に進む。ここで、図16のステップS1102及びS1103の処理は、第1の実施形態における図11のステップS1102及びS1103の処理と同様であるため、その説明は省略する。
ステップS1102又はS1103の処理が終了すると、ステップS1602に進む。
ステップS1602に進むと、CPU101は、画素Pb(x,y)の色相Hb_xy
を代表色相Hpに変換し、さらに、彩度と明るさに関しては、図11のステップS1104と同様に変更する処理を行う。
ステップS1602の処理が終了すると、図16に示すフローチャートにおける処理が終了する。
本実施形態の画像処理装置による画像処理では、フレーム枠内画像の代表色相と反対の色が背景画像に残るため、フレーム枠内画像と背景画像の色が、言わば補色の関係になり、フレーム枠内画像を目立たせることができる。さらに、背景画像の中の、代表色相と同系色の色を全て代表色相に統一し、背景画像の色数を減らす際に、代表色相が赤系の色であれば彩度をさらに抑えることで、背景画像における赤いオブジェクトを目立たなくすることができる。
(第4の実施形態)
次に、本発明の第4の実施形態について説明する。
第3の実施形態では、フレーム枠内画像が同系色であった場合、その代表色相によらずに、予め決められた固定角を判定角度とし、この角度の範囲に入らない色相を残すような処理を行っていた。しかしながら、第2の実施形態と同様に、代表色相に応じて、この判定角度を連続的に、或いは、離散的に変える形態も適用可能である。即ち、第4の実施形態では、図7のステップS706における、背景画像に対して特定の色相を残す色変換処理方法として、「代表色相Hpに応じて背景画像に残す反対色の色相範囲を変更する」処理を行う。
本実施形態の画像処理装置では、代表色相Hpに応じて反対の色として判定する色相角に係る色相範囲を変更する処理を行うものである。この処理を行うことは、やや煩雑ではあるが、背景画像に寒色系の色と暖色系の色との双方が残って散漫な印象を与えたり、寒色系の色のみが残って無彩色の印象を与えたりするといった事態を防止することができる。
(第5の実施形態)
次に、本発明の第5の実施形態について説明する。
第1〜第5の実施形態では、背景画像において残す色相以外は、全て1つの色相(第1及び第2の実施形態の場合は代表色の補色、第3及び第4の実施形態の場合は代表色)に変換することにより、減色を行っていた。
しかしながら、この方法の場合、非常に広い色相角を1つの色相にするために、背景画像の色の不自然さが目立つことがある。例えば、色相角が30.0度であるオレンジ色から、色相角が210.0度である青い色がすべて、色相角120度の緑色に変換されてしまうことがあり得る。
そこで、第5の実施形態では、第1の実施形態のように、フレーム枠内画像の代表色相と同系色の色相を残すとともに、それ以外の色相については2つの色相に統一する処理を行って、背景画像の不自然さを解消する。具体的に、本実施形態では、色相を減らす領域(Hp+R)〜(Hp−R)の範囲を2つに分け、それぞれの領域に入る色相をその真ん中に位置する色相角に統一するものとする。即ち、本実施形態では、「背景画像において残す色相以外の色相について統一する色相を複数にする」処理を行うものである。
以下、第5の実施形態における説明として、第1の実施形態と異なる部分についてのみ説明を行う。
図17は、本発明の第5の実施形態を示し、図8のステップS808の具体的な処理手順の一例を示すフローチャートである。ここで、図17において、第1の実施形態における図11の処理と同様の処理については、同じ符号を付し、その詳細な説明は省略する。
図8のステップS808の処理が開始されると、まず、図17のステップS1701の処理を行う。ステップS1701において、CPU101は、ステップS805で取得した画素Pb(x,y)の色相Hb_xyが、代表色相Hpと反対の角度であるHp+18
0.0よりも小さいか否かを判断する。
ステップS1701の判断の結果、ステップS805で取得した画素Pb(x,y)の
色相Hb_xyが、代表色相Hpと反対の角度であるHp+180.0よりも小さい場合には、ステップS1702に進む。
ステップS1702に進むと、CPU101は、ステップS806において代表色相と同系色の色相か否かの判断に用いた閾値の角度であるRngを使って、変換後の色相Hb′を、90.0+(Rng/2)+Hpの値に設定する。
一方、ステップS1701の判断の結果、ステップS805で取得した画素Pb(x,
y)の色相Hb_xyが、代表色相Hpと反対の角度であるHp+180.0よりも小さくない場合には、ステップS1703に進む。
ステップS1703に進むと、CPU101は、変換後の色相Hb′を、270.0−(Rng/2)+Hpの値に設定する。
本実施形態の場合、Hp=60.0、Rng=75.0であるとすると、Hb_xyが135.0〜240.0の間であれば、Hb′=90.0+(75.0/2)+60.0=187.5度となる。また、Hb_xyが240.0〜345.0の間であれば、Hb′=270.0−(75.0/2)+60.0=292.5度となる。
ステップS1702又はS1703の処理が終了すると、ステップS1704に進む。
ステップS1704に進むと、CPU101は、ステップS1702又はS1703で取得した変換後のHb′が、赤系の色であるか否かを判断する。具体的に、本実施形態では、Hb′≦60.0、または、330.0≦Hb′であれば、赤系の色であると判断する。
ステップS1704の判断の結果、ステップS1702又はS1703で取得した変換後のHb′が赤系の色である場合には、ステップS1102に進む。一方、ステップS1704の判断の結果、ステップS1702又はS1703で取得した変換後のHb′が赤系の色でない場合には、ステップS1103に進む。この図17のステップS1102及びS1103の処理は、それぞれ、第1の実施形態における図11のステップS1102及びS1103の処理と同様であるため、ここでは説明を省略する。
ステップS1102又はS1103の処理が終了すると、ステップS1705に進む。
ステップS1705に進むと、CPU101は、画素Pb(x,y)の色相HbをHb
′に変換し、さらに、彩度と明るさに関しては、図11のステップS1104と同様に変更する処理を行う。
ステップS1705の処理が終了すると、図17に示すフローチャートにおける処理が終了する。
本実施形態において、例えば、色相角が30.0度であるオレンジ色から色相角が210.0度である青い色までを2つの色相に分けると、色相角30.0度のオレンジ色から色相角120.0度の緑色までを色相角75.0度の黄緑色に変換することになる。同様に、色相角120度の緑色から色相角210.0度の青い色までを色相角165.0度の青緑色に変換することになる。これにより、背景画像の色数が増えてしまうが、背景画像の不自然さを解消することができる効果がある。
なお、本実施形態では、背景画像において残す色相以外の色相について統一する色相を2つの色相に変換する例について示したが、3つ以上の数の色相に変換することで色数を減らす形態も適用可能である。ただし、背景画像の色数が増えすぎると、背景画像がうるさく感じるようになるため、60.0度以下の色相角の色相範囲を2つ以上の色相角の色相にすることは好ましくない。また、本実施形態における処理を第1の実施形態のみならず、第2〜第4の実施形態に適宜適用するようにしてもよい。
以上の本発明の各実施形態によれば、背景画像上に複数の画像を合成する際に、当該複数の画像を引き立たせる画像処理を行うことができるため、利用者に過度の負担を強いることなく、より見栄えの良い合成画像の生成を実現することが可能となる。
(本発明の他の実施形態)
上述した各実施形態では、最頻出色相の数を算出する際に、30度ずつ区切って12個の色相を代表色相として算出するものであったが、区切る角度は、30度に限定されるものではない。例えば、1度ずつに区切って算出して、その後の処理を行っても、本質的には同じことである。
また、上述した各実施形態では、背景画像における赤色の彩度を落とすために、赤の判定を色相角0.0〜60.0または330.0〜360.0としたが、この範囲に限定されるものではなく、これよりも広くても、狭くても適用可能である。
また、上述した各実施形態では、アルバム作成を例に挙げて説明を行ったが、作成したアルバムは、印刷して紙媒体で鑑賞することを目的としてもよいし、オンラインフォトアルバムのように印刷せずにディスプレイ上に表示して鑑賞することを目的としてもよい。さらに、アルバム作成に限らず、スライドショーの作成など、画像を背景として、その上に別の画像を配置する合成画像を生成する場合にも、適用可能である。
また、上述した各実施形態に係る画像処理装置100による画像処理方法を示す図3〜図13及び図15〜図17の各ステップは、コンピュータのCPU(101)が記憶媒体(102、104)に記憶されているプログラムを実行することによって実現できる。このプログラム及び当該プログラムを記憶したコンピュータ読み取り可能な記録媒体は本発明に含まれる。
また、本発明は、例えば、システム、装置、方法、プログラム若しくは記憶媒体等としての実施形態も可能であり、具体的には、複数の機器から構成されるシステムに適用してもよいし、また、1つの機器からなる装置に適用してもよい。
なお、本発明は、上述した各実施形態の機能を実現するソフトウェアのプログラム(実施形態では図3〜図13及び図15〜図17に示すフローチャートに対応したプログラム)を、システム或いは装置に直接、或いは遠隔から供給するものを含む。そして、そのシステム或いは装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合も本発明に含まれる。
したがって、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、OSに供給するスクリプトデータ等の形態であってもよい。
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、MO、CD−ROM、CD−R、CD−RWなどがある。また、磁気テープ、不揮発性のメモリカード、ROM、DVD(DVD−ROM,DVD−R)などもある。
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続する。そして、前記ホームページから本発明のコンピュータプログラムそのもの、若しくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。
また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるWWWサーバも、本発明に含まれるものである。
また、本発明のプログラムを暗号化してCD−ROM等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせる。そして、ダウンロードした鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
また、コンピュータが、読み出したプログラムを実行することによって、上述した各実施形態の機能が実現される。その他、そのプログラムの指示に基づき、コンピュータ上で稼動しているOSなどが、実際の処理の一部又は全部を行い、その処理によっても上述した各実施形態の機能が実現され得る。
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。その後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部又は全部を行い、その処理によっても上述した各実施形態の機能が実現される。
なお、上述した各実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。即ち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。