説明

画像処理装置、画像処理方法、およびプログラム

【課題】 複数の画像に含まれるオブジェクトを1つの画像に合成するときに、簡単な処理で、且つ適切に合成することができる画像処理装置、画像処理方法、およびプログラムを提供する。
【解決方法】 合成対象の第1の画像と、第2の画像とに基づき、当該第2の画像における、当該第1の画像に対する差分を有する差分領域を特定し、その差分領域の画像を、第1の画像に合成する。そして、第1の画像における、当該第1の画像と当該第2の画像とに含まれているオブジェクトに対応する領域の画像を、前記合成で得られた合成画像にさらに合成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数の画像に含まれるオブジェクトを1つの画像に合成するための画像処理装置、画像処理方法、およびプログラムに関する。
【背景技術】
【0002】
近年、デジタルスチルカメラなどで連写撮影された動体連写画像を一つの画像に合成する技術が用いられている。動画像やカメラでの連写撮影からは時間的に連続した複数の画像を得ることができ、該複数の画像の動体部分を合成することにより動体の運動解析や映像特殊効果として利用できる。
【0003】
特許文献1には複数の画像(フレーム)を合成する画像合成の技術が記載されている。特許文献1では、複数のフレームにおける動体部分ではない背景部分に特定して、動体部分を含まない背景画像を作成する。そして、各フレームの動体部分を、背景画像に合成する。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特許第4415198号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
上記の従来技術では、合成対象の複数の画像における動体部分を抽出し、また動体部分を含まない背景画像を作成して、作成された背景画像に合成を行う。このような、背景画像を作成する処理は、処理負荷が大きいという課題がある。
【0006】
そこで本発明は、複数の画像に含まれるオブジェクトを1つの画像に合成するときに、簡単な処理で、且つ適切に合成することができる画像処理装置、画像処理方法、およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
上記課題を解決するために、本発明の画像処理装置は、複数の画像に含まれているオブジェクトを1つの画像に合成するための画像処理装置であって、合成対象の複数の画像を取得する取得手段と、前記取得手段により取得された合成対象の複数の画像のうちの第1の画像と、当該複数の画像のうちの第2の画像とに基づき、当該第2の画像における、当該第1の画像に対する差分を有する差分領域を特定する特定手段と、前記第2の画像における、前記特定手段により特定された差分領域の画像を、前記第1の画像に合成する第1の合成手段と、前記第1の画像における前記第2の画像に対する差分を有する差分領域を、当該第1の画像と当該第2の画像とに含まれているオブジェクトに対応する合成対象の領域として決定する決定手段と、前記決定手段により決定された前記第1の画像における合成対象の領域の画像を、前記第1の合成手段による合成で得られた合成画像に、さらに合成する第2の合成手段と、を有することを特徴とする。
【発明の効果】
【0008】
本発明によれば、複数の画像に含まれるオブジェクトを1つの画像に合成するときに、簡単な処理で適切に合成することができる。
【図面の簡単な説明】
【0009】
【図1】画像処理装置の構成を示すブロック図である。
【図2】複数の画像の合成処理を示すフローチャートである。
【図3】合成対象の複数の画像を示す図である。
【図4】主画像と、比較画像との差分を示す差分画像を示す図である。
【図5】主画像と、比較画像における差分領域の画像とを合成した結果を示す図である。
【図6】合成枚数画像を示す図である。
【図7】合成枚数と主画像の割合の関係を示すグラフである。
【図8】合成結果画像を示す図である。
【図9】合成対象の複数の画像を示す図である。
【図10】合成結果画像を示す図である。
【図11】図9の画像に本発明の合成処理を施した画像である。
【図12】主画像と、比較画像における差分領域の画像とを合成した結果を示す図である。
【発明を実施するための形態】
【0010】
図1は、画像処理装置の構成を示すブロック図である。画像処理装置として、PCを使用すると想定して説明する。
CPU101は、中央演算ユニット(Central Processing Unit)で、他の機能ブロックや装置の制御を行う。ブリッジ部102は、CPU101と他の機能ブロックの間でデータのやり取りを制御する機能を提供している。
【0011】
ROM(Read Only Memory)103は読み込み専用の不揮発メモリであり、BIOS(Basic Input/Output System)と呼ばれるプログラムが格納されている。BIOSは画像処理装置が起動したときに最初に実行されるプログラムであり、2次記憶装置105、表示装置107、入力装置109、出力装置110などの周辺機器の基本入出力機能を制御するものである。
【0012】
RAM(Random Access Memory)104は、高速の読み/書き可能な記憶領域を提供する。
【0013】
2次記憶装置105は、大容量の記憶領域を提供するHDD(Hard Disk Drive)である。BIOSが実行されると、HDDに格納されているOS(Operating System)が実行される。OSはすべてのアプリケーションで利用可能な基本的な機能や、アプリケーションの管理、基本GUI(Graphical User Interface)を提供する。アプリケーションは、OSが提供するGUIを組み合わせることで、アプリケーション独自の機能を実現するUIを提供できる。
【0014】
なお、上記のOSや、他のアプリケーションの実行プログラムや作業用に使用しているデータは、必要に応じてROM103または2次記憶装置105に格納される。また、本実施例の処理を実行する画像処理アプリケーションは、ROM103または2次記憶装置105に格納され、ユーザの操作で起動するアプリケーションとして提供される。以下で説明する処理は、CPU101が、ROM103や2次記憶装置105に記憶されている、OS、画像処理アプリケーション等のプログラムを、RAM104をワークメモリとして実行することで実現する。
【0015】
表示制御部106は、各種の画像を表示装置107に表示させるための制御を行う。表示される画像は、例えば、2次記憶装置105に記憶されている画像や、OSやアプリケーションに対して行われるユーザの操作の結果を示すGUIの画像である。また、表示装置107には液晶ディスプレイや、CRT(Cathode Ray Tube)ディスプレイが使用できる。
【0016】
I/O制御部108は、複数の入力装置109、出力装置110とのインターフェースを提供するものである。代表的なインターフェースとして、USB(Universal Serial Bus)やPS/2(Personal System/2)がある。
【0017】
入力装置109は、キーボード、マウスといった操作デバイスであり、I/O制御部108は、入力装置109を介してユーザの指示を画像処理装置に入力する。
【0018】
I/O制御部108は、各種の出力装置110を接続する。出力装置110は例えばプリンタであり、I/O制御部が印刷データを出力装置に出力することで、印刷データに対応する画像を印刷させることができる。
【0019】
なお、画像処理装置には、デジタルカメラ、USBメモリ、CF(Compact Flash)メモリ、SD(Secure Digital)メモリカードといった記憶装置などを接続することもできる。そして、I/O制御部は、そのデジタルカメラやメモリに画像データなどのデータを転送することや、逆にデジタルカメラやメモリからデータを取得することも可能である。
【0020】
本実施例では、複数枚のフレームから構成される動画像から、合成対象のフレームを複数抽出して、その抽出された複数のフレームを合成する。その動画像のデータは、上記の2次記憶装置105や、画像処理装置に接続されているUSBメモリやCFメモリ、SDメモリカード等から供給される。
【0021】
本実施例では、合成対象の複数の画像のうちの1つの画像を主画像として、合成対象の複数の画像のうちの、主画像以外の比較画像のそれぞれと、主画像との差分を求める。そして、比較画像のそれぞれにおける、主画像との差分があった差分領域の画像を、主画像に合成する。すると、合成対象の複数の画像において移動するオブジェクトがあった場合に、比較画像のそれぞれにおけるオブジェクトが主画像に合成される。よって、主画像におけるオブジェクトの位置とは異なる位置にあるオブジェクトが、主画像に合成されることになる。
【0022】
この合成処理について、図3を用いて説明する。図3は、合成対象の複数の画像を示す図である。画像301〜305は、画像における右上から左下へ向かって進む自動車を動画像として撮影し、その動画像から静止画像として抽出された画像である。なお、図3の301が時間的に先頭の画像であり、305が最後の画像である。
【0023】
ここでは、複数の画像のうち時間的に最後の画像を主画像とし、その他の画像を比較画像とする。よって、図3においては305が主画像、301から304が比較画像となる。ここでは一例として時間的に最後の画像を主画像とするが、他の画像を主画像としても良い。例えば、時間的に最初の画像や真中の画像、ユーザが指定した画像などを主画像としても良い。
【0024】
本実施例では、主画像305と、比較画像301〜304のそれぞれとの差分を取る。そして、比較画像301〜304のそれぞれにおける主画像との差分があった差分領域の画像を、主画像305に合成する。すると、比較画像301〜304のそれぞれにおけるオブジェクト3011〜3014は、主画像におけるオブジェクト3015とは異なる位置に存在するため、主画像305に対する差分領域として特定される。すると、オブジェクト3011〜3014は、比較画像における差分領域の画像として、主画像に合成される。
【0025】
図5は、主画像と、比較画像における差分領域の画像とを合成した結果を示す図である。この図5に示すように、オブジェクト3011〜3014が主画像に合成される。すると、この合成画像を確認したユーザは、オブジェクト3011〜3014の車が移動していることを確認することができる。
【0026】
しかしながら、この図5においては、本来、主画像である305に存在したオブジェクト3015が消えてしまう場合がある。これは、上記のように、比較画像における、主画像との差分がある差分領域の画像を、主画像に合成することに起因する。即ち、主画像305では、画像の左下に車(オブジェクト3015)があるが、比較画像においてはその位置に車は存在しない。すると、主画像におけるオブジェクト3015の領域に対応する、比較画像301〜304のそれぞれにおける領域も、差分領域として特定されてしまう。よって、比較画像301〜304における左下の領域の画像も、主画像に合成される。このとき、比較画像301〜304における左下の領域は、車ではなく道路の領域であるため、この領域の画像を主画像に合成すると、主画像305におけるオブジェクト3015に、道路の画像が上書きされてしまう。これにより、図5に示す合成画像において、オブジェクト3015が消えてしまう。
【0027】
このように、オブジェクト3015が消えてしまう理由について、図4を用いてさらに詳細に説明する。図4は、主画像と、比較画像との差分を示す差分画像を示す図である。
【0028】
この差分画像は、主画像を構成する複数の画素のそれぞれの画素値と、比較画像において、当該複数の画素のそれぞれに対応する座標にある画素の画素値との差分を取ることにより、作成することができる。図4に示す例では、差分の強度をグレースケールで示しており、色が黒に近い領域ほど、主画像との差分が少なく、色が白に近い領域ほど、主画像との差分が大きいものとする。そして、黒の領域は主画像との差分が無く、白は差分が最大であることを表している。図4の例では、差分画像401〜404のそれぞれが、図3における画像301〜304のそれぞれと主画像との差分を取得したときの差分画像である。なお、主画像との差分を判定するときの、画素の画素値は、輝度や濃度など各種の画素レベルであってよい。そして、主画像と比較画像における画素値の差分が、差分の度合いを示す差分値となる。以下の説明では、この差分値のことを差分強度と呼ぶ。
【0029】
図4の差分画像を確認すると、差分画像401〜404において、移動体(オブジェクト)である自動車の領域には差分が存在することがわかる。加えて、主画像の自動車の領域(3051)すなわち4011〜4041についても差分が存在する。
【0030】
本実施例では、図4に示す差分画像において、比較画像において、主と画像との差分が大きい(白に近い)領域を合成対象の領域として、その領域の画像を主画像に合成する。そのため、比較画像における、図4の4011〜4041に対応する領域が合成対象となり、比較画像における背景の画像が主画像に合成されるため、主画像の移動オブジェクト(3015)が消えてしまう。
【0031】
以上の説明のように、本実施例では、合成対象の複数の画像のうちの主画像に、当該複数の画像のうちの比較画像における差分領域の画像を合成すると、その複数の画像のそれぞれに含まれるオブジェクトを、簡単な処理で合成することができる。しかし、そのように単純に合成してしまうと、主画像におけるオブジェクトが消えてしまう場合がある。
【0032】
従って、本実施例では、比較画像における、主画像との差分の領域を主画像に合成することで主画像から消えてしまったオブジェクトを、合成画像に追加する。
【0033】
図2は、本実施例における、複数の画像の合成処理を示すフローチャートである。図2に示す処理は、ユーザによる指示に応じてアプリケーションを起動させて、該アプリケーション上で行われる。具体的には、CPU101が、2次記憶装置105やROM103に記憶されている、アプリケーションに対応するプログラムを実行して、当該アプリケーションが起動させる。そして、当該アプリケーションのプログラムに従って、CPU101がRAM104をワークメモリとして実行することにより、図2のフローチャートの処理を実現する。
【0034】
S201では、ユーザの指示に応じて選択された、合成対象の複数の画像を取得する。このS201では、ROM103や2次記憶装置105、またI/O制御部に接続されているUSBメモリやメモリカード等の各種のメモリに記憶されている画像を、合成対象の画像として取得する。また、この合成対象の複数の画像は、動画像から抽出されたフレームや、デジタルカメラによる連写撮影で連続して撮影された画像である。あるいは時間的には遠くとも、定点観測カメラや天体の動きを追う天体カメラなど、同様の被写体を撮影した画像にも適用できる。
【0035】
合成対象の画像の取得処理の一例として、動画像を再生して表示装置に表示されているときに、ユーザがその動画像を確認しながら入力装置を用いて選択した複数のフレームを、合成対象のフレームとして抽出する。そのときに、例えば抽出対象のフレームのフレーム間隔や時間間隔をユーザに指定させて、その指定に従って動画像からフレームを抽出すれば、一定時間ごとのフレームを抽出することができる。このように抽出されたフレームを合成することで、その合成画像を見たユーザは、フレームに含まれるオブジェクトが一定時間ごとにどのように移動したか確認することができる。
【0036】
ここでは静止画像の一例としてRGB(レッド、グリーン、ブルー)信号で構成されたビットマップ形式で動画像から切り出し、切り出した静止画像を、RAM104に格納する。尚、取得する画像は3つ以上が好ましい。
【0037】
なお、動画像データのフォーマットによっては、フレーム間の差分を用いてデータ圧縮を行う場合があるが、この場合、動画像データをデコードして、ビットマップ形式とした静止画像を抽出する。即ち、上記のような動画像データは、動画像におけるフレームと、当該フレームの前後のフレームとの差分を、当該フレームの情報としてエンコードする。そして、その動画像データをデコードするときには、フレーム間の差分データと、デコード済みのフレームとにより、フレームを作成する。本実施例では、このようにデコードされた静止画像を抽出する。
【0038】
このようにS201で合成対象の画像が取得されると、S202〜S207において、上述したような、比較画像における差分領域の画像と、主画像との合成処理を行う。ここでは、このS202からS207までの合成処理を仮合成と呼ぶ事とする。
【0039】
S202ではRAM104における仮合成画像領域へ主画像を代入する。この仮合成画像領域は、RAM104に設けられたバッファであり、主画像と同じ縦画素数、横画素数、チャンネル数(R、G、Bの3チャンネル)を持つ。後述するが、この仮合成画像領域に、主画像に続いて、比較画像における差分領域の画像を書き込むことで、主画像と、比較画像の差分領域の画像との合成を行う。また、この仮合成画像領域に格納されている画像を、仮合成画像と呼ぶ。
【0040】
S202の処理は、具体的には、仮合成画像の全画素(Rt(x、y)、Gt(x、y)、Bt(x,y))の値を、主画像の同座標の画素(Rm(x、y)、Gm(x、y)、Bm(x、y))で置き換える。
【0041】
また、後述するが、本実施例では主画像と、比較画像の差分領域の画像とを合成するときに、各画像を構成する複数の画素に重みを付け、加重平均処理を行う。そして、主画像の全画像に対する重みは1とする。そのため、重み合計画像(Ws(x,y))の全画素に1を代入する(下式参照)。この重み合計画像は主画像と同じ縦画素数、横画素数を持つ1チャンネルの画像である。尚、仮合成画像と同様にオーバーフローしないサイズのメモリが必要である。また、この代入は、重み合計画像を格納するためのバッファをRAM104に設け、重み合計画像の画素値をこのバッファに代入する。ここでは、このバッファを、重み合計画像領域と呼ぶ。
【0042】
以上のように、S202では、仮合成画像を構成する全ての画素のそれぞれに対して、主画像の画素値の代入を行い、また重み合計画像に重みを代入する。よって、以下の式で示す処理を実行する。尚、以下の式では「=」は代入を表し、左辺に右辺の内容を格納する。また、(x,y)は画像中の座標であり、画素単位での処理を表す。
Rt(x,y)=Rm(x,y)
Gt(x,y)=Gm(x,y)
Bt(x,y)=Bm(x,y)
Ws(x,y)=1
【0043】
つまり、S202の処理は、仮合成画像領域に主画像をコピーし、重み合計画像を1で初期化することになる。仮合成画像領域に主画像をコピーする理由は、主画像において比較画像と同様の内容の領域があった場合に、その領域の画素の画素値を、主画像の画素値のままにするためである。このような画素は、比較画像の画素値により重み付け加算(後述)をされないため、主画像の画素値のまま仮合成画像領域に残る。よって、仮合成画像を出力したときに、主画像の画素値として出力することができる。
【0044】
また、重み合計画像を1にする理由は、比較画像が重み付け加算された画素において、主画像の重みを十分に小さくする事によって、主画像の画素値の影響を整数演算の精度で消える、あるいは無視できる程にするためである。
【0045】
尚、別の方法として、仮合成画像および重み合計画像を0で初期化し、重み付け加算の後に主画像を合成する方法もある。重み付け加算を行った後も重み合計が0の画素は比較画像による重み付け加算がない画素であり、主画像の画素値のまま出力する画素である。重み付け加算後に重み合計画像の値が0の画素について、同座標の仮合成画像の画素の値を同座標の主画像の画素の値に置き換える。この際、該重み合計画像の画素値を1に置き換える。
【0046】
S203はループの開始を、S206はループの終端を表し、その間が一連のループである。ここでは、合成処理を実行した比較画像の数を示す変数Iに1を代入し、I>比較画像数となった時に処理のループを終える。以後、該ループ内では合成対象として1番目の比較画像を比較画像[1]、2番目の比較画像を比較画像[2]のように表し、変数Iの数値の番号の比較画像を比較画像[I]と表す。尚、比較画像数は、S201で取得した複数の画像から、主画像の数である1を引いた数である。
【0047】
S204では、主画像と比較画像[I]とにおいて対応する画素毎に、主画像と比較画像[I]との差分強度を算出する。なお、このとき主画像と比較画像[I]において同様の内容の領域がある場合には、その領域同士で差分を取ることが望ましい。よって、例えば撮影時にカメラを固定せずに撮影した場合、主画像と比較画像[I]との位置を合わせる。この位置合わせ処理の例として、主画像と比較画像[I]の背景の位置を合わせるよう、画像間の全体的な動きベクトルを求め、求めた動きベクトルに従って比較画像[I]を変形させ、主画像と画角を合わせる。動きベクトルはブロックマッチング法など、公知の技術を用いれば求める事ができる。また、画像の変形はアフィン変換など、公知の技術を用いることにより実現可能である。ここでは説明を容易にするため、上記の複数の画像はすべてカメラを固定して撮影した動画像から切り出した画像とする。
【0048】
S204では、主画像の全ての画素について、対応する比較画像[I]の画素との差分強度を計算する。差分強度(D(x,y))は下式のように、主画像の画素のR、G、B値(Rm(x,y),Gm(x,y)、Bm(x,y))と、比較画像[I]の画素のR、G、B値(Rs(x,y),Gs(x,y)、Bs(x,y))の色空間上の距離で求める。
D(x,y)=√(Rm(x,y)−Rs(x,y))^2+(Gm(x,y)−Gs(x,y))^2+(Bm(x,y)−Bs(x,y))^2
【0049】
この差分強度D(x,y)は、主画像と比較画像とにおいて対応する画素の、主画像と比較画像とにおける差分を示す。xおよびyは画像中の画素の座標を表し、また、^はべき乗を示す。
【0050】
なお、差分強度の他の例として、R、G、B値それぞれの差の絶対値の和を差分強度としても良いし、RGB値をCIELAB等、他の色空間へ変換し、その色空間の距離を差分強度としても良い。
【0051】
上記のように求めた差分強度(D(x,y))を、RAM104に設けられたバッファである、差分強度画像領域へ代入する。また、この差分強度画像領域に格納される画像を、差分強度画像と呼ぶ。差分強度画像は主画像と同じ縦画素数、横画素数を持ち、差分強度画像領域の、各画素に対応する領域は、差分強度の最大値がオーバーフローせず格納できるサイズである。そして、D(x,y)を代入するときには、主画像と比較画像における全画素に対応する、D(x,y)を代入する。
【0052】
主画像の全ての画素について、比較画像との差分強度を求めると、フローはS205へ進む。S205ではS204で求めた差分強度に基づいて重み付け加算処理を行う。
【0053】
このとき、比較画像[I]の各画素について、重み付け加算処理を行うか決定する。この処理は、まず差分強度画像の各画素について閾値の判定を行い、差分強度が閾値を超える画素については重み付け加算を行い、閾値を超えない画素は、重み付け加算を行わない。これは、撮影時の明るさの微妙な変化やカメラのセンサーノイズなど、画像内のノイズの影響を受けないようにする工夫である。閾値は予め定めた数値でも良いし、二値化処理など、公知の技術で求めても良い。
【0054】
差分強度が閾値を超えた画素について、比較画像[I]の画素値(Rs(x,y)、Gs(x,y)、Bs(x,y))に重みを乗算し、仮合成画像の同座標の画素(Rt(x,y)、Gt(x,y)、Bt(x,y))に加算する。重み(W(x,y))は差分強度の値とする。この重み付け加算を式で表すと下記のようになる。
W(x,y)=D(x,y)
Rt(x,y)=Rt(x,y)+Rs(x,y)×W(x,y)
Gt(x,y)=Gt(x,y)+Gs(x,y)×W(x,y)
Bt(x,y)=Bt(x,y)+Bs(x,y)×W(x,y)
【0055】
ここでは重み(W(x,y))は差分強度の値とする。そのため、主画像と比較画像とにおいて、内容が大きく異なる領域の画素の場合、差分が大きいため上記の重みが大きく、比買う画像の画素値が大きく反映される。なお、ここでは重み(W(x,y))は差分強度の値とするが、差分強度に係数を乗じた値や閾値と差分強度の最大値との間を0から255で正規化するなどしても良い。
【0056】
また上記のように、差分強度画像の画素(x,y)が閾値を越えない場合、重み付け加算処理を行わないため、W(x,y)には0が代入される。
【0057】
S205では合成枚数画像の更新も行う。この合成枚数画像は、仮合成画像における各画素の、合成が行われた比較画像の枚数を示す。即ち、仮合成画像における各画素の、比較画像との合成が行われた回数を示す。合成枚数画像はRAM104に設けられたバッファであり、主画像と同数の縦画素数、横画素数を持つ。また、合成枚数画像は予め0で初期化されている。差分強度画像の画素(x,y)が前記の閾値を超える場合のみ、合成枚数画像の同座標(Ws(x,y))へ1を加算して更新する(式参照)。
Ws(x,y)=Ws(x,y)+1
このような処理を全ての画素について行うことにより、仮合成される比較画像数を記憶することになる。
【0058】
尚、S204で求めた差分強度を用いてS205において重み付け加算処理を行ったが、差分強度画像にぼかし処理を施した画像を用いてS205における仮画像処理を行っても良い。これは、合成した画像の境界に段差が発生し、違和感が生まれる事を防ぐためである。
【0059】
S206はループの終端である。比較画像の全てに対してループ内の処理を終えていない場合はS204へ戻る。全ての比較画像についてループ内の処理を終えている場合はS207へ進む。
【0060】
S207では加重平均処理を行う。処理は仮合成画像の画素値を重み合計画像の画素値で除算し、仮合成画像の画素値を置き換える(式参照)。尚、以下の式では「/」は除算を表す。
Rt(x,y)=Rt(x,y)/Ws(x,y)
Gt(x,y)=Gt(x,y)/Ws(x,y)
Bt(x,y)=Bt(x,y)/Ws(x,y)
【0061】
尚、加重平均処理後の画像を格納するバッファを別に設け、そこに結果を格納しても良い。S207の処理までで仮合成の処理が行われた事になる。これにより、各比較画像において主画像と同様の内容の領域については、重みが0になるため合成が行われず、主画像と異なる内容の領域については、その差分が大きいほど重みが大きくなり、合成が行われることになる。
【0062】
上述したS201〜S207の処理により、仮合成画像領域において、主画像と、比較画像における、主画像との差分が閾値を越える領域の画像とが合成される。
【0063】
尚、仮合成画像領域は、上記のように、主画像及び比較画像の画素値に、重みを乗算したものを、合成対象の画像数分格納するため、そのデータをオーバーフローせず格納できるサイズのメモリが必要である。
【0064】
図5は、仮合成後の画像を示す図である。比較画像301から304のオブジェクトである自動車がそれぞれ合成されている。ここで、501の破線部には主画像のオブジェクトである自動車が存在しない。これは、図4の401から404に示すように主画像のオブジェクト領域(4011〜4041)に差分強度が存在するため、S205において301から304の非オブジェクト部(背景)が合成されているためである。仮にこの画像を出力結果とした場合、ユーザが305を、合成対象として選択しているのにも関わらず、305のオブジェクトである3015が存在しない結果となる。
【0065】
図6は、上述した合成枚数画像を示す図である。この合成枚数画像は、仮合成画像の各画素に対して、合成される比較画像の枚数を示すデータとして、RAM104に記憶しているものの、その画像は表示しなくてもよい。図6では、説明のために、合成枚数画像を可視化している。
【0066】
図6の合成枚数画像における黒の領域は、全ての比較画像について、重み付け加算が行われなかった箇所であり、反対に白の領域は、全ての比較画像について重み付け加算が行われた箇所である。中間調(グレー)は、比較画像のうちのいくつかについて、重み付け加算した箇所であり、黒に近い程合成画像数が少なく、白に近い程合成画像数が多い。
【0067】
601から604の領域はそれぞれ、比較画像301〜304のうちの1枚の画像に対して、内容が異なる領域である。そのため、601〜604の領域は、それぞれ1回ずつ重み付け加算が行われており、この領域はグレーを示す。
【0068】
一方、605の領域は、比較画像301〜304の全てに対して、内容が異なる領域である。よって、比較画像の全てに対して、差分強度が閾値を超えており、比較画像の全てに対して重み付け加算が行われている。このように、比較画像の全てに対して重み付け加算が行われる領域は、比較画像の全てに対して大きな差分がある領域であるため、主画像のオブジェクトがある領域である確率が高い。特に、合成枚数画像における値が全比較画像の合計枚数に対応する領域があった場合、主画像におけるその領域の画像は、比較画像のいずれにも含まれていないと判断することができる。
【0069】
そこで、図2のS208では、合成枚数画像の値に応じて主画像を合成する。即ち、仮合成画像において、合成枚数画像の値が高い領域は、図6に示す白の領域のように、主画像におけるオブジェクトに対応する領域であることが考えられる。そこで、仮合成画像における、合成枚数画像の値が大きな画素については、主画像の画素値を上書きすることで、主画像を合成する。言い換えれば、仮合成画像における、合成枚数画像の値が大きな領域を特定して、その領域に対応する主画像における領域を、合成対象の領域として決定する。そして、主画像における合成対象の領域の画像を、仮合成画像に合成する。
【0070】
このように主画像を仮合成画像に合成するときには、主画像の合成の割合(Wm(x,y))を求め、その割合に従って合成を行う。この割合を求めるために、合成枚数画像を正規化する関数を用いる。
【0071】
図7は、合成枚数と主画像の割合を示す図であり、正規化関数の特性の例をグラフ化している。グラフの横軸は関数の入力であり、合成枚数画像の画素値を表す。縦軸は関数の出力であり、主画像の合成の割合(Wm(x,y))の値(0〜255)を表す。関数は701のように合成枚数が1枚以下の場合は出力を0とし、合成枚数が1を超える場合に出力の値を持つ。図6においては、合成枚数が1である601から604の領域は出力が0となり、合成枚数が最大(比較画像数)である605の領域すなわち主画像のオブジェクト領域の出力は最大(255)となる。よって、601〜604の領域については、主画像の合成が行われないため、仮合成画像における、601〜604の領域のオブジェクトに影響は無い。
【0072】
なお、関数の他の例として702や703のような入出力の関係にしてもよい。関数は数式によるものでも良いし、ルックアップテーブル(LUT)を動的に作成、あるいは予め保持しておいて用いても良い。
【0073】
尚、ガウシアンフィルタなど公知の手法を用いて合成枚数画像にぼけを生じさせ、それを関数の入力としても良い。これは、合成結果にノイズの影響や不自然な境界線を生じさせない技術である。合成枚数画像のぼけ画像作成には、小数点演算や正規化処理など、整数演算の精度以上の計算が必要である。
【0074】
S208では、主画像の合成の比率に基づき、S207で加重平均後の仮合成画像と主画像を合成し、合成された画像(合成結果画像)を、RAM104における合成結果画像領域へ格納する。合成結果画像領域はRAM104に設けられたバッファであり、主画像と同じ縦画素数、横画素数、チャンネル数を持つ画像である。合成結果画像の画素のR,G,Bの値をRr(x,y)、Gr(x,y)、Br(x,y)と表すと、下記の式に従って、合成結果画像を求める。
Rr(x,y)=(Rm(x,y)×Wm(x,y)+Rt(x,y)×(255−Wm(x,y)))/255
Gr(x,y)=(Gm(x,y)×Wm(x,y)+Gt(x,y)×(255−Wm(x,y)))/255
Br(x,y)=(Bm(x,y)×Wm(x,y)+Bt(x,y)×(255−Wm(x,y)))/255
【0075】
上記の式に従って、主画像の合成処理を、仮合成画像における全画素について行うと、仮合成画像における、比較画像の合成枚数が多い領域に、主画像が合成される。この合成処理の結果の画像を図8に示す。
【0076】
この図8に示すように、図5において、S207における比較画像の合成により、仮合成画像から消えていた主画像のオブジェクトが、801のように結果画像では存在する。
【0077】
次に、S209では、S208で得られた合成結果画像を出力する。出力の例として、例えば、表示制御部106により、表示装置107へ合成結果画像を表示する出力方法や、出力装置110へ合成結果画像を送信して、印刷用紙に印刷させる出力方法がある。他にも、合成結果画像を2次記憶装置(HDD)105へファイルとして記憶してもよいし、不図示のネットワークを用いて、画像処理装置の外部へ合成結果画像を転送してもよい。
【0078】
次に、合成対象の複数の画像として、図3で示した画像群とは別の画像群で、本実施例の合成処理を施した例を以下に説明する。図9はS201で取得した合成対象の複数の画像である。図3に示す複数のフレームに加え、動画像における、その複数のフレーム間のフレームも抽出したものである。
【0079】
この図9に示す合成対象の複数の画像において、909が主画像、901から908が比較画像となる。図9に示す画像群を入力とし、S202からS207まで処理(つまり仮合成)を行った後の画像を図12に示す。上記で図5の破線部501を例として示したのと同様に、破線部1209には主画像のオブジェクトである自動車が存在しない。これは、上述したとおり主画像のオブジェクト領域に主画像と比較画像との差分強度が存在し、S205の処理において比較画像の非オブジェクト部(背景)が合成されているためである。
【0080】
S207までの処理で図12の1209のように主画像のオブジェクトが一度消えてしまうが、その後、S208の処理を経る事で合成結果画像においては、そのオブジェクトが合成されている。
【0081】
図10は、このときの合成結果画像を示す図である。図10の1009のように、仮合成で消えたオブジェクトが、再度現れる。このように、本技術では処理の過程で消えてしまう主画像のオブジェクトを復活させる事ができる。
【0082】
ここで、主画像のオブジェクトである1009は、比較画像のオブジェクトである1008などと比べて重なり部分の像がはっきり見える。これは、S208において合成枚数に基づいて、主画像のオブジェクトを後から合成するためである。これにより、主画像が比較的際立って見える。そして、図10に示す例では、動画像における時間において、最後の画像(909)を主画像としているため、この909に含まれているオブジェクトがはっきりと確認できる。これにより、ユーザは、動画における時間において、最後のフレームに含まれるオブジェクトを適切に確認することができ、そのオブジェクトが、どのように移動してきたのか把握することができる。
【0083】
また、このように、合成結果画像において、動画像における最後のフレームに含まれるオブジェクトをはっきりさせることの効果として、残像を表現するためのエフェクト効果がある。例えば、絵画やアニメ、コンピュータグラフィックスなどにおいて、時間的に最後のオブジェクトを比較的はっきりと表示し、それ以前のものはぼかしたり、像をはっきり描画しないことにより、オブジェクトが移動した軌跡や残像を表現することができる。
【0084】
また、主画像の選択の他の例として、動画像における時間における最後の画像ではなく、最初の画像である901を主画像とした処理結果を図11に示す。1101は主画像のオブジェクトであり、比較画像のオブジェクトに比べて重なり部分の像がはっきり見える。この場合、初めのフレームに含まれるオブジェクトを確認して、そのオブジェクトが、その後どのように動いたのか把握することができる。
【0085】
このように、主画像を最後のフレームとするか、最後のフレームとするか、またはその他のフレームにするかについては、上述のように、ユーザの指示に応じて決定することができる。しかしこれに限らず、主画像をどのフレームにするか自動的に選択してもよい。例えば、複数のフレームにおけるオブジェクトの動きを判定して、その動きに応じて主画像を決定してもよい。
【0086】
例えば、フレームを抽出する動画像が、撮影装置に近づいてくるオブジェクトを撮影したものであるとする。このとき、この動画像から抽出されたフレームのうち、最後のフレームにおいて、オブジェクトが最も大きく出力される。そこで、最後のフレームを主画像として本実施例の合成処理を実行すると、最後のフレームのオブジェクトが最も大きく、またはっきりと出力される。これにより、ユーザは、フレームに含まれるオブジェクトを明確に認識した上で、そのオブジェクトがどのように移動してきたのか把握することができる。
【0087】
また、逆に、動画像が、撮影装置から遠ざかるオブジェクトを撮影したものである場合には、最初のフレームを主画像として本実施例の合成処理を実行すると、最初のフレームのオブジェクトが最も大きく、またはっきりと出力される。これにより、ユーザは、フレームに含まれるオブジェクトを明確に認識した上で、そのオブジェクトがどのように移動していったのか把握することができる。
【0088】
なお、動画像に含まれるオブジェクトが、撮影装置に近づいてきたものか、または遠ざかったものであるかについては、フレームを解析することにより判定することができる。例えば、複数フレームのそれぞれに含まれるオブジェクト領域を判定し、その領域が徐々に大きくなっていた場合には、オブジェクトが近づいたものと判定することができる。
【0089】
また、オブジェクトにおける複数点の動きベクトルによっても、上記の判定を行うことができる。即ち、オブジェクトにおける複数点のそれぞれに対応する複数の動きベクトルが収束していた場合、そのオブジェクトが遠ざかったものと判定することができる。また逆に、複数の動きベクトルが拡散していた場合、オブジェクトが近づいたものと判定することができる。特に、動画像データがMPEG(Moving Picture Experts Group)などのフォーマットであった場合、複数フレームにおける動きベクトルを利用してデータ圧縮を行っているため、この動きベクトルを用いて上記の判定を行うこともできる。
【0090】
以上の実施例によれば、図2のS202〜S207において、比較画像のそれぞれと、主画像との差分を取得して、各比較画像における、主画像との差分が大きな領域の画像を、主画像に合成する。そして、図2のS208において、その合成が行われた比較画像の枚数が大きな領域に主画像を合成する。
【0091】
これにより、S202〜S207の合成処理により得られた仮合成画像において、主画像から消えてしまったオブジェクトを、仮合成画像に合成することができる。よって、ユーザにより選択された合成対象の画像(主画像と比較画像)におけるオブジェクトを適切に合成することができる。
【0092】
また、上記のように、本実施例では、合成対象の複数の画像のうちの1枚の主画像に、合成対象の画像のうちの、主画像以外の比較画像を合成している。そのため、当該合成対象の複数の画像において移動しているオブジェクトを含まない背景画像を改めて作成しなくても、適切な合成を行うことができる。
【0093】
従って、複数の画像に含まれるオブジェクトを1つの画像に合成するときに、簡単な処理で適切に合成することができる。
【0094】
なお、上記の実施例の説明で、合成枚数画像を作成するために、全ての比較画像に対して、主画像との合成を行ったか確認したが、処理速度向上のために、このような確認を、一部の比較画像に対して実行してもよい。その際は図7に示すグラフの横軸のMAXを比較画像数ではなく、合成枚数画像を作成した比較画像の数にする必要がある。
【0095】
また、上記の実施例の説明ではS204で、比較画像の全画素に対して差分強度を算出した後に、S205において、画像毎の重み付け加算処理および合成枚数画像の更新を行った。しかし、双方の工程を結合し、S204とS205の処理を、画素単位に順次行っても良い。つまり1つの画素について、差分強度の算出、重み付け加算処理、合成枚数画像の更新を行い、1つの画素の処理が終了すれば次の画素の処理へ移るという画素単位の処理をしても良い。
【0096】
なお、以上の実施例では、合成枚数画像を作成し、それにより主画像のオブジェクトの領域を合成対象として特定したが、主画像のオブジェクトの領域の算出は他の方法を用いても良い。例えば、比較画像から主画像への動きベクトルを求め、動きベクトルが示した先が主画像のオブジェクト領域であると判断する方法などがある。また、複数画像が動きベクトルを含む圧縮を施したフォーマットの動画像から切り出したものであれば、該動きベクトルを利用しても良い。そして、主画像において、動きベクトルにより特定されたオブジェクトの領域の画像を、仮合成画像に合成する。
【0097】
この場合、主画像に合成された比較画像の数が所定の閾値を越える場合に、動きベクトルにより特定された、主画像における合成対象の領域を、仮合成画像に合成するようにしてもよい。
【0098】
(他の実施形態)
前述した実施形態の機能を実現するように前述した実施形態の構成を動作させるプログラムを記録媒体に記憶させ、該記録媒体に記憶されたプログラムをコードとして読み出し、コンピュータにおいて実行する処理方法も上述の実施形態の範疇に含まれる。
【0099】
該記録媒体は、コンピュータ読み取り可能な記録媒体である。また、前述のプログラムが記憶された記録媒体はもちろんそのプログラム自体も上述の実施形態に含まれる。かかる記録媒体としてはたとえばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、CD―ROM、磁気テープ、不揮発性メモリカード、ROMを用いることができる。
【0100】
また前述の記録媒体に記憶されたプログラム単体で処理を実行しているものに限らず、他のソフトウエア、拡張ボードの機能と共同して、OS上で動作し前述の実施形態の動作を実行するものも前述した実施形態の範疇に含まれる。
【0101】
また本発明は、1つのプロセッサがプログラムを実行する場合に限らず、複数のプロセッサが協働することによっても実現できるものである。
【符号の説明】
【0102】
101 CPU
102 ブリッジ部
103 ROM
104 RAM
105 2次記憶装置


【特許請求の範囲】
【請求項1】
複数の画像に含まれているオブジェクトを1つの画像に合成するための画像処理装置であって、
合成対象の複数の画像を取得する取得手段と、
前記取得手段により取得された合成対象の複数の画像のうちの第1の画像と、当該複数の画像のうちの第2の画像とに基づき、当該第2の画像における、当該第1の画像に対する差分を有する差分領域を特定する特定手段と、
前記第2の画像における、前記特定手段により特定された差分領域の画像を、前記第1の画像に合成する第1の合成手段と、
前記第1の画像における前記第2の画像に対する差分を有する差分領域を、当該第1の画像と当該第2の画像とに含まれているオブジェクトに対応する合成対象の領域として決定する決定手段と、
前記決定手段により決定された前記第1の画像における合成対象の領域の画像を、前記第1の合成手段による合成で得られた合成画像に、さらに合成する第2の合成手段と、
を有することを特徴とする画像処理装置。
【請求項2】
前記決定手段は、前記第1の合成手段により前記第1の画像に合成が行われた前記第2の画像の数に基づき、当該第1の画像における前記合成対象の領域を決定することを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記第2の合成手段は、前記第1の合成手段により前記第1の画像に合成が行われた前記第2の画像の数に基づく重みで、当該第1の画像における前記合成対象の領域の画像に重み付けを行い、重み付けされた当該合成対象の領域の画像を、前記合成画像にさらに合成することを特徴とする請求項2に記載の画像処理装置。
【請求項4】
前記特定手段は、前記第2の画像において、前記第1の画像との差分を差分値が所定の閾値を越える領域を、差分領域として特定し、
前記第1の合成手段は、前記第2の画像における前記差分領域の画像を、前記第1の画像に合成し、前記第2の画像における前記差分領域ではない領域の画像は、前記第1の画像に合成しないことを特徴とする請求項1乃至3のいずれか1項に記載の画像処理装置。
【請求項5】
複数の画像に含まれているオブジェクトを1つの画像に合成するための画像処理方法であって、
合成対象の複数の画像を取得する取得工程と、
前記取得工程において取得された合成対象の複数の画像のうちの第1の画像と、当該複数の画像のうちの第2の画像とに基づき、当該第2の画像における、当該第1の画像に対する差分を有する差分領域を特定する特定工程と、
前記第2の画像における、前記特定工程において特定された差分領域の画像を、前記第1の画像に合成する第1の合成工程と、
前記第1の画像における前記第2の画像に対する差分を有する差分領域を、当該第1の画像と当該第2の画像とに含まれているオブジェクトに対応する合成対象の領域として決定する決定工程と、
前記決定工程において決定された前記第1の画像における合成対象の領域の画像を、前記第1の合成工程における合成で得られた合成画像に、さらに合成する第2の合成工程と、
を有することを特徴とする画像処理方法。
【請求項6】
請求項5に記載の画像処理方法をコンピュータに実行させることを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate


【公開番号】特開2013−26933(P2013−26933A)
【公開日】平成25年2月4日(2013.2.4)
【国際特許分類】
【出願番号】特願2011−161435(P2011−161435)
【出願日】平成23年7月23日(2011.7.23)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】