以下、添付図面を参照して本発明の実施の形態の一例を詳しく説明する。なお、以下の実施の形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施の形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
(実施形態1)
図1は、本実施形態に係るアプリケーションプログラム(コラージュアプリケーション)が動作する画像配置制御システムのブロック図である。
図1に示す画像配置制御システムは、画像配置制御装置全体を制御するCPU101と、CPU101のワークエリアを提供するRAM102と、アプリケーションプログラムや写真の画像データを記憶する記憶部103と、を備える。さらに、ユーザがコマンドの入力を行う入力部104と、画面表示を行うUI表示部105と、他機器とネットワークによる通信を行うネットワーク部106と、メインバス100と、を備える。CPU101、RAM102、記憶部103、入力部104、UI表示部105、及びネットワーク部106は、それぞれメインバス100を介して接続されている。
記憶部103としては、例えば、HDDやNVRAM等が挙げられる。この記憶部103は、例えば、画像配置制御システムがネットワーク部106を介してインターネットに接続された際に、インターネット上から新たな画像データやその情報をダウンロードして、保存することができる。
入力部104は、マウスやキーボードといった一般的な入力機器であり、ユーザが操作することでアプリケーションを操作することができるように構成されている。
本実施形態では、入力部104と、UI表示部105を別々に設けるようにしたが、入力部104及びUI表示部105は、双方の機能を兼ねるタッチパネルであってもよい。
画像配置制御システムは、汎用的なパーソナルコンピュータ、スマートフォン等にコラージュアプリケーションをインストールすることによって実施可能である。
ここで、図1の画像配置制御システムにおいて、コラージュ画像を作成する方法について、図2〜17を用いて説明する。
図2は、実施形態1に係るコラージュアプリケーションにより、コラージュ画像に使う画像を選択する画像データ選択画面を示す。
図2に示す画像データ選択画面は、コラージュアプリケーションの基本画面のメニューからコラージュ画像の作成を選択すると、図1に示すUI表示部105に表示される。画像データ選択画面は、パス入力部201と、画像表示部202と、画像データ選択完了ボタン206と、を備えている。
パス入力部201は、記憶部103内の画像データの存在する場所を入力する部分である。パス入力部201に画像データの存在する場所を入力すると、入力された場所から画像データが取得され、取得された画像データは、画像表示部202に表示される。
図2の画像表示部202には、1以上の画像を表示しており、各画像に対してチェックボックスがそれぞれ設けられている。チェックボックス203,204等の各チェックボックスは、ユーザがコラージュに使用したい画像を選択するためのものである。ユーザが入力部104にて各チェックボックスをクリック又はタッチすることで、チェックボックスにチェックマークが付き、コラージュに使用される画像が選択されたことになる。
画像表示部202には、パス入力部201内の画像データ205を一定のサイズで表示する。なお、画像データとしては、例えば、130ピクセル×130ピクセル等の小さい画像、2048ピクセル×1600ピクセル等の大きい画像、それ以上それ以下の大小様々な画像が存在する。しかしながら、上述した通り、本実施形態の画像データ選択画面では、いずれのサイズの画像データも同じ大きさに表示する。
画像データ選択完了ボタン206は、画像の選択を完了するためのボタンである。画像データ選択完了ボタン206を押すことで、その時点でチェックボックスにチェックが入っている画像(例えば、写真)がコラージュ画像に使われることが確定すると共に、コラージュ画像を作成するためのコラージュ作業画面に遷移する。
図3に、実施形態1に係るコラージュアプリケーションにより、コラージュ画像を作るためのコラージュ作業画面を示す。
上述したように、図3に示すコラージュ作業画面は、画像データ選択画面から遷移して表示されるものであり、図1に示すUI表示部105に表示される。コラージュ作業画面は、画像選択ボタン301と、シャッフルボタン302と、保存ボタン303と、終了ボタン304と、コラージュ領域305と、を備える。
画像選択ボタン301は、画像を追加したい場合に、図2の画像データ選択画面へ移動する(戻る)機能を持つ。シャッフルボタン302は、画像をシャッフルさせる機能を持つ。保存ボタン303は、生成されたコラージュ画像を記憶部103に保存させる機能を持つ。終了ボタン304は、コラージュ作業画面を終了し、コラージュアプリケーションの基本画面を表示する機能を持つ。
コラージュ領域305は、コラージュ画像そのものを示す領域であり、この上に画像データを表示したり、操作するための画像オブジェクト306を配置したりすることができる。言い換えれば、コラージュ領域305は、画像オブジェクト306の配置領域となる。画像オブジェクト306は、コラージュ領域305よりもはみだすことが許容されており、本実施形態では、画像オブジェクトがはみ出した場合、はみ出した部分の画像は描画されないように設定されている。
ここで、図4を用いて、画像オブジェクト306について説明する。
図4(a)は、画像データを表示するための画像オブジェクトを示している。画像オブジェクトの高さ(縦幅)と横幅は、後述する画像サイズ決定処理によって決定された値となる。この画像オブジェクトには、画像基準点が設定され、この画像基準点のコラージュ領域305上での座標を指定することで、コラージュ領域305上に画像オブジェクト306を配置することができる。本実施形態では、画像オブジェクトの中心(重心)を画像基準点とし、この画像基準点のコラージュ領域305上でのX座標、Y座標を指定することで、コラージュ領域305上の所定の位置に画像オブジェクト306を配置する。
図4(b)は、画像オブジェクトの保持するデータの例である。図4(a)に示した画像オブジェクトは、例えば、図4(b)に示すようなデータを保持する。ID401〜408は、画像オブジェクトのデータの種類を特定するためのIDであり、図中の「名称」は各データに設定されている名称である。
ID401及びID402で特定されるデータは、コラージュ領域上での画像基準点の座標データであり、それぞれ画像基準点のX座標のデータ及び画像基準点のY座標のデータである。そして、ID403及びID404で特定されるデータは、それぞれコラージュ領域305内に画像オブジェクトを配置する場合の横幅のデータ及び縦幅(高さ)のデータである。また、ID405及びID406で特定されるデータは、その画像基準点が、画像オブジェクト内でどこにあるかを示す座標データである。本実施形態では、画像基準点を画像の中心としている。したがって、ID405で特定される画像基準点のオブジェクト内のX座標のデータは、ID403で特定されるデータの半分の値となる。また、ID406で特定される画像基準点のオブジェクト内のY座標のデータは、ID404で特定されるデータの半分の値となる。また、ID407で特定される画像の回転角度のデータは、画像基準点を中心に画像オブジェクトが回転する角度のデータである。ID408で特定される画像データは、実際の画像を示すデータである。
ID401〜ID407で特定されるデータをID408の画像データに与えることで、ID408の画像データを所定の位置、所定のサイズ、所定の角度でコラージュ領域305に表示する機能を持つ。より具体的には、ID401及びID402で特定される座標データから画像基準点の位置を確定することができる。そして、ID403〜ID406で特定されるデータと、ID401及びID402で特定されるデータとの相対関係より、回転しなかった場合の画像オブジェクトの表示位置を計算することができる。最後に、ID407で特定されるデータに基づいて、画像オブジェクトを回転させて、コラージュ領域305に画像データを表示することができる。本実施形態では、このID401〜407のデータをランダムに決定することにより、画像をシャッフルすることができる。なお、本実施形態では、図3のシャッフルボタン302が押下されることよって、画像オブジェクト306をシャッフルさせることができる。
ここで、図5を用いて、画像オブジェクトデータの決定処理、言い換えれば、画像オブジェクトのコラージュ領域への配置方法について説明する。図5は、上述したID401〜ID407で特定されるデータをランダムに決定する画像オブジェクトデータ決定処理のフローチャートである。
図2の画面においてコラージュに使用する画像の選択が完了した後、S501において、コラージュ領域上における画像のサイズ決定処理を行う。
その後、S501において決定したサイズの大きい画像順に、基準点結び付け処理を行う(S502)。基準点結び付け処理とは、各画像の画像基準点それぞれに対して、後述するコラージュ領域上の配置基準点を対応付ける処理である。言い換えれば、各画像と配置基準点とを対応付ける処理である。配置基準点とは、後述するが、各画像の画像基準点をコラージュ領域に配置する際に基準となる点である。このとき、画像を2枚以上配置する場合は、既に配置された画像の位置、その後に配置されるその他の画像の配置は影響を受ける。本実施形態では、最も大きい画像から配置するので、その他の画像の配置は、最も大きい画像が置かれた位置に影響を受ける。
S502において、全ての画像の画像基準点をそれぞれ配置基準点と結び付けた後は、S503において、S501において決定したサイズの大きい画像順に画像基準点配置領域の生成処理を行う。画像基準点配置領域の生成処理とは、詳細は後述するが、その配置基準点に結び付けられた画像の大きさ及び配置領域内の配置基準点の位置に基づいて、画像基準点を配置することができる画像基準点配置領域を決定する処理である。
S503において、全ての画像に対して画像基準点配置領域を生成した後は、S504において、各画像の画像基準点位置の決定処理を行う。画像基準点位置の決定処理とは、画像基準点配置領域中のいずれかの座標に、画像基準点の位置を定める処理である。言い換えれば、画像基準点を画像基準点配置領域内に配置する処理である。この画像基準点の画像基準点配置領域内における位置は、乱数等を用いてランダムに定められる。ランダムにすることでコラージュ画像の自由度を向上させることができる。
最後に、S505において、画像の角度を決める角度決定処理を行う。これにより、ID401〜ID407で特定される全てのデータの値が決定する。
ここで、図6〜8を用いて、サイズ決定処理について説明する。
図6は、サイズ決定処理で使用されるサイズ決定表である。図6に示すように、図2の画面において選択されたコラージュに使用される画像の枚数に応じて、一以上のサイズのパターンが予め用意されている。画像の枚数に応じたパターンは、例えば、RAM102等に保存されていてもよく、インターネット等を介して外部から取得するようにしてもよい。サイズ決定処理では、上述したパターンの中からランダムにパターンを決定する。例えば、画像が3枚の場合には、4種類のパターンA〜Dのうちいずれか1つのパターンが選択されることにより、サイズが決定される。画像が3枚でパターンDであれば、1つの画像はLサイズ、すなわち、横幅及び高さがコラージュ領域305の50%の大きさがサイズの基準となる。そして、残りの二つの画像はMサイズ、すなわち、横幅及び高さがコラージュ領域305の40%の大きさが、サイズの基準となる。このようにしてサイズの基準が決定するが、このサイズの基準がそのままコラージュを作成する際の画像の大きさになるとは限らない。例えば、コラージュ領域の縦横比が画像の縦横比と異なる場合は、コラージュを作成する際に画像の縦横比を保つようにサイズを決定する。画像が崩れないようにするためである。
図7は、図6で説明したサイズの基準に基づいて、最終的なサイズが決定するまでの説明図である。コラージュ領域701が、横幅1000、高さ600の領域である場合、図6のサイズ基準表におけるLサイズは、コラージュ領域701の横幅が50%で高さが50%である。したがって、サイズ基準は、横幅500、高さ300の長方形702となる。
画像の縦横比がコラージュ領域の縦横比と同じである場合は、画像のサイズは、横幅500、高さ300の長方形702に決定する。また、画像703のように画像の縦横比が2対1である場合は、画像703の縦横比を維持しつつ、サイズ基準の長方形内において、画像703の向きを変えずに画像703が最大となるサイズに決定する。すなわち、サイズ基準の長方形702内に内接させた場合の大きさ、横幅150、高さ300が、画像703の最終的なサイズに決定する。画像704のように画像の縦横比が1対2である場合は、画像704の縦横比を維持しつつサイズ基準の長方形において、画像704の向きを変えずに画像704が最大となるサイズに決定する。すなわち、サイズ基準の長方形702内に内接させた場合の大きさ、横幅500、高さ250が、画像704の最終的なサイズに決定する。
図8は、本実施形態に係るサイズ決定処理のフローチャートである。
まず、S801では、サイズパターンの決定処理を行う。具体的には、図6に示すサイズ基準決定表に基づいて、選択した画像の枚数に応じたパターンを決める。このとき、パターンは乱数等を用いてランダムで決定する。サイズ決定処理において、複数のパターンからいずれかを選択することにより、様々なパターンのコラージュ画像を作成することができる。
次に、S802では、サイズ振分け処理を行う。具体的には、決まったサイズパターンに定められたL,M,S等のサイズを、目的の画像に乱数等を用いてランダムに振り分ける。本実施形態では、このサイズ振り分け処理は、画像の元々の大きさを一切考慮しない。なお、画像のもともとの大きさを考慮した場合、元々のサイズが大きい画像が、必ずパターン内の最も大きいサイズに振り分けられてしまったりすることになり、作成されるコラージュ画像のパターンに偏りが発生することがある。これに対し、本実施形態のサイズ振り分け処理では、様々なパターンのコラージュ画像を作成することができる。すなわち、作成されるコラージュ画像が自由度の高いものとなる。
次に、S803では、S802において画像に割り当てられたL,M,S等のサイズを元に、実際の画像サイズを決める実サイズ決定処理を行う。具体的には、まず、図6のサイズ基準決定表に基づいて、コラージュ領域の高さと横幅を縮小(本実施形態では、70%〜25%縮小)した長方形を計算し、それをサイズ基準とする。そして、計算により求めたコラージュ領域の縦横比と、ターゲットとなる画像の縦横比とを比較する。ターゲットとなる画像がコラージュ領域より横長の場合、すなわち、ターゲットとなる画像の縦横比の方が小さい場合には、サイズ基準の横幅を画像オブジェクトの横幅とし、高さはその横幅に画像の縦横比を乗算することで割り出す。一方、ターゲットとなる画像の方がコラージュ領域より縦長の場合には、サイズ基準の高さを画像オブジェクトの高さとし、横幅はその高さに画像の縦横比を除算することで割り出す。図6のサイズ基準決定表のサイズパターンでは、画像を配置する際に、その画像の全面積がコラージュ領域の面積の70%以下となるように調整されている。このように、画像の全面積がコラージュ領域の面積の所定の割合以下とすることにより、全ての画像がサイズ基準と同じ又はサイズ基準よりも小さくなるようにすることで、コラージュ領域が画像で埋め尽くされたり、画像が重なり過ぎたりするのを抑制できる。
ここで、図9及び図10を用いて、基準点結び付け処理について説明する。
図9は、基準点結び付け処理において使用する配置基準点パターンの一例である。図9には、コラージュ領域内における配置基準点の数及びその位置を示している。この配置基準点は、画像を配置する際に基準となる点である。ここでは、コラージュ領域305に配置する画像の枚数に応じて配置基準点の数を決定するようにした。また、配置基準点はコラージュ領域305内に等間隔に配置するものとした。図9では、画像が1枚の場合は、コラージュ領域の中心に配置するようにした。すなわち、画像が1枚の場合の配置基準点は、コラージュ領域の高さの1/2で横の長さの1/2の位置に設けた。また、画像が2枚以上の場合は、配置基準点は等間隔に設けるようにした。例えば、画像が3枚〜4枚の場合は、配置基準点は、コラージュ領域の高さの1/3で横の長さが1/3の位置にそれぞれ設けるようにした。このように、配置基準点を等間隔に設けることにより、画像同士が重なるのを低減することができる。
配置基準点パターンのうちいずれのパターンを使用するかについては、画像の枚数に応じて一意に決定する。このとき、コラージュ領域内における配置基準点の数は、画像の枚数と同じか画像の枚数より多くなるようにするのが好ましい。画像の枚数より多くした場合は、詳細は後述するが、画像の配置の自由度が向上する。本実施形態では、配置基準点の数は、図9に示すように、画像1つ(写真1枚)の場合は1つ、画像2つ(写真2枚)の場合は2つ、画像3〜4つ(写真3〜4枚)の場合は4つ、画像5〜6つ(写真5〜6枚)の場合は6つとした。
ここで、基準点結び付け処理とは、各画像に配置基準点を割り振る、言い換えれば、配置基準点に対して配置したい画像の画像基準点を割り振ることをいう。図10を用いて、基準点結び付け処理について詳細に説明する。図10は、基準点結び付け処理のフローチャートである。
まず、S1001では、配置基準点パターンの決定処理を行う。具体的には、配置基準点パターンは、図9に示す配置基準点パターンに基づいて、画像の枚数を元に一意に決定される。このとき、配置基準点パターン内の全ての配置基準点に対して画像基準点を配置する際の優先度は等しい高さに設定する。
S1002において、各画像に対して配置基準点を割り振る。言い換えれば、各画像の画像基準点にいずれの配置基準点を結び付けるのか決定する。ここでいう「結び付け」とは、対象とする画像の画像基準点を、対象とする配置基準点に基づいて求められる配置可能領域内に収まらせることを決定付けることを意味する。この処理は、サイズ決定処理により定まったサイズが大きい順に全ての画像について行う。その後、S1003へ進む。
S1003では、コラージュ領域305にこれから配置する画像が一枚目か否かを判断する。一枚目である場合はS1004へ、一枚目ではない場合はS1007へ進む。
S1004では、1以上の配置基準点の中から1つの配置基準点を乱数等を用いてランダムで選択し、対象画像に結び付ける。このとき、1枚目の画像の場合は、各配置基準点に対する配置優先度が等しくなるように設定したので、選択される配置基準点はランダムとなる。選択した後は、S1005へ進む。
S1005では、配置する画像が横長か否かを判定する。配置する画像が横長の場合はS1006へ進み、配置する画像が横長ではない場合、すなわち、正方形又は縦長の場合はS1010へ進む。
S1006では、画像が結び付けられた配置基準点の左右方向に配置基準点が存在、すなわち、左右のうち少なくともいずれか一方に配置基準点が存在する場合は、その配置基準点の配置優先度を下げる。横長画像の左右の配置優先度を下げることにより、他の画像がその横長画像と重なる確率(又は重なる面積)を下げることができる。
S1010では、画像が結び付けられた配置基準点の上下方向に配置基準点が存在、すなわち、上下のうち少なくともいずれか一方に配置基準点が存在する場合は、その配置基準点の配置優先度を下げる。縦長画像の上下の配置優先度を下げることにより、他の画像がその縦長画像と重なる確率(又は重なる面積)を下げることができる。
S1007では、配置優先度が高い配置基準点があるか否かを判定する。なお、ここでいう「配置優先度が高い」とは、他の配置基準点の優先度と比較して相対的に優先度が高いものを指す。例えば、優先度が低く設定されている配置基準点がある場合は、通常の優先度の配置基準点が配置優先度の高いものに相当することになる。配置優先度が高い配置基準点が1つでも存在する場合、S1008へ進み、1つも存在しない場合はS1009へ進む。
S1008では、配置優先度高い配置基準点の中から1つの配置基準点を乱数等を用いてランダムで選択し、画像を結び付ける。
S1009では、残りの配置基準点の中から1つの配置基準点を乱数等を用いてランダムで選択し、画像を結び付ける。
本実施形態の基準点結び付け処理では、画像の大きい順に行っている。まず、大きい画像を配置し、その画像が横長の場合は画像の左右の配置優先度を下げ、その画像が縦長の場合は画像の上下の優先度を下げて、その後は画像サイズの大きい順に配置優先度の高い配置基準点に配置していくように制御している。このため、基準点結び付け処理により、最も大きな横長の画像の左右には、小さい画像が配置される確率が高くなる。一方、最も大きな縦長の写真の上下には、小さい画像が配置される確率が高くなる。これにより、画像同士が重なる確率(又は重なる面積)を下げることができる。
なお、本実施形態では、画像の枚数が奇数の場合には、最も大きな画像の隣に画像が存在しない場合も存在する。
以上より、本実施形態の基準点結び付け処理により定まる画像の位置は、画像の重なりを極力小さくすることができる。
上述した基準点結び付け処理では、コラージュ領域上の配置基準点と、画像の画像基準点の結び付けをする。基準点結び付け処理により、配置基準点に画像基準点を結びつけただけでは、毎回同じ場所に画像の画像基準点が配置されてしまい、ランダム性が低くなってしまう虞があるので、本実施形態では、配置基準点を配置可能な画像基準点配置領域を設定する。この画像基準点配置領域は、画像基準点を配置してもよい領域のことであり、後述するように、コラージュ領域上の配置基準点に基づいて決定する。画像基準点配置領域は、別の言い方をすれば、配置基準点からどの程度まで離れた位置にまで画像基準点を配置できるかを定義するものである。画像基準点配置領域内に、画像基準点をランダムに配置することにより、シャッフルのたびに毎回違う位置に画像を描画することができる。
図11は、画像基準点配置領域を生成(決定)するフローチャートである。本実施形態では、画像が画像配置領域内に配置される際の大きさ及びその画像に対応付け手段により対応付けられた配置基準点の位置に基づいて、配置基準点に対応付けられた画像の画像基準点を配置可能な領域を決定した。
S1101では、コラージュ領域に設定された配置基準点を結ぶと長方形となるか否かを判定する。本実施形態の場合は、コラージュ領域に存在する配置基準点が4以上であるか否か、すなわち、コラージュ領域に配置する画像の枚数が3枚から6枚か否かを判定すればよい。なお、本実施形態では、図9に示すように、配置する画像の枚数が3枚から6枚である場合は、配置基準点が、それぞれを結ぶと長方形となるように配置されている。
S1102では、ターゲットとする画像に結びつけられた配置基準点が、図9のパターン表において、長方形の4角にあたるか否かを判定する。配置基準点が長方形の4角のいずれかにあたる場合は、S1103へ進み、長方形の4角に当たらない場合はS1104へ進む。
S1103では4角専用配置領域拡大処理を行う。その後、S1105へ進む。
ここで、図12を用いて、4角専用配置領域拡大処理について説明する。まず、図12(a)に示すように、長方形の4角のうち画像が結びつけられた配置基準点1204に最も距離が近いコラージュ領域305の角Aに、対象となる画像1202を内接させたとする。この場合の画像基準点1203と、配置基準点1204とを結ぶ直線を対角線とした長方形を、第一の配置領域1205とする。その他の配置基準点に画像を配置する場合も同様に、画像が結び付けられた配置基準点に最も距離が近いコラージュ領域の角に対象となる画像を内接させたときの画像基準点と、配置基準点を結ぶ直線を対角線とした長方形を各画像の第1の配置領域とする。このように、コラージュ領域の最端部に画像を配置した場合の画像基準点及び配置基準点に基づいて、配置領域を決定する。ここで、角Aに対象となる画像1202を内接させたときの画像基準点の位置は、画像1202の大きさに応じて変わる。例えば、画像が大きい場合は、画像が小さい場合と比較して、画像基準点が配置基準点側に位置することになる。したがって、画像基準点と配置基準位置を結ぶ直線を対角線とした長方形は小さくなる。
第一の配置領域に画像基準点を配置した場合、画像の回転角度がゼロであれば画像がコラージュ領域305からはみ出すことはない。一方、図12(b)に示すように、画像をコラージュ領域の角に配置する場合、画像を回転させて画像の向きを変更すると、画像の一部がコラージュ領域305からはみ出す。しかしながら、第一の配置領域1205内に画像基準点が置かれた画像は、少なくとも画像の回転が0度の場合には、第1の配置領域1205外へはみ出すことはない。また、画像が回転したとしても、画像基準点及び画像基準点の近辺は、コラージュ領域305からはみ出さない。したがって、画像の重要部分、例えば、画像中心を画像基準点とすることで、画像の所望の部分を確実にコラージュ領域305内に収めることができる。
S1104では、辺用領域拡大処理を行う。その後、S1105へ進む。
ここで、図13を用いて、辺用領域拡大処理について説明する。図13に示すように、配置基準点1301から距離が最も近いコラージュ領域305の辺に、画像1302を内接させ、その時の画像基準点1303と、配置基準点1301を結ぶ直線上を第一の配置領域1304とする。その他の配置基準点に画像を配置する場合も同様に、画像が結び付けられた配置基準点に最も距離が近いコラージュ領域の辺に対象となる画像を内接させたときの画像基準点と、配置基準点を結ぶ直線を各画像の配置領域とする。このように、コラージュ領域の最端部に画像を配置した場合の画像基準点、及び配置基準点に基づいて、配置領域を決定する。ここで、辺と対象となる画像1202の辺を一致させたときの画像基準点の位置は、画像1302の大きさに応じて変わる。例えば、画像が大きい場合は、画像が小さい場合と比較して、画像基準点が配置基準点側に位置することになる。したがって、画像基準点と配置基準位置を結ぶ直線は小さくなる。
この処理の場合も、4角用配置領域拡大処理と同様に、第一の配置領域に画像基準点を配置した場合、角度がゼロであれば画像がコラージュ領域305からはみ出すことはない。また、画像を回転したとしても、画像基準点及び画像基準点の近辺はコラージュ領域305からはみ出さない。したがって、画像の重要部分、例えば、画像中心を画像基準点とすることで、画像の所望の部分を確実にコラージュ領域305内に収めることができる。
S1105では、4角用配置領域拡大処理又は辺用領域拡大処理により拡大された第一の配置領域の拡大方向が、適切か否かを判定する。「拡大方向が適切」であるとは、好ましい方向に拡大されていることをいう。例えば、4角用配置領域拡大処理又は辺用領域拡大処理により拡大された第一の配置領域が、コラージュ領域305の端部側ではなく他の配置基準点側に設定される場合である。適切でない場合は、S1106へ進み、適切である場合は、S1107へ進む。
S1106では、配置領域縮小処理を行う。その後、S1107へ進む。
ここで、図14を用いて、配置領域縮小処理について説明する。図14(a)は、4角専用配置領域拡大処理により、第一の配置領域が好ましく無い方向へ拡大された場合を例示する図である。図14(a)には、配置基準点1404と、コラージュ領域305の角を対角線とする長方形1401内に、画像基準点1403が納まっていない。この場合、画像を回転させると、図14(b)に示すように、大きな画像1402と、その他の画像が広い面積で重なってしまうことがある。大きな画像1402が、第一の配置領域1405内の配置基準点1404以外の部分、すなわち、他の配置基準点側に画像基準点が配置された場合、他の配置基準点に結びつけられた画像と重なる確率(及び重なる場合はその面積)が上がる。場合によっては、図14(b)に示すように、大きい画像によって小さい画像の全てが隠されてしまうことがある。このように、大きい画像と小さい画像が重なった場合、大きい画像にとっては重なることによる影響は小さいとしても、小さい画像にとっては、重なることによる影響は大きい。
そこで、本実施形態のS1106では、配置領域縮小処理により、他の配置基準点側に拡張された第一の配置領域1405を縮小して新たな配置領域を調整する。例えば、図14(c)に示すように、Y軸方向の好ましく無い方向に配置領域が拡大されている場合、すなわち、配置領域がY軸方向において他の基準点側に拡大されている場合には、その第一の配置領域1405を、配置基準点1404と同じY座標まで縮小する。第一の配置領域1405は、Y軸方向を最も縮小することで直線となる。なお、X軸方向の好ましく無い方向に拡大されている場合、すなわち、配置領域がX軸方向において他の基準点側に拡大されている場合には、その第一の配置領域1405を、配置基準点1404と同じX座標まで縮小する。この場合も、第一の配置領域1405は、X軸方向を最も縮小することで直線となる。また、X軸及びY軸方向のいずれにおいても好ましく無い方向に拡大されていた場合には、その第一の配置領域1405は、X軸方向及びY軸方向のいずれも縮小すればよく、配置領域は配置基準点1404と同じ点となる。上述した配置領域縮小処理により定まった領域を、第二の配置領域とする。このようにして設定した第二の配置領域内に画像基準点を配置することにより、図14(d)に示すように、隣り合う画像の重なりが軽減される。
図14では、4角専用配置領域拡大処理により第1の配置領域が好ましくない方向へ拡大された場合について説明したが、辺用配置領域拡大処理により第1の配置領域が好ましくない方向へ拡大した場合も同様である。辺用配置領域拡大処理により、長方形の頂点以外の配置基準点に対応づけられた画像を、画像配置領域の配置基準点に近い辺に内接させた際の画像の画像基準点の位置が、配置基準点と辺を垂直に結ぶ直線上以外に存在する場合、配置領域縮小処理を行う。具体的には、配置領域がY軸方向において他の基準点側に拡大されている場合には、その第一の配置領域を、配置基準点と同じY座標まで縮小する。この配置領域縮小処理により定まった領域を、第二の配置領域とする。このようにして設定した第二の配置領域内に画像基準点を配置することにより、隣り合う画像の重なりが軽減される。
S1107では、対象となる画像が結びつけられた配置基準点の隣に、どの画像にも結び付けられていない配置基準点があるか否かを判定する。
ここで、図15(a)を用いて、配置基準点があるか否かの判断について説明する。例えば、画像として写真を5枚配置する場合、本実施形態では、配置基準点パターン決定処理により、配置基準点は六つ存在する。図15(a)に示すように、画像1504には、4角用配置領域拡大処理により配置領域1506が生成されている。具体的には、配置基準点1501と、それに結びつけられた画像1504をコラージュ領域305の左上に内接させた場合の画像基準点1505とに基づいて、配置領域1506が生成されている。さらに、配置基準点1503について、それに結びつけられた画像1507をコラージュ領域305の右上に内接させた場合、画像基準点1508のY座標が、配置基準点1503のY座標よりも他の配置基準点側に近いため、配置領域縮小処理によって、配置領域1509は直線となる。そして、図15(a)に示すように、配置基準点1501と、配置基準点1503の間の配置基準点1502には画像が結びつけられていない場合、S1108の判定は真となる。この場合は、S1108へ進む。
S1108では、その画像が結びつけられた配置基準点の隣に、どの画像にも結び付けられていない配置基準点がある場合、未使用エリアへの配置領域再拡大処理を行う。
図15(b)を用いて、S1108の配置領域再拡大処理を説明する。図15(b)に示すように、画像が結びつけられていない配置基準点1502が配置基準点1501のX軸方向に存在する場合、配置基準点1502に結び付けられている画像1504の配置領域を拡大する。具体的には、コラージュ領域の305の左上に内接されている画像1504の配置基準点1502側の辺のX座標が、配置基準点1502と同じになるまで移動し、その時の画像基準点を1505’とする。そして、配置領域1506のX軸方向を画像基準点1505’の位置まで拡大し、第三の配置領域1506’とする。つまり、コラージュ領域の305における配置基準点1501の座標と配置基準点1502の座標との差から、画像1504の幅(X方向の幅)の半分の値を引いた数値分だけ、画像1504の配置領域を配置基準点1502の方向に拡張する。
また、既に設定されている配置領域が直線の場合も同様である。すなわち、図15(b)に示すように、画像が結びつけられていない配置基準点1502が配置基準点1503のX軸方向に存在する場合、配置基準点1503に結び付けられている画像1507の配置領域を拡大する。画像1507の配置基準点1502側の辺のX座標が、配置基準点1502と同じになるまで移動し、その時の画像基準点を1508’とする。配置領域のX軸方向を画像基準点1508’のX座標まで拡大し、これを第三の配置領域1509’とする。
ここでは、画像が結びつけられていない配置基準点がX軸方向に存在する場合について説明したが、Y軸方向に存在する場合も同様の処理を行えばよい。すなわち、配置領域のY軸方向を所定の位置まで拡大し、第三の配置領域とすればよい。
本実施形態に係る配置領域再拡大処理によれば、大きな空白エリアが無いコラージュ画像を作成することができる。また、少なくとも画像が無回転の時には、画像が重ならなくなる。また、配置領域再拡大処理を実行することにより、図15(c)に示すように、もし画像が回転して画像が重なったとしても、画像の重なりを小さくすることができる。
S1109では、コラージュ領域に存在する配置基準点が直線に並んでいるか否かを判定する。ここでは、コラージュ領域に存在する複数の配置基準点を結ぶと画像配置領域の辺と平行な直線となるか否かを判定する。本実施形態の場合は、画像の総枚数が2枚であるか否かを判定すればよい。本実施形態では、図9に示すように、配置する画像の枚数が二枚である場合は、配置基準点が直線に並べられている。画像の総枚数が二枚だった場合、S1110へ進み、二枚ではない、すなわち、一枚である場合はS1111へ進む。
S1110では、直線用配置領域拡大処理を行う。ここで、図16を用いて、直線用配置領域拡大処理について説明する。
図16に示すように、配置基準点1601に結びつけられた画像1603をコラージュ領域305の左上に内接させた場合の画像基準点1604と、コラージュ領域の左下に内接させた場合の画像基準点1604’を得る。画像基準点1604と画像基準点1604’を結ぶ直線を一辺とし、配置基準点1601を通り且つ画像基準点1604と画像基準点1604’を結ぶ直線と平行な一辺を対向する辺とする。そして、これらの辺と、画像基準点1604を通りこれらの辺と直交する辺と、画像基準点1604’を通りこれらの辺と直交する辺により構成される長方形を第一の配置領域1605とする。ここで、コラージュ領域305の角に対象となる画像1603を内接させたときの画像基準点の位置は、画像1603の大きさに応じて変わる。例えば、画像が大きい場合は、画像が小さい場合と比較して、画像基準点が配置基準点側に位置することになる。したがって、画像基準点と配置基準位置を結ぶ直線は小さくなる。
ここで、画像が2枚の時には、図6に示すサイズ決定表より、画像のサイズがコラージュ領域の最大50%までとなっている。また、本実施形態では画像の中心を画像基準点としている。このため、例えば、最大の50%のサイズとなった画像1606を、コラージュ領域305の右上、右下に内接した時の画像基準点1607及び1607’のX座標は、コラージュ領域の右枠から25%の位置となる。そして、配置基準点はコラージュ領域の右枠から33%に位置するので、他の配置基準点を考慮して配置領域縮小処理を行う必要は無い。また、隣り合う配置基準点に必ず画像があるので、配置領域再拡大処理も必要は無い。よって、直線用配置領域拡大処理によって定まった配置領域が、そのまま第三の配置領域となる。
S1111では、点用配置領域拡大処理を行う。ここで、図17を用いて、点用配置領域拡大処理について説明する。図17に示すように、画像が1枚の時には配置基準点1701は1つであり、それに結びつけられた画像1703をコラージュ領域305の角に内接させた場合の画像基準点1702、1702’、1702’’、1702’’’を頂点とする長方形が配置領域となる。ここで、コラージュ領域305の角に対象となる画像1703を内接させたときの画像基準点の位置は、画像1703の大きさに応じて変わる。例えば、画像が大きい場合は、画像が小さい場合と比較して、画像基準点が配置基準点側に位置することになる。したがって、画像基準点と配置基準位置を結ぶ直線は小さくなる。
また、画像が1枚の場合は、隣り合う基準点が存在しないため、配置領域縮小処理及び配置領域再拡大処理は必要なく、点用配置領域拡大処理によって定まった配置領域が、そのまま第三の配置領域となる。
S1101〜S1111において設定された第三の配置領域が、最終的に画像の基準点を配置することができる画像基準点配置領域となる。S1101〜S1111を全ての画像について順に行うことにより、各画像に対する画像基準点配置領域が決定する。
以上のように、画像基準点配置領域を生成した後、基準点位置決定処理により、画像基準点配置領域内のどこに画像基準点を置くかを乱数等を用いてランダムで決定する(S504)。これにより、ID405及びID406の値が決まる。その後、画像の角度を決定する角度決定処理により画像の角度を、例えば、±35度の角度内から乱数等を用いてランダムで決定する(S505)。このときの値をID407の値とする。
本実施形態では、画像が画像配置領域に配置される際の大きさ及びその画像に対応付けられた配置基準点の位置に基づいて、画像基準点を配置可能な領域を決定し、その配置可能な領域内に画像基準点を配置する。これにより、様々なパターンの見た目が良好な画像を得ることが可能となる。
また、本実施形態では、配置基準点パターン表より、画像が有る程度バラける位置に配置されるように配置基準点のパターンを決めつつも、他の画像との関係性を考慮して、各画像の画像基準点配置領域を生成する。これにより、画像同士の重なりを低減しつつ、大きな空白エリアが無いように、画像基準点を配置可能なエリア、すなわち、画像基準点配置領域を決定することができる。そして、画像基準点配置領域の中でランダムに画像基準点を配置することで、毎回違う結果になるシャッフルを実現することができる。したがって、本実施形態によれば、毎回異なる結果を得ることが可能なコラージュアプリケーションを実現することができる。
上述したように、本実施形態では、他の画像の情報との関係性を考慮して、見栄えがよくなるように画像の配置する位置を計算して調整して画像基準点配置領域を定めている。これにより、画像基準点配置領域内にランダムに画像の画像基準点を配置することにより、見栄えがよく、且つ、シャッフルのたびに異なるコラージュ画像を得ることができる。すなわち、本実施形態によれば、画像の配置位置の自由度を向上させることができる。
(実施形態2)
本実施形態では、画像基準点の決定方法以外は実施形態1と同様であるので、実施形態1と同様の構成については説明を省略する。
図18〜図20を用いて、本実施形態の画像基準点の決定方法について説明する。
図18は、本実施形態で用いる画像の説明図である。図18(a)は、人物の顔に位置情報がついた写真画像について説明する図である。
画像1801は、写っている人物は一人であり、顔を示す顔領域1802が指定されている。また、その顔の人物名が画像情報として定義されている。本実施形態では、人物名を画像情報としたが、人物名の代わりに、例えば、コラージュ画像を作ろうとしているユーザの名前を画像情報として定義してもよい。
画像1803は、ユーザの子供の学芸会の写真画像である。この場合、ユーザの子供の顔を示す顔領域1806の他に、その友達の顔領域1804及び1805が定義され、それぞれの顔領域に対してその顔の人物名が定義されている。
また、画像1807は、ユーザとユーザの子供のキャッチボールの画像である。この場合、ユーザの顔を示す顔領域1808と、ユーザの子供の顔を示す顔領域1809が定義され、それぞれの顔領域に対して人物名が画像情報として定義されている。
上述した画像情報は、例えば、ネットワーク部106を介してソーシャルネットワークサイト等から読み出し、記憶部103に保存される。
図20は、本実施形態の画像基準点の決定処理のフローチャートである。
S2001において、ターゲットとなる画像における顔領域の有無について判断する。言い換えれば、ターゲットとなる画像に顔領域が設定されているか否かを判断する。顔領域が有る場合は、S2002に進み、顔領域が無い場合、すなわち、顔領域が設定されていない場合は、S2003へ進む。
S2002では、画像の中心を画像基準点に決定し、その後に処理を終了する。
S2003では、顔領域が1つであるか否かを判定する。顔領域が1つである場合は、S2004へ進み、顔領域が2以上である場合は、S2005へ進む。
S2004では、顔領域が1つだけの場合、その唯一の顔画像の中心を画像基準点に決定し、その後に処理を終了する。
S2005では、画像内の複数の顔領域の中にユーザ本人の顔があるか否かを判断する。ユーザ本人の顔がある場合は、S2006へ進み、ユーザ本人の顔がない場合は、S2007へ進む。
S2006では、ユーザ本人の顔画像の中心を画像基準点に決定し、その後に処理を終了する。
S2007では、ユーザの家族の顔が1つだけであるか否かを判断する。すなわち、複数の顔領域の中にユーザ本人の顔領域が存在しないが、家族の顔領域が1つだけ存在する場合は、S2008へ進み、家族の顔領域が2以上存在する場合又はユーザの家族の顔領域が存在しない場合は、S2009へ進む。
S2008では、その唯一の家族の顔領域の中心を画像基準点に決定し、その後に処理を終了する。
S2009では、複数の顔領域のうち、ランダムで決めた顔領域の中心を画像基準点に決定し、その後に処理を終了する。
図18(b)は、図20のフローチャートにより定まった画像基準点の例である。図18(b)に示すように、人物が一人である画像1801では、その人物の顔領域1802の中心が画像基準点1810と決定する。これに対し、ユーザの子供と、その友達が写っている画像1803では、ユーザの子供の顔領域1806の中心が画像基準点1811となる。ユーザとその子供が写っている画像1807では、ユーザの顔領域1809の中心を画像基準点1812とする。この画像基準点を用いて、実施形態1と同様の方法により、画像基準点配置領域を決定すればよい。すなわち、画像基準点を用いた以外は、実施形態1と同様の方法により、コラージュ画像を生成することができる。
上述した画像基準点の決定処理では、S1107においてユーザの家族の顔領域が1つか否かを判定した。このとき、ユーザの家族であるか否かの判断は、例えば、ユーザの人物名とユーザの家族の人物名を互いに関連付けて記憶部103又は外部の記憶手段に予め記憶させておき、これを参照して行えばよい。
上述した画像基準点決定処理では、顔領域が存在する場合はその顔領域の中心を画像基準点とし、画像の中に複数の顔領域が存在する場合はユーザ本人の顔又はユーザの家族の顔を含む顔領域の中心を優先的に画像基準点として決定する。これにより、顔領域をより確実にコラージュ領域305内に収めたコラージュ画像を得ることができる。また、ユーザ本人又はユーザの家族の顔をより確実にコラージュ領域305内収めたコラージュ画像を得ることができる。
ここで、図19を用いて本実施形態の画像基準点配置領域の決定処理について簡単に説明する。図19は、顔領域を画像基準点とした画像基準点配置領域決定処理の説明図である。本実施形態では、画像を3枚としたので、図9の基準点パターンに基づくと、配置基準点は4つに定まる。4つの配置基準点のうち、例えば、左上の配置基準点1901に画像基準点1810が結びつけられた場合、実施形態1と同様の処理により、画像基準点配置領域1902が定まる。また、右上の配置基準点1903に画像基準点1811が結びつけられた場合も、実施形態1と同様の処理により、画像基準点配置領域1904が定まる。具体的には、実施形態1に記載した未使用エリアへの配置領域再拡大処理により、下に伸びた領域になる。左下の配置基準点1905に画像基準点1812が結びつけられた場合も、実施形態1と同様の処理により、画像基準点配置領域1906が定まる。この場合も、実施形態1に記載の未使用エリアへの配置領域再拡大処理により、右に伸びた領域になる。
本実施形態のように、画像基準点が、画像の中心ではない場合、画像の中心が画像基準点である場合よりも、画像と画像の重なりが増える可能性がある。しかしながら、画像基準点が顔画像の中心であることにより、少なくともターゲットとした顔画像(本実施形態ではユーザ本人又はユーザの家族)が、他の画像の後ろに隠れる可能性は低減する。例えば、図19(b)に示すように、画像と画像が最も近づいた状態となった場合、画像1803内の友達の顔は隠れる可能性があるが、画像基準点配置領域1904に収まる画像基準点1811を中心とする子供の顔は、隠れる可能性が低い。具体的には、画像基準点配置領域1902の最も右側に画像基準点1810が存在し、画像基準点配置領域1904の最も左側に画像基準点1811が存在する場合、画像基準点配置領域1904に収まる画像基準点1811を中心とする子供の顔は、隠れる可能性が低い。
上述したように、本実施形態では、顔の中心を画像基準点とすることで、少なくともその顔が他の画像の後ろに隠れる可能性を減らすことができる。コラージュ画像では、画像の一部が上下に重なることがあるが、特定の人物、本実施形態では、ユーザ又はユーザの家族だけは隠れないように配置することができる。ユーザがインターネット上で交流を行うためのソーシャルネットワークサイトでは、ユーザの写真をネットワーク上に保存できる機能を持つことが多く、さらに、写真に写っている人物の顔の位置やその人物の名前等を写真のデータに付属して保存している場合がある。このような場合、その顔の位置データや人物の名前を取得する事で、顔の位置を特定し、顔が重ならないようにコラージュを作成することができる。
なお、本実施形態は、実施形態1と同様に、画像が画像配置領域に配置される際の大きさ及びその画像に対応付けられた配置基準点の位置に基づいて、画像基準点を配置可能な領域を決定し、その配置可能な領域内に画像基準点を配置する。これにより、画像基準点配置領域内にランダムに画像の画像基準点を配置することにより、見栄えがよく、且つ、シャッフルのたびに異なるコラージュ画像を得ることができる。すなわち、本実施形態によれば、画像の配置位置の自由度を向上させることができる。
(他の実施形態)
以上、本発明の各実施形態を説明したが、本発明の基本的構成は上述したものに限定されるものではない。
上述した実施形態では、所定の領域に画像を1〜6枚配置する場合を例に挙げて説明したが、7枚以上を配置する場合も同様の方法により配置すればよい。すなわち、実施形態1及び2と同様に、コラージュ領域に配置する画像の数に応じて、配置基準点の数を設定し、その後の処理を行うようにすればよい。
上述した実施形態では、図9に示す配置基準点のパターンを用いたが、配置基準点のパターンはこれに限定されるものではない。例えば、配置基準点の数を画像の数と常に同数とするように設定してもよく、画像の数より常に多くなるように設定してもよい。また、配置基準点の位置もこれに限定されるもではなく、各配置基準点を等間隔に設けなくてもよい。
実施形態2では、複数ある顔領域のうち、誰の顔の顔領域を画像基準点にするかは自動で行うようにしたが、これに限定されるものではない。例えば、ユーザに特定の人物を指定させて、その人物の顔領域の中心を画像基準点としてもよい。
実施形態2の画像基準点の決定処理では、ユーザ本人の顔があるか否か及びユーザの家族の顔が1つか否かを判定したが、これに限定されず、例えば、ユーザ本人の顔があるか否かのみを判定してもよい。また、これらの判定と合わせて又はユーザ本人の判定の代わりに、ユーザの友達の顔があるか否かを判定してもよく、特定の人物の顔があるか否かを判定してもよい。ユーザの友達の顔があるか否かを判断する場合は、例えば、ユーザの人物名とユーザの友達の人物名を互いに関連付けて記憶部103又は外部の記憶手段に予め記憶させておき、これを参照して行えばよい。
また、実施形態1では、画像の中心を画像基準点とし、実施形態2では、顔領域の中心を画像基準点としたが、画像基準点の決定はこれに限定されるものではない。例えば、顔領域の代わりに、景色内の有名な建物など、特定のオブジェクトの中心を画像基準点としてもよい。また、顔やオブジェクトの中心ではなくその特徴を示すパーツ、例えば顔であれば目、富士山であれば山頂などを画像基準点としてもよい。いずれを画像基準点としたとしても、画像基準点となる部分及びその近辺の画像は、他の画像に重なって隠れる可能性が低くなる。
実施形態1及び2では、サイズ決定処理により配置する画像のサイズを決定したが、サイズ決定処理を行わなくてよい。例えば、元画像のサイズを変更することなくそのままコラージュ領域に配置するようにしてもよく、画像をトリミング等して適当な大きさにした後コラージュ領域に配置するようにしてもよい。
上述した実施形態では、図10に示すように、1つ目の画像に応じて他の画像が対応付けられる配置基準点の優先度を変更するようにしたが、変更しないようにしてもよい。
上述した実施形態では、大きい画像順に結び付け処理及び画像基準点配置領域の生成を行ったがこれに限定されるものではなく、例えば、画像の大きさに関わらずランダムに結び付け処理及び画像基準点配置領域の生成を行ってもよい。ただし、大きい画像順に結び付け処理及び画像基準点配置処理の生成を行うことにより、より画像同士の重なりを低減しつつ、大きな空白エリアが無いコラージュ画像を作成することができる。
また、上述した実施形態では、配置領域縮小処理を行ったが、行わなくてもよい。ただし、配置領域縮小処理を行うことにより、より画像同士の重なりを低減することができる。
上述した実施形態では、未使用エリアへの配置領域再拡大処理を行ったが、行わなくてもよい。
上述した実施形態では、S503〜505、S801,S802,S1004,S1008,S1009では、擬似乱数などの乱数等を用いてランダム配置やパターンを決定するようにしたが、これに限定されるものではない。例えば、予め決められた規則に従って決定するようにしてもよい。いずれにしても、複数の選択肢から選択を行うことにより、様々なパターンの画像を得ることができる。
また、コラージュアプリケーションでは、配置したい画像に、装飾を目的とした枠を付ける場合があり、また、その枠に画像を説明する文章などを付けることができる場合もある。例えば、図21では、画像に装飾枠2101が付され、さらに説明文を表示するテキストボックス2102が存在する。このような場合、画像の中心ではなく、装飾枠2101の領域を含めた領域の中心2103を画像基準点と設定してもよい。このように、装飾枠2101の領域を含めた上で画像基準点配置領域の生成を行うことにより、装飾枠2101、及びその上のテキストボックス2102等が他の画像に隠されてしまう可能性を下げることができる。
上述した実施形態は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(CPUやMPU等)がプログラムを読み出して実行する処理である。また、プログラムは、1つのコンピュータで実行させても、複数のコンピュータを連動させて実行させるようにしてもよい。また、上記した処理の全てをソフトウェアで実現する必要はなく、一部または全部をハードウェアによって実現するようにしてもよい。