撮像装置、画像生成装置、画像生成プログラム、及び画像生成方法
【課題】被写体の動きを表す管理が容易な画像データを生成できる撮像装置、画像生成装置、画像生成プログラム、及び画像生成方法を提供する。
【解決手段】撮像装置は、被写体を表す複数の被写体画像の画像データを取得する被写体画像データ取得部211と、被写体画像の被写体領域を包含する被写体範囲を表す被写体範囲情報を算出する被写体範囲情報算出部214を備える。また、撮像装置は、複数の被写体範囲情報で表される被写体範囲の差異に基づいて、生成された複数の被写体領域画像から被写体の動作を表す複数の被写体領域画像を選択する被写体領域画像選択部216を備える。さらに、撮像装置は、選択された複数の被写体領域画像を合成することで、被写体領域画像に表された被写体を並べて表示する合成画像を生成する合成画像データ生成部218を備える。
【解決手段】撮像装置は、被写体を表す複数の被写体画像の画像データを取得する被写体画像データ取得部211と、被写体画像の被写体領域を包含する被写体範囲を表す被写体範囲情報を算出する被写体範囲情報算出部214を備える。また、撮像装置は、複数の被写体範囲情報で表される被写体範囲の差異に基づいて、生成された複数の被写体領域画像から被写体の動作を表す複数の被写体領域画像を選択する被写体領域画像選択部216を備える。さらに、撮像装置は、選択された複数の被写体領域画像を合成することで、被写体領域画像に表された被写体を並べて表示する合成画像を生成する合成画像データ生成部218を備える。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、撮像装置、画像生成装置、画像生成プログラム、及び画像生成方法に関する。
【背景技術】
【0002】
特許文献1には、人物又は物体などの被写体を連写して得られた複数の画像から被写体が表された部分画像をそれぞれ抽出した後に、抽出された部分画像を1枚の背景画像に対して撮像時刻に従って順次重ねて表示することで、背景を停止させながら撮像時の被写体の動作を表示する画像(いわゆる、ダイナミックフォト)を生成する技術が開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特表2008−529150号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ここで、特許文献1に係るダイナミックフォト技術では、被写体の動作を表示する画像は、1枚の背景画像と複数枚の部分画像とを特殊なファイルフォーマットを用いて表す1つの電子ファイル(以下単に、ファイルという)として管理されるか、又は背景画像を表すファイルと部分画像を表す複数のファイルとを関連付けたデータとして管理される必要がある。このため、例えば、一般的なファイルフォーマットの静止画などと比べて画像データの管理が面倒であるという問題があった。
【0005】
そこで、本発明は、このような点に鑑み、その目的とするところは、被写体の動きを表す管理が容易な画像データを生成できる撮像装置、画像生成装置、画像生成プログラム、及び画像生成方法を提供することにある。
【課題を解決するための手段】
【0006】
上記目的を達成するため、本発明の第1の観点に係る撮像装置は、
被写体を撮像することで、前記被写体を表す被写体画像を複数生成する撮像手段と、
前記被写体の背景を表す背景画像の画像データを取得する背景画像データ取得手段と、
前記複数の被写体画像それぞれの画素値と、前記背景画像の画素値とに基づいて、前記被写体が表された被写体領域を表す被写体領域情報を、前記被写体画像のそれぞれから検出する被写体領域情報検出手段と、
前記検出された複数の被写体領域情報に基づいて、前記複数の被写体画像のそれぞれから、前記被写体領域を表す被写体領域画像を生成する被写体領域画像生成手段と、
前記生成された複数の被写体領域情報のそれぞれから、前記被写体領域を包含する被写体範囲を表す被写体範囲情報を算出する被写体範囲情報算出手段と、
前記算出された複数の被写体範囲情報で表される被写体範囲の差異に基づいて、前記生成された複数の被写体領域画像から、前記被写体の動作を表す複数の被写体領域画像を選択する被写体領域画像選択手段と、
前記選択された複数の被写体領域画像を合成することで、前記被写体領域画像に表された被写体を並べて表示する合成画像の画像データを生成する合成画像データ生成手段と、を備える、
ことを特徴とする。
【0007】
第1の観点に係る撮像装置において、
前記被写体領域画像選択手段は、
前記合成される被写体領域画像の数を指定する画像数指定情報を取得し、
前記生成された被写体領域画像の数が、前記取得された指定情報で指定される指定画像数以上である場合に、前記被写体範囲情報が表す被写体範囲の大きさが所定の大きさ以下の被写体領域画像を無効画像として特定し、前記被写体範囲の大きさが所定の大きさよりも大きい被写体領域画像を有効画像として特定し、
前記有効画像と特定した被写体領域画像を、前記被写体の動作を表す被写体領域画像として選択する、
ことが望ましい。
【0008】
また、第1の観点に係る撮像装置において、
前記被写体領域画像選択手段は、前記特定した有効画像の数が前記指定画像数以上である場合に、前記検出された被写体範囲情報が表す被写体範囲の差異が大きい有効画像から順に、前記指定情報で指定された画像数だけ選択する、
ことが望ましい。
【0009】
さらに、第1の観点に係る撮像装置において、
前記被写体領域画像選択手段は、前記生成された被写体領域画像の数が前記指定画像数より少ない場合に、前記指定画像数に対して不足する数の被写体領域画像を、重複して前記合成画像に表示される被写体を表す重複画像として特定し、
前記合成画像データ生成手段は、前記特定された重複画像で表される被写体を、表示される複数の被写体に対して全体的に一様に分布するように重複表示する合成画像を生成する、
ことが望ましい。
【0010】
また、第1の観点に係る撮像装置において、
前記合成画像データ生成手段は、
前記合成画像の形状を表す合成画像形状情報を取得する形状情報取得手段と、
前記複数の被写体範囲情報に基づいて、前記選択された複数の被写体領域画像の被写体範囲を包含する有効範囲を表す有効範囲情報を算出する有効範囲算出手段と、
前記取得された合成画像形状情報と、前記取得された指定画像数情報と、前記算出された有効範囲情報とに基づいて、前記合成画像を前記有効範囲と同一又は相似の形状を有する前記指定画像数の分割領域に分割する合成画像分割手段と、
前記選択された前記指定画像数の被写体領域画像を、前記合成画像の前記分割領域のそれぞれに対して合成する画像合成手段と、を備える、
ことが望ましい。
【0011】
さらにまた、第1の観点に係る撮像装置において、
前記複数の被写体範囲情報が表す被写体範囲の相違は、前記複数の被写体範囲の画素値の相違、又は前記複数の被写体範囲に含まれる被写体領域の画素値の相違を含む、
ことが望ましい。
【0012】
また、第1の観点に係る撮像装置において、
前記複数の被写体範囲情報が表す被写体範囲の相違は、前記複数の被写体範囲情報を算出する基礎とされた被写体画像の中から選択した2つの被写体画像を前記背景が一致するように重ねた場合において、前記複数の被写体範囲が重なる部分の面積と、重ならない部分の面積との比率を含む、
ことが望ましい。
【0013】
さらにまた、第1の観点に係る撮像装置において、
前記複数の被写体範囲情報が表す被写体範囲の相違は、前記複数の被写体範囲情報を算出する基礎とされた被写体画像の中から選択した2つの被写体画像を前記背景が一致するように重ねた場合における、2つの前記被写体範囲の位置の相違を含む、
ことが望ましい。
【0014】
上記目的を達成するため、本発明の第2の観点に係る画像生成装置は、
被写体を表す被写体画像の画像データを複数取得する被写体画像データ取得手段と、
前記被写体の背景を表す背景画像の画像データを取得する背景画像データ取得手段と、
前記複数の被写体画像それぞれの画素値と、前記背景画像の画素値とに基づいて、前記被写体が表された被写体領域を表す被写体領域情報を、前記被写体画像のそれぞれから検出する被写体領域情報検出手段と、
前記検出された複数の被写体領域情報に基づいて、前記複数の被写体画像のそれぞれから、前記被写体領域を表す被写体領域画像を生成する被写体領域画像生成手段と、
前記生成された複数の被写体領域情報のそれぞれから、前記被写体領域を包含する被写体範囲を表す被写体範囲情報を算出する被写体範囲情報算出手段と、
前記算出された複数の被写体範囲情報で表される被写体範囲の差異に基づいて、前記生成された複数の被写体領域画像から、前記被写体の動作を表す複数の被写体領域画像を選択する被写体領域画像選択手段と、
前記選択された複数の被写体領域画像を合成することで、前記被写体領域画像に表された被写体を並べて表示する合成画像の画像データを生成する合成画像データ生成手段と、を備える、
ことを特徴とする。
【0015】
上記目的を達成するため、本発明の第3の観点に係る画像生成プログラムは、
コンピュータを、
被写体を表す被写体画像の画像データを複数取得する被写体画像データ取得手段、
前記被写体の背景を表す背景画像の画像データを取得する背景画像データ取得手段、
前記複数の被写体画像それぞれの画素値と前記背景画像の画素値とに基づいて、前記被写体が表された被写体領域を表す被写体領域情報を、前記被写体画像のそれぞれから検出する被写体領域情報検出手段、
前記複数の被写体領域情報に基づいて、前記複数の被写体画像のそれぞれから、前記被写体領域を表す被写体領域画像を生成する被写体領域画像生成手段、
前記複数の被写体領域情報のそれぞれから、前記被写体領域を包含する被写体範囲を表す被写体範囲情報を算出する被写体範囲情報算出手段、
前記複数の被写体範囲情報で表される被写体範囲の差異に基づいて、前記生成された複数の被写体領域画像から、前記被写体の動作を表す複数の被写体領域画像を選択する被写体領域画像選択手段、
前記選択された複数の被写体領域画像を合成することで、前記被写体領域画像に表された被写体を並べて表示する合成画像の画像データを生成する合成画像データ生成手段、として機能させる、
ことを特徴とする。
【0016】
上記目的を達成するため、本発明の第4の観点に係る画像生成方法は、
被写体を表す被写体画像の画像データを複数取得する被写体画像データ取得ステップと、
前記被写体の背景を表す背景画像の画像データを取得する背景画像データ取得ステップと、
前記複数の被写体画像それぞれの画素値と前記背景画像の画素値とに基づいて、前記被写体が表された被写体領域を表す被写体領域情報を、前記被写体画像のそれぞれから検出する被写体領域情報検出ステップと、
前記複数の被写体領域情報に基づいて、前記複数の被写体画像のそれぞれから、前記被写体領域を表す被写体領域画像を生成する被写体領域画像生成ステップと、
前記複数の被写体領域情報のそれぞれから、前記被写体領域を包含する被写体範囲を表す被写体範囲情報を算出する被写体範囲情報算出ステップと、
前記複数の被写体範囲情報で表される被写体範囲の差異に基づいて、前記生成された複数の被写体領域画像から、前記被写体の動作を表す複数の被写体領域画像を選択する被写体領域画像選択ステップと、
前記選択された複数の被写体領域画像を合成することで、前記被写体領域画像に表された被写体を並べて表示する合成画像の画像データを生成する合成画像データ生成ステップと、を有する、
ことを特徴とする。
【発明の効果】
【0017】
本発明の撮像装置、画像生成装置、画像生成プログラム、及び画像生成方法によれば、被写体の動きを表す管理が容易な画像データを生成できる。
【図面の簡単な説明】
【0018】
【図1】(a)は、本発明の実施形態に係るデジタルカメラのハードウェアの一構成例を表す図であり、(b)は、本発明の実施形態に係る画像生成装置のハードウェアの一構成例を表す図である。
【図2】(a)は、デジタルカメラが撮像する連写画像の一例を表す図であり、(b)は、デジタルカメラが撮像する背景画像の一例を表す図であり、(c)は、連写画像と背景画像とから生成された被写体領域画像の一例を表す図である。
【図3】(a)は、図15のフレームに基づいて生成された結果画像の一例を表す図であり、(b)は、図16のフレームに基づいて生成された結果画像の一例を表す図である。
【図4】(a)は、制御部が実行する合成画像生成処理の一例を表すフローチャートであり、(b)は、被写体画像データ取得部が実行する被写体画像データ取得処理の一例を表すフローチャートであり、(c)は、背景画像データ取得部が実行する背景画像データ取得処理の一例を表すフローチャートである。
【図5】(a)は、画像生成装置の有する機能の一例を表す機能ブロック図であり、(b)は、合成画像データ生成部の一構成例を表す図である。
【図6】(a)は、被写体撮像指示画面の一例を表す図であり、(b)は、背景撮像指示画面の一例を表す図である。
【図7】背景画像データ取得部が実行する背景画像生成処理の一例を表すフローチャートである。
【図8】(a)は、制御部が実行する被写体領域切抜処理の一例を表すフローチャートであり、(b)は、被写体領域情報検出部が実行する被写体領域情報検出処理の一例を表すフローチャートである。
【図9】(a)は、被写体画像の画像データの一例を表す図であり、(b)は、背景画像の画像データの一例を表す図であり、(c)は、相違マップの一例を表す図である。
【図10】(a)は、マスクデータの一例を表す図であり、(b)は、マスクデータをx軸方向及びy軸方向に投影した投影像の一例を表す図である。
【図11】被写体範囲情報算出部が実行する被写体範囲情報算出処理の一例を表すフローチャートである。
【図12】(a)は、制御部が実行する画像合成処理の一例を表すフローチャートであり、(b)は、縦横分割数算出部が実行する縦横分割数算出処理の一例を表すフローチャートである。
【図13】有効画像選択部が実行する有効画像選択処理の一例を表すフローチャートである。
【図14】連続した被写体無しフレームを1つの有効フレームとする処理の一例を説明するための図である。
【図15】被写体範囲の差異が少ない有効フレームを無効フレームとする処理の一例を説明するための図である。
【図16】重複利用フレームを選択する処理の一例と、複製利用フレームを生成する処理の一例とを説明するための図である。
【図17】(a)は、拡大/縮小率算出部が実行する拡大/縮小率算出処理の一例を表すフローチャートであり、(b)は、被写体範囲補正部が実行する被写体範囲補正処理の一例を表すフローチャートである。
【図18】合成画像生成部が実行する合成画像生成処理の一例を表すフローチャートである。
【図19】(a)は、変形例1における基準被写体画像の一例を表す図であり、(b)は、変形例1におけるシフト被写体画像の一例を表す図であり、(c)は、基準被写体画像とシフト被写体画像とを背景が一致するように重ねた画像の一例を表す図である。
【図20】(a)は、変形例2における基準被写体画像の一例を表す図であり、(b)は、変形例2におけるシフト被写体画像の一例を表す図であり、(c)は、基準被写体画像とシフト被写体画像とを背景が一致するように重ねた画像の一例を表す図である。
【発明を実施するための形態】
【0019】
本発明の実施形態に係る撮像装置は、図1(a)に示すようなデジタルカメラ1であり、本発明の実施形態に係る画像生成装置210を搭載している。デジタルカメラ1は、例えば、静止画を撮像する機能、特に、1回のシャッタ操作で一連かつ複数の静止画像を得る連写機能を有する。
【0020】
ここで、図2(a)に示すような連写機能により得られた被写体を表す一連の画像(以下、被写体画像)P1からP6で構成される画像群を、以下単に、被写体画像群又は連写画像という。本実施形態において、デジタルカメラ1は、連写画像に表された人物(つまり、被写体)を表す複数の部分画像を合成することで、図3(a)及び(b)に示すようなこれらの部分画像を並べて表示する合成画像CIa及びCIbを生成する。しかし、これに限定される訳ではなく、デジタルカメラ1は、それぞれ単写された複数の画像で構成される画像群を用いて合成画像を生成しても良いし、動画像から抽出された複数の静止画像(つまり、フレーム)で構成される画像群を用いて合成画像を生成しても良い。尚、被写体は、人物に限定される訳ではなく、例えば、航空機や自動車などの物体であっても良い。
【0021】
デジタルカメラ1は、図1(a)に示すように、撮像部100、データ処理装置200、及びインタフェース部300から構成される。
撮像部100は、デジタルカメラ1の撮像動作を行う部分であり、図1(a)に示すような光学装置110及びイメージセンサ120で構成されている。
【0022】
光学装置110は、例えば、不図示のレンズ、絞り機構、及びシャッタ機構を含み、撮像に係る光学的動作を行う。
【0023】
イメージセンサ120は、例えば、CCD(Charge Coupled Device:電荷結合素子)やCMOS(Complementally Metal Oxide Semiconductor:相補型金属酸化物半導体)などのイメージセンサから構成される。イメージセンサ120は、光学装置110によって集光された入射光に応じた電気信号を生成し、生成した電気信号をデータ処理部200に出力する。
【0024】
データ処理部200は、撮像部100によって生成されたアナログ電気信号を信号処理することで、撮像部100で撮像された画像を示すデジタルデータ(つまり、画像データ)を生成し、生成した画像に対して各種の画像処理を行う。
【0025】
データ処理部200は、制御部210、画像処理部220、記憶部230、及び画像出力部240から構成される。制御部210は、例えば、図1(b)に示すようなCPU(Central Processing Unit)210a、RAM(Random Access Memory)210b、ROM(Read Only Memory)210c、及びI/Oポート210dを備えるLSI(Large Scale Integration)で構成される。
【0026】
CPU210aは、ROM210cに保存されたプログラムに従ってソフトウェア処理を実行することで、画像生成装置210を含むデジタルカメラ1の各部を制御(つまり、全体制御)する。RAM210bは、CPU210aによるプログラムの実行時において、処理対象とする情報(データ)を一時的に記憶する。I/Oポート210dは、制御部210と接続する各部とCPU210aとの間でデータの入出力を行う。
【0027】
画像処理部220は、例えば、バッファメモリ、AD(Analog/Digital)コンバータ、及び画像処理用のプロセッサで構成される。画像処理部220のADコンバータは、イメージセンサ120から出力されたアナログ電気信号をデジタル信号に変換する。その後、画像処理部220のプロセッサは、いわゆる現像処理を行うことで、例えば、例えば、JPEG(Joint Photographic Experts Group)やビットマップなどの画像データを生成し、生成した画像データを撮像時刻と関連付けてDRAMへ保存する。尚、撮像時刻は、画像データを保存した時刻であっても、イメージセンサ120から信号を受信した時刻であっても構わない。
【0028】
記憶部230は、例えば、DRAM(Dynamic Random Access Memory)やフラッシュメモリなどの記憶装置から構成され、画像処理部220によって生成された画像データや、制御部210によって生成された画像データなどを記憶する。
【0029】
画像出力部240は、例えば、液晶表示コントローラやRGB信号の生成回路などから構成され、記憶部230に記憶された画像データをRGB信号などに変換した後に、RGB信号を後述する表示部320などに出力する。
【0030】
インタフェース部300は、デジタルカメラ1とその使用者(つまり、ユーザ)あるいは外部装置とのインタフェースに係る構成であり、外部インタフェース部310、表示部320、及び操作部330で構成される。
【0031】
外部インタフェース部310は、例えば、USB(Universal Serial Bus)コネクタやビデオ出力端子などから構成され、外部のコンピュータ装置に対する画像データの出力及び外部のモニタ装置に対する合成画像の表示出力を行う。
【0032】
表示部320は、例えば、液晶表示装置や有機EL(Electro Luminescence)ディスプレイなどから構成される。表示部320は、デジタルカメラ1を操作するために必要な種々の画面や、画像出力部240からの画像信号(RGB信号)などに基づいて合成画像等を表示する。
【0033】
操作部330は、デジタルカメラ1の外面上に構成されている各種ボタンなどによって構成され、デジタルカメラ1のユーザによる操作に応じた操作信号を生成し、生成した操作信号を制御部210に入力する。操作部330には、例えば、シャッタ動作を指示するためのシャッタボタンや、デジタルカメラ1の有する動作モードを指定するためのモードボタン、各種設定を行うための十字キーや機能ボタンなどが含まれる。尚、動作モードには、通常の撮像を行う通常撮像モード、連写撮像を行う連写撮像モード、連写撮像及び連写撮像により得た連写画像から合成画像を生成する合成画像生成モードが含まれる。
【0034】
制御部210のCPU201aは、ROM210c又は記憶部230に格納されたプログラムに従って複数の画像を合成した合成画像を生成する合成画像生成処理を実行する。ここで、合成画像生成処理の結果生成される合成画像を、以下、結果画像ともいう。結果画像は、例えば、図3(a)及び(b)に示すような、複数の被写体を表す画像を漫画のコマ割のように並べて表示することで、被写体の動作を表すコマふりダイナミックフォトを含む。このため、合成画像を生成する合成画像生成モードを、以下、コマふりダイナミックフォトモードともいう。尚、結果画像は、表示する複数の画像間にコマ割を表す割線(つまり、線分)を表示してもしなくても良い。
【0035】
ユーザがデジタルカメラ1のモードボタン等を押下げると、制御部210のCPU201aは、操作部330から出力される操作信号に基づいて、コマふりダイナミックフォトモード(つまり、合成画像生成モード)が選択されたと判別する。次に、CPU201aは、図4(a)に示すような合成画像生成処理の実行を開始することで、図5(a)に示す被写体画像データ取得部211、背景画像データ取得部212、被写体領域情報検出部213、被写体範囲情報算出部214、被写体領域画像生成部215、被写体領域画像選択部216、被写体範囲画像生成部217、合成画像データ生成部218、及び合成画像出力制御部219として機能する。尚、合成画像データ生成部218は、図5(b)に示すような分割数算出部218a、拡大/縮小率算出部218b、被写体範囲補正部218c、及び合成画像生成部218dを有する。
【0036】
図4(a)の合成画像生成処理を開始すると、図5(a)の被写体画像データ取得部211は、撮像部100を制御して被写体を撮像させることで被写体画像を取得する、図4(b)に示すような被写体画像データ取得処理を実行する(ステップS01)。
【0037】
図4(b)の被写体画像データ取得処理の実行を開始すると、被写体画像データ取得部211は、図6(a)に示すような被写体の撮像を指示するメッセージと、ライブビュー画像(つまり、シャッタボタンが押し下げられていない場合に撮像部100が所定時間間隔で撮像した画像の内、最新の画像)とで構成される被写体撮像指示画面を表示部320に表示させる(ステップS11)。また、被写体画像データ取得部211は、被写体を撮像する枚数の指定を促すメッセージを表示するように表示部320を制御する。次に、被写体画像データ取得部211は、操作部330から出力される信号に基づいて、ユーザによって指示された撮像枚数(以下、指示撮像枚数という)Mを表す撮像枚数情報を取得する(ステップS12)。
【0038】
ここで、ユーザにより操作部330のシャッタボタンが押されると、操作部330は、シャッタボタンの押下されている間、例えば100msの所定時間間隔で、押下操作に応じた操作信号を制御部210に送信し続ける。
【0039】
図4(b)のステップS12の後に、被写体画像データ取得部211は、被写体を撮像する被写体撮像制御処理を実行する(ステップS13)。具体的には、被写体画像データ取得部211は、操作部330から操作信号を受信すると、ユーザによりシャッタボタンが押下されたと判別し、被写体の撮像を開始するように図1(a)の撮像部100を制御する。また、被写体画像データ取得部211は、操作部330から操作信号を受信し続ける間、被写体の連写撮像を継続するように撮像部100を制御する。その後、被写体画像データ取得部211は、撮像回数が撮像枚数Mに達した後に、所定の時間を超えて操作部330から操作信号を受信しなくなると、シャッタボタンの押下が停止された(つまり、押上られた)と判別し、撮像を停止するように撮像部100を制御する。尚、指示された撮像枚数Mが1枚の場合には、被写体画像データ取得部211は、連写せず、通常の撮像を行うように撮像部100を制御する。
【0040】
被写体画像データ取得部211に制御された撮像部100は、連写撮像によって、図2(a)に示すような一連の画像P1からP6を生成し、生成した画像P1からP6を表す信号を画像処理部220に順次送信する。画像処理部220は、撮像部100から画像信号を受信すると、受信した信号に基づいて画像P1からP6を表すJPEGフォーマットなどの画像データに生成し、生成した画像データを記憶部230に格納(保存)する。その後、被写体画像データ取得部211は、記憶部230に格納された画像P1からP6を表す画像データを取得してから(ステップS14)、被写体画像取得処理の実行を終了する。
【0041】
図4(a)のステップS01の後に、図5(a)の背景画像データ取得部212は、被写体画像P1からP6における被写体の背景を表す背景画像の画像データを取得する、図4(c)に示すような背景画像データ取得処理を実行する(ステップS02)。
【0042】
図4(c)の背景画像データ取得処理を開始すると、背景画像データ取得部212は、記憶部230に記憶された被写体画像に基づいて背景画像を生成する、図7に示すような背景画像生成処理を実行する(ステップS21)。尚、背景画像生成処理は、以下の図7に示す処理に限定されるのではなく、例えば、特許文献である特開2010−67125公報に記載の擬似背景生成処理であっても良い。
【0043】
図7の背景生成処理の実行を開始すると、背景画像データ取得部212は、記憶部230に記憶された連写画像の中から1枚の画像を選択し、選択した画像を所定の数Bmaxの升目状ブロックに分割する(ステップS31)。尚、背景画像データ取得部212は、複数の被写体画像の内で、最初又は最後に撮像された画像を分割しても良いし、背景の生成が成功するまで連写画像の中から1枚ずつ被写体画像を選択し分割しても良い。また、背景画像データ取得部212は、分割されたブロックに対して、番号1から順にBmaxまで一意の番号を割り振る。
【0044】
次に、背景画像データ取得部212は、背景生成処理の実行対象とするブロックを識別する番号B(以下、処理ブロック番号という)を表す変数に対して値’0’を代入して初期化する。また、背景画像データ取得部212は、背景を表すブロックであると判別されたブロック(以下、有効ブロックという)の数Bokを表す変数に対して値’0’を代入して初期化する(ステップS32)。
【0045】
次に、背景画像データ取得部212は、以下の式(1)及び(2)を用いて処理ブロック番号Bのブロック(以下、処理ブロックという)の変動量を算出する(ステップS33)。尚、処理ブロックの変動量とは、例えば、標準偏差σなどのブロック内部の画素色がどの程度ばらついているか(つまり、一様でないか)を表す指数である。つまり、ブロックの変動量である標準偏差σは、ブロック内の画素が全て同一の色であれば‘0’となり、ブロック内の色が多様(つまり、ばらついており一様でない)になる程大きな値となる。
【0046】
【数1】
但し、baveは処理ブロック内の画素値の平均値を表し、Nは処理ブロック内の画素数Nを表し、nは画素番号を表し、bnは処理ブロック内の画素値を表し、σは、処理ブロック内の画素値の標準偏差である変動量を表す。
【0047】
ステップS33を実行した後に、背景画像データ取得部212は、処理ブロックの色が一様であるか否かを判別するための閾値1をROM210c又は記憶部230から読み出し、ステップS33で算出された変動量が、読み出された閾値1よりも小さいか否か判別する(ステップS34)。このとき、背景画像データ取得部212は、変動量が閾値1以上であると判別すると(ステップS34;No)、処理ブロックは主に被写体を表すと判別し、ステップS35の特徴点を検出する処理、及びステップS37の平均色を算出する処理の双方を行わずに、ステップS38の処理を実行する。
【0048】
この構成によれば、例えば、単一色の背景の前で被写体を撮像した場合には、背景は、被写体に比べて変動量が少ないので、変動量に基づいて処理ブロックが背景を表すブロックであるか被写体を表すブロックであるかを判別できる。また、処理ブロックが被写体を表すブロックであると判別すると、ステップS35及びステップS37の処理を実行しないため背景画像を生成するための計算量を削減できる。
【0049】
ステップS34において、背景画像データ取得部212は、変動量が閾値1よりも小さいと判別すると(ステップS34;Yes)、処理ブロック(つまり、処理ブロック番号Bのブロック)を特徴付ける特徴点を、例えば、ハリスのコーナー特徴量などに基づいて検出する(ステップS35)。次に、背景画像データ取得部212は、検出した特徴点の数を計数する。その後、背景画像データ取得部212は、処理ブロックが、特徴を有する画像を表すか否かを判別するための閾値2をROM210c又は記憶部230から読み出し、計数した特徴点の数が読み出した閾値2よりも少ないか否か判別する(ステップS36)。ここで、例えば、単一色の背景の前で被写体を撮像した場合には、背景は、被写体に比べてコーナー等の特徴的な点を有さないので、処理ブロックから特徴点が検出される場合には、検出された特徴点は、処理ブロックに表された背景ではなく被写体の特徴を表すと考えられる。つまり、この構成によれば、特徴点に基づいて処理ブロックが背景を表すブロックであるか被写体を表すブロックであるかを判別するため、精度良く処理ブロックが背景を表すブロックであるか否かを判別できる。
【0050】
ステップS36において、背景画像データ取得部212は、特徴点の数が閾値2よりも少ないと判別すると(ステップS36;Yes)、処理ブロック内の平均色を算出する(ステップS37)。次に、背景画像データ取得部212は、処理ブロックは背景の一部を表すと判別し、有効ブロック数Bokを表す変数値を値’1’だけインクリメントする(ステップS38)。
【0051】
ステップS34において、処理ブロックの変動量が閾値1以上であると判別された場合、ステップS36において、処理ブロックから検出された特徴点の数が閾値2以上であると判別された場合、又はステップS38を実行した後に、背景画像データ取得部212は、処理ブロック番号Bを表す変数を値‘1’だけインクリメントする(ステップS39)。
【0052】
その後、背景画像データ取得部212は、処理ブロック番号Bが分割数Bmaxと等しいか否かを判別する(ステップS40)。このとき、制御部210は、処理ブロック番号Bが分割数Bmaxと等しくないと判別すると(ステップS40;No)、ステップS33に戻り上記処理を繰り返す。これに対して、処理ブロック番号Bが分割数Bmaxと等しいと判別すると(ステップS40;Yes)、背景画像データ取得部212は、有効ブロック(つまり、背景の一部を表すと判別されたブロック)の数Bokが、背景を生成するのに必要なブロックの数(以下、必要ブロック数という)よりも多いか否かを判別する(ステップS41)。
【0053】
尚、この必要ブロック数を表すデータは、ROM210c又は記憶部230に記憶されている。また、必要ブロック数は、単一色の背景の前で被写体を撮像したか否かを判別するための閾値であり、必要ブロック数を表すデータに基づいて定められる。具体例としては、必要ブロック数を定める値は、被写体画像の総ブロック数Bmaxに対して、通常、単一色の背景の前で被写体を撮像した場合に検出される有効ブロック数の割合である。この場合、被写体画像を24ブロックに分割すると(つまり、Bmaxが24の場合)には、背景画像データ取得部212は、記憶部230から必要ブロック数を定める値’0.5’を読み出し、読み出した値’0.5’を値’24’に乗算した値’12’を必要ブロック数とする。
【0054】
ステップS41において、背景画像データ取得部212は、有効ブロックの数Bokが必要ブロック数よりも多いと判別すると(ステップS41;Yes)、有効ブロックのうちで同一色とみなされるブロックの数を、ブロック色毎に算出する(ステップS42)。具体的には、背景画像データ取得部212は、有効ブロックのそれぞれについて、ブロック内部に含まれる画素値の平均値baveの差が、例えば、誤差の範囲内とみなせる(つまり、所定値以下)のブロックを同一色ブロックとし、同一色ブロックの数を同一色ブロックの色毎にカウントする。例えば、1画素256色の画像を挙げて説明すると、256の10%を誤差範囲内とみなす場合には、平均値baveの差が25以内の有効ブロックを同一色ブロックとしてカウントする。
【0055】
ステップS42の後に、背景画像データ取得部212は、最も多い数の同一色ブロック(以下、最多同一色ブロックという)の数が、ステップS41で用いられる必要ブロック数よりも多いか否かを判別する(ステップS43)。必要ブロック数は、単一色の背景の前で被写体を撮像した場合に、通常、検出される有効ブロック数を表すためである。このとき、背景画像データ取得部212は、最多同一色ブロックが必要ブロック数よりも多いと判別すると(ステップS43;Yes)、最多同一色ブロックの平均色を被写体画像の背景色と特定する(ステップS44)。その後、背景画像データ取得部212は、特定した背景色(例えば、青一色)で塗り潰した、連写画像と同一サイズの画像を背景画像として生成する(ステップS45)。その後、背景画像データ取得部212は、その生成した画像を表す、例えば、JPEG又はビットマップなどの所定フォーマットの画像データを生成し、生成した画像データを記憶部230に格納する。その後、背景画像データ取得部212は、背景画像生成の成否を表す背景画像生成フラグをオン状態(つまり、背景画像生成成功を表す状態)としてから(ステップS46)、背景画像生成処理の実行を終了する。尚、背景画像データ取得部212は、背景画像の生成に成功した旨のメッセージを表示部320に表示させても良い。
【0056】
ステップS41において、背景画像データ取得部212は、有効ブロックの数が必要ブロック数以下であると判別した場合(ステップS41;No)、又はステップS43において、最多同一色ブロックの数が必要ブロック数以下であると判別した場合に(ステップS43;No)、背景画像の成否を表す背景画像生成フラグをオフ状態(つまり、背景画像生成失敗を表す状態)としてから(ステップS47)、背景画像生成処理の実行を終了する。尚、背景画像データ取得部212は、背景画像の生成に失敗した旨のメッセージを表示部320に表示させても良い。
【0057】
これらの構成によれば、例えば、白い壁や青い布から成るブルーバックなどの単一色の背景を背にした被写体を撮像する場合などには、一様な(つまり、変動量が少ない)画像領域の色に基づいて背景色を特定すると共に、特定した背景色で塗り潰された背景画像を生成する。このため、ユーザがデジタルカメラ1を用いて背景を撮像する必要がなくなるので、デジタルカメラ1の利便性が向上する。
【0058】
図4(c)のステップS21の後に、背景画像データ取得部212は、背景画像生成フラグに基づいて、背景画像の生成が成功したか否かを判別する(ステップS22)。このとき、背景画像データ取得部212は、背景画像の生成が成功したと判別すると(ステップS22;Yes)、背景画像データ取得処理の実行を終了する。これに対して、背景画像データ取得部212は、背景画像の生成が成功しなかったと判別すると(ステップS22;No)、背景の撮像を開始する。
【0059】
先ず、背景画像データ取得部212は、背景の撮像により取得した背景画像の枚数Nを表す変数を値’0’で初期化する(ステップS23)。次に、背景画像データ取得部212は、図6(b)に示すような背景の撮像を指示するメッセージとライブビュー画像とで構成される背景撮像指示画面を表示するように表示部320を制御する(ステップS24)。その後、背景画像データ取得部212は、位置合わせ処理を実行する(ステップS25)。具体的には、背景画像データ取得部212は、画像処理部220から出力されるライブビュー画像の画像データを記憶部230から取得し、取得した画像データで表されるライブビュー画像から特徴点を検出する。次に、背景画像データ取得部212は、図7のステップS35で検出した被写体画像の特徴点と、ライブビュー画像の特徴点とが重なるように、デジタルカメラ1を移動させる移動方向を指示するメッセージ又は画像を表示部320に表示させる。具体例としては、背景画像データ取得部212は、特徴点のテンプレートマッチングなどによりライブビュー画像の特徴点と被写体画像の特徴点とを対応させた後に、対応させた特徴点の位置の相違に基づいて、指示するべきデジタルカメラ1の移動方向を算出すれば良い。その後、ユーザがメッセージに従ってデジタルカメラ1を移動させた後に、背景画像データ取得部212は、被写体画像の特徴点と、ライブビュー画像の特徴点とが重なったか否かを判別する。背景画像データ取得部212は、被写体画像の特徴点と、ライブビュー画像の特徴点とが重なったと判別すると、シャッタボタンの押し下げ操作が可能になるように、シャッタボタンのロックを解除する。また、背景画像データ取得部212は、特徴点とが重なったと判別すると、自動で、撮像を行うように撮像部100を制御しても良い。この構成によれば、被写体画像の特徴点と、ライブビュー画像の特徴点との位置合わせを行うので、特徴点を検出された被写体画像と、新たに撮像される背景画像との双方に表された背景の特徴的な点の位置が、被写体画像と背景画像とでそれぞれ一致し易い。このため、例えば、被写体画像と、背景画像との画素値の相違に基づいて被写体が表された被写体画像上の領域(以下、被写体領域という)を検出する場合に精度良く被写体領域を検出できる。
【0060】
図4(c)のステップS25の後に、ユーザにより操作部330のシャッタボタンが押下されると、背景画像データ取得部212は、操作部330から操作信号を受信し、背景画像を撮像するように撮像部100を制御することで(ステップS26)、図2(b)に示すような背景画像を表す画像データを記憶部230から取得した後に(ステップS27)、背景画像の枚数Nを表す変数を値’1’だけインクリメントする(ステップS28)。尚、ステップS28の処理により生成された画像データで表される画像が、図2(b)に示す背景画像B1からB6である。
【0061】
その後、背景画像データ取得部212は、背景画像の枚数Nを表す変数の値が、指示撮像枚数Mと等しいか否かを判別する(ステップS29)。このとき、背景画像データ取得部212は、背景画像の枚数Nが指示撮像枚数Mに等しいと判別すると、背景画像データ取得処理の実行を終了し、これに対して、背景画像の枚数Nが指示撮像枚数Mと等しくないと判別すると、ステップS23に戻り上記処理を繰り返す。
【0062】
図4(a)のステップS02の後に、制御部210は、被写体が表された被写体領域を被写体画像から切り抜く(つまり、抽出する)、図8(a)に示すような被写体領域切抜処理を実行する(ステップS03)。
【0063】
図8(a)の被写体領域切抜処理の実行を開始すると、制御部210は、被写体領域切抜処理の処理対象とする被写体画像の番号(以下、処理画像番号という)Nを表す変数の値を’1’として初期化する(ステップS51)。尚、記憶部230に記憶された連写画像を構成する被写体画像は、撮像時刻(又は、保存時刻)順に、番号’1’から’M’が割り振られている。ステップS51の後に、図5(a)に示す制御部210の被写体領域情報検出部213は、処理画像番号Nの被写体画像(以下、処理画像という)から、被写体領域を表す被写体領域情報を検出する、図8(b)に示すような被写体領域情報検出処理を実行する(ステップS52)。
【0064】
図8(b)の被写体領域情報検出処理の実行を開始すると、被写体領域情報検出部213は、図9(a)に示すような被写体画像の各画素値と、図9(b)に示すような背景画像の対応する位置の各画素値との相違度(つまり、差異)を表す差分画素値をそれぞれ算出し、算出した差分画素値を各画素値の位置に対応する2次元配列データの要素にそれぞれ格納することで、図9(c)に示すような相違度マップを生成する(ステップS61)。
【0065】
例えば、被写体画像及び背景画像が図9(a)及び図9(b)に示すような1画素256色のビットマップデータであるので、被写体領域情報検出部213は、それら画像の対応する画素値の差異を絶対値で求め、図9(c)に示すような相違度マップを生成する。具体的には、図9(a)の画素a及び図9(b)の画素aのように、2枚の画像の対応する画素値がそれぞれ‘19’と‘21’である場合には、被写体領域情報検出部213は、それらの画素値の差の絶対値‘2’を、図9(c)の相違度マップの画素aに記録する。同様に、被写体領域情報検出部213は、図9(a)の被写体画像の画素bと図9(b)の被写体画像の画素bと差の絶対値‘209’を、図9(c)に示す相違度マップの画素bに記録する。
【0066】
次に、被写体領域情報検出部213は、ステップS61で生成した相違度マップを、例えば、被写体領域を表す値を‘255’、背景領域を表す値を‘0’として二値化することで、被写体領域を表す被写体領域情報(以下、マスクデータという)を生成する(ステップS62)。具体的には、被写体領域情報検出部213は、ROM210c又は記憶部230に予め記憶された被写体検出用の一定閾値を読み出し、相違度マップの画素値が読み出した一定閾値以上の場合は‘255’、一定閾値より小さい場合は‘0’として、相違度マップの画素値を置換する。
【0067】
ステップS62の後に、被写体領域情報検出部213は、ステップS62の相違度マップを二値化する処理(つまり、マスクデータを生成する処理)が成功したか否かを判別する(ステップS63)。具体例としては、被写体領域情報検出部213は、生成されたマスクデータにおける値’0’が連続した領域(つまり、背景画像と相違がない領域)の面積が所定の面積よりも小さい場合に、二値化処理を失敗したと判別する。これに対して、被写体領域情報検出部213は、所定の面積以上である場合に、二値化処理を成功したと判断する。通常、被写体画像には、背景が所定面積以上含まれるので、被写体画像において背景画像と相違が一定閾値より少ない部分の面積が所定面積より小さい場合には、相違度マップを二値化する処理に失敗した可能性が高いためである。尚、二値化処理の成否を判別するための所定面積を表すデータは、ROM210c又は記憶部230に記憶されている。
【0068】
ステップS63において、被写体領域情報検出部213は、二値化処理に成功したと判別した場合に(ステップS63;Yes)、マスクデータのノイズを除去する処理を実行する(ステップS64)。具体的には、被写体領域情報検出部213は、生成したマスクデータに対して縮小処理を行った後に、縮小前の(つまり、元の)大きさに戻す拡大(膨張)処理を行う(ステップS65)。この構成によれば、背景画像と被写体画像との位置合わせにおいて生じる誤差により被写体領域の周辺に生じる、例えば、線分状の領域や、被写体画像又は背景画像の撮像時に生じたノイズを除去できるため、精度良く被写体領域を表すマスクデータを生成できる。
【0069】
被写体領域情報検出部213は、ステップS64でノイズを除去されたマスクデータに対して、さらに平均化フィルタをかけることで、被写体を表すビット値’255’で表される被写体領域の周辺部に階調をつける(ステップS65)。つまり、平均化フィルタには被写体領域の輪郭をぼかす機能があるため、マスクデータに平均化フィルタをかけることで、図10(a)に示すようなマスクデータにおいて、被写体領域の輪郭部を表す画素値が、例えば、背景領域から被写体領域に向かって順に値’0’、’30’、’100’、’255’といった具合に段階的に変化する値となる。
【0070】
これらの構成によれば、例えば、マスクデータを構成する画素値を、画素値の最大値’255’で除算した値に対して、マスクデータの画素に対応する被写体画像の画素値を積算した値を、被写体領域を表す画素の画素値とすることで(つまり、被写体領域の画素値=被写体画像の対応画素値×マスクデータの対応画素値/255)、被写体画像から被写体領域を表す被写体領域画像を生成する場合に、例えば、被写体領域とそうでない領域(つまり、背景領域)との境界にエッジが少なく、被写体領域画像を視認するユーザに対して自然な印象を与える被写体領域画像を生成できる。
【0071】
図8(b)のステップS65の後に、被写体領域情報検出部213は、被写体領域の検出成否を表す被写体領域フラグをオン状態(つまり、被写体領域検出成功を表す状態)としてから(ステップS66)、被写体領域検出処理の実行を終了する。尚、被写体領域情報検出部213は、被写体領域の検出に成功した旨のメッセージを表示部320に表示させても良い。
【0072】
ステップS63において、被写体領域情報検出部213は、二値化処理に失敗したと判別した場合に、被写体領域フラグをオフ状態(つまり、被写体領域検出失敗を表す状態)としてから(ステップS67)、被写体領域情報検出処理の実行を終了する。尚、被写体領域情報検出部213は、被写体領域の検出に失敗した旨のメッセージを表示部320に表示させても良い。
【0073】
図8(a)のステップS52の後に、被写体領域情報検出部213は、被写体領域の検出に成功したか否かを判別する(ステップS53)。このとき、被写体領域情報検出部213が被写体領域の検出に成功したと判別すると(ステップS53;Yes)、被写体範囲算出部214は、変数で表される処理画像番号Nの被写体画像(つまり、処理画像)の被写体範囲を表す被写体範囲情報を算出する、図11に示すような被写体範囲情報算出処理を実行する(ステップS54)。
【0074】
ここで、被写体範囲とは、被写体からの最短距離が所定値以下の枠線によって囲まれた所定形状の領域であって、内部に被写体が表された(つまり、内側に被写体画像を含む)領域をいう。本実施形態において、所定形状は、図10(b)に示すような矩形の領域であるとして説明するが、これに限定される訳ではなく、例えば、円形状、三角形状、その他の多角形状を含む。この構成によれば、被写体範囲の形状が四角形なので、被写体範囲の左上端の位置を表す情報と右下端の位置を表す情報といった合計2つの情報、又は左下端の位置を表す情報と右上端の位置を表す情報といった合計2つの情報で被写体範囲を表すことができるので、被写体範囲情報の情報量が少ない。
【0075】
図11の被写体範囲算出処理を開始すると、図5(a)の被写体範囲算出部214は、図10(a)及び図10(b)に示すように、被写体画像の主走査方向をx軸とし、副走査方向をy軸とし、被写体画像に向かって左上の被写体画像の頂点を原点とするxy座標系を画定する。次に、被写体範囲算出部214は、y軸方向における被写体範囲を算出するために、後述するステップS71からS80の処理を実行する。
【0076】
先ず、被写体範囲算出部214は、y座標を表す変数yを値’0’で初期化する(ステップS71)。被写体領域が存在するか否かの調査を開始する調査開始座標を最上行(つまり、最も原点に近い行)の座標とするためである。次に、被写体範囲算出部214は、以下の式(3)で表される条件Yが成立するか否か判別する(ステップS72)。
【0077】
【数2】
但し、関数M(x,y)は、xy座標値が(x,y)である画素のマスクデータにおける画素値を表す。また、Xmaxは、x軸方向(つまり、横方向)における被写体画像のサイズ(画素数)を表す。
【0078】
つまり、条件Yは、マスクデータを構成する画素の内で、y座標値がyである全画素(つまり、主走査方向に1行に並んだ全画素)の画素値の総和を算出した結果が値’0’より大きいという条件である。ここで、マスクデータは、被写体画像において背景を表す画素に対応する画素の値が’0’であり、被写体を表す画素に対応する画素の値が’255’などであるデータである。このため、図10(b)に示すように、それぞれのy座標値について、同じy座標値で表される被写体を表す画素の数を算出した場合に(いわゆる、被写体を横方向に投影した場合に)、算出された画素数が1以上となる(つまり、投影された被写体が存在する)y座標値については、条件Yが成立する。画素値M(x,y)をx軸方向に総和した値が’0’より大きい値となるからである。これに対して、算出された画素数が‘0’となる(つまり、投影された被写体が存在しない)y座標値については、画素値M(x,y)をx軸方向に総和した値は値’0’となり、条件Yが成立しない。
【0079】
このため、ステップS72において、被写体範囲算出部214は、現在のy座標値では、条件Yが成立しないと判別すると(ステップS72;No)、y座標値を表す変数の値を値‘1’だけインクリメントする(ステップS73)。その後、被写体範囲算出部214は、インクリメントされた変数で表されるy座標値が、被写体画像のy軸方向の総画素数(つまり、サイズ)Ymaxと等しいか否かを判別する(ステップS74)。被写体範囲算出部214は、変数で表されるy座標値がYmaxと等しくないと判別すると(ステップS74;No)、上記ステップS72に戻り上記処理を繰り返す。これに対して、被写体範囲算出部214は、変数で表されるy座標値がYmaxと等しいと判別すると(ステップS74;Yes)、被写体範囲における最も原点に近い点の座標値(Xstart,Ystart)、最も原点から遠い点の座標値(Xend,Yend)、被写体範囲のx軸方向のサイズXsize及び被写体範囲のy軸方向のサイズYsizeを表す変数をそれぞれ値‘0’する(ステップS75)。被写体範囲が算出されなかったことを表すためである。
【0080】
ステップS72において、被写体範囲算出部214は、現在のy座標値で、条件Yが成立したと判別すると(ステップS72;Yes)、被写体範囲における最も原点に近い点の座標値Ystartを表す変数に、変数yが表すy座標値を代入する(ステップS76)。
【0081】
次に、被写体範囲算出部214は、y座標を表す変数yに対して被写体画像のy軸方向のサイズYmaxから1減算した値Ymax−1を代入する(ステップS77)。調査開始座標を最下行(つまり、最も原点から遠い行)の座標とするためである。次に、被写体範囲算出部214は、上記の式(3)で表される条件Yが成立するか否か判別する(ステップS78)。このとき、被写体範囲算出部214は、現在のy座標値では条件Yが成立しないと判別すると(ステップS78;No)、y座標値を表す変数の値を値‘1’だけデクリインクリメントする(ステップS79)。その後、被写体範囲算出部214は、上記ステップS78に戻り上記処理を繰り返す。尚、ステップS72において、被写体画像には被写体領域が存在すると判別しているので(ステップS72;Yes)、被写体範囲算出部214は、ステップS74のような終了条件を判別する必要がない。これに対して、被写体範囲算出部214は、条件Yが成立したと判別すると(ステップS78;Yes)、被写体範囲における最も原点から遠い点の座標値Yendを表す変数に現在のy座標値を代入する(ステップS80)。
【0082】
次に、被写体範囲算出部214は、x軸方向における被写体範囲を算出するために、後述するステップS81からS89の処理を実行する。
先ず、制御部210は、x座標を表す変数xを値’0’で初期化する(ステップS81)。調査開始座標をマスクデータに向かって最左列(つまり、最も原点に近い列)の座標とするためである。次に、被写体範囲算出部214は、以下の式(4)で表される条件Xが成立するか否か判別する(ステップS82)。
【0083】
【数3】
但し、関数M(x,y)は、xy座標値が(x,y)である画素のマスクデータにおける画素値を表す。また、Ymaxは、y軸方向(副走査方向)における被写体画像のサイズ(画素数)を表す。
【0084】
つまり、条件Xは、マスクデータを構成する画素の内で、x座標値がxである全画素(つまり、縦方向に1列に並んだ全画素)の画素値の総和を算出した結果が値’0’より大きいという条件である。
このため、ステップS82において、被写体範囲算出部214は、現在のx座標値では、条件Xが成立しないと判別すると(ステップS82;No)、x座標値を表す変数xの値を値‘1’だけインクリメントした後に(ステップS83)上記ステップS82に戻り上記処理を繰り返す。これに対して、被写体範囲算出部214は、条件Xが成立したと判別すると(ステップS82;Yes)、被写体範囲における最も原点に近い点の座標値Xstartを表す変数に現在のx座標値を代入する(ステップS84)。
【0085】
次に、被写体範囲算出部214は、x座標を表す変数に対して被写体画像のx軸方向のサイズXmaxから1減算した値Xmax−1を代入する(ステップS85)。調査開始座標をマスクデータに向かって最右列(つまり、最も原点から遠い列)の座標とするためである。次に、被写体範囲算出部214は、上記の式(4)で表される条件Xが成立するか否か判別する(ステップS86)。このとき、被写体範囲算出部214は、現在のx座標値では、条件Xが成立しないと判別すると(ステップS86;No)、x座標値を表す変数の値を値‘1’だけデクリインクリメントする(ステップS87)。その後、被写体範囲算出部214は、上記ステップS86に戻り上記処理を繰り返す。これに対して、被写体範囲算出部214は、条件Xが成立したと判別すると(ステップS86;Yes)、被写体範囲における最も原点から遠い点の座標値Xendを表す変数に現在のx座標値を代入する(ステップS88)。
【0086】
次に、被写体範囲算出部214は、ステップS80で決定したYendからステップS76で決定したYstartを減算した後に値‘1’を加算することで、被写体範囲のy軸方向のサイズYsizeを算出し、ステップS88で決定したXendからステップS84で決定したXstartを減算した後に値‘1’を加算することで、被写体範囲のx軸方向のサイズXsizeを算出する(ステップS89)。その後、制御部210は、被写体範囲を表す座標値(Xstart,Ystart)及び(Xend,Yend)、並びに被写体範囲のサイズを表すXsize及びYsizeを被写体範囲情報とした後に、被写体範囲情報算出処理の実行を終了する。
【0087】
図8(a)のステップS54の後に、図5(a)の被写体領域画像生成部215は、ステップS52で検出したマスクデータ(つまり、被写体領域情報)を用いて、処理画像番号Nの被写体画像(つまり、処理画像)に対してマスク処理を施す。この処理により、被写体領域画像生成部215は、処理画像と同じサイズ又は略同一サイズの被写体領域画像(以下、被写体領域フレームという)を生成する(ステップS55)。尚、ステップS55の処理により生成されたフレームが、図2(c)に示す被写体領域フレームF1からF6である。
【0088】
ステップS55の後に、被写体領域画像生成部215は、被写体領域フレームの背景領域(つまり、被写体領域以外の領域)を、例えば、グレーなどの所定色で塗り潰す(ステップS56)。この構成によれば、被写体領域に表された被写体の視認性が向上するだけでなく、例えば、所定色を透過色とすることで、被写体領域を任意の背景画像に対して容易かつ少ない計算量で合成できる。
【0089】
ステップS53において、被写体領域画像生成部215は、被写体領域の検出に失敗したと判別した場合、又はステップS56を実行した後に、処理画像番号Nを表す変数を値‘1’だけインクリメントする(ステップS57)。次に、被写体領域画像生成部215は、処理画像番号N(つまり、処理された画像数)が指定撮像枚数Mと等しいか否かを判別する(ステップS58)。このとき、被写体領域画像生成部215は、処理画像番号Nが撮像枚数Mと等しくないと判別すると(ステップS58;No)、ステップS52に戻り上記処理を繰り返す。これに対して、処理画像番号Nが指定撮像枚数Mと等しいと判別すると(ステップS58;Yes)、被写体領域画像生成部215は、ステップS52で生成されたマスクデータと、ステップS54で算出された被写体範囲情報と、ステップS56で生成された被写体領域画像(つまり、被写体領域フレーム)を表す画像データとを、記憶部230へ保存する(ステップS59)。その後、被写体領域画像生成部215は、被写体領域切抜処理の実行を終了する。
【0090】
図4(a)のステップS03の後に、図5(a)の制御部210は、ステップS03で被写体領域を表す部分画像を切り抜くことで生成された被写体領域画像(つまり、被写体領域フレーム)を合成する、図12(a)に示すような画像合成処理を実行する(ステップS04)。
【0091】
図12(a)の画像合成処理を開始すると、図5(a)の被写体領域画像生成部215は、例えば、ユーザの操作に応じて操作部330が送信する操作信号に基づいて、被写体領域フレームに対して任意の背景画像を合成するか否かを判別する(ステップS91)。このとき、被写体領域画像生成部215は、被写体領域フレームに対して任意の背景画像を合成すると判別すると、例えば、記憶部230に記憶された画像の縮小画像(例えば、サムネイル)を生成し、生成した縮小画像を表示部320に一覧表示させる。その後、被写体領域画像生成部215は、例えば、ユーザに操作された操作部330から受信する信号に基づいて、ユーザが背景として選択した選択背景画像を特定し、特定した画像の画像データを記憶部230から取得する(ステップS92)。尚、選択背景画像として選択される画像は、例えば、ユーザによって任意に撮像された画像であっても、外部I/F部310を介して外部装置からダウンロードされた画像であっても良い。
【0092】
ステップS91において、被写体領域画像生成部215が背景画像を合成しないと判別した場合(ステップS91;No)、又はステップS92を実行した後に、図5(a)の被写体領域画像選択部216は、結果画像の生成に使用される被写体領域フレーム(以下、有効画像又は有効フレームという)と、結果画像の生成に使用されない被写体領域フレーム(以下、無効画像又は無効フレームという)とを選択する、図13に示すような有効画像選択処理を実行する(ステップS93)。
【0093】
図13の有効画像選択処理の実行を開始すると、被写体領域画像選択部216は、例えば、結果画像におけるコマ割分割数(つまり、合成される被写体領域画像の数)の指定を行うか否かを問うメッセージと、指定の有無を表す操作を行うように促すメッセージとを表示部320に表示させる。次に、制御部210は、例えば、操作部330から受信する信号に基づいて、分割数の指定があるか否かを判別する(ステップS101)。
【0094】
ステップS101において、被写体領域画像選択部216は、分割数の指定が無いと判別した場合には(ステップS101;No)、有効画像選択処理に利用される被写体領域フレーム(以下、利用フレームともいう)の内で、図11のステップS75又はS89で算出した被写体範囲のx軸方向(縦方向)のサイズXsize又はy軸方向(横方向)のサイズYsizeのいずれかが所定値よりも小さい利用フレームを被写体無しフレームとする。尚、所定値は、値‘0’であっても良い。
【0095】
次に、制御部210は、各利用フレームの基礎となった(つまり、各フレームが切り出された)被写体画像の撮像時刻又は保存時刻の順に各利用フレームを並べた場合、並び順が連続した複数の被写体無しフレームを1つの有効フレーム(つまり、有効画像)とし、有効フレームとしなかった被写体無しフレームを無効フレーム(つまり、無効画像)とする(ステップS102)。
【0096】
具体例としては、図14に示すように、番号順に並んだ利用フレームFU1からFU6の内で、利用フレームFU2とFU3とが、被写体を表さない被写体無しフレームである場合には、被写体領域画像選択部216は、利用フレームFU2とFU3とを1つの有効フレームFV2とし(つまり、利用フレームFU2のみを有効フレームFV2とする)、残りの利用フレームFU1及びFU4からFU6を有効フレームFV1及びFV4からFV6とする。これは、被写体が表されていない被写体無しフレームを何枚並べて表示しても被写体の動作を表すことができないめである。また、被写体が写されていないことを表すためには、被写体無しフレームを1つ表示すれば十分であるためである。尚、複数の被写体無しフレームを1つの有効フレームとすることに限定されるのではなく、被写体無しフレームの連続枚数よりも少ない枚数の被写体無しフレームを有効フレームとすれば良い。
【0097】
次に、被写体領域画像選択部216は、並び順が連続した2枚の有効フレームの組を決定し、決定した組を構成する有効フレームの間の被写体範囲の差異の程度を表す指標の差異度をそれぞれ算出する。次に、被写体領域画像選択部216は、被写体範囲の差異度が所定閾値よりも少ない組を特定し、特定された組の有効フレームの内で、並び順が早い方の有効フレーム及び遅い方の有効フレームのいずれか一つ以上を、有効フレームから除外した(つまり、無効フレームとした)後に(ステップS103)、有効画像選択処理の実行を終了する。
【0098】
具体例としては、被写体領域画像選択部216は、図15に示すように、番号順に並んだ利用フレームFV1とFV2との組、利用フレームFV2とFV4との組、利用フレームFV4とFV5との組、利用フレームFV5とFV6との組を決定した後に、それぞれの組における被写体範囲の差異度12、差異度24、差異度45、及び差異度56を算出する。ここで、差異度45が所定閾値よりも小さい場合に、被写体領域画像選択部216は、有効フレームFV4を無効フレームとし、残りの有効フレームFV1、FV2、FV5、及びFV6を有効フレームのまま維持する。これは、通常、異なる動作状態の被写体を表す2枚の被写体画像においては、被写体範囲が相違する。このため、2枚の被写体画像における被写体範囲の差異が小さくなる程、2枚の被写体画像によって被写体の動作を十分に表すことができなくなるためである。このため、有効フレームFV1、FV2、FV5、及びFV6から生成された結果画像は、図3(a)に示すような結果画像CIaとなり、結果画像CIaは、被写体の動作を少ない画像数で十分に表すことができる。
【0099】
具体的には、被写体領域画像選択部216は、有効フレーム間の被写体範囲の差異を表す差異度は、被写体範囲情報のXstart同士の差異、Xend同士の差異の差異、Ystart同士の差異、及びYend同士の差異といずれか1つ以上で表される。尚、被写体範囲の位置の差は、被写体範囲情報のXstart同士の差異、Xend同士の差異の差異、Ystart同士の差異、及びYend同士の差異といずれか1つ以上の和で表されても良い。また、差異度は、Xstart同士の差異とYstart同士の差異との二乗和により算出された座標値(Xstart,Ystart)で表される点同士の距離、Xend同士の差異とYend同士の差異との二乗和により算出された座標値(Xend,Yend)で表される点同士の距離、及びこれら距離の和のいずれかで表されても良い。尚、被写体範囲の差異度を判別するための所定閾値は、ROM210c又は記憶部230に予め記憶されている。
【0100】
この構成によれば、差異度は、被写体範囲情報のXstart同士の差異、Xend同士の差異の差異、Ystart同士の差異、及びYend同士の差異といずれか1つ以上で表されるので、例えば、複数の被写体画像において同じ位置に写された被写体であっても、複数の被写体画像において被写体の大きさなどの形状が異なる被写体を表す被写体画像の差異度が大きくなる。このため、差異度が所定閾値よりも大きい複数の有効フレームは、被写体の大きさなどの形状が大きく異なる被写体を表すので、ユーザは、複数の有効フレームを視認すると、被写体の大きさなどの形状の変化を容易に認識できる。
【0101】
またこの構成によれば、例えば、複数の被写体画像において複数の被写体画像において被写体の大きさなどの形状が同じであっても、複数の被写体画像において異なる位置に被写体が写されていれば、差異度が大きくなる。このため、差異度が所定閾値よりも大きい複数の有効フレームは、被写体の位置が多く異なるので、ユーザは、複数の有効フレームを視認すると、被写体の位置の変化を容易に認識できる。
【0102】
図13のステップS101において、分割数の指定があると判別した場合には(ステップS101;Yes)、被写体領域画像選択部216は、結果画像に合成される被写体領域画像(つまり、被写体領域フレーム)の数(以下、指定画像数という)を指定する画像数指定情報を操作部330から受信し、受信した指定画像数を結果画像の分割数(以下、指定分割数という)とする(ステップS104)。次に、被写体領域画像選択部216は、利用フレームの数が指定分割数に等しいか否かを判別する(ステップS105)。このとき、被写体領域画像選択部216は、利用フレームの数が指定分割数に等しいと判別すると(ステップS105;Yes)、利用フレームの全てを有効フレームとした後に、有効画像選択処理の実行を終了する。これに対して、制御部210は、利用フレームの数が指定分割数に等しくないと判別すると(ステップS105;No)、利用フレームの数が指定分割数よりも多いか否かを判別する(ステップS106)。このとき、被写体領域画像選択部216は、利用フレームの数が指定分割数よりも多いと判別すると(ステップS106;Yes)、ステップS102と同様の処理を実行する(ステップS107)。
【0103】
その後、被写体領域画像選択部216は、有効フレームの数が指定分割数に等しいか否かを判別する(ステップS108)。このとき、被写体領域画像選択部216は、有効フレームの数が指定分割数に等しいと判別すると(ステップS108;Yes)、有効画像選択処理の実行を終了する。これに対して、被写体領域画像選択部216は、有効フレームの数が指定分割数に等しくないと判別すると(ステップS108;No)、有効フレームの数が指定分割数よりも多いか否かを判別する(ステップS109)。このとき、被写体領域画像選択部216は、有効フレームの数が指定分割数よりも多いと判別すると(ステップS109;Yes)、並び順が連続した2枚の有効フレームの組を決定し、決定した組を構成する有効フレーム間の被写体範囲の差異度が少ない組の並び順が早い方又は遅い方の有効フレームから順に有効フレームから除外する(つまり、無効フレームとする)。この処理によって、被写体領域画像選択部216は、有効フレームの枚数を指定分割数と等しくした後に(ステップS110)、有効画像選択処理の実行を終了する。尚、有効フレーム間の被写体範囲の差異度は、ステップS103と同様に算出されるため再度の説明を省略する。
【0104】
ステップS106において、利用フレーム数が指定分割数よりも少ないと判別した場合(ステップS106;No)、又はステップS109において、有効フレーム数が指定分割数よりも少ないと判別した場合には(ステップS109;No)、被写体領域画像選択部216は、指定分割数と比べて不足している有効フレーム数を不足フレーム数として算出する。次に、被写体領域画像選択部216は、不足フレーム数の有効フレームを、重複して表示される重複画像(以下、重複利用フレームという)とする。ここで、被写体領域画像選択部216は、被写体画像の撮像時刻又は保存時刻の順に各利用フレームを並べた場合に、並べられた各利用フレームにおいて重複利用フレームが一様かつ全体に分布するように、重複利用フレームを特定する(ステップS111)。その後、被写体領域画像選択部216は、特定された重複利用フレームを複製することで、複製利用フレームを生成し、生成した複製利用フレームを有効フレームとした後に、複製利用フレームを重複利用フレームの直後の位置に追加してから有効画像選択処理の実行を終了する。
【0105】
具体例としては、被写体領域画像選択部216は、先ず、指定分割数から利用フレーム数/有効フレーム数を減算することで、不足フレーム数を算出する。次に、被写体領域画像選択部216は、不足フレーム数が利用フレーム数/有効フレーム数以上か否かを判別する。ここで、不足フレーム数が利用フレーム数/有効フレーム数以上の場合には、全ての有効フレームを重複利用フレームとする。これに対して、不足フレーム数が利用フレーム数/有効フレーム数よりも少ない場合には、被写体領域画像選択部216は、不足フレーム数の利用フレーム/有効フレームを重複利用フレームとすると判別する。次に、被写体領域画像選択部216は、利用フレーム数/有効フレーム数を不足フレーム数で除算した商を算出し、算出した商の値の枚数毎に、並べられた各利用フレームから重複利用フレームを特定する。
【0106】
次に、被写体領域画像選択部216は、不足フレーム数を重複利用フレーム数で除算した商と余りとを算出する。次に、被写体領域画像選択部216は、余りの数の重複利用フレームに対して商の数に1を加算した数(つまり、商+1)の複製フレームを生成すると決定し、それ以外の重複利用フレームに対して商の数だけ複製フレームを生成すると決定する。
【0107】
ここで、指定分割数が8枚で、有効フレーム数が3枚の場合を例に挙げて説明すると、被写体領域画像選択部216は、不足枚数を5と算出し、不足枚数5枚が有効フレーム数3枚よりも多いと判別する。このため、被写体領域画像選択部216は、有効フレームの全てを重複利用フレームとする必要があると判別する。次に、被写体領域画像選択部216は、不足フレーム数5を有効フレーム数3で除算した商1と余り2とを算出する。その後、被写体領域画像選択部216は、2枚の数の重複利用フレームに対して2枚(商1+値1)の複製利用フレームを生成し、当該重複利用フレームの直後の順番に追加し、それ以外の(つまり、残り1枚の)重複利用フレームに対して1枚(商1)の複製利用フレームを生成し、当該重複利用フレームの直後の順番にそれぞれ追加する。
【0108】
次に、図16に示すような5枚の有効フレームFV1、FV2、及びFV4からFV6に対して、8枚の指定分割数が指定された場合を例に挙げて説明すると、被写体領域画像選択部216は、不足枚数を3枚と算出し、不足枚数3枚が有効フレーム数5枚よりも少ないと判別する。このため、被写体領域画像選択部216は、有効フレーム数5枚を不足枚数3枚で除算した商1を算出する。次に、被写体領域画像選択部216は、有効フレームFV1、FV4、及びFV6を(つまり、並べられた有効フレームを1枚毎に)重複利用フレームと特定する。つまり、それぞれ最初、3番目、及び5番目の有効フレームを重複利用フレームと決定する。その後、被写体領域画像選択部216は、特定した重複利用フレームのそれぞれに対して1枚の複製利用フレームFV1−2、FV4−2、及びFV6−2を生成し、生成したそれぞれの複製利用フレームを、重複利用フレームFV1、FV4、及びFV6の直後に追加する。このため、フレームFV1、FV1−2、FV2、FV4、FV4−2、FV5、FV6、及びFV6−2から生成された結果画像は、図3(b)に示すような結果画像CIbとなり、結果画像CIbは、重複して表示される画像の数が全体的に均一であるため、被写体の動作に対する視認性の低下を防止できる。
【0109】
尚、被写体領域画像選択部216は、被写体範囲の差異度が大きい2つの利用フレーム/有効フレームの組を不足フレーム数だけ選択し、選択した組のそれぞれについて、選択した組の利用フレーム/有効フレームの1つを重複利用フレームと特定し、特定した重複利用フレームの複製利用フレームを当該重複利用フレームの直後に追加しても良い。この構成によれば、差異の大きいフレームの後に複製利用フレームが追加されるため、差異の小さいフレームの後に複製利用フレームが追加される場合よりも、フレームを番号順に並べた場合における被写体の動作に対する視認性が低下することを防止できる。
【0110】
また、被写体領域画像選択部216は、被写体範囲の差異度が最も大きい2つの利用フレーム/有効フレームの組を特定し、特定した組の利用フレーム/有効フレームの1つを重複利用フレームと特定し、特定した重複利用フレームの複製利用フレームを当該重複利用フレームの直後に追加した後に、これらの処理を有効フレーム数が不足している間繰り返しても良い。
【0111】
図12(a)のステップS93の後に、図5(b)合成画像データ生成部218が有する分割数算出部218aは、結果画像をコマ割りする縦横数(以下、縦横分割数という)を算出する、図12(b)に示すような縦横分割数算出処理を実行する(ステップS94)。
【0112】
図12(b)の縦横分割数算出処理の実行を開始すると、分割数算出部218aは、先ず、ROM210cに記憶された結果画像(合成画像)の形状を表す合成画像形状情報を取得する。尚、分割数算出部218aは、結果画像の形状を指定するように促すメッセージを表示部320に表示させた後に、ユーザの操作に応じた操作信号を操作部330から受信し、受信した信号に基づいてユーザに指定された結果画像の形状を特定しても良い。分割数算出部218aは、取得した合成画像形状情報で表される結果画像の形状の内で、結果画像のx軸方向のサイズXansと、y方向のサイズYansとを取得する(ステップS121)。次に、分割数算出部218aは、図12(a)のステップS93で選択された有効フレームの被写体範囲の全てを包含する有効範囲を表す有効範囲情報を算出する。具体的には、分割数算出部218aは、有効フレームの被写体範囲について、x軸方向及びy軸方向のそれぞれにおけるサイズXsize及びYsizeの最大値(つまり、最大サイズ)Xsizemax及びYsizemaxを特定し、特定したXsizemax及びYsizemaxを有効範囲情報とする(ステップS122)。
【0113】
その後、分割数算出部218aは、ステップS121で取得した結果画像のサイズXansをYansで除算することで、結果画像の縦横比rateAnsを算出する(ステップS123)。次に、分割数算出部218aは、ステップS122で特定した被写体範囲の最大サイズXsizemaxをYsizemaxで除算することで、有効範囲の縦横比rateFrameを算出する(ステップS124)。
【0114】
尚、被写体フレームから被写体範囲の部分画像を切り抜くことで生成される、被写体範囲のサイズを有する画像をキャラクタ画像といい、キャラクタ画像を表す画像データをキャラクタ画像データという。このため、有効範囲は、全てのキャラクタ画像を包含するため、有効範囲の縦横比rateFrameを以下、キャラクタ画像の有効縦横比という。
【0115】
次に、分割数算出部218aは、有効フレームの数に結果画像を分割した場合に、分割された領域(以下、分割領域という)の縦横比が最もキャラクタ画像の有効縦横比rateFrameに近くなる又は同一となる縦方向(つまり、y軸方向)の分割数Ydivと、横方向(つまり、x軸方向)の分割数Xdivとを算出する(ステップS125)。具体例としては、分割数算出部218aは、互いに乗算すると有効フレーム数となる2つの整数の組合せを特定する。次に、分割数算出部218aは、特定した組合せのそれぞれについて組合せを構成する2つの整数をXdiv及びYdivとし、以下の式(5)を用いて分割領域の縦横比rateTempを算出する。その後、分割数算出部218aは、最も分割領域の縦横比rateTがキャラクタ画像の有効縦横比rateFrameに近い又は同じXdiv及びYdivを特定する。
【0116】
分割領域の縦横比rateT=結果画像の縦横比rateAns*Ydiv/Xdiv・・・(5)
【0117】
ここで、結果画像の縦横比rateAnsが値’2.0’で、キャラクタ画像の有効縦横比rateFrameが値’1.5’で、有効フレーム数が8である場合を例に挙げて説明する。
この場合、分割数算出部218aは、互いに乗算すると8となる整数の組合せ(1,8)、(2,4)、(4,2)、及び(8,1)を、例えば、因数分解などにより特定する。次に、分割数算出部218aは、特定した整数の組合せ(1,8)を(Ydiv,Xdiv)として上記の式(5)に代入した式「2.0*1/8」を算出することで、分割領域の縦横比rateTを値’0.25’と算出する。同様に、分割数算出部218aは、特定した整数の組合せ(2,4)、(4,2)、及び(8,1)をそれぞれ(Ydiv,Xdiv)として上記の式(5)に代入すると、分割領域の縦横比rateTは、それぞれ値’1.0’、’4.0’、及び’16’となる。このため、分割数算出部218aは、キャラクタ画像の有効縦横比rateFrameの値’1.5’に最も近い縦横分割数(Ydiv,Xdiv)の組合せとして(2,4)を特定する。つまりこの構成によれば、分割領域の形状に合わせてキャラクタ画像の縦横比を変更した場合に、最も変更の程度が少ない結果画像の縦横分割数(Ydiv,Xdiv)を特定できる。その後、制御部210は、縦横分割数算出処理の実行を終了する。
【0118】
図12(a)のステップS94の後に、拡大/縮小率算出部218bは、ステップS93で選択された有効フレームの被写体領域を、ステップS94で算出された縦横分割数に基づいて補正する、図17(a)に示すような拡大/縮小率算出処理を実行する(ステップS95)。
【0119】
図17(a)の拡大/縮小率算出処理の実行を開始すると、拡大/縮小率算出部218bは、1つの有効フレームから切り抜かれる1つのキャラクタ画像を合成することができる領域(つまり、分割領域)のサイズ(以下、有効サイズという)を、y方向及びx軸方向について算出する。具体的には、拡大/縮小率算出部218bは、結果画像のx軸方向のサイズXsizeをx軸方向の分割数Xdivで除算することで、x軸方向の有効サイズXAanssizeを算出する。同様に、拡大/縮小率算出部218bは、結果画像のy方向のサイズYsizeをy方向の分割数Ydivで除算することで、y方向の有効サイズXAanssizeを算出する(ステップS131)。
【0120】
次に、拡大/縮小率算出部218bは、有効サイズXanssizeをx軸方向の分割数Xdivで除算することで、キャラクタ画像のサイズを分割領域の有効サイズに略一致させるために、x軸方向に拡大又は縮小する比率Xrateを算出する。同様に、拡大/縮小率算出部218bは、有効サイズYanssizeをy軸方向の分割数Ydivで除算することで、y軸方向に拡大又は縮小する比率Yrateを算出する(ステップS132)。
【0121】
その後、拡大/縮小率算出部218bは、算出したy軸方向の拡大/縮小比率Yrateと、x軸方向の拡大/縮小比率Xrateとの相違が、所定の閾値3よりも小さいか否かを判別する(ステップS133)。尚、所定の閾値3は、拡大/縮小比率YrateとXrateとの差異が誤差の範囲に含まれるか否かを判別するために用いられる値であり、例えば、ROM210c又は記憶部230に記憶されている。このとき、拡大/縮小率算出部218bは、拡大/縮小比率YrateとXrateとの相違が所定の閾値3以上であると判別すると(ステップS133;No)、合成時にキャラクタ画像の縦横比が所定以上歪むため、キャラクタ(つまり、被写体)の視認性が低下すると判別し、キャラクタ画像のx軸方向の最大サイズXsizemax又はy軸方向の最大サイズYsizemaxを所定値だけインクリメントさせる(ステップS134)。尚、拡大/縮小率算出部218bは、キャラクタ画像の有効縦横比rateFrameが値’1’以上であるか否かを判別することにより、キャラクタ画像が縦長(つまり、y軸方向に長い)であるか、横長であるかを判別する構成を採用できる。この構成において、拡大/縮小率算出部218bは、キャラクタ画像が横長であると判別するとYsizemaxの値をインクリメントし、キャラクタ画像が縦長(つまり、y軸方向に長い)と判別するとXsizemaxの値をインクリメントする構成を採用できる。この構成によれば、縦長/横長のキャラクタ画像が更に縦長/横長に拡大/縮小されることにより視認性が低下することを防止できる。尚、ステップS134の後に、拡大/縮小率算出部218bは、ステップS132から上記処理を繰り返す。
【0122】
ステップS133において、拡大/縮小率算出部218bは、拡大/縮小比率YrateとXrateとの相違が所定の閾値3より小さいと判別すると(ステップS133;Yes)、拡大/縮小比率YrateとXrateとで、小さい比率の方を比率rateとした後に(ステップS135)、拡大/縮小率算出処理を終了する。
【0123】
図12(a)のステップS95の後に、被写体範囲補正部218cは、図12(b)のステップS122で算出した被写体範囲の最大サイズXsizemax及びYsizemaxを用いて被写体範囲を補正する、図17(b)に示すような被写体範囲補正処理を実行する。
【0124】
先ず、被写体範囲補正処理の実行を開始すると、被写体範囲補正部218cは、処理の対象とする有効フレーム(以下、処理フレームという)の番号Frameを表す変数に対して値’1’を代入する(ステップS141)。次に、被写体範囲補正部218cは、キャラクタ画像として有効フレームから切り抜く範囲を定める被写体範囲情報のXstart、Ystart、Xsize、Ysize、Xend、及びYendを、以下の式(6)から(11)を順次計算することで補正する(ステップS142)。
【0125】
Xstart=Xstart−{(Xsizemax−Xsize)/2}・・・(6)
Ystart=Ystart−{(Ysizemax−Ysize)/2}・・・(7)
Xsize=Xsizemax・・・(8)
Ysize=Ysizemax・・・(9)
Xend=Xstart+(Xsize−1)・・・(10)
Yend=Ystart+(Ysize−1)・・・(11)
【0126】
この構成によれば、複数の被写体範囲情報で表されるそれぞれの被写体範囲の中央に被写体を表したまま、それぞれの被写体範囲の大きさを縦方向にXsizemax、横方向にYsizemaxの大きさに補正できる。
【0127】
次に、被写体範囲補正部218cは、処理フレームの番号Frameを表す変数を値’1’だけインクリメントする(ステップS143)。その後、被写体範囲補正部218cは、変数で表される処理フレームの番号Frameが有効フレームの数と等しいか否かを判別する(ステップS144)。このとき、被写体範囲補正部218cは、処理フレームの番号Frameが有効フレームの数と等しくないと判別すると(ステップS144;No)、処理フレームの番号Frameを表す変数の値を値’1’だけインクリメントした後に(ステップS145)、ステップS142から上記処理を繰り返す。これに対して、被写体範囲補正部218cは、処理フレームの番号Frameが有効フレームの数と等しいと判別すると(ステップS144;Yes)、被写体範囲補正処理の実行を終了する。
【0128】
図12(a)のステップS96の後に、合成画像生成部218dは、ステップS93で選択された有効フレームから、ステップS96で補正された被写体領域範囲を切り抜いたキャラクタ画像を合成した合成画像を生成する、図18に示すような合成画像生成処理を実行する(ステップS97)。
【0129】
図18の合成画像生成処理を開始すると、合成画像生成部218dは、処理の対象とした有効フレームの番号(以下、処理フレーム番号という)Nを表す変数に対して値’0’を代入して初期化する(ステップS151)。尚、有効フレームの番号は、撮像時刻又は保存時刻の順に各有効フレームを並べた場合の並び順をいう。次に、合成画像生成部218dは、処理フレーム番号Nの有効フレームから、ステップS96で補正された被写体範囲情報で表される被写体範囲の部分画像(以下、被写体範囲画像という)を切り抜く(ステップS152)。次に、合成画像生成部218dは、図12(a)のステップS91と同様に、背景画像の合成を行うか否かを判別する(ステップS153)。このとき、合成画像生成部218dは、背景画像の合成を行うと判別すると(ステップS153;Yes)、例えば、図8(a)のステップS52で検出したマスクデータを用いて、被写体範囲画像の背景領域に対して、図12(a)のステップS92で選択された選択背景画像を合成する(ステップS154)。具体例としては、合成画像生成部218dは、被写体範囲画像の画素それぞれに対してマスクデータの対応する値が0もしくは0付近であるか否かを判別し、マスクデータが0もしくは0付近であると判別すると、当該画素の画素値を選択背景画像の当該画素に対応した画素の画素値と置き換える。尚、合成画像生成部218dは、例えば、ROM210c又は記憶部230に記憶された所定の閾値よりもマスクデータの対応する値が小さい場合に、マスクデータの対応する値が0付近であると判別する。この構成によれば、例えば、予め定められた透過色の画素を選択背景画像の画素に置き換える場合と比べて、被写体領域にたまたま透過色と同じ色の領域がある場合であっても、当該領域の画素が背景画像の画素に置き換えられることを防止できる。また、合成画像生成部218dは、被写体範囲画像の画素それぞれに対して画素色がグレーであるか否かを判別し、画素色がグレーであると判別すると、当該画素の画素値を選択背景画像の当該画素に対応した画素の画素値と置き換えるとしてもよい。この構成によれば、被写体範囲画像の画素色がグレーなどの透過色であるか否かに基づいて選択背景画像の画素と被写体範囲画像の画素とを置き換えるため、少ない処理量かつ短い処理時間で被写体範囲画像と選択背景画像とを合成できる。
【0130】
その後、合成画像生成部218dは、図17のステップS135で決定した比率rateに従って、図17のステップS142で補正した被写体範囲画像のx軸方向のサイズと被写体範囲画像のy軸方向のサイズを拡大/縮小する。次に、合成画像生成部218dは、未だ被写体範囲画像を合成されていない結果画像の分割領域(以下、未使用の分割領域という)の内で、最も左上の分割領域に対して、拡大/縮小率された被写体範囲画像を合成する(ステップS155)。尚、合成画像生成部218dは、最も左上の分割領域から順番に被写体範囲画像を合成することに限定される訳ではなく、所定の規則に従って被写体範囲画像を未使用の分割領域に合成すれば良い。
【0131】
次に、合成画像生成部218dは、処理フレーム番号Nを表す変数の値を値’1’だけインクリメントする(ステップS156)。その後、合成画像生成部218dは、処理フレーム番号Nを表す変数の値が有効フレーム数と等しいか否かを判別する(ステップS157)。このとき、合成画像生成部218dは、処理フレーム番号Nを表す変数の値が有効フレーム数と異なると判別すると(ステップS157;No)、ステップS153から上記処理を繰り返す。これに対して、合成画像生成部218dは、処理フレーム番号Nを表す変数の値が有効フレーム数と等しいと判別すると(ステップS157;Yes)、合成画像を表す画像データを、例えば、JPEGやビットマップなどの一般的なフォーマットの電子ファイルとして記憶部230へ保存する。次に、合成画像生成部218dは、保存した合成画像のファイル名を、合成画像の生成に用いられた画像群を表すファイル名と同じファイル名又は関連したファイル名とすることで、合成画像と合成画像の生成に用いられた画像群とを関連付ける。また、動画像に基づいて合成画像を生成した場合には、合成画像生成部218dは、生成した合成画像の画像データを、合成画像の生成に用いられた動画像を表す動画ファイルのヘッダ領域に格納することで、動画像と合成画像とを関連付けても良い。
【0132】
図4(a)のステップS04の後に、図5(a)の合成画像出力制御部219は、ステップS04で生成された合成画像(つまり、結果画像)を表す画像データを、合成画像の生成に用いられた画像群(つまり、連写画像)を構成する被写体画像の画像データと関連付けて、外部装置へ出力するように外部I/F部310を制御した後に(ステップS05)、合成画像生成処理の実行を終了する。尚、合成画像出力制御部219は、生成された合成画像を表示するように表示部320を制御しても良い。
【0133】
これらの構成によれば、複数の被写体画像に表された被写体範囲の差異に基づいて被写体の動作を表す被写体画像を選択すると共に、選択された被写体画像に表された被写体を複数並べて表示する合成画像の画像データを生成する。このため、被写体の動きを表す管理が容易な画像データを生成できる。
【0134】
これらの構成によれば、被写体範囲が所定の大きさよりも大きい画像を有効画像として選択するので、所定の大きさよりも大きい被写体を並べて表示する合成画像を生成できる。よって、合成画像を視認したユーザは、被写体の動きを容易に認識できる。
【0135】
これらの構成によれば、被写体範囲の差異が大きい有効画像から順に合成画像に合成される画像として選択するので、差異の大きい被写体を並べて表示する合成画像を生成できる。よって、合成画像を視認したユーザは、被写体の動きを容易に認識できる。
【0136】
これらの構成によれば、重複画像が重複して表示させ、かつ重複画像を一様に分布するように表示する合成画像を生成するので、被写体の動作に対する視認性の低下を防止しながら、指定された数の被写体を並べて表示できる。
【0137】
これらの構成によれば、複数の被写体範囲を包含する有効範囲と同一又は相似形状の分割領域に被写体を表す部分画像を合成するため、拡大/縮小により生じる被写体の形状の歪みを防止しながらスペース効率的良く合成画像に並べて表示させることができる。
【0138】
(変形例1)
本実施形態において、図13のステップS103及びS110において、2つの被写体領域画像(つまり、有効フレーム)の被写体範囲の差異は、被写体範囲情報のXstart同士の差異、Xend同士の差異の差異、Ystart同士の差異、及びYend同士の差異といずれか1つ以上で表されるとして説明した。しかし、これに限定される訳ではなく、被写体領域画像選択部216は、被写体範囲情報Xstart、Ystart、Xend、及びYendにより算出される被写体範囲の中心座標の差異を被写体範囲の差異とする構成を採用できる。
【0139】
この構成において、図5(a)の被写体領域画像選択部216は、以下のような構成を採用できる。例えば、被写体領域画像選択部216は、図19(a)及び図19(b)に示すような同じ被写体が写し出された2枚の被写体画像の特徴点に基づいて、これら2枚の被写体画像を背景が一致するように重ねる。次に、2枚の被写体画像の一方を基準として、もう一方の被写体画像を背景が一致するように重ねるためにx軸方向にシフトさせたシフト量Xs及びy軸方向にシフトさせたシフト量Ysを算出する。その後、被写体領域画像選択部216は、シフト量Xs及びYsを、被写体情報Xstart、Ystart、XEend、及びYEendに加算することで、基準とした被写体画像(以下、基準被写体画像という)のXY座標系で表されるシフトされた被写体画像(以下、シフト被写体画像という)の被写体範囲を表す被写体範囲情報を算出する。その後、被写体領域画像選択部216は、基準被写体画像の被写体範囲情報(以下、基準被写体範囲情報という)を用いて基準被写体画像の座標系における基準被写体画像の被写体範囲の中心Cbの座標値を算出し、シフトされた被写体範囲情報(以下、シフト被写体範囲情報という)を用いて基準被写体画像の座標系におけるシフト被写体画像の被写体範囲の中心Csの座標値を算出する。次に、被写体領域画像選択部216は、それぞれ算出された中心座標の距離を被写体範囲の差異度とする。
【0140】
この構成によれば、被写体範囲の中心座標の変化を差異度とするので、例えば、被写体画像に表された被写体の大きさなどの形状の変化よりも被写体の位置の変化を表すコマ割画像(つまり、結果画像)を生成できる。このため、結果画像を視認したユーザは、被写体の位置の変化を容易に認識できる。
【0141】
(変形例2)
本実施形態において、図13のステップS103及びS110において、2つの被写体領域画像(つまり、有効フレーム)の被写体範囲の差異は、被写体範囲情報のXstart同士の差異などで表されるとして説明したが、これに限定される訳ではなく、被写体領域画像選択部216は、以下の構成を採用しても良い。先ず、被写体領域画像選択部216は、上記の変形例1のように、図20(a)及び図20(b)に表された2つの被写体画像を背景が一致するように重ねる。次に、被写体領域画像選択部216は、基準被写体範囲情報で表される被写体範囲と、シフト被写体範囲情報で表される被写体範囲とが重なる範囲(以下、重複部分という)AOの面積と、重ならない範囲(以下、非重複部分という)NAOの面積とを、基準被写体範囲情報とシフト被写体範囲情報とを用いて算出する。次に、被写体領域画像選択部216は、以下の式(12)を用いて被写体範囲の相違を表す変動量を算出する。
【0142】
差異度=非重複部分の面積の総和/(非重複部分の面積の総和+重複分の面積の総和)・・・(12)
【0143】
ここで、重複部分AOの面積及び非重複部分NAOの面積は、重複部分AOの画素数及び非重複部分NAOの画素数でそれぞれ表される。この差異度は、非重複部分NAOが多くなる程大きい値となり、非重複部分が少なくなる程小さい値となる。
この構成によれば、被写体範囲の重複部分AOの面積の総和と非重複部分NAOの面積の総和とを和算した値に対する非重複部分NAOの面積の総和の比率を差異度としているので、例えば、撮像時における被写体との距離の変化、又はズーム倍率の変化などによる、被写体画像に表された被写体の大きさの変化が大きい被写体範囲画像を並べて表示する結果画像を生成できる。このため、結果画像を視認したユーザは、被写体のサイズ変化を容易に認識できる。
【0144】
(変形例3)
本実施形態において、図13のステップS103及びS110において、2つの被写体領域画像の被写体範囲の差異は、被写体範囲情報のXstart同士の差異などで表されるとして説明したが、これに限定される訳ではなく、被写体領域画像選択部216は、被写体範囲情報のXsize同士の差異及びYsize同士の差異のいずれか1つ以上を差異度としても良い。
【0145】
(変形例4)
本実施形態において、図13のステップS103及びS110において、2つの被写体領域画像の被写体範囲の相違は、被写体範囲情報のXstart同士の差異などで表されるとして説明したが、これに限定される訳ではない。例えば、被写体領域画像選択部216は、2つの被写体領域画像の被写体範囲情報にそれぞれ基づいて、2つの被写体領域画像の被写体範囲における平均画素値の差異を算出し、算出した差異を被写体範囲の差異度としても良い。また、例えば、被写体領域画像選択部216は、2つの被写体領域画像の被写体領域画像の平均画素値の差異を算出し、算出した差異を被写体範囲の差異度としても良い。
【0146】
(変形例5)
デジタルカメラ1は、撮像部100で連写撮像された連写画像を構成する被写体画像を用いて結果画像(合成画像)を生成するとして説明した。しかし、これに限定される訳ではなく、デジタルカメラ1は、動画撮像機能を有しており、画像処理部220は、撮像部100で撮像された、例えば、動画データで表される毎秒30フレームのそれぞれを連写画像を構成する被写体画像として記憶部230に保存してもよい。また、制御部210は、動画データの1フレームを連写画像を構成する1毎の被写体画像とみなして結果画像を生成しても良い。
【0147】
(変形例6)
尚、画像処理部220は、撮像部100より受信した電気信号を、YUVフォーマットの画像データに変換し、図5(a)の被写体領域画像生成部215は、図8のステップS61に記述した相違度マップの各画素値を、以下の式(13)を用いて算出する構成を採用できる。
【0148】
D=(YC−Y)2+G×{(UC−U)2+(VC−V)2}・・・(13)
ここで、Dは相違度マップの画素値を表し、YC、UC、及びVCは被写体画像の画素値(輝度及び色差)を表し、Y、U、及びVは被写体画像の画素値に対応する位置にある背景画像の画素値(輝度及び色差)を表す。また、Gは色差U及びVのゲインを表す。
【0149】
(変形例7)
また、画像処理部220は、撮像部100より受信した電気信号を、RGBフォーマットの画像データに変換し、画像処理部220は、図8のステップS61に記述した相違度マップの各画素値を、以下の式(14)を用いて算出する構成を採用できる。
【0150】
D=(RC−R)2+(GC−G)2+(BC−B)2・・・(14)
ここで、Dは相違度マップの画素値を表し、RC、GC、及びBCは被写体画像の画素の値(赤、緑、及び青)をそれぞれ表し、R、G、及びBは被写体画像の画素値に対応する位置にある背景画像の画素値(赤、緑、及び青)を表す。
【0151】
上記で説明したデジタルカメラ1は、専用のシステムによらず、通常のコンピュータシステムを用いても実現可能である。例えば、上述の動作を実行するためのプログラムをコンピュータ読み取り可能な記録媒体に格納して配布し、該プログラムをコンピュータにインストールして、上述の処理を実行することによって装置を構成してもよい。また、インターネット等のネットワーク上のサーバ装置が備えるディスク装置に格納しておき、例えばコンピュータにダウンロード等できるようにしてもよい。また、上述の機能を、OSとアプリケーションソフトの共同より実現してもよい。この場合には、OS以外の部分のみを媒体に格納して配布してもよく、また、コンピュータにダウンロード等してもよい。
【0152】
上記のプログラムを記録する記録媒体としては、USBメモリ、フレキシブルディスク、CD、DVD、Blu−ray Disc、MO、SDカード、MS(メモリースティック)、その他、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリ、磁気テープ等のコンピュータ読取可能な記録媒体を使用することができる。また、HDD(ハードディスク)やSSD(ソリッドステートドライブ)等、通常、システム又は装置に固定して使用する記録媒体を使用することもできる。
【符号の説明】
【0153】
1・・・デジタルカメラ、100・・・撮像部、110・・・光学装置、120・・・イメージセンサ、200・・・画像処理装置、210・・・制御部(画像生成装置)、211・・・被写体画像データ取得部、212・・・背景画像データ取得部、213・・・被写体領域情報検出部、214・・・被写体範囲情報算出部、215・・・被写体領域画像生成部、216・・・被写体領域画像選択部、217・・・被写体範囲画像生成部、218・・・合成画像データ生成部、218a・・・分割数算出部、218b・・・拡大/縮小率算出部、218c・・・被写体範囲補正部、218d・・・合成画像生成部、219・・・合成画像出力制御部、220・・・画像処理部、230・・・記憶部、240・・・画像出力部、300・・・インタフェース部、310・・・外部I/F部、320・・・表示部、330・・・操作部
【技術分野】
【0001】
本発明は、撮像装置、画像生成装置、画像生成プログラム、及び画像生成方法に関する。
【背景技術】
【0002】
特許文献1には、人物又は物体などの被写体を連写して得られた複数の画像から被写体が表された部分画像をそれぞれ抽出した後に、抽出された部分画像を1枚の背景画像に対して撮像時刻に従って順次重ねて表示することで、背景を停止させながら撮像時の被写体の動作を表示する画像(いわゆる、ダイナミックフォト)を生成する技術が開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特表2008−529150号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ここで、特許文献1に係るダイナミックフォト技術では、被写体の動作を表示する画像は、1枚の背景画像と複数枚の部分画像とを特殊なファイルフォーマットを用いて表す1つの電子ファイル(以下単に、ファイルという)として管理されるか、又は背景画像を表すファイルと部分画像を表す複数のファイルとを関連付けたデータとして管理される必要がある。このため、例えば、一般的なファイルフォーマットの静止画などと比べて画像データの管理が面倒であるという問題があった。
【0005】
そこで、本発明は、このような点に鑑み、その目的とするところは、被写体の動きを表す管理が容易な画像データを生成できる撮像装置、画像生成装置、画像生成プログラム、及び画像生成方法を提供することにある。
【課題を解決するための手段】
【0006】
上記目的を達成するため、本発明の第1の観点に係る撮像装置は、
被写体を撮像することで、前記被写体を表す被写体画像を複数生成する撮像手段と、
前記被写体の背景を表す背景画像の画像データを取得する背景画像データ取得手段と、
前記複数の被写体画像それぞれの画素値と、前記背景画像の画素値とに基づいて、前記被写体が表された被写体領域を表す被写体領域情報を、前記被写体画像のそれぞれから検出する被写体領域情報検出手段と、
前記検出された複数の被写体領域情報に基づいて、前記複数の被写体画像のそれぞれから、前記被写体領域を表す被写体領域画像を生成する被写体領域画像生成手段と、
前記生成された複数の被写体領域情報のそれぞれから、前記被写体領域を包含する被写体範囲を表す被写体範囲情報を算出する被写体範囲情報算出手段と、
前記算出された複数の被写体範囲情報で表される被写体範囲の差異に基づいて、前記生成された複数の被写体領域画像から、前記被写体の動作を表す複数の被写体領域画像を選択する被写体領域画像選択手段と、
前記選択された複数の被写体領域画像を合成することで、前記被写体領域画像に表された被写体を並べて表示する合成画像の画像データを生成する合成画像データ生成手段と、を備える、
ことを特徴とする。
【0007】
第1の観点に係る撮像装置において、
前記被写体領域画像選択手段は、
前記合成される被写体領域画像の数を指定する画像数指定情報を取得し、
前記生成された被写体領域画像の数が、前記取得された指定情報で指定される指定画像数以上である場合に、前記被写体範囲情報が表す被写体範囲の大きさが所定の大きさ以下の被写体領域画像を無効画像として特定し、前記被写体範囲の大きさが所定の大きさよりも大きい被写体領域画像を有効画像として特定し、
前記有効画像と特定した被写体領域画像を、前記被写体の動作を表す被写体領域画像として選択する、
ことが望ましい。
【0008】
また、第1の観点に係る撮像装置において、
前記被写体領域画像選択手段は、前記特定した有効画像の数が前記指定画像数以上である場合に、前記検出された被写体範囲情報が表す被写体範囲の差異が大きい有効画像から順に、前記指定情報で指定された画像数だけ選択する、
ことが望ましい。
【0009】
さらに、第1の観点に係る撮像装置において、
前記被写体領域画像選択手段は、前記生成された被写体領域画像の数が前記指定画像数より少ない場合に、前記指定画像数に対して不足する数の被写体領域画像を、重複して前記合成画像に表示される被写体を表す重複画像として特定し、
前記合成画像データ生成手段は、前記特定された重複画像で表される被写体を、表示される複数の被写体に対して全体的に一様に分布するように重複表示する合成画像を生成する、
ことが望ましい。
【0010】
また、第1の観点に係る撮像装置において、
前記合成画像データ生成手段は、
前記合成画像の形状を表す合成画像形状情報を取得する形状情報取得手段と、
前記複数の被写体範囲情報に基づいて、前記選択された複数の被写体領域画像の被写体範囲を包含する有効範囲を表す有効範囲情報を算出する有効範囲算出手段と、
前記取得された合成画像形状情報と、前記取得された指定画像数情報と、前記算出された有効範囲情報とに基づいて、前記合成画像を前記有効範囲と同一又は相似の形状を有する前記指定画像数の分割領域に分割する合成画像分割手段と、
前記選択された前記指定画像数の被写体領域画像を、前記合成画像の前記分割領域のそれぞれに対して合成する画像合成手段と、を備える、
ことが望ましい。
【0011】
さらにまた、第1の観点に係る撮像装置において、
前記複数の被写体範囲情報が表す被写体範囲の相違は、前記複数の被写体範囲の画素値の相違、又は前記複数の被写体範囲に含まれる被写体領域の画素値の相違を含む、
ことが望ましい。
【0012】
また、第1の観点に係る撮像装置において、
前記複数の被写体範囲情報が表す被写体範囲の相違は、前記複数の被写体範囲情報を算出する基礎とされた被写体画像の中から選択した2つの被写体画像を前記背景が一致するように重ねた場合において、前記複数の被写体範囲が重なる部分の面積と、重ならない部分の面積との比率を含む、
ことが望ましい。
【0013】
さらにまた、第1の観点に係る撮像装置において、
前記複数の被写体範囲情報が表す被写体範囲の相違は、前記複数の被写体範囲情報を算出する基礎とされた被写体画像の中から選択した2つの被写体画像を前記背景が一致するように重ねた場合における、2つの前記被写体範囲の位置の相違を含む、
ことが望ましい。
【0014】
上記目的を達成するため、本発明の第2の観点に係る画像生成装置は、
被写体を表す被写体画像の画像データを複数取得する被写体画像データ取得手段と、
前記被写体の背景を表す背景画像の画像データを取得する背景画像データ取得手段と、
前記複数の被写体画像それぞれの画素値と、前記背景画像の画素値とに基づいて、前記被写体が表された被写体領域を表す被写体領域情報を、前記被写体画像のそれぞれから検出する被写体領域情報検出手段と、
前記検出された複数の被写体領域情報に基づいて、前記複数の被写体画像のそれぞれから、前記被写体領域を表す被写体領域画像を生成する被写体領域画像生成手段と、
前記生成された複数の被写体領域情報のそれぞれから、前記被写体領域を包含する被写体範囲を表す被写体範囲情報を算出する被写体範囲情報算出手段と、
前記算出された複数の被写体範囲情報で表される被写体範囲の差異に基づいて、前記生成された複数の被写体領域画像から、前記被写体の動作を表す複数の被写体領域画像を選択する被写体領域画像選択手段と、
前記選択された複数の被写体領域画像を合成することで、前記被写体領域画像に表された被写体を並べて表示する合成画像の画像データを生成する合成画像データ生成手段と、を備える、
ことを特徴とする。
【0015】
上記目的を達成するため、本発明の第3の観点に係る画像生成プログラムは、
コンピュータを、
被写体を表す被写体画像の画像データを複数取得する被写体画像データ取得手段、
前記被写体の背景を表す背景画像の画像データを取得する背景画像データ取得手段、
前記複数の被写体画像それぞれの画素値と前記背景画像の画素値とに基づいて、前記被写体が表された被写体領域を表す被写体領域情報を、前記被写体画像のそれぞれから検出する被写体領域情報検出手段、
前記複数の被写体領域情報に基づいて、前記複数の被写体画像のそれぞれから、前記被写体領域を表す被写体領域画像を生成する被写体領域画像生成手段、
前記複数の被写体領域情報のそれぞれから、前記被写体領域を包含する被写体範囲を表す被写体範囲情報を算出する被写体範囲情報算出手段、
前記複数の被写体範囲情報で表される被写体範囲の差異に基づいて、前記生成された複数の被写体領域画像から、前記被写体の動作を表す複数の被写体領域画像を選択する被写体領域画像選択手段、
前記選択された複数の被写体領域画像を合成することで、前記被写体領域画像に表された被写体を並べて表示する合成画像の画像データを生成する合成画像データ生成手段、として機能させる、
ことを特徴とする。
【0016】
上記目的を達成するため、本発明の第4の観点に係る画像生成方法は、
被写体を表す被写体画像の画像データを複数取得する被写体画像データ取得ステップと、
前記被写体の背景を表す背景画像の画像データを取得する背景画像データ取得ステップと、
前記複数の被写体画像それぞれの画素値と前記背景画像の画素値とに基づいて、前記被写体が表された被写体領域を表す被写体領域情報を、前記被写体画像のそれぞれから検出する被写体領域情報検出ステップと、
前記複数の被写体領域情報に基づいて、前記複数の被写体画像のそれぞれから、前記被写体領域を表す被写体領域画像を生成する被写体領域画像生成ステップと、
前記複数の被写体領域情報のそれぞれから、前記被写体領域を包含する被写体範囲を表す被写体範囲情報を算出する被写体範囲情報算出ステップと、
前記複数の被写体範囲情報で表される被写体範囲の差異に基づいて、前記生成された複数の被写体領域画像から、前記被写体の動作を表す複数の被写体領域画像を選択する被写体領域画像選択ステップと、
前記選択された複数の被写体領域画像を合成することで、前記被写体領域画像に表された被写体を並べて表示する合成画像の画像データを生成する合成画像データ生成ステップと、を有する、
ことを特徴とする。
【発明の効果】
【0017】
本発明の撮像装置、画像生成装置、画像生成プログラム、及び画像生成方法によれば、被写体の動きを表す管理が容易な画像データを生成できる。
【図面の簡単な説明】
【0018】
【図1】(a)は、本発明の実施形態に係るデジタルカメラのハードウェアの一構成例を表す図であり、(b)は、本発明の実施形態に係る画像生成装置のハードウェアの一構成例を表す図である。
【図2】(a)は、デジタルカメラが撮像する連写画像の一例を表す図であり、(b)は、デジタルカメラが撮像する背景画像の一例を表す図であり、(c)は、連写画像と背景画像とから生成された被写体領域画像の一例を表す図である。
【図3】(a)は、図15のフレームに基づいて生成された結果画像の一例を表す図であり、(b)は、図16のフレームに基づいて生成された結果画像の一例を表す図である。
【図4】(a)は、制御部が実行する合成画像生成処理の一例を表すフローチャートであり、(b)は、被写体画像データ取得部が実行する被写体画像データ取得処理の一例を表すフローチャートであり、(c)は、背景画像データ取得部が実行する背景画像データ取得処理の一例を表すフローチャートである。
【図5】(a)は、画像生成装置の有する機能の一例を表す機能ブロック図であり、(b)は、合成画像データ生成部の一構成例を表す図である。
【図6】(a)は、被写体撮像指示画面の一例を表す図であり、(b)は、背景撮像指示画面の一例を表す図である。
【図7】背景画像データ取得部が実行する背景画像生成処理の一例を表すフローチャートである。
【図8】(a)は、制御部が実行する被写体領域切抜処理の一例を表すフローチャートであり、(b)は、被写体領域情報検出部が実行する被写体領域情報検出処理の一例を表すフローチャートである。
【図9】(a)は、被写体画像の画像データの一例を表す図であり、(b)は、背景画像の画像データの一例を表す図であり、(c)は、相違マップの一例を表す図である。
【図10】(a)は、マスクデータの一例を表す図であり、(b)は、マスクデータをx軸方向及びy軸方向に投影した投影像の一例を表す図である。
【図11】被写体範囲情報算出部が実行する被写体範囲情報算出処理の一例を表すフローチャートである。
【図12】(a)は、制御部が実行する画像合成処理の一例を表すフローチャートであり、(b)は、縦横分割数算出部が実行する縦横分割数算出処理の一例を表すフローチャートである。
【図13】有効画像選択部が実行する有効画像選択処理の一例を表すフローチャートである。
【図14】連続した被写体無しフレームを1つの有効フレームとする処理の一例を説明するための図である。
【図15】被写体範囲の差異が少ない有効フレームを無効フレームとする処理の一例を説明するための図である。
【図16】重複利用フレームを選択する処理の一例と、複製利用フレームを生成する処理の一例とを説明するための図である。
【図17】(a)は、拡大/縮小率算出部が実行する拡大/縮小率算出処理の一例を表すフローチャートであり、(b)は、被写体範囲補正部が実行する被写体範囲補正処理の一例を表すフローチャートである。
【図18】合成画像生成部が実行する合成画像生成処理の一例を表すフローチャートである。
【図19】(a)は、変形例1における基準被写体画像の一例を表す図であり、(b)は、変形例1におけるシフト被写体画像の一例を表す図であり、(c)は、基準被写体画像とシフト被写体画像とを背景が一致するように重ねた画像の一例を表す図である。
【図20】(a)は、変形例2における基準被写体画像の一例を表す図であり、(b)は、変形例2におけるシフト被写体画像の一例を表す図であり、(c)は、基準被写体画像とシフト被写体画像とを背景が一致するように重ねた画像の一例を表す図である。
【発明を実施するための形態】
【0019】
本発明の実施形態に係る撮像装置は、図1(a)に示すようなデジタルカメラ1であり、本発明の実施形態に係る画像生成装置210を搭載している。デジタルカメラ1は、例えば、静止画を撮像する機能、特に、1回のシャッタ操作で一連かつ複数の静止画像を得る連写機能を有する。
【0020】
ここで、図2(a)に示すような連写機能により得られた被写体を表す一連の画像(以下、被写体画像)P1からP6で構成される画像群を、以下単に、被写体画像群又は連写画像という。本実施形態において、デジタルカメラ1は、連写画像に表された人物(つまり、被写体)を表す複数の部分画像を合成することで、図3(a)及び(b)に示すようなこれらの部分画像を並べて表示する合成画像CIa及びCIbを生成する。しかし、これに限定される訳ではなく、デジタルカメラ1は、それぞれ単写された複数の画像で構成される画像群を用いて合成画像を生成しても良いし、動画像から抽出された複数の静止画像(つまり、フレーム)で構成される画像群を用いて合成画像を生成しても良い。尚、被写体は、人物に限定される訳ではなく、例えば、航空機や自動車などの物体であっても良い。
【0021】
デジタルカメラ1は、図1(a)に示すように、撮像部100、データ処理装置200、及びインタフェース部300から構成される。
撮像部100は、デジタルカメラ1の撮像動作を行う部分であり、図1(a)に示すような光学装置110及びイメージセンサ120で構成されている。
【0022】
光学装置110は、例えば、不図示のレンズ、絞り機構、及びシャッタ機構を含み、撮像に係る光学的動作を行う。
【0023】
イメージセンサ120は、例えば、CCD(Charge Coupled Device:電荷結合素子)やCMOS(Complementally Metal Oxide Semiconductor:相補型金属酸化物半導体)などのイメージセンサから構成される。イメージセンサ120は、光学装置110によって集光された入射光に応じた電気信号を生成し、生成した電気信号をデータ処理部200に出力する。
【0024】
データ処理部200は、撮像部100によって生成されたアナログ電気信号を信号処理することで、撮像部100で撮像された画像を示すデジタルデータ(つまり、画像データ)を生成し、生成した画像に対して各種の画像処理を行う。
【0025】
データ処理部200は、制御部210、画像処理部220、記憶部230、及び画像出力部240から構成される。制御部210は、例えば、図1(b)に示すようなCPU(Central Processing Unit)210a、RAM(Random Access Memory)210b、ROM(Read Only Memory)210c、及びI/Oポート210dを備えるLSI(Large Scale Integration)で構成される。
【0026】
CPU210aは、ROM210cに保存されたプログラムに従ってソフトウェア処理を実行することで、画像生成装置210を含むデジタルカメラ1の各部を制御(つまり、全体制御)する。RAM210bは、CPU210aによるプログラムの実行時において、処理対象とする情報(データ)を一時的に記憶する。I/Oポート210dは、制御部210と接続する各部とCPU210aとの間でデータの入出力を行う。
【0027】
画像処理部220は、例えば、バッファメモリ、AD(Analog/Digital)コンバータ、及び画像処理用のプロセッサで構成される。画像処理部220のADコンバータは、イメージセンサ120から出力されたアナログ電気信号をデジタル信号に変換する。その後、画像処理部220のプロセッサは、いわゆる現像処理を行うことで、例えば、例えば、JPEG(Joint Photographic Experts Group)やビットマップなどの画像データを生成し、生成した画像データを撮像時刻と関連付けてDRAMへ保存する。尚、撮像時刻は、画像データを保存した時刻であっても、イメージセンサ120から信号を受信した時刻であっても構わない。
【0028】
記憶部230は、例えば、DRAM(Dynamic Random Access Memory)やフラッシュメモリなどの記憶装置から構成され、画像処理部220によって生成された画像データや、制御部210によって生成された画像データなどを記憶する。
【0029】
画像出力部240は、例えば、液晶表示コントローラやRGB信号の生成回路などから構成され、記憶部230に記憶された画像データをRGB信号などに変換した後に、RGB信号を後述する表示部320などに出力する。
【0030】
インタフェース部300は、デジタルカメラ1とその使用者(つまり、ユーザ)あるいは外部装置とのインタフェースに係る構成であり、外部インタフェース部310、表示部320、及び操作部330で構成される。
【0031】
外部インタフェース部310は、例えば、USB(Universal Serial Bus)コネクタやビデオ出力端子などから構成され、外部のコンピュータ装置に対する画像データの出力及び外部のモニタ装置に対する合成画像の表示出力を行う。
【0032】
表示部320は、例えば、液晶表示装置や有機EL(Electro Luminescence)ディスプレイなどから構成される。表示部320は、デジタルカメラ1を操作するために必要な種々の画面や、画像出力部240からの画像信号(RGB信号)などに基づいて合成画像等を表示する。
【0033】
操作部330は、デジタルカメラ1の外面上に構成されている各種ボタンなどによって構成され、デジタルカメラ1のユーザによる操作に応じた操作信号を生成し、生成した操作信号を制御部210に入力する。操作部330には、例えば、シャッタ動作を指示するためのシャッタボタンや、デジタルカメラ1の有する動作モードを指定するためのモードボタン、各種設定を行うための十字キーや機能ボタンなどが含まれる。尚、動作モードには、通常の撮像を行う通常撮像モード、連写撮像を行う連写撮像モード、連写撮像及び連写撮像により得た連写画像から合成画像を生成する合成画像生成モードが含まれる。
【0034】
制御部210のCPU201aは、ROM210c又は記憶部230に格納されたプログラムに従って複数の画像を合成した合成画像を生成する合成画像生成処理を実行する。ここで、合成画像生成処理の結果生成される合成画像を、以下、結果画像ともいう。結果画像は、例えば、図3(a)及び(b)に示すような、複数の被写体を表す画像を漫画のコマ割のように並べて表示することで、被写体の動作を表すコマふりダイナミックフォトを含む。このため、合成画像を生成する合成画像生成モードを、以下、コマふりダイナミックフォトモードともいう。尚、結果画像は、表示する複数の画像間にコマ割を表す割線(つまり、線分)を表示してもしなくても良い。
【0035】
ユーザがデジタルカメラ1のモードボタン等を押下げると、制御部210のCPU201aは、操作部330から出力される操作信号に基づいて、コマふりダイナミックフォトモード(つまり、合成画像生成モード)が選択されたと判別する。次に、CPU201aは、図4(a)に示すような合成画像生成処理の実行を開始することで、図5(a)に示す被写体画像データ取得部211、背景画像データ取得部212、被写体領域情報検出部213、被写体範囲情報算出部214、被写体領域画像生成部215、被写体領域画像選択部216、被写体範囲画像生成部217、合成画像データ生成部218、及び合成画像出力制御部219として機能する。尚、合成画像データ生成部218は、図5(b)に示すような分割数算出部218a、拡大/縮小率算出部218b、被写体範囲補正部218c、及び合成画像生成部218dを有する。
【0036】
図4(a)の合成画像生成処理を開始すると、図5(a)の被写体画像データ取得部211は、撮像部100を制御して被写体を撮像させることで被写体画像を取得する、図4(b)に示すような被写体画像データ取得処理を実行する(ステップS01)。
【0037】
図4(b)の被写体画像データ取得処理の実行を開始すると、被写体画像データ取得部211は、図6(a)に示すような被写体の撮像を指示するメッセージと、ライブビュー画像(つまり、シャッタボタンが押し下げられていない場合に撮像部100が所定時間間隔で撮像した画像の内、最新の画像)とで構成される被写体撮像指示画面を表示部320に表示させる(ステップS11)。また、被写体画像データ取得部211は、被写体を撮像する枚数の指定を促すメッセージを表示するように表示部320を制御する。次に、被写体画像データ取得部211は、操作部330から出力される信号に基づいて、ユーザによって指示された撮像枚数(以下、指示撮像枚数という)Mを表す撮像枚数情報を取得する(ステップS12)。
【0038】
ここで、ユーザにより操作部330のシャッタボタンが押されると、操作部330は、シャッタボタンの押下されている間、例えば100msの所定時間間隔で、押下操作に応じた操作信号を制御部210に送信し続ける。
【0039】
図4(b)のステップS12の後に、被写体画像データ取得部211は、被写体を撮像する被写体撮像制御処理を実行する(ステップS13)。具体的には、被写体画像データ取得部211は、操作部330から操作信号を受信すると、ユーザによりシャッタボタンが押下されたと判別し、被写体の撮像を開始するように図1(a)の撮像部100を制御する。また、被写体画像データ取得部211は、操作部330から操作信号を受信し続ける間、被写体の連写撮像を継続するように撮像部100を制御する。その後、被写体画像データ取得部211は、撮像回数が撮像枚数Mに達した後に、所定の時間を超えて操作部330から操作信号を受信しなくなると、シャッタボタンの押下が停止された(つまり、押上られた)と判別し、撮像を停止するように撮像部100を制御する。尚、指示された撮像枚数Mが1枚の場合には、被写体画像データ取得部211は、連写せず、通常の撮像を行うように撮像部100を制御する。
【0040】
被写体画像データ取得部211に制御された撮像部100は、連写撮像によって、図2(a)に示すような一連の画像P1からP6を生成し、生成した画像P1からP6を表す信号を画像処理部220に順次送信する。画像処理部220は、撮像部100から画像信号を受信すると、受信した信号に基づいて画像P1からP6を表すJPEGフォーマットなどの画像データに生成し、生成した画像データを記憶部230に格納(保存)する。その後、被写体画像データ取得部211は、記憶部230に格納された画像P1からP6を表す画像データを取得してから(ステップS14)、被写体画像取得処理の実行を終了する。
【0041】
図4(a)のステップS01の後に、図5(a)の背景画像データ取得部212は、被写体画像P1からP6における被写体の背景を表す背景画像の画像データを取得する、図4(c)に示すような背景画像データ取得処理を実行する(ステップS02)。
【0042】
図4(c)の背景画像データ取得処理を開始すると、背景画像データ取得部212は、記憶部230に記憶された被写体画像に基づいて背景画像を生成する、図7に示すような背景画像生成処理を実行する(ステップS21)。尚、背景画像生成処理は、以下の図7に示す処理に限定されるのではなく、例えば、特許文献である特開2010−67125公報に記載の擬似背景生成処理であっても良い。
【0043】
図7の背景生成処理の実行を開始すると、背景画像データ取得部212は、記憶部230に記憶された連写画像の中から1枚の画像を選択し、選択した画像を所定の数Bmaxの升目状ブロックに分割する(ステップS31)。尚、背景画像データ取得部212は、複数の被写体画像の内で、最初又は最後に撮像された画像を分割しても良いし、背景の生成が成功するまで連写画像の中から1枚ずつ被写体画像を選択し分割しても良い。また、背景画像データ取得部212は、分割されたブロックに対して、番号1から順にBmaxまで一意の番号を割り振る。
【0044】
次に、背景画像データ取得部212は、背景生成処理の実行対象とするブロックを識別する番号B(以下、処理ブロック番号という)を表す変数に対して値’0’を代入して初期化する。また、背景画像データ取得部212は、背景を表すブロックであると判別されたブロック(以下、有効ブロックという)の数Bokを表す変数に対して値’0’を代入して初期化する(ステップS32)。
【0045】
次に、背景画像データ取得部212は、以下の式(1)及び(2)を用いて処理ブロック番号Bのブロック(以下、処理ブロックという)の変動量を算出する(ステップS33)。尚、処理ブロックの変動量とは、例えば、標準偏差σなどのブロック内部の画素色がどの程度ばらついているか(つまり、一様でないか)を表す指数である。つまり、ブロックの変動量である標準偏差σは、ブロック内の画素が全て同一の色であれば‘0’となり、ブロック内の色が多様(つまり、ばらついており一様でない)になる程大きな値となる。
【0046】
【数1】
但し、baveは処理ブロック内の画素値の平均値を表し、Nは処理ブロック内の画素数Nを表し、nは画素番号を表し、bnは処理ブロック内の画素値を表し、σは、処理ブロック内の画素値の標準偏差である変動量を表す。
【0047】
ステップS33を実行した後に、背景画像データ取得部212は、処理ブロックの色が一様であるか否かを判別するための閾値1をROM210c又は記憶部230から読み出し、ステップS33で算出された変動量が、読み出された閾値1よりも小さいか否か判別する(ステップS34)。このとき、背景画像データ取得部212は、変動量が閾値1以上であると判別すると(ステップS34;No)、処理ブロックは主に被写体を表すと判別し、ステップS35の特徴点を検出する処理、及びステップS37の平均色を算出する処理の双方を行わずに、ステップS38の処理を実行する。
【0048】
この構成によれば、例えば、単一色の背景の前で被写体を撮像した場合には、背景は、被写体に比べて変動量が少ないので、変動量に基づいて処理ブロックが背景を表すブロックであるか被写体を表すブロックであるかを判別できる。また、処理ブロックが被写体を表すブロックであると判別すると、ステップS35及びステップS37の処理を実行しないため背景画像を生成するための計算量を削減できる。
【0049】
ステップS34において、背景画像データ取得部212は、変動量が閾値1よりも小さいと判別すると(ステップS34;Yes)、処理ブロック(つまり、処理ブロック番号Bのブロック)を特徴付ける特徴点を、例えば、ハリスのコーナー特徴量などに基づいて検出する(ステップS35)。次に、背景画像データ取得部212は、検出した特徴点の数を計数する。その後、背景画像データ取得部212は、処理ブロックが、特徴を有する画像を表すか否かを判別するための閾値2をROM210c又は記憶部230から読み出し、計数した特徴点の数が読み出した閾値2よりも少ないか否か判別する(ステップS36)。ここで、例えば、単一色の背景の前で被写体を撮像した場合には、背景は、被写体に比べてコーナー等の特徴的な点を有さないので、処理ブロックから特徴点が検出される場合には、検出された特徴点は、処理ブロックに表された背景ではなく被写体の特徴を表すと考えられる。つまり、この構成によれば、特徴点に基づいて処理ブロックが背景を表すブロックであるか被写体を表すブロックであるかを判別するため、精度良く処理ブロックが背景を表すブロックであるか否かを判別できる。
【0050】
ステップS36において、背景画像データ取得部212は、特徴点の数が閾値2よりも少ないと判別すると(ステップS36;Yes)、処理ブロック内の平均色を算出する(ステップS37)。次に、背景画像データ取得部212は、処理ブロックは背景の一部を表すと判別し、有効ブロック数Bokを表す変数値を値’1’だけインクリメントする(ステップS38)。
【0051】
ステップS34において、処理ブロックの変動量が閾値1以上であると判別された場合、ステップS36において、処理ブロックから検出された特徴点の数が閾値2以上であると判別された場合、又はステップS38を実行した後に、背景画像データ取得部212は、処理ブロック番号Bを表す変数を値‘1’だけインクリメントする(ステップS39)。
【0052】
その後、背景画像データ取得部212は、処理ブロック番号Bが分割数Bmaxと等しいか否かを判別する(ステップS40)。このとき、制御部210は、処理ブロック番号Bが分割数Bmaxと等しくないと判別すると(ステップS40;No)、ステップS33に戻り上記処理を繰り返す。これに対して、処理ブロック番号Bが分割数Bmaxと等しいと判別すると(ステップS40;Yes)、背景画像データ取得部212は、有効ブロック(つまり、背景の一部を表すと判別されたブロック)の数Bokが、背景を生成するのに必要なブロックの数(以下、必要ブロック数という)よりも多いか否かを判別する(ステップS41)。
【0053】
尚、この必要ブロック数を表すデータは、ROM210c又は記憶部230に記憶されている。また、必要ブロック数は、単一色の背景の前で被写体を撮像したか否かを判別するための閾値であり、必要ブロック数を表すデータに基づいて定められる。具体例としては、必要ブロック数を定める値は、被写体画像の総ブロック数Bmaxに対して、通常、単一色の背景の前で被写体を撮像した場合に検出される有効ブロック数の割合である。この場合、被写体画像を24ブロックに分割すると(つまり、Bmaxが24の場合)には、背景画像データ取得部212は、記憶部230から必要ブロック数を定める値’0.5’を読み出し、読み出した値’0.5’を値’24’に乗算した値’12’を必要ブロック数とする。
【0054】
ステップS41において、背景画像データ取得部212は、有効ブロックの数Bokが必要ブロック数よりも多いと判別すると(ステップS41;Yes)、有効ブロックのうちで同一色とみなされるブロックの数を、ブロック色毎に算出する(ステップS42)。具体的には、背景画像データ取得部212は、有効ブロックのそれぞれについて、ブロック内部に含まれる画素値の平均値baveの差が、例えば、誤差の範囲内とみなせる(つまり、所定値以下)のブロックを同一色ブロックとし、同一色ブロックの数を同一色ブロックの色毎にカウントする。例えば、1画素256色の画像を挙げて説明すると、256の10%を誤差範囲内とみなす場合には、平均値baveの差が25以内の有効ブロックを同一色ブロックとしてカウントする。
【0055】
ステップS42の後に、背景画像データ取得部212は、最も多い数の同一色ブロック(以下、最多同一色ブロックという)の数が、ステップS41で用いられる必要ブロック数よりも多いか否かを判別する(ステップS43)。必要ブロック数は、単一色の背景の前で被写体を撮像した場合に、通常、検出される有効ブロック数を表すためである。このとき、背景画像データ取得部212は、最多同一色ブロックが必要ブロック数よりも多いと判別すると(ステップS43;Yes)、最多同一色ブロックの平均色を被写体画像の背景色と特定する(ステップS44)。その後、背景画像データ取得部212は、特定した背景色(例えば、青一色)で塗り潰した、連写画像と同一サイズの画像を背景画像として生成する(ステップS45)。その後、背景画像データ取得部212は、その生成した画像を表す、例えば、JPEG又はビットマップなどの所定フォーマットの画像データを生成し、生成した画像データを記憶部230に格納する。その後、背景画像データ取得部212は、背景画像生成の成否を表す背景画像生成フラグをオン状態(つまり、背景画像生成成功を表す状態)としてから(ステップS46)、背景画像生成処理の実行を終了する。尚、背景画像データ取得部212は、背景画像の生成に成功した旨のメッセージを表示部320に表示させても良い。
【0056】
ステップS41において、背景画像データ取得部212は、有効ブロックの数が必要ブロック数以下であると判別した場合(ステップS41;No)、又はステップS43において、最多同一色ブロックの数が必要ブロック数以下であると判別した場合に(ステップS43;No)、背景画像の成否を表す背景画像生成フラグをオフ状態(つまり、背景画像生成失敗を表す状態)としてから(ステップS47)、背景画像生成処理の実行を終了する。尚、背景画像データ取得部212は、背景画像の生成に失敗した旨のメッセージを表示部320に表示させても良い。
【0057】
これらの構成によれば、例えば、白い壁や青い布から成るブルーバックなどの単一色の背景を背にした被写体を撮像する場合などには、一様な(つまり、変動量が少ない)画像領域の色に基づいて背景色を特定すると共に、特定した背景色で塗り潰された背景画像を生成する。このため、ユーザがデジタルカメラ1を用いて背景を撮像する必要がなくなるので、デジタルカメラ1の利便性が向上する。
【0058】
図4(c)のステップS21の後に、背景画像データ取得部212は、背景画像生成フラグに基づいて、背景画像の生成が成功したか否かを判別する(ステップS22)。このとき、背景画像データ取得部212は、背景画像の生成が成功したと判別すると(ステップS22;Yes)、背景画像データ取得処理の実行を終了する。これに対して、背景画像データ取得部212は、背景画像の生成が成功しなかったと判別すると(ステップS22;No)、背景の撮像を開始する。
【0059】
先ず、背景画像データ取得部212は、背景の撮像により取得した背景画像の枚数Nを表す変数を値’0’で初期化する(ステップS23)。次に、背景画像データ取得部212は、図6(b)に示すような背景の撮像を指示するメッセージとライブビュー画像とで構成される背景撮像指示画面を表示するように表示部320を制御する(ステップS24)。その後、背景画像データ取得部212は、位置合わせ処理を実行する(ステップS25)。具体的には、背景画像データ取得部212は、画像処理部220から出力されるライブビュー画像の画像データを記憶部230から取得し、取得した画像データで表されるライブビュー画像から特徴点を検出する。次に、背景画像データ取得部212は、図7のステップS35で検出した被写体画像の特徴点と、ライブビュー画像の特徴点とが重なるように、デジタルカメラ1を移動させる移動方向を指示するメッセージ又は画像を表示部320に表示させる。具体例としては、背景画像データ取得部212は、特徴点のテンプレートマッチングなどによりライブビュー画像の特徴点と被写体画像の特徴点とを対応させた後に、対応させた特徴点の位置の相違に基づいて、指示するべきデジタルカメラ1の移動方向を算出すれば良い。その後、ユーザがメッセージに従ってデジタルカメラ1を移動させた後に、背景画像データ取得部212は、被写体画像の特徴点と、ライブビュー画像の特徴点とが重なったか否かを判別する。背景画像データ取得部212は、被写体画像の特徴点と、ライブビュー画像の特徴点とが重なったと判別すると、シャッタボタンの押し下げ操作が可能になるように、シャッタボタンのロックを解除する。また、背景画像データ取得部212は、特徴点とが重なったと判別すると、自動で、撮像を行うように撮像部100を制御しても良い。この構成によれば、被写体画像の特徴点と、ライブビュー画像の特徴点との位置合わせを行うので、特徴点を検出された被写体画像と、新たに撮像される背景画像との双方に表された背景の特徴的な点の位置が、被写体画像と背景画像とでそれぞれ一致し易い。このため、例えば、被写体画像と、背景画像との画素値の相違に基づいて被写体が表された被写体画像上の領域(以下、被写体領域という)を検出する場合に精度良く被写体領域を検出できる。
【0060】
図4(c)のステップS25の後に、ユーザにより操作部330のシャッタボタンが押下されると、背景画像データ取得部212は、操作部330から操作信号を受信し、背景画像を撮像するように撮像部100を制御することで(ステップS26)、図2(b)に示すような背景画像を表す画像データを記憶部230から取得した後に(ステップS27)、背景画像の枚数Nを表す変数を値’1’だけインクリメントする(ステップS28)。尚、ステップS28の処理により生成された画像データで表される画像が、図2(b)に示す背景画像B1からB6である。
【0061】
その後、背景画像データ取得部212は、背景画像の枚数Nを表す変数の値が、指示撮像枚数Mと等しいか否かを判別する(ステップS29)。このとき、背景画像データ取得部212は、背景画像の枚数Nが指示撮像枚数Mに等しいと判別すると、背景画像データ取得処理の実行を終了し、これに対して、背景画像の枚数Nが指示撮像枚数Mと等しくないと判別すると、ステップS23に戻り上記処理を繰り返す。
【0062】
図4(a)のステップS02の後に、制御部210は、被写体が表された被写体領域を被写体画像から切り抜く(つまり、抽出する)、図8(a)に示すような被写体領域切抜処理を実行する(ステップS03)。
【0063】
図8(a)の被写体領域切抜処理の実行を開始すると、制御部210は、被写体領域切抜処理の処理対象とする被写体画像の番号(以下、処理画像番号という)Nを表す変数の値を’1’として初期化する(ステップS51)。尚、記憶部230に記憶された連写画像を構成する被写体画像は、撮像時刻(又は、保存時刻)順に、番号’1’から’M’が割り振られている。ステップS51の後に、図5(a)に示す制御部210の被写体領域情報検出部213は、処理画像番号Nの被写体画像(以下、処理画像という)から、被写体領域を表す被写体領域情報を検出する、図8(b)に示すような被写体領域情報検出処理を実行する(ステップS52)。
【0064】
図8(b)の被写体領域情報検出処理の実行を開始すると、被写体領域情報検出部213は、図9(a)に示すような被写体画像の各画素値と、図9(b)に示すような背景画像の対応する位置の各画素値との相違度(つまり、差異)を表す差分画素値をそれぞれ算出し、算出した差分画素値を各画素値の位置に対応する2次元配列データの要素にそれぞれ格納することで、図9(c)に示すような相違度マップを生成する(ステップS61)。
【0065】
例えば、被写体画像及び背景画像が図9(a)及び図9(b)に示すような1画素256色のビットマップデータであるので、被写体領域情報検出部213は、それら画像の対応する画素値の差異を絶対値で求め、図9(c)に示すような相違度マップを生成する。具体的には、図9(a)の画素a及び図9(b)の画素aのように、2枚の画像の対応する画素値がそれぞれ‘19’と‘21’である場合には、被写体領域情報検出部213は、それらの画素値の差の絶対値‘2’を、図9(c)の相違度マップの画素aに記録する。同様に、被写体領域情報検出部213は、図9(a)の被写体画像の画素bと図9(b)の被写体画像の画素bと差の絶対値‘209’を、図9(c)に示す相違度マップの画素bに記録する。
【0066】
次に、被写体領域情報検出部213は、ステップS61で生成した相違度マップを、例えば、被写体領域を表す値を‘255’、背景領域を表す値を‘0’として二値化することで、被写体領域を表す被写体領域情報(以下、マスクデータという)を生成する(ステップS62)。具体的には、被写体領域情報検出部213は、ROM210c又は記憶部230に予め記憶された被写体検出用の一定閾値を読み出し、相違度マップの画素値が読み出した一定閾値以上の場合は‘255’、一定閾値より小さい場合は‘0’として、相違度マップの画素値を置換する。
【0067】
ステップS62の後に、被写体領域情報検出部213は、ステップS62の相違度マップを二値化する処理(つまり、マスクデータを生成する処理)が成功したか否かを判別する(ステップS63)。具体例としては、被写体領域情報検出部213は、生成されたマスクデータにおける値’0’が連続した領域(つまり、背景画像と相違がない領域)の面積が所定の面積よりも小さい場合に、二値化処理を失敗したと判別する。これに対して、被写体領域情報検出部213は、所定の面積以上である場合に、二値化処理を成功したと判断する。通常、被写体画像には、背景が所定面積以上含まれるので、被写体画像において背景画像と相違が一定閾値より少ない部分の面積が所定面積より小さい場合には、相違度マップを二値化する処理に失敗した可能性が高いためである。尚、二値化処理の成否を判別するための所定面積を表すデータは、ROM210c又は記憶部230に記憶されている。
【0068】
ステップS63において、被写体領域情報検出部213は、二値化処理に成功したと判別した場合に(ステップS63;Yes)、マスクデータのノイズを除去する処理を実行する(ステップS64)。具体的には、被写体領域情報検出部213は、生成したマスクデータに対して縮小処理を行った後に、縮小前の(つまり、元の)大きさに戻す拡大(膨張)処理を行う(ステップS65)。この構成によれば、背景画像と被写体画像との位置合わせにおいて生じる誤差により被写体領域の周辺に生じる、例えば、線分状の領域や、被写体画像又は背景画像の撮像時に生じたノイズを除去できるため、精度良く被写体領域を表すマスクデータを生成できる。
【0069】
被写体領域情報検出部213は、ステップS64でノイズを除去されたマスクデータに対して、さらに平均化フィルタをかけることで、被写体を表すビット値’255’で表される被写体領域の周辺部に階調をつける(ステップS65)。つまり、平均化フィルタには被写体領域の輪郭をぼかす機能があるため、マスクデータに平均化フィルタをかけることで、図10(a)に示すようなマスクデータにおいて、被写体領域の輪郭部を表す画素値が、例えば、背景領域から被写体領域に向かって順に値’0’、’30’、’100’、’255’といった具合に段階的に変化する値となる。
【0070】
これらの構成によれば、例えば、マスクデータを構成する画素値を、画素値の最大値’255’で除算した値に対して、マスクデータの画素に対応する被写体画像の画素値を積算した値を、被写体領域を表す画素の画素値とすることで(つまり、被写体領域の画素値=被写体画像の対応画素値×マスクデータの対応画素値/255)、被写体画像から被写体領域を表す被写体領域画像を生成する場合に、例えば、被写体領域とそうでない領域(つまり、背景領域)との境界にエッジが少なく、被写体領域画像を視認するユーザに対して自然な印象を与える被写体領域画像を生成できる。
【0071】
図8(b)のステップS65の後に、被写体領域情報検出部213は、被写体領域の検出成否を表す被写体領域フラグをオン状態(つまり、被写体領域検出成功を表す状態)としてから(ステップS66)、被写体領域検出処理の実行を終了する。尚、被写体領域情報検出部213は、被写体領域の検出に成功した旨のメッセージを表示部320に表示させても良い。
【0072】
ステップS63において、被写体領域情報検出部213は、二値化処理に失敗したと判別した場合に、被写体領域フラグをオフ状態(つまり、被写体領域検出失敗を表す状態)としてから(ステップS67)、被写体領域情報検出処理の実行を終了する。尚、被写体領域情報検出部213は、被写体領域の検出に失敗した旨のメッセージを表示部320に表示させても良い。
【0073】
図8(a)のステップS52の後に、被写体領域情報検出部213は、被写体領域の検出に成功したか否かを判別する(ステップS53)。このとき、被写体領域情報検出部213が被写体領域の検出に成功したと判別すると(ステップS53;Yes)、被写体範囲算出部214は、変数で表される処理画像番号Nの被写体画像(つまり、処理画像)の被写体範囲を表す被写体範囲情報を算出する、図11に示すような被写体範囲情報算出処理を実行する(ステップS54)。
【0074】
ここで、被写体範囲とは、被写体からの最短距離が所定値以下の枠線によって囲まれた所定形状の領域であって、内部に被写体が表された(つまり、内側に被写体画像を含む)領域をいう。本実施形態において、所定形状は、図10(b)に示すような矩形の領域であるとして説明するが、これに限定される訳ではなく、例えば、円形状、三角形状、その他の多角形状を含む。この構成によれば、被写体範囲の形状が四角形なので、被写体範囲の左上端の位置を表す情報と右下端の位置を表す情報といった合計2つの情報、又は左下端の位置を表す情報と右上端の位置を表す情報といった合計2つの情報で被写体範囲を表すことができるので、被写体範囲情報の情報量が少ない。
【0075】
図11の被写体範囲算出処理を開始すると、図5(a)の被写体範囲算出部214は、図10(a)及び図10(b)に示すように、被写体画像の主走査方向をx軸とし、副走査方向をy軸とし、被写体画像に向かって左上の被写体画像の頂点を原点とするxy座標系を画定する。次に、被写体範囲算出部214は、y軸方向における被写体範囲を算出するために、後述するステップS71からS80の処理を実行する。
【0076】
先ず、被写体範囲算出部214は、y座標を表す変数yを値’0’で初期化する(ステップS71)。被写体領域が存在するか否かの調査を開始する調査開始座標を最上行(つまり、最も原点に近い行)の座標とするためである。次に、被写体範囲算出部214は、以下の式(3)で表される条件Yが成立するか否か判別する(ステップS72)。
【0077】
【数2】
但し、関数M(x,y)は、xy座標値が(x,y)である画素のマスクデータにおける画素値を表す。また、Xmaxは、x軸方向(つまり、横方向)における被写体画像のサイズ(画素数)を表す。
【0078】
つまり、条件Yは、マスクデータを構成する画素の内で、y座標値がyである全画素(つまり、主走査方向に1行に並んだ全画素)の画素値の総和を算出した結果が値’0’より大きいという条件である。ここで、マスクデータは、被写体画像において背景を表す画素に対応する画素の値が’0’であり、被写体を表す画素に対応する画素の値が’255’などであるデータである。このため、図10(b)に示すように、それぞれのy座標値について、同じy座標値で表される被写体を表す画素の数を算出した場合に(いわゆる、被写体を横方向に投影した場合に)、算出された画素数が1以上となる(つまり、投影された被写体が存在する)y座標値については、条件Yが成立する。画素値M(x,y)をx軸方向に総和した値が’0’より大きい値となるからである。これに対して、算出された画素数が‘0’となる(つまり、投影された被写体が存在しない)y座標値については、画素値M(x,y)をx軸方向に総和した値は値’0’となり、条件Yが成立しない。
【0079】
このため、ステップS72において、被写体範囲算出部214は、現在のy座標値では、条件Yが成立しないと判別すると(ステップS72;No)、y座標値を表す変数の値を値‘1’だけインクリメントする(ステップS73)。その後、被写体範囲算出部214は、インクリメントされた変数で表されるy座標値が、被写体画像のy軸方向の総画素数(つまり、サイズ)Ymaxと等しいか否かを判別する(ステップS74)。被写体範囲算出部214は、変数で表されるy座標値がYmaxと等しくないと判別すると(ステップS74;No)、上記ステップS72に戻り上記処理を繰り返す。これに対して、被写体範囲算出部214は、変数で表されるy座標値がYmaxと等しいと判別すると(ステップS74;Yes)、被写体範囲における最も原点に近い点の座標値(Xstart,Ystart)、最も原点から遠い点の座標値(Xend,Yend)、被写体範囲のx軸方向のサイズXsize及び被写体範囲のy軸方向のサイズYsizeを表す変数をそれぞれ値‘0’する(ステップS75)。被写体範囲が算出されなかったことを表すためである。
【0080】
ステップS72において、被写体範囲算出部214は、現在のy座標値で、条件Yが成立したと判別すると(ステップS72;Yes)、被写体範囲における最も原点に近い点の座標値Ystartを表す変数に、変数yが表すy座標値を代入する(ステップS76)。
【0081】
次に、被写体範囲算出部214は、y座標を表す変数yに対して被写体画像のy軸方向のサイズYmaxから1減算した値Ymax−1を代入する(ステップS77)。調査開始座標を最下行(つまり、最も原点から遠い行)の座標とするためである。次に、被写体範囲算出部214は、上記の式(3)で表される条件Yが成立するか否か判別する(ステップS78)。このとき、被写体範囲算出部214は、現在のy座標値では条件Yが成立しないと判別すると(ステップS78;No)、y座標値を表す変数の値を値‘1’だけデクリインクリメントする(ステップS79)。その後、被写体範囲算出部214は、上記ステップS78に戻り上記処理を繰り返す。尚、ステップS72において、被写体画像には被写体領域が存在すると判別しているので(ステップS72;Yes)、被写体範囲算出部214は、ステップS74のような終了条件を判別する必要がない。これに対して、被写体範囲算出部214は、条件Yが成立したと判別すると(ステップS78;Yes)、被写体範囲における最も原点から遠い点の座標値Yendを表す変数に現在のy座標値を代入する(ステップS80)。
【0082】
次に、被写体範囲算出部214は、x軸方向における被写体範囲を算出するために、後述するステップS81からS89の処理を実行する。
先ず、制御部210は、x座標を表す変数xを値’0’で初期化する(ステップS81)。調査開始座標をマスクデータに向かって最左列(つまり、最も原点に近い列)の座標とするためである。次に、被写体範囲算出部214は、以下の式(4)で表される条件Xが成立するか否か判別する(ステップS82)。
【0083】
【数3】
但し、関数M(x,y)は、xy座標値が(x,y)である画素のマスクデータにおける画素値を表す。また、Ymaxは、y軸方向(副走査方向)における被写体画像のサイズ(画素数)を表す。
【0084】
つまり、条件Xは、マスクデータを構成する画素の内で、x座標値がxである全画素(つまり、縦方向に1列に並んだ全画素)の画素値の総和を算出した結果が値’0’より大きいという条件である。
このため、ステップS82において、被写体範囲算出部214は、現在のx座標値では、条件Xが成立しないと判別すると(ステップS82;No)、x座標値を表す変数xの値を値‘1’だけインクリメントした後に(ステップS83)上記ステップS82に戻り上記処理を繰り返す。これに対して、被写体範囲算出部214は、条件Xが成立したと判別すると(ステップS82;Yes)、被写体範囲における最も原点に近い点の座標値Xstartを表す変数に現在のx座標値を代入する(ステップS84)。
【0085】
次に、被写体範囲算出部214は、x座標を表す変数に対して被写体画像のx軸方向のサイズXmaxから1減算した値Xmax−1を代入する(ステップS85)。調査開始座標をマスクデータに向かって最右列(つまり、最も原点から遠い列)の座標とするためである。次に、被写体範囲算出部214は、上記の式(4)で表される条件Xが成立するか否か判別する(ステップS86)。このとき、被写体範囲算出部214は、現在のx座標値では、条件Xが成立しないと判別すると(ステップS86;No)、x座標値を表す変数の値を値‘1’だけデクリインクリメントする(ステップS87)。その後、被写体範囲算出部214は、上記ステップS86に戻り上記処理を繰り返す。これに対して、被写体範囲算出部214は、条件Xが成立したと判別すると(ステップS86;Yes)、被写体範囲における最も原点から遠い点の座標値Xendを表す変数に現在のx座標値を代入する(ステップS88)。
【0086】
次に、被写体範囲算出部214は、ステップS80で決定したYendからステップS76で決定したYstartを減算した後に値‘1’を加算することで、被写体範囲のy軸方向のサイズYsizeを算出し、ステップS88で決定したXendからステップS84で決定したXstartを減算した後に値‘1’を加算することで、被写体範囲のx軸方向のサイズXsizeを算出する(ステップS89)。その後、制御部210は、被写体範囲を表す座標値(Xstart,Ystart)及び(Xend,Yend)、並びに被写体範囲のサイズを表すXsize及びYsizeを被写体範囲情報とした後に、被写体範囲情報算出処理の実行を終了する。
【0087】
図8(a)のステップS54の後に、図5(a)の被写体領域画像生成部215は、ステップS52で検出したマスクデータ(つまり、被写体領域情報)を用いて、処理画像番号Nの被写体画像(つまり、処理画像)に対してマスク処理を施す。この処理により、被写体領域画像生成部215は、処理画像と同じサイズ又は略同一サイズの被写体領域画像(以下、被写体領域フレームという)を生成する(ステップS55)。尚、ステップS55の処理により生成されたフレームが、図2(c)に示す被写体領域フレームF1からF6である。
【0088】
ステップS55の後に、被写体領域画像生成部215は、被写体領域フレームの背景領域(つまり、被写体領域以外の領域)を、例えば、グレーなどの所定色で塗り潰す(ステップS56)。この構成によれば、被写体領域に表された被写体の視認性が向上するだけでなく、例えば、所定色を透過色とすることで、被写体領域を任意の背景画像に対して容易かつ少ない計算量で合成できる。
【0089】
ステップS53において、被写体領域画像生成部215は、被写体領域の検出に失敗したと判別した場合、又はステップS56を実行した後に、処理画像番号Nを表す変数を値‘1’だけインクリメントする(ステップS57)。次に、被写体領域画像生成部215は、処理画像番号N(つまり、処理された画像数)が指定撮像枚数Mと等しいか否かを判別する(ステップS58)。このとき、被写体領域画像生成部215は、処理画像番号Nが撮像枚数Mと等しくないと判別すると(ステップS58;No)、ステップS52に戻り上記処理を繰り返す。これに対して、処理画像番号Nが指定撮像枚数Mと等しいと判別すると(ステップS58;Yes)、被写体領域画像生成部215は、ステップS52で生成されたマスクデータと、ステップS54で算出された被写体範囲情報と、ステップS56で生成された被写体領域画像(つまり、被写体領域フレーム)を表す画像データとを、記憶部230へ保存する(ステップS59)。その後、被写体領域画像生成部215は、被写体領域切抜処理の実行を終了する。
【0090】
図4(a)のステップS03の後に、図5(a)の制御部210は、ステップS03で被写体領域を表す部分画像を切り抜くことで生成された被写体領域画像(つまり、被写体領域フレーム)を合成する、図12(a)に示すような画像合成処理を実行する(ステップS04)。
【0091】
図12(a)の画像合成処理を開始すると、図5(a)の被写体領域画像生成部215は、例えば、ユーザの操作に応じて操作部330が送信する操作信号に基づいて、被写体領域フレームに対して任意の背景画像を合成するか否かを判別する(ステップS91)。このとき、被写体領域画像生成部215は、被写体領域フレームに対して任意の背景画像を合成すると判別すると、例えば、記憶部230に記憶された画像の縮小画像(例えば、サムネイル)を生成し、生成した縮小画像を表示部320に一覧表示させる。その後、被写体領域画像生成部215は、例えば、ユーザに操作された操作部330から受信する信号に基づいて、ユーザが背景として選択した選択背景画像を特定し、特定した画像の画像データを記憶部230から取得する(ステップS92)。尚、選択背景画像として選択される画像は、例えば、ユーザによって任意に撮像された画像であっても、外部I/F部310を介して外部装置からダウンロードされた画像であっても良い。
【0092】
ステップS91において、被写体領域画像生成部215が背景画像を合成しないと判別した場合(ステップS91;No)、又はステップS92を実行した後に、図5(a)の被写体領域画像選択部216は、結果画像の生成に使用される被写体領域フレーム(以下、有効画像又は有効フレームという)と、結果画像の生成に使用されない被写体領域フレーム(以下、無効画像又は無効フレームという)とを選択する、図13に示すような有効画像選択処理を実行する(ステップS93)。
【0093】
図13の有効画像選択処理の実行を開始すると、被写体領域画像選択部216は、例えば、結果画像におけるコマ割分割数(つまり、合成される被写体領域画像の数)の指定を行うか否かを問うメッセージと、指定の有無を表す操作を行うように促すメッセージとを表示部320に表示させる。次に、制御部210は、例えば、操作部330から受信する信号に基づいて、分割数の指定があるか否かを判別する(ステップS101)。
【0094】
ステップS101において、被写体領域画像選択部216は、分割数の指定が無いと判別した場合には(ステップS101;No)、有効画像選択処理に利用される被写体領域フレーム(以下、利用フレームともいう)の内で、図11のステップS75又はS89で算出した被写体範囲のx軸方向(縦方向)のサイズXsize又はy軸方向(横方向)のサイズYsizeのいずれかが所定値よりも小さい利用フレームを被写体無しフレームとする。尚、所定値は、値‘0’であっても良い。
【0095】
次に、制御部210は、各利用フレームの基礎となった(つまり、各フレームが切り出された)被写体画像の撮像時刻又は保存時刻の順に各利用フレームを並べた場合、並び順が連続した複数の被写体無しフレームを1つの有効フレーム(つまり、有効画像)とし、有効フレームとしなかった被写体無しフレームを無効フレーム(つまり、無効画像)とする(ステップS102)。
【0096】
具体例としては、図14に示すように、番号順に並んだ利用フレームFU1からFU6の内で、利用フレームFU2とFU3とが、被写体を表さない被写体無しフレームである場合には、被写体領域画像選択部216は、利用フレームFU2とFU3とを1つの有効フレームFV2とし(つまり、利用フレームFU2のみを有効フレームFV2とする)、残りの利用フレームFU1及びFU4からFU6を有効フレームFV1及びFV4からFV6とする。これは、被写体が表されていない被写体無しフレームを何枚並べて表示しても被写体の動作を表すことができないめである。また、被写体が写されていないことを表すためには、被写体無しフレームを1つ表示すれば十分であるためである。尚、複数の被写体無しフレームを1つの有効フレームとすることに限定されるのではなく、被写体無しフレームの連続枚数よりも少ない枚数の被写体無しフレームを有効フレームとすれば良い。
【0097】
次に、被写体領域画像選択部216は、並び順が連続した2枚の有効フレームの組を決定し、決定した組を構成する有効フレームの間の被写体範囲の差異の程度を表す指標の差異度をそれぞれ算出する。次に、被写体領域画像選択部216は、被写体範囲の差異度が所定閾値よりも少ない組を特定し、特定された組の有効フレームの内で、並び順が早い方の有効フレーム及び遅い方の有効フレームのいずれか一つ以上を、有効フレームから除外した(つまり、無効フレームとした)後に(ステップS103)、有効画像選択処理の実行を終了する。
【0098】
具体例としては、被写体領域画像選択部216は、図15に示すように、番号順に並んだ利用フレームFV1とFV2との組、利用フレームFV2とFV4との組、利用フレームFV4とFV5との組、利用フレームFV5とFV6との組を決定した後に、それぞれの組における被写体範囲の差異度12、差異度24、差異度45、及び差異度56を算出する。ここで、差異度45が所定閾値よりも小さい場合に、被写体領域画像選択部216は、有効フレームFV4を無効フレームとし、残りの有効フレームFV1、FV2、FV5、及びFV6を有効フレームのまま維持する。これは、通常、異なる動作状態の被写体を表す2枚の被写体画像においては、被写体範囲が相違する。このため、2枚の被写体画像における被写体範囲の差異が小さくなる程、2枚の被写体画像によって被写体の動作を十分に表すことができなくなるためである。このため、有効フレームFV1、FV2、FV5、及びFV6から生成された結果画像は、図3(a)に示すような結果画像CIaとなり、結果画像CIaは、被写体の動作を少ない画像数で十分に表すことができる。
【0099】
具体的には、被写体領域画像選択部216は、有効フレーム間の被写体範囲の差異を表す差異度は、被写体範囲情報のXstart同士の差異、Xend同士の差異の差異、Ystart同士の差異、及びYend同士の差異といずれか1つ以上で表される。尚、被写体範囲の位置の差は、被写体範囲情報のXstart同士の差異、Xend同士の差異の差異、Ystart同士の差異、及びYend同士の差異といずれか1つ以上の和で表されても良い。また、差異度は、Xstart同士の差異とYstart同士の差異との二乗和により算出された座標値(Xstart,Ystart)で表される点同士の距離、Xend同士の差異とYend同士の差異との二乗和により算出された座標値(Xend,Yend)で表される点同士の距離、及びこれら距離の和のいずれかで表されても良い。尚、被写体範囲の差異度を判別するための所定閾値は、ROM210c又は記憶部230に予め記憶されている。
【0100】
この構成によれば、差異度は、被写体範囲情報のXstart同士の差異、Xend同士の差異の差異、Ystart同士の差異、及びYend同士の差異といずれか1つ以上で表されるので、例えば、複数の被写体画像において同じ位置に写された被写体であっても、複数の被写体画像において被写体の大きさなどの形状が異なる被写体を表す被写体画像の差異度が大きくなる。このため、差異度が所定閾値よりも大きい複数の有効フレームは、被写体の大きさなどの形状が大きく異なる被写体を表すので、ユーザは、複数の有効フレームを視認すると、被写体の大きさなどの形状の変化を容易に認識できる。
【0101】
またこの構成によれば、例えば、複数の被写体画像において複数の被写体画像において被写体の大きさなどの形状が同じであっても、複数の被写体画像において異なる位置に被写体が写されていれば、差異度が大きくなる。このため、差異度が所定閾値よりも大きい複数の有効フレームは、被写体の位置が多く異なるので、ユーザは、複数の有効フレームを視認すると、被写体の位置の変化を容易に認識できる。
【0102】
図13のステップS101において、分割数の指定があると判別した場合には(ステップS101;Yes)、被写体領域画像選択部216は、結果画像に合成される被写体領域画像(つまり、被写体領域フレーム)の数(以下、指定画像数という)を指定する画像数指定情報を操作部330から受信し、受信した指定画像数を結果画像の分割数(以下、指定分割数という)とする(ステップS104)。次に、被写体領域画像選択部216は、利用フレームの数が指定分割数に等しいか否かを判別する(ステップS105)。このとき、被写体領域画像選択部216は、利用フレームの数が指定分割数に等しいと判別すると(ステップS105;Yes)、利用フレームの全てを有効フレームとした後に、有効画像選択処理の実行を終了する。これに対して、制御部210は、利用フレームの数が指定分割数に等しくないと判別すると(ステップS105;No)、利用フレームの数が指定分割数よりも多いか否かを判別する(ステップS106)。このとき、被写体領域画像選択部216は、利用フレームの数が指定分割数よりも多いと判別すると(ステップS106;Yes)、ステップS102と同様の処理を実行する(ステップS107)。
【0103】
その後、被写体領域画像選択部216は、有効フレームの数が指定分割数に等しいか否かを判別する(ステップS108)。このとき、被写体領域画像選択部216は、有効フレームの数が指定分割数に等しいと判別すると(ステップS108;Yes)、有効画像選択処理の実行を終了する。これに対して、被写体領域画像選択部216は、有効フレームの数が指定分割数に等しくないと判別すると(ステップS108;No)、有効フレームの数が指定分割数よりも多いか否かを判別する(ステップS109)。このとき、被写体領域画像選択部216は、有効フレームの数が指定分割数よりも多いと判別すると(ステップS109;Yes)、並び順が連続した2枚の有効フレームの組を決定し、決定した組を構成する有効フレーム間の被写体範囲の差異度が少ない組の並び順が早い方又は遅い方の有効フレームから順に有効フレームから除外する(つまり、無効フレームとする)。この処理によって、被写体領域画像選択部216は、有効フレームの枚数を指定分割数と等しくした後に(ステップS110)、有効画像選択処理の実行を終了する。尚、有効フレーム間の被写体範囲の差異度は、ステップS103と同様に算出されるため再度の説明を省略する。
【0104】
ステップS106において、利用フレーム数が指定分割数よりも少ないと判別した場合(ステップS106;No)、又はステップS109において、有効フレーム数が指定分割数よりも少ないと判別した場合には(ステップS109;No)、被写体領域画像選択部216は、指定分割数と比べて不足している有効フレーム数を不足フレーム数として算出する。次に、被写体領域画像選択部216は、不足フレーム数の有効フレームを、重複して表示される重複画像(以下、重複利用フレームという)とする。ここで、被写体領域画像選択部216は、被写体画像の撮像時刻又は保存時刻の順に各利用フレームを並べた場合に、並べられた各利用フレームにおいて重複利用フレームが一様かつ全体に分布するように、重複利用フレームを特定する(ステップS111)。その後、被写体領域画像選択部216は、特定された重複利用フレームを複製することで、複製利用フレームを生成し、生成した複製利用フレームを有効フレームとした後に、複製利用フレームを重複利用フレームの直後の位置に追加してから有効画像選択処理の実行を終了する。
【0105】
具体例としては、被写体領域画像選択部216は、先ず、指定分割数から利用フレーム数/有効フレーム数を減算することで、不足フレーム数を算出する。次に、被写体領域画像選択部216は、不足フレーム数が利用フレーム数/有効フレーム数以上か否かを判別する。ここで、不足フレーム数が利用フレーム数/有効フレーム数以上の場合には、全ての有効フレームを重複利用フレームとする。これに対して、不足フレーム数が利用フレーム数/有効フレーム数よりも少ない場合には、被写体領域画像選択部216は、不足フレーム数の利用フレーム/有効フレームを重複利用フレームとすると判別する。次に、被写体領域画像選択部216は、利用フレーム数/有効フレーム数を不足フレーム数で除算した商を算出し、算出した商の値の枚数毎に、並べられた各利用フレームから重複利用フレームを特定する。
【0106】
次に、被写体領域画像選択部216は、不足フレーム数を重複利用フレーム数で除算した商と余りとを算出する。次に、被写体領域画像選択部216は、余りの数の重複利用フレームに対して商の数に1を加算した数(つまり、商+1)の複製フレームを生成すると決定し、それ以外の重複利用フレームに対して商の数だけ複製フレームを生成すると決定する。
【0107】
ここで、指定分割数が8枚で、有効フレーム数が3枚の場合を例に挙げて説明すると、被写体領域画像選択部216は、不足枚数を5と算出し、不足枚数5枚が有効フレーム数3枚よりも多いと判別する。このため、被写体領域画像選択部216は、有効フレームの全てを重複利用フレームとする必要があると判別する。次に、被写体領域画像選択部216は、不足フレーム数5を有効フレーム数3で除算した商1と余り2とを算出する。その後、被写体領域画像選択部216は、2枚の数の重複利用フレームに対して2枚(商1+値1)の複製利用フレームを生成し、当該重複利用フレームの直後の順番に追加し、それ以外の(つまり、残り1枚の)重複利用フレームに対して1枚(商1)の複製利用フレームを生成し、当該重複利用フレームの直後の順番にそれぞれ追加する。
【0108】
次に、図16に示すような5枚の有効フレームFV1、FV2、及びFV4からFV6に対して、8枚の指定分割数が指定された場合を例に挙げて説明すると、被写体領域画像選択部216は、不足枚数を3枚と算出し、不足枚数3枚が有効フレーム数5枚よりも少ないと判別する。このため、被写体領域画像選択部216は、有効フレーム数5枚を不足枚数3枚で除算した商1を算出する。次に、被写体領域画像選択部216は、有効フレームFV1、FV4、及びFV6を(つまり、並べられた有効フレームを1枚毎に)重複利用フレームと特定する。つまり、それぞれ最初、3番目、及び5番目の有効フレームを重複利用フレームと決定する。その後、被写体領域画像選択部216は、特定した重複利用フレームのそれぞれに対して1枚の複製利用フレームFV1−2、FV4−2、及びFV6−2を生成し、生成したそれぞれの複製利用フレームを、重複利用フレームFV1、FV4、及びFV6の直後に追加する。このため、フレームFV1、FV1−2、FV2、FV4、FV4−2、FV5、FV6、及びFV6−2から生成された結果画像は、図3(b)に示すような結果画像CIbとなり、結果画像CIbは、重複して表示される画像の数が全体的に均一であるため、被写体の動作に対する視認性の低下を防止できる。
【0109】
尚、被写体領域画像選択部216は、被写体範囲の差異度が大きい2つの利用フレーム/有効フレームの組を不足フレーム数だけ選択し、選択した組のそれぞれについて、選択した組の利用フレーム/有効フレームの1つを重複利用フレームと特定し、特定した重複利用フレームの複製利用フレームを当該重複利用フレームの直後に追加しても良い。この構成によれば、差異の大きいフレームの後に複製利用フレームが追加されるため、差異の小さいフレームの後に複製利用フレームが追加される場合よりも、フレームを番号順に並べた場合における被写体の動作に対する視認性が低下することを防止できる。
【0110】
また、被写体領域画像選択部216は、被写体範囲の差異度が最も大きい2つの利用フレーム/有効フレームの組を特定し、特定した組の利用フレーム/有効フレームの1つを重複利用フレームと特定し、特定した重複利用フレームの複製利用フレームを当該重複利用フレームの直後に追加した後に、これらの処理を有効フレーム数が不足している間繰り返しても良い。
【0111】
図12(a)のステップS93の後に、図5(b)合成画像データ生成部218が有する分割数算出部218aは、結果画像をコマ割りする縦横数(以下、縦横分割数という)を算出する、図12(b)に示すような縦横分割数算出処理を実行する(ステップS94)。
【0112】
図12(b)の縦横分割数算出処理の実行を開始すると、分割数算出部218aは、先ず、ROM210cに記憶された結果画像(合成画像)の形状を表す合成画像形状情報を取得する。尚、分割数算出部218aは、結果画像の形状を指定するように促すメッセージを表示部320に表示させた後に、ユーザの操作に応じた操作信号を操作部330から受信し、受信した信号に基づいてユーザに指定された結果画像の形状を特定しても良い。分割数算出部218aは、取得した合成画像形状情報で表される結果画像の形状の内で、結果画像のx軸方向のサイズXansと、y方向のサイズYansとを取得する(ステップS121)。次に、分割数算出部218aは、図12(a)のステップS93で選択された有効フレームの被写体範囲の全てを包含する有効範囲を表す有効範囲情報を算出する。具体的には、分割数算出部218aは、有効フレームの被写体範囲について、x軸方向及びy軸方向のそれぞれにおけるサイズXsize及びYsizeの最大値(つまり、最大サイズ)Xsizemax及びYsizemaxを特定し、特定したXsizemax及びYsizemaxを有効範囲情報とする(ステップS122)。
【0113】
その後、分割数算出部218aは、ステップS121で取得した結果画像のサイズXansをYansで除算することで、結果画像の縦横比rateAnsを算出する(ステップS123)。次に、分割数算出部218aは、ステップS122で特定した被写体範囲の最大サイズXsizemaxをYsizemaxで除算することで、有効範囲の縦横比rateFrameを算出する(ステップS124)。
【0114】
尚、被写体フレームから被写体範囲の部分画像を切り抜くことで生成される、被写体範囲のサイズを有する画像をキャラクタ画像といい、キャラクタ画像を表す画像データをキャラクタ画像データという。このため、有効範囲は、全てのキャラクタ画像を包含するため、有効範囲の縦横比rateFrameを以下、キャラクタ画像の有効縦横比という。
【0115】
次に、分割数算出部218aは、有効フレームの数に結果画像を分割した場合に、分割された領域(以下、分割領域という)の縦横比が最もキャラクタ画像の有効縦横比rateFrameに近くなる又は同一となる縦方向(つまり、y軸方向)の分割数Ydivと、横方向(つまり、x軸方向)の分割数Xdivとを算出する(ステップS125)。具体例としては、分割数算出部218aは、互いに乗算すると有効フレーム数となる2つの整数の組合せを特定する。次に、分割数算出部218aは、特定した組合せのそれぞれについて組合せを構成する2つの整数をXdiv及びYdivとし、以下の式(5)を用いて分割領域の縦横比rateTempを算出する。その後、分割数算出部218aは、最も分割領域の縦横比rateTがキャラクタ画像の有効縦横比rateFrameに近い又は同じXdiv及びYdivを特定する。
【0116】
分割領域の縦横比rateT=結果画像の縦横比rateAns*Ydiv/Xdiv・・・(5)
【0117】
ここで、結果画像の縦横比rateAnsが値’2.0’で、キャラクタ画像の有効縦横比rateFrameが値’1.5’で、有効フレーム数が8である場合を例に挙げて説明する。
この場合、分割数算出部218aは、互いに乗算すると8となる整数の組合せ(1,8)、(2,4)、(4,2)、及び(8,1)を、例えば、因数分解などにより特定する。次に、分割数算出部218aは、特定した整数の組合せ(1,8)を(Ydiv,Xdiv)として上記の式(5)に代入した式「2.0*1/8」を算出することで、分割領域の縦横比rateTを値’0.25’と算出する。同様に、分割数算出部218aは、特定した整数の組合せ(2,4)、(4,2)、及び(8,1)をそれぞれ(Ydiv,Xdiv)として上記の式(5)に代入すると、分割領域の縦横比rateTは、それぞれ値’1.0’、’4.0’、及び’16’となる。このため、分割数算出部218aは、キャラクタ画像の有効縦横比rateFrameの値’1.5’に最も近い縦横分割数(Ydiv,Xdiv)の組合せとして(2,4)を特定する。つまりこの構成によれば、分割領域の形状に合わせてキャラクタ画像の縦横比を変更した場合に、最も変更の程度が少ない結果画像の縦横分割数(Ydiv,Xdiv)を特定できる。その後、制御部210は、縦横分割数算出処理の実行を終了する。
【0118】
図12(a)のステップS94の後に、拡大/縮小率算出部218bは、ステップS93で選択された有効フレームの被写体領域を、ステップS94で算出された縦横分割数に基づいて補正する、図17(a)に示すような拡大/縮小率算出処理を実行する(ステップS95)。
【0119】
図17(a)の拡大/縮小率算出処理の実行を開始すると、拡大/縮小率算出部218bは、1つの有効フレームから切り抜かれる1つのキャラクタ画像を合成することができる領域(つまり、分割領域)のサイズ(以下、有効サイズという)を、y方向及びx軸方向について算出する。具体的には、拡大/縮小率算出部218bは、結果画像のx軸方向のサイズXsizeをx軸方向の分割数Xdivで除算することで、x軸方向の有効サイズXAanssizeを算出する。同様に、拡大/縮小率算出部218bは、結果画像のy方向のサイズYsizeをy方向の分割数Ydivで除算することで、y方向の有効サイズXAanssizeを算出する(ステップS131)。
【0120】
次に、拡大/縮小率算出部218bは、有効サイズXanssizeをx軸方向の分割数Xdivで除算することで、キャラクタ画像のサイズを分割領域の有効サイズに略一致させるために、x軸方向に拡大又は縮小する比率Xrateを算出する。同様に、拡大/縮小率算出部218bは、有効サイズYanssizeをy軸方向の分割数Ydivで除算することで、y軸方向に拡大又は縮小する比率Yrateを算出する(ステップS132)。
【0121】
その後、拡大/縮小率算出部218bは、算出したy軸方向の拡大/縮小比率Yrateと、x軸方向の拡大/縮小比率Xrateとの相違が、所定の閾値3よりも小さいか否かを判別する(ステップS133)。尚、所定の閾値3は、拡大/縮小比率YrateとXrateとの差異が誤差の範囲に含まれるか否かを判別するために用いられる値であり、例えば、ROM210c又は記憶部230に記憶されている。このとき、拡大/縮小率算出部218bは、拡大/縮小比率YrateとXrateとの相違が所定の閾値3以上であると判別すると(ステップS133;No)、合成時にキャラクタ画像の縦横比が所定以上歪むため、キャラクタ(つまり、被写体)の視認性が低下すると判別し、キャラクタ画像のx軸方向の最大サイズXsizemax又はy軸方向の最大サイズYsizemaxを所定値だけインクリメントさせる(ステップS134)。尚、拡大/縮小率算出部218bは、キャラクタ画像の有効縦横比rateFrameが値’1’以上であるか否かを判別することにより、キャラクタ画像が縦長(つまり、y軸方向に長い)であるか、横長であるかを判別する構成を採用できる。この構成において、拡大/縮小率算出部218bは、キャラクタ画像が横長であると判別するとYsizemaxの値をインクリメントし、キャラクタ画像が縦長(つまり、y軸方向に長い)と判別するとXsizemaxの値をインクリメントする構成を採用できる。この構成によれば、縦長/横長のキャラクタ画像が更に縦長/横長に拡大/縮小されることにより視認性が低下することを防止できる。尚、ステップS134の後に、拡大/縮小率算出部218bは、ステップS132から上記処理を繰り返す。
【0122】
ステップS133において、拡大/縮小率算出部218bは、拡大/縮小比率YrateとXrateとの相違が所定の閾値3より小さいと判別すると(ステップS133;Yes)、拡大/縮小比率YrateとXrateとで、小さい比率の方を比率rateとした後に(ステップS135)、拡大/縮小率算出処理を終了する。
【0123】
図12(a)のステップS95の後に、被写体範囲補正部218cは、図12(b)のステップS122で算出した被写体範囲の最大サイズXsizemax及びYsizemaxを用いて被写体範囲を補正する、図17(b)に示すような被写体範囲補正処理を実行する。
【0124】
先ず、被写体範囲補正処理の実行を開始すると、被写体範囲補正部218cは、処理の対象とする有効フレーム(以下、処理フレームという)の番号Frameを表す変数に対して値’1’を代入する(ステップS141)。次に、被写体範囲補正部218cは、キャラクタ画像として有効フレームから切り抜く範囲を定める被写体範囲情報のXstart、Ystart、Xsize、Ysize、Xend、及びYendを、以下の式(6)から(11)を順次計算することで補正する(ステップS142)。
【0125】
Xstart=Xstart−{(Xsizemax−Xsize)/2}・・・(6)
Ystart=Ystart−{(Ysizemax−Ysize)/2}・・・(7)
Xsize=Xsizemax・・・(8)
Ysize=Ysizemax・・・(9)
Xend=Xstart+(Xsize−1)・・・(10)
Yend=Ystart+(Ysize−1)・・・(11)
【0126】
この構成によれば、複数の被写体範囲情報で表されるそれぞれの被写体範囲の中央に被写体を表したまま、それぞれの被写体範囲の大きさを縦方向にXsizemax、横方向にYsizemaxの大きさに補正できる。
【0127】
次に、被写体範囲補正部218cは、処理フレームの番号Frameを表す変数を値’1’だけインクリメントする(ステップS143)。その後、被写体範囲補正部218cは、変数で表される処理フレームの番号Frameが有効フレームの数と等しいか否かを判別する(ステップS144)。このとき、被写体範囲補正部218cは、処理フレームの番号Frameが有効フレームの数と等しくないと判別すると(ステップS144;No)、処理フレームの番号Frameを表す変数の値を値’1’だけインクリメントした後に(ステップS145)、ステップS142から上記処理を繰り返す。これに対して、被写体範囲補正部218cは、処理フレームの番号Frameが有効フレームの数と等しいと判別すると(ステップS144;Yes)、被写体範囲補正処理の実行を終了する。
【0128】
図12(a)のステップS96の後に、合成画像生成部218dは、ステップS93で選択された有効フレームから、ステップS96で補正された被写体領域範囲を切り抜いたキャラクタ画像を合成した合成画像を生成する、図18に示すような合成画像生成処理を実行する(ステップS97)。
【0129】
図18の合成画像生成処理を開始すると、合成画像生成部218dは、処理の対象とした有効フレームの番号(以下、処理フレーム番号という)Nを表す変数に対して値’0’を代入して初期化する(ステップS151)。尚、有効フレームの番号は、撮像時刻又は保存時刻の順に各有効フレームを並べた場合の並び順をいう。次に、合成画像生成部218dは、処理フレーム番号Nの有効フレームから、ステップS96で補正された被写体範囲情報で表される被写体範囲の部分画像(以下、被写体範囲画像という)を切り抜く(ステップS152)。次に、合成画像生成部218dは、図12(a)のステップS91と同様に、背景画像の合成を行うか否かを判別する(ステップS153)。このとき、合成画像生成部218dは、背景画像の合成を行うと判別すると(ステップS153;Yes)、例えば、図8(a)のステップS52で検出したマスクデータを用いて、被写体範囲画像の背景領域に対して、図12(a)のステップS92で選択された選択背景画像を合成する(ステップS154)。具体例としては、合成画像生成部218dは、被写体範囲画像の画素それぞれに対してマスクデータの対応する値が0もしくは0付近であるか否かを判別し、マスクデータが0もしくは0付近であると判別すると、当該画素の画素値を選択背景画像の当該画素に対応した画素の画素値と置き換える。尚、合成画像生成部218dは、例えば、ROM210c又は記憶部230に記憶された所定の閾値よりもマスクデータの対応する値が小さい場合に、マスクデータの対応する値が0付近であると判別する。この構成によれば、例えば、予め定められた透過色の画素を選択背景画像の画素に置き換える場合と比べて、被写体領域にたまたま透過色と同じ色の領域がある場合であっても、当該領域の画素が背景画像の画素に置き換えられることを防止できる。また、合成画像生成部218dは、被写体範囲画像の画素それぞれに対して画素色がグレーであるか否かを判別し、画素色がグレーであると判別すると、当該画素の画素値を選択背景画像の当該画素に対応した画素の画素値と置き換えるとしてもよい。この構成によれば、被写体範囲画像の画素色がグレーなどの透過色であるか否かに基づいて選択背景画像の画素と被写体範囲画像の画素とを置き換えるため、少ない処理量かつ短い処理時間で被写体範囲画像と選択背景画像とを合成できる。
【0130】
その後、合成画像生成部218dは、図17のステップS135で決定した比率rateに従って、図17のステップS142で補正した被写体範囲画像のx軸方向のサイズと被写体範囲画像のy軸方向のサイズを拡大/縮小する。次に、合成画像生成部218dは、未だ被写体範囲画像を合成されていない結果画像の分割領域(以下、未使用の分割領域という)の内で、最も左上の分割領域に対して、拡大/縮小率された被写体範囲画像を合成する(ステップS155)。尚、合成画像生成部218dは、最も左上の分割領域から順番に被写体範囲画像を合成することに限定される訳ではなく、所定の規則に従って被写体範囲画像を未使用の分割領域に合成すれば良い。
【0131】
次に、合成画像生成部218dは、処理フレーム番号Nを表す変数の値を値’1’だけインクリメントする(ステップS156)。その後、合成画像生成部218dは、処理フレーム番号Nを表す変数の値が有効フレーム数と等しいか否かを判別する(ステップS157)。このとき、合成画像生成部218dは、処理フレーム番号Nを表す変数の値が有効フレーム数と異なると判別すると(ステップS157;No)、ステップS153から上記処理を繰り返す。これに対して、合成画像生成部218dは、処理フレーム番号Nを表す変数の値が有効フレーム数と等しいと判別すると(ステップS157;Yes)、合成画像を表す画像データを、例えば、JPEGやビットマップなどの一般的なフォーマットの電子ファイルとして記憶部230へ保存する。次に、合成画像生成部218dは、保存した合成画像のファイル名を、合成画像の生成に用いられた画像群を表すファイル名と同じファイル名又は関連したファイル名とすることで、合成画像と合成画像の生成に用いられた画像群とを関連付ける。また、動画像に基づいて合成画像を生成した場合には、合成画像生成部218dは、生成した合成画像の画像データを、合成画像の生成に用いられた動画像を表す動画ファイルのヘッダ領域に格納することで、動画像と合成画像とを関連付けても良い。
【0132】
図4(a)のステップS04の後に、図5(a)の合成画像出力制御部219は、ステップS04で生成された合成画像(つまり、結果画像)を表す画像データを、合成画像の生成に用いられた画像群(つまり、連写画像)を構成する被写体画像の画像データと関連付けて、外部装置へ出力するように外部I/F部310を制御した後に(ステップS05)、合成画像生成処理の実行を終了する。尚、合成画像出力制御部219は、生成された合成画像を表示するように表示部320を制御しても良い。
【0133】
これらの構成によれば、複数の被写体画像に表された被写体範囲の差異に基づいて被写体の動作を表す被写体画像を選択すると共に、選択された被写体画像に表された被写体を複数並べて表示する合成画像の画像データを生成する。このため、被写体の動きを表す管理が容易な画像データを生成できる。
【0134】
これらの構成によれば、被写体範囲が所定の大きさよりも大きい画像を有効画像として選択するので、所定の大きさよりも大きい被写体を並べて表示する合成画像を生成できる。よって、合成画像を視認したユーザは、被写体の動きを容易に認識できる。
【0135】
これらの構成によれば、被写体範囲の差異が大きい有効画像から順に合成画像に合成される画像として選択するので、差異の大きい被写体を並べて表示する合成画像を生成できる。よって、合成画像を視認したユーザは、被写体の動きを容易に認識できる。
【0136】
これらの構成によれば、重複画像が重複して表示させ、かつ重複画像を一様に分布するように表示する合成画像を生成するので、被写体の動作に対する視認性の低下を防止しながら、指定された数の被写体を並べて表示できる。
【0137】
これらの構成によれば、複数の被写体範囲を包含する有効範囲と同一又は相似形状の分割領域に被写体を表す部分画像を合成するため、拡大/縮小により生じる被写体の形状の歪みを防止しながらスペース効率的良く合成画像に並べて表示させることができる。
【0138】
(変形例1)
本実施形態において、図13のステップS103及びS110において、2つの被写体領域画像(つまり、有効フレーム)の被写体範囲の差異は、被写体範囲情報のXstart同士の差異、Xend同士の差異の差異、Ystart同士の差異、及びYend同士の差異といずれか1つ以上で表されるとして説明した。しかし、これに限定される訳ではなく、被写体領域画像選択部216は、被写体範囲情報Xstart、Ystart、Xend、及びYendにより算出される被写体範囲の中心座標の差異を被写体範囲の差異とする構成を採用できる。
【0139】
この構成において、図5(a)の被写体領域画像選択部216は、以下のような構成を採用できる。例えば、被写体領域画像選択部216は、図19(a)及び図19(b)に示すような同じ被写体が写し出された2枚の被写体画像の特徴点に基づいて、これら2枚の被写体画像を背景が一致するように重ねる。次に、2枚の被写体画像の一方を基準として、もう一方の被写体画像を背景が一致するように重ねるためにx軸方向にシフトさせたシフト量Xs及びy軸方向にシフトさせたシフト量Ysを算出する。その後、被写体領域画像選択部216は、シフト量Xs及びYsを、被写体情報Xstart、Ystart、XEend、及びYEendに加算することで、基準とした被写体画像(以下、基準被写体画像という)のXY座標系で表されるシフトされた被写体画像(以下、シフト被写体画像という)の被写体範囲を表す被写体範囲情報を算出する。その後、被写体領域画像選択部216は、基準被写体画像の被写体範囲情報(以下、基準被写体範囲情報という)を用いて基準被写体画像の座標系における基準被写体画像の被写体範囲の中心Cbの座標値を算出し、シフトされた被写体範囲情報(以下、シフト被写体範囲情報という)を用いて基準被写体画像の座標系におけるシフト被写体画像の被写体範囲の中心Csの座標値を算出する。次に、被写体領域画像選択部216は、それぞれ算出された中心座標の距離を被写体範囲の差異度とする。
【0140】
この構成によれば、被写体範囲の中心座標の変化を差異度とするので、例えば、被写体画像に表された被写体の大きさなどの形状の変化よりも被写体の位置の変化を表すコマ割画像(つまり、結果画像)を生成できる。このため、結果画像を視認したユーザは、被写体の位置の変化を容易に認識できる。
【0141】
(変形例2)
本実施形態において、図13のステップS103及びS110において、2つの被写体領域画像(つまり、有効フレーム)の被写体範囲の差異は、被写体範囲情報のXstart同士の差異などで表されるとして説明したが、これに限定される訳ではなく、被写体領域画像選択部216は、以下の構成を採用しても良い。先ず、被写体領域画像選択部216は、上記の変形例1のように、図20(a)及び図20(b)に表された2つの被写体画像を背景が一致するように重ねる。次に、被写体領域画像選択部216は、基準被写体範囲情報で表される被写体範囲と、シフト被写体範囲情報で表される被写体範囲とが重なる範囲(以下、重複部分という)AOの面積と、重ならない範囲(以下、非重複部分という)NAOの面積とを、基準被写体範囲情報とシフト被写体範囲情報とを用いて算出する。次に、被写体領域画像選択部216は、以下の式(12)を用いて被写体範囲の相違を表す変動量を算出する。
【0142】
差異度=非重複部分の面積の総和/(非重複部分の面積の総和+重複分の面積の総和)・・・(12)
【0143】
ここで、重複部分AOの面積及び非重複部分NAOの面積は、重複部分AOの画素数及び非重複部分NAOの画素数でそれぞれ表される。この差異度は、非重複部分NAOが多くなる程大きい値となり、非重複部分が少なくなる程小さい値となる。
この構成によれば、被写体範囲の重複部分AOの面積の総和と非重複部分NAOの面積の総和とを和算した値に対する非重複部分NAOの面積の総和の比率を差異度としているので、例えば、撮像時における被写体との距離の変化、又はズーム倍率の変化などによる、被写体画像に表された被写体の大きさの変化が大きい被写体範囲画像を並べて表示する結果画像を生成できる。このため、結果画像を視認したユーザは、被写体のサイズ変化を容易に認識できる。
【0144】
(変形例3)
本実施形態において、図13のステップS103及びS110において、2つの被写体領域画像の被写体範囲の差異は、被写体範囲情報のXstart同士の差異などで表されるとして説明したが、これに限定される訳ではなく、被写体領域画像選択部216は、被写体範囲情報のXsize同士の差異及びYsize同士の差異のいずれか1つ以上を差異度としても良い。
【0145】
(変形例4)
本実施形態において、図13のステップS103及びS110において、2つの被写体領域画像の被写体範囲の相違は、被写体範囲情報のXstart同士の差異などで表されるとして説明したが、これに限定される訳ではない。例えば、被写体領域画像選択部216は、2つの被写体領域画像の被写体範囲情報にそれぞれ基づいて、2つの被写体領域画像の被写体範囲における平均画素値の差異を算出し、算出した差異を被写体範囲の差異度としても良い。また、例えば、被写体領域画像選択部216は、2つの被写体領域画像の被写体領域画像の平均画素値の差異を算出し、算出した差異を被写体範囲の差異度としても良い。
【0146】
(変形例5)
デジタルカメラ1は、撮像部100で連写撮像された連写画像を構成する被写体画像を用いて結果画像(合成画像)を生成するとして説明した。しかし、これに限定される訳ではなく、デジタルカメラ1は、動画撮像機能を有しており、画像処理部220は、撮像部100で撮像された、例えば、動画データで表される毎秒30フレームのそれぞれを連写画像を構成する被写体画像として記憶部230に保存してもよい。また、制御部210は、動画データの1フレームを連写画像を構成する1毎の被写体画像とみなして結果画像を生成しても良い。
【0147】
(変形例6)
尚、画像処理部220は、撮像部100より受信した電気信号を、YUVフォーマットの画像データに変換し、図5(a)の被写体領域画像生成部215は、図8のステップS61に記述した相違度マップの各画素値を、以下の式(13)を用いて算出する構成を採用できる。
【0148】
D=(YC−Y)2+G×{(UC−U)2+(VC−V)2}・・・(13)
ここで、Dは相違度マップの画素値を表し、YC、UC、及びVCは被写体画像の画素値(輝度及び色差)を表し、Y、U、及びVは被写体画像の画素値に対応する位置にある背景画像の画素値(輝度及び色差)を表す。また、Gは色差U及びVのゲインを表す。
【0149】
(変形例7)
また、画像処理部220は、撮像部100より受信した電気信号を、RGBフォーマットの画像データに変換し、画像処理部220は、図8のステップS61に記述した相違度マップの各画素値を、以下の式(14)を用いて算出する構成を採用できる。
【0150】
D=(RC−R)2+(GC−G)2+(BC−B)2・・・(14)
ここで、Dは相違度マップの画素値を表し、RC、GC、及びBCは被写体画像の画素の値(赤、緑、及び青)をそれぞれ表し、R、G、及びBは被写体画像の画素値に対応する位置にある背景画像の画素値(赤、緑、及び青)を表す。
【0151】
上記で説明したデジタルカメラ1は、専用のシステムによらず、通常のコンピュータシステムを用いても実現可能である。例えば、上述の動作を実行するためのプログラムをコンピュータ読み取り可能な記録媒体に格納して配布し、該プログラムをコンピュータにインストールして、上述の処理を実行することによって装置を構成してもよい。また、インターネット等のネットワーク上のサーバ装置が備えるディスク装置に格納しておき、例えばコンピュータにダウンロード等できるようにしてもよい。また、上述の機能を、OSとアプリケーションソフトの共同より実現してもよい。この場合には、OS以外の部分のみを媒体に格納して配布してもよく、また、コンピュータにダウンロード等してもよい。
【0152】
上記のプログラムを記録する記録媒体としては、USBメモリ、フレキシブルディスク、CD、DVD、Blu−ray Disc、MO、SDカード、MS(メモリースティック)、その他、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリ、磁気テープ等のコンピュータ読取可能な記録媒体を使用することができる。また、HDD(ハードディスク)やSSD(ソリッドステートドライブ)等、通常、システム又は装置に固定して使用する記録媒体を使用することもできる。
【符号の説明】
【0153】
1・・・デジタルカメラ、100・・・撮像部、110・・・光学装置、120・・・イメージセンサ、200・・・画像処理装置、210・・・制御部(画像生成装置)、211・・・被写体画像データ取得部、212・・・背景画像データ取得部、213・・・被写体領域情報検出部、214・・・被写体範囲情報算出部、215・・・被写体領域画像生成部、216・・・被写体領域画像選択部、217・・・被写体範囲画像生成部、218・・・合成画像データ生成部、218a・・・分割数算出部、218b・・・拡大/縮小率算出部、218c・・・被写体範囲補正部、218d・・・合成画像生成部、219・・・合成画像出力制御部、220・・・画像処理部、230・・・記憶部、240・・・画像出力部、300・・・インタフェース部、310・・・外部I/F部、320・・・表示部、330・・・操作部
【特許請求の範囲】
【請求項1】
被写体を撮像することで、前記被写体を表す被写体画像を複数生成する撮像手段と、
前記被写体の背景を表す背景画像の画像データを取得する背景画像データ取得手段と、
前記複数の被写体画像それぞれの画素値と、前記背景画像の画素値とに基づいて、前記被写体が表された被写体領域を表す被写体領域情報を、前記被写体画像のそれぞれから検出する被写体領域情報検出手段と、
前記検出された複数の被写体領域情報に基づいて、前記複数の被写体画像のそれぞれから、前記被写体領域を表す被写体領域画像を生成する被写体領域画像生成手段と、
前記生成された複数の被写体領域情報のそれぞれから、前記被写体領域を包含する被写体範囲を表す被写体範囲情報を算出する被写体範囲情報算出手段と、
前記算出された複数の被写体範囲情報で表される被写体範囲の差異に基づいて、前記生成された複数の被写体領域画像から、前記被写体の動作を表す複数の被写体領域画像を選択する被写体領域画像選択手段と、
前記選択された複数の被写体領域画像を合成することで、前記被写体領域画像に表された被写体を並べて表示する合成画像の画像データを生成する合成画像データ生成手段と、を備える、
ことを特徴とする撮像装置。
【請求項2】
前記被写体領域画像選択手段は、
前記合成される被写体領域画像の数を指定する画像数指定情報を取得し、
前記生成された被写体領域画像の数が、前記取得された指定情報で指定される指定画像数以上である場合に、前記被写体範囲情報が表す被写体範囲の大きさが所定の大きさ以下の被写体領域画像を無効画像として特定し、前記被写体範囲の大きさが所定の大きさよりも大きい被写体領域画像を有効画像として特定し、
前記有効画像と特定した被写体領域画像を、前記被写体の動作を表す被写体領域画像として選択する、
ことを特徴とする請求項1に記載の撮像装置。
【請求項3】
前記被写体領域画像選択手段は、前記特定した有効画像の数が前記指定画像数以上である場合に、前記検出された被写体範囲情報が表す被写体範囲の差異が大きい有効画像から順に、前記指定情報で指定された画像数だけ選択する、
ことを特徴とする請求項2に記載の撮像装置。
【請求項4】
前記被写体領域画像選択手段は、前記生成された被写体領域画像の数が前記指定画像数より少ない場合に、前記指定画像数に対して不足する数の被写体領域画像を、重複して前記合成画像に表示される被写体を表す重複画像として特定し、
前記合成画像データ生成手段は、前記特定された重複画像で表される被写体を、表示される複数の被写体に対して全体的に一様に分布するように重複表示する合成画像を生成する、
ことを特徴とする請求項3に記載の撮像装置。
【請求項5】
前記合成画像データ生成手段は、
前記合成画像の形状を表す合成画像形状情報を取得する形状情報取得手段と、
前記複数の被写体範囲情報に基づいて、前記選択された複数の被写体領域画像の被写体範囲を包含する有効範囲を表す有効範囲情報を算出する有効範囲算出手段と、
前記取得された合成画像形状情報と、前記取得された指定画像数情報と、前記算出された有効範囲情報とに基づいて、前記合成画像を前記有効範囲と同一又は相似の形状を有する前記指定画像数の分割領域に分割する合成画像分割手段と、
前記選択された前記指定画像数の被写体領域画像を、前記合成画像の前記分割領域のそれぞれに対して合成する画像合成手段と、を備える、
ことを特徴とする請求項4に記載の撮像装置。
【請求項6】
前記複数の被写体範囲情報が表す被写体範囲の相違は、前記複数の被写体範囲の画素値の相違、又は前記複数の被写体範囲に含まれる被写体領域の画素値の相違を含む、
ことを特徴とする請求項1から5のいずれか一項に記載の撮像装置。
【請求項7】
前記複数の被写体範囲情報が表す被写体範囲の相違は、前記複数の被写体範囲情報を算出する基礎とされた被写体画像の中から選択した2つの被写体画像を前記背景が一致するように重ねた場合において、前記複数の被写体範囲が重なる部分の面積と、重ならない部分の面積との比率を含む、
ことを特徴とする請求項1から5のいずれか一項に記載の撮像装置。
【請求項8】
前記複数の被写体範囲情報が表す被写体範囲の相違は、前記複数の被写体範囲情報を算出する基礎とされた被写体画像の中から選択した2つの被写体画像を前記背景が一致するように重ねた場合における、2つの前記被写体範囲の位置の相違を含む、
ことを特徴とする請求項1から5のいずれか一項に記載の撮像装置。
【請求項9】
被写体を表す被写体画像の画像データを複数取得する被写体画像データ取得手段と、
前記被写体の背景を表す背景画像の画像データを取得する背景画像データ取得手段と、
前記複数の被写体画像それぞれの画素値と、前記背景画像の画素値とに基づいて、前記被写体が表された被写体領域を表す被写体領域情報を、前記被写体画像のそれぞれから検出する被写体領域情報検出手段と、
前記検出された複数の被写体領域情報に基づいて、前記複数の被写体画像のそれぞれから、前記被写体領域を表す被写体領域画像を生成する被写体領域画像生成手段と、
前記生成された複数の被写体領域情報のそれぞれから、前記被写体領域を包含する被写体範囲を表す被写体範囲情報を算出する被写体範囲情報算出手段と、
前記算出された複数の被写体範囲情報で表される被写体範囲の差異に基づいて、前記生成された複数の被写体領域画像から、前記被写体の動作を表す複数の被写体領域画像を選択する被写体領域画像選択手段と、
前記選択された複数の被写体領域画像を合成することで、前記被写体領域画像に表された被写体を並べて表示する合成画像の画像データを生成する合成画像データ生成手段と、を備える、
ことを特徴とする画像生成装置。
【請求項10】
コンピュータを、
被写体を表す被写体画像の画像データを複数取得する被写体画像データ取得手段、
前記被写体の背景を表す背景画像の画像データを取得する背景画像データ取得手段、
前記複数の被写体画像それぞれの画素値と前記背景画像の画素値とに基づいて、前記被写体が表された被写体領域を表す被写体領域情報を、前記被写体画像のそれぞれから検出する被写体領域情報検出手段、
前記複数の被写体領域情報に基づいて、前記複数の被写体画像のそれぞれから、前記被写体領域を表す被写体領域画像を生成する被写体領域画像生成手段、
前記複数の被写体領域情報のそれぞれから、前記被写体領域を包含する被写体範囲を表す被写体範囲情報を算出する被写体範囲情報算出手段、
前記複数の被写体範囲情報で表される被写体範囲の差異に基づいて、前記生成された複数の被写体領域画像から、前記被写体の動作を表す複数の被写体領域画像を選択する被写体領域画像選択手段、
前記選択された複数の被写体領域画像を合成することで、前記被写体領域画像に表された被写体を並べて表示する合成画像の画像データを生成する合成画像データ生成手段、として機能させる、
ことを特徴とする画像生成プログラム。
【請求項11】
被写体を表す被写体画像の画像データを複数取得する被写体画像データ取得ステップと、
前記被写体の背景を表す背景画像の画像データを取得する背景画像データ取得ステップと、
前記複数の被写体画像それぞれの画素値と前記背景画像の画素値とに基づいて、前記被写体が表された被写体領域を表す被写体領域情報を、前記被写体画像のそれぞれから検出する被写体領域情報検出ステップと、
前記複数の被写体領域情報に基づいて、前記複数の被写体画像のそれぞれから、前記被写体領域を表す被写体領域画像を生成する被写体領域画像生成ステップと、
前記複数の被写体領域情報のそれぞれから、前記被写体領域を包含する被写体範囲を表す被写体範囲情報を算出する被写体範囲情報算出ステップと、
前記複数の被写体範囲情報で表される被写体範囲の差異に基づいて、前記生成された複数の被写体領域画像から、前記被写体の動作を表す複数の被写体領域画像を選択する被写体領域画像選択ステップと、
前記選択された複数の被写体領域画像を合成することで、前記被写体領域画像に表された被写体を並べて表示する合成画像の画像データを生成する合成画像データ生成ステップと、を有する、
ことを特徴とする画像生成方法。
【請求項1】
被写体を撮像することで、前記被写体を表す被写体画像を複数生成する撮像手段と、
前記被写体の背景を表す背景画像の画像データを取得する背景画像データ取得手段と、
前記複数の被写体画像それぞれの画素値と、前記背景画像の画素値とに基づいて、前記被写体が表された被写体領域を表す被写体領域情報を、前記被写体画像のそれぞれから検出する被写体領域情報検出手段と、
前記検出された複数の被写体領域情報に基づいて、前記複数の被写体画像のそれぞれから、前記被写体領域を表す被写体領域画像を生成する被写体領域画像生成手段と、
前記生成された複数の被写体領域情報のそれぞれから、前記被写体領域を包含する被写体範囲を表す被写体範囲情報を算出する被写体範囲情報算出手段と、
前記算出された複数の被写体範囲情報で表される被写体範囲の差異に基づいて、前記生成された複数の被写体領域画像から、前記被写体の動作を表す複数の被写体領域画像を選択する被写体領域画像選択手段と、
前記選択された複数の被写体領域画像を合成することで、前記被写体領域画像に表された被写体を並べて表示する合成画像の画像データを生成する合成画像データ生成手段と、を備える、
ことを特徴とする撮像装置。
【請求項2】
前記被写体領域画像選択手段は、
前記合成される被写体領域画像の数を指定する画像数指定情報を取得し、
前記生成された被写体領域画像の数が、前記取得された指定情報で指定される指定画像数以上である場合に、前記被写体範囲情報が表す被写体範囲の大きさが所定の大きさ以下の被写体領域画像を無効画像として特定し、前記被写体範囲の大きさが所定の大きさよりも大きい被写体領域画像を有効画像として特定し、
前記有効画像と特定した被写体領域画像を、前記被写体の動作を表す被写体領域画像として選択する、
ことを特徴とする請求項1に記載の撮像装置。
【請求項3】
前記被写体領域画像選択手段は、前記特定した有効画像の数が前記指定画像数以上である場合に、前記検出された被写体範囲情報が表す被写体範囲の差異が大きい有効画像から順に、前記指定情報で指定された画像数だけ選択する、
ことを特徴とする請求項2に記載の撮像装置。
【請求項4】
前記被写体領域画像選択手段は、前記生成された被写体領域画像の数が前記指定画像数より少ない場合に、前記指定画像数に対して不足する数の被写体領域画像を、重複して前記合成画像に表示される被写体を表す重複画像として特定し、
前記合成画像データ生成手段は、前記特定された重複画像で表される被写体を、表示される複数の被写体に対して全体的に一様に分布するように重複表示する合成画像を生成する、
ことを特徴とする請求項3に記載の撮像装置。
【請求項5】
前記合成画像データ生成手段は、
前記合成画像の形状を表す合成画像形状情報を取得する形状情報取得手段と、
前記複数の被写体範囲情報に基づいて、前記選択された複数の被写体領域画像の被写体範囲を包含する有効範囲を表す有効範囲情報を算出する有効範囲算出手段と、
前記取得された合成画像形状情報と、前記取得された指定画像数情報と、前記算出された有効範囲情報とに基づいて、前記合成画像を前記有効範囲と同一又は相似の形状を有する前記指定画像数の分割領域に分割する合成画像分割手段と、
前記選択された前記指定画像数の被写体領域画像を、前記合成画像の前記分割領域のそれぞれに対して合成する画像合成手段と、を備える、
ことを特徴とする請求項4に記載の撮像装置。
【請求項6】
前記複数の被写体範囲情報が表す被写体範囲の相違は、前記複数の被写体範囲の画素値の相違、又は前記複数の被写体範囲に含まれる被写体領域の画素値の相違を含む、
ことを特徴とする請求項1から5のいずれか一項に記載の撮像装置。
【請求項7】
前記複数の被写体範囲情報が表す被写体範囲の相違は、前記複数の被写体範囲情報を算出する基礎とされた被写体画像の中から選択した2つの被写体画像を前記背景が一致するように重ねた場合において、前記複数の被写体範囲が重なる部分の面積と、重ならない部分の面積との比率を含む、
ことを特徴とする請求項1から5のいずれか一項に記載の撮像装置。
【請求項8】
前記複数の被写体範囲情報が表す被写体範囲の相違は、前記複数の被写体範囲情報を算出する基礎とされた被写体画像の中から選択した2つの被写体画像を前記背景が一致するように重ねた場合における、2つの前記被写体範囲の位置の相違を含む、
ことを特徴とする請求項1から5のいずれか一項に記載の撮像装置。
【請求項9】
被写体を表す被写体画像の画像データを複数取得する被写体画像データ取得手段と、
前記被写体の背景を表す背景画像の画像データを取得する背景画像データ取得手段と、
前記複数の被写体画像それぞれの画素値と、前記背景画像の画素値とに基づいて、前記被写体が表された被写体領域を表す被写体領域情報を、前記被写体画像のそれぞれから検出する被写体領域情報検出手段と、
前記検出された複数の被写体領域情報に基づいて、前記複数の被写体画像のそれぞれから、前記被写体領域を表す被写体領域画像を生成する被写体領域画像生成手段と、
前記生成された複数の被写体領域情報のそれぞれから、前記被写体領域を包含する被写体範囲を表す被写体範囲情報を算出する被写体範囲情報算出手段と、
前記算出された複数の被写体範囲情報で表される被写体範囲の差異に基づいて、前記生成された複数の被写体領域画像から、前記被写体の動作を表す複数の被写体領域画像を選択する被写体領域画像選択手段と、
前記選択された複数の被写体領域画像を合成することで、前記被写体領域画像に表された被写体を並べて表示する合成画像の画像データを生成する合成画像データ生成手段と、を備える、
ことを特徴とする画像生成装置。
【請求項10】
コンピュータを、
被写体を表す被写体画像の画像データを複数取得する被写体画像データ取得手段、
前記被写体の背景を表す背景画像の画像データを取得する背景画像データ取得手段、
前記複数の被写体画像それぞれの画素値と前記背景画像の画素値とに基づいて、前記被写体が表された被写体領域を表す被写体領域情報を、前記被写体画像のそれぞれから検出する被写体領域情報検出手段、
前記複数の被写体領域情報に基づいて、前記複数の被写体画像のそれぞれから、前記被写体領域を表す被写体領域画像を生成する被写体領域画像生成手段、
前記複数の被写体領域情報のそれぞれから、前記被写体領域を包含する被写体範囲を表す被写体範囲情報を算出する被写体範囲情報算出手段、
前記複数の被写体範囲情報で表される被写体範囲の差異に基づいて、前記生成された複数の被写体領域画像から、前記被写体の動作を表す複数の被写体領域画像を選択する被写体領域画像選択手段、
前記選択された複数の被写体領域画像を合成することで、前記被写体領域画像に表された被写体を並べて表示する合成画像の画像データを生成する合成画像データ生成手段、として機能させる、
ことを特徴とする画像生成プログラム。
【請求項11】
被写体を表す被写体画像の画像データを複数取得する被写体画像データ取得ステップと、
前記被写体の背景を表す背景画像の画像データを取得する背景画像データ取得ステップと、
前記複数の被写体画像それぞれの画素値と前記背景画像の画素値とに基づいて、前記被写体が表された被写体領域を表す被写体領域情報を、前記被写体画像のそれぞれから検出する被写体領域情報検出ステップと、
前記複数の被写体領域情報に基づいて、前記複数の被写体画像のそれぞれから、前記被写体領域を表す被写体領域画像を生成する被写体領域画像生成ステップと、
前記複数の被写体領域情報のそれぞれから、前記被写体領域を包含する被写体範囲を表す被写体範囲情報を算出する被写体範囲情報算出ステップと、
前記複数の被写体範囲情報で表される被写体範囲の差異に基づいて、前記生成された複数の被写体領域画像から、前記被写体の動作を表す複数の被写体領域画像を選択する被写体領域画像選択ステップと、
前記選択された複数の被写体領域画像を合成することで、前記被写体領域画像に表された被写体を並べて表示する合成画像の画像データを生成する合成画像データ生成ステップと、を有する、
ことを特徴とする画像生成方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【公開番号】特開2012−60468(P2012−60468A)
【公開日】平成24年3月22日(2012.3.22)
【国際特許分類】
【出願番号】特願2010−202304(P2010−202304)
【出願日】平成22年9月9日(2010.9.9)
【出願人】(000001443)カシオ計算機株式会社 (8,748)
【Fターム(参考)】
【公開日】平成24年3月22日(2012.3.22)
【国際特許分類】
【出願日】平成22年9月9日(2010.9.9)
【出願人】(000001443)カシオ計算機株式会社 (8,748)
【Fターム(参考)】
[ Back to top ]