画像処理装置、画像変換方法及びプログラム
【課題】複雑な計算を必要とせずに、各画像を位置合わせするための変換式または特徴点対応のインライア集合を高速に求める。
【解決手段】少なくとも2つの画像を取得し(ステップS100)、第1の画像から一定の制約の下で直線上に並んだ特徴点を選択すると共に、この選択された特徴点を第2の画像上で追跡する(ステップS101〜S102)。この追跡により追跡された各特徴点から所定数の点を選び、これらの点を元に第2の画像上で直線上に並んだ特徴点を評価点として再帰的に生成する(ステップS103〜S106)。そして、各評価点と第2の画像上で追跡された各特徴点との適合性を評価し(ステップS107〜S110)、最も適合性の高かった点の集まりを用いて画像間の変換式を算出する(ステップS112)。
【解決手段】少なくとも2つの画像を取得し(ステップS100)、第1の画像から一定の制約の下で直線上に並んだ特徴点を選択すると共に、この選択された特徴点を第2の画像上で追跡する(ステップS101〜S102)。この追跡により追跡された各特徴点から所定数の点を選び、これらの点を元に第2の画像上で直線上に並んだ特徴点を評価点として再帰的に生成する(ステップS103〜S106)。そして、各評価点と第2の画像上で追跡された各特徴点との適合性を評価し(ステップS107〜S110)、最も適合性の高かった点の集まりを用いて画像間の変換式を算出する(ステップS112)。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、平面から平面への特徴点群の対応をもとに、その妥当な射影変換(ホモグラフィ)を求める画像処理装置、画像変換方法及びプログラムに関する。
【背景技術】
【0002】
例えば、デジタルカメラ等の撮像装置では、パノラマ合成や手振れ補正などの目的で、複数の連続した画像を重ね合わせて処理することがある。ここで、画像間の特徴点の対応を定める手法として、RANSAC(random sampling consensus)と呼ばれるロバスト化のアルゴリズムが知られている。これは、特徴点対応に誤りが含まれている場合に、アウトライア(外れ値)を除外するための計算手法であり、具体的には以下のような手順を有する。
【0003】
すなわち、まず、ランダムに抽出した特徴点対応の小さな部分集合を用いて、仮の変換パラメータ(ここでは、射影変換行列)を求め、その変換パラメータによって変換した特徴点の座標が実際の対応点の座標と適合するか否かを判別し、その適合点数をカウントする。
【0004】
ループにより、このランダム抽出を多数回繰り返して、適合点数が最も多かった時の適合点の集合を最終的なインライアとし、それ以外はアウトライアとして除外する。この場合、精度が必要でなければ、最終的なインライアを求めたときの変換パラメータをそのまま答えとしても良い。高精度を求めるならば、得られた最終的なインライア集合を用いてより大規模な非線形最小化アルゴリズム等によって変換パラメータを再算出することができる(例えば、非特許文献1参照)。
【0005】
今、画像Aと画像Bとの位置合わせする場合を例にして具体的に説明すると、以下のような処理手順となる。
【0006】
図13は従来方式による画像間の位置合わせのための処理手順を示すフローチャートである。なお、このフローチャートで示す処理は、一般的な電子計算機によって実行されるものとする。
【0007】
まず、画像Aと画像Bから複数の特徴点を抽出し(ステップS11)、これらの特徴点の中の任意の4点を選び(ステップS12,S13)、これらの4点の組から画像Aと画像Bを位置合わせするための変換行列(射影変換の行列式)を求める(ステップS14)。この時点では、まだ適合するかどうか分からないので、仮の変換行列である。
【0008】
ここで、画像Aに変換行列を適用し(ステップS15)、画像A上の各特徴点を射影変換した座標と、それに対応する画像B上の各特徴点の座標との距離を計算する(ステップS16)。その結果、両者間の距離が所定値以上の特徴点を不適合点つまりアウトライアとして除外し(ステップS17)、残った適合点の総和を今回のスコアとして記録する(ステップS18)。
【0009】
このようにして、ランダムに4点を選びながら、前記同様の処理を所定回数繰り返し(ステップS19)、最もスコアが良かった回の適合点を用いて変換行列を計算し、これを用いて、画像Aと画像Bとの位置合わせを行う(ステップS20)。
【非特許文献1】「特徴点の位置分布に基づくランダムサンプリングによる平面領域のロバストな検出法」、電子情報通信学会論文誌 D-II Vol. J88-D-II No.2 pp.313-324
【発明の開示】
【発明が解決しようとする課題】
【0010】
上述したように、RANSACでは、特徴点の部分集合をランダム抽出し、仮の変換行列を求めて適合点数をカウントするといった処理を繰り返すことになる。通常、この繰り返しのループは数十回以上となる。仮の変換行列を求めるために最も簡易な線形アルゴリズムを用いたとしても、ループ数が多いために計算量が非常に多くなり、処理に時間がかかる、あるいはハードウェア構成が大かがりになるなどの問題がある。
【0011】
本発明は前記のような点に鑑みなされたもので、複雑な計算を必要とせずに、各画像を位置合わせするための変換式または特徴点対応のインライア集合を高速に求めることのできる画像処理装置、画像変換方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0012】
本発明の請求項1に係る画像処理装置は、少なくとも2つの画像を取得する画像取得手段と、この画像取得手段によって得られた第1の画像から一定の制約の下で直線上に並んだ特徴点を選択する特徴点選択手段と、この特徴点選択手段によって選択された特徴点を第2の画像上で追跡する追跡手段と、この追跡手段によって追跡された各特徴点から所定数の点を選び、これらの点を元に前記第2の画像上で直線上に並んだ特徴点を評価点として再帰的に生成する評価点生成手段と、この評価点生成手段によって生成された各評価点と前記第2の画像上で追跡された各特徴点との適合性を評価する評価手段と、この評価手段によって最も適合性の高かった点の集まりを用いて画像間の変換式を算出する変換式算出手段とを具備したことを特徴とする。
【0013】
また、本発明の請求項2は、請求項1記載の画像処理装置において、前記評価点生成手段は、前記追跡手段によって得られた各特徴点の中で四角形の頂点をなす4点を抽出し、その4点を元に前記第2の画像上で直線上に並んだ特徴点を評価点として再帰的に生成することを特徴とする。
【0014】
また、本発明の請求項3は、請求項2記載の画像処理装置において、前記評価点生成手段は、前記四角形の頂点をなす4点から前記四角形の内点を求める第1の追加処理手段と、この第1の追加処理手段によって得られた内点と前記四角形の辺との交点である境界点を求める第2の追加処理手段と、この第2の追加処理手段によって得られた境界点と前記四角形の頂点との延長線と前四角形の辺の延長線との交点である外点を求める第3の追加処理手段とを備え、前記各追加処理手段によって得られた内点、境界点、外点を評価点として追加することを特徴とする。
【0015】
また、本発明の請求項4は、請求項1記載の画像処理装置において、前記変換式算出手段によって得られた変換式に基づいて前記第1の画像と前記第2の画像を位置合わせてして所定の画像を生成する画像処理手段とをさらに具備したことを特徴とする。
【0016】
本発明の請求項5に係る画像変換方法は、少なくとも2つの画像を取得する第1のステップと、この第1のステップによって得られた第1の画像から一定の制約の下で直線上に並んだ特徴点を選択する第2のステップと、この第2のステップによって選択された特徴点を第2の画像上で追跡する第3のステップと、この第3のステップによって追跡された各特徴点から所定数の点を選び、これらの点を元に前記第2の画像上で直線上に並んだ特徴点を評価点として再帰的に生成する第4のステップと、この第4のステップによって生成された各評価点と前記第2の画像上で追跡された各特徴点との適合性を評価する第5のステップと、この第5のステップによって最も適合性の高かった点の集まりを用いて画像間の変換式を算出する第6のステップとを備えたことを特徴とする
また、本発明の請求項6に係るプログラムは、コンピュータによって読み取り可能な記録媒体に記録されたプログラムであって、前記コンピュータに、少なくとも2つの画像を取得する第1の機能と、この第1の機能によって得られた第1の画像から一定の制約の下で直線上に並んだ特徴点を選択する第2の機能と、この第2の機能によって選択された特徴点を第2の画像上で追跡する第3の機能と、この第3の機能によって追跡された各特徴点から所定数の点を選び、これらの点を元に前記第2の画像上で直線上に並んだ特徴点を評価点として再帰的に生成する第4の機能と、この第4の機能によって生成された各評価点と前記第2の画像上で追跡された各特徴点との適合性を評価する第5の機能と、この第5の機能によって最も適合性の高かった点の集まりを用いて画像間の変換式を算出する第6の機能とを実現させることを特徴とする。
【発明の効果】
【0017】
本発明によれば、複雑な計算を必要とせずに、各画像を位置合わせするための変換式または特徴点対応のインライア集合を高速に求めることができる。
【発明を実施するための最良の形態】
【0018】
以下、図面を参照して本発明の実施形態を説明する。
【0019】
(第1の実施形態)
図1は本発明の第1の実施形態に係る画像処理装置をデジタルカメラに適用した場合の外観構成を示す図であり、図1(a)は主に前面の構成、同図(b)は主に背面の構成を示す斜視図である。
【0020】
このデジタルカメラ1は、略矩形の薄板状ボディ2の前面に、撮影レンズ3、セルフタイマランプ4、光学ファインダ窓5、ストロボ発光部6、マイクロホン部7などを有し、上面の(ユーザにとって)右端側には電源キー8及びシャッタキー9などが設けられている。
【0021】
電源キー8は、電源のオン/オフ毎に操作するキーであり、シャッタキー9は、撮影時に撮影タイミングを指示するキーである。
【0022】
また、デジタルカメラ1の背面には、撮影モード(R)キー10、再生モード(P)キー11、光学ファインダ12、スピーカ部13、マクロキー14、ストロボキー15、メニュー(MENU)キー16、リングキー17、セット(SET)キー18、表示部19などが設けられている。
【0023】
撮影モードキー10は、電源オフの状態から操作することで自動的に電源オンとして静止画の撮影モードに移行する一方で、電源オンの状態から繰返し操作することで、静止画モード、動画モードを循環的に設定する。静止画モードは、静止画を撮影するためのモードである。また、動画モードは、動画を撮影するためのモードである。
【0024】
前記シャッタキー9は、これらの撮影モードに共通に使用される。すなわち、静止画モードでは、シャッタキー9が押下されたときのタイミングで静止画の撮影が行われる。動画モードでは、シャッタキー9が押下されたときのタイミングで動画の撮影が開始され、シャッタキー9が再度押下されたときにその動画の撮影が終了する。
【0025】
再生モードキー11は、電源オフの状態から操作することで自動的に電源オンとして再生モードに移行する。
【0026】
マクロキー14は、静止画の撮影モードで通常撮影とマクロ撮影とを切換える際に操作する。ストロボキー15は、ストロボ発光部6の発光モードを切換える際に操作する。メニューキー16は、連続撮影モードを含む各種メニュー項目等を選択する際に操作する。リングキー17は、上下左右各方向への項目選択用のキーが一体に形成されたものであり、このリングキー17の中央に位置するセットキー18は、その時点で選択されている項目を設定する際に操作する。
【0027】
表示部19は、バックライト付きのカラー液晶パネルで構成されるもので、撮影モード時には電子ファインダとしてスルー画像のモニタ表示を行う一方で、再生モード時には選択した画像等を再生表示する。
【0028】
なお、図示はしないがデジタルカメラ1の底面には、記録媒体として用いられるメモリカードを着脱するためのメモリカードスロットや、外部のパーソナルコンピュータ等と接続するためのシリアルインタフェースコネクタとして、例えばUSB(Universal Serial Bus)コネクタ等が設けられている。
【0029】
図2はデジタルカメラ1の電子回路構成を示すブロック図である。
【0030】
このデジタルカメラ1には、光学レンズ装置21、イメージセンサ22、メモリ23、表示装置24、画像処理装置25、操作部26、コンピュータインタフェース部27、外部記憶IO装置28、プログラムコード記憶装置29、CPU30、メモリカード31が備えられている。
【0031】
光学レンズ装置21は、撮影レンズ3を構成する図示せぬフォーカスレンズおよびズームレンズを含むレンズ光学系とその駆動部とを備えたものであり、イメージセンサ22上に、撮影対象からの光を集光させて像を結像させる。
【0032】
イメージセンサ22は、結像した画像を、デジタル化した画像データとして取り込むためのものであり、例えば、CCD(Charge Coupled Device:電荷結合素子)等によって構成される。イメージセンサ22は、CPU30によって制御され、シャッタキー9が押下されなければ、プレビュー用の解像度の低いデジタルの画像データを生成し、この画像データを秒間30枚程度の間隔で、定期的にメモリ23に送出する。また、イメージセンサ22は、シャッタキー9が押下されると、解像度の高い画像データを生成し、生成した画像データをメモリ23に送出する。また、イメージセンサ22は、CPU30によって撮像感度(ISO感度)の設定可能である。
【0033】
メモリ23は、イメージセンサ22からの低解像度のプレビュー画像、高解像度の画像データまたは画像処理装置25が画像処理する元画像のデータ、処理後の画像データを一時記憶するものである。メモリ23は、一時記憶した画像データを表示装置24または画像処理装置25に送り出す。
【0034】
表示装置24は、液晶モニタである表示部19に画像を表示させるためのものである。表示装置24は、メモリ23が一時記憶した低解像度のプレビュー画像または解像度の高い画像を表示部19に表示する。
【0035】
画像処理装置25は、メモリ23に一時記憶された画像データに対して、画像データの圧縮等の画像処理を行うためのものである。
【0036】
操作部26は、シャッタキー9の他に、電源キー8、撮影モードキー10、再生モードキー11、マクロキー14、ストロボキー15、メニューキー16、リングキー17、セットキー18などから構成され、それらのキー操作に伴う信号は直接CPU30へ送出される。
【0037】
コンピュータインタフェース部27は、デジタルカメラ1がPC40に接続されたときに、USBのストレジクラスドライバとして動作するものである。これにより、PC40は、デジタルカメラ1に接続されると、メモリカード31をコンピュータの外部記憶装置として取り扱う。
【0038】
外部記憶IO装置28は、メモリカード31との間で、画像データ等の入出力を行うものである。メモリカード31は、外部記憶IO装置28から供給された画像データ等を記憶するものである。
【0039】
プログラムコード記憶装置29は、CPU30が実行するプログラムを記憶するためのものであり、ROMやフラッシュメモリなどによって構成される。
【0040】
CPU30は、プログラムコード記憶装置29に格納されているプログラムに従って、システム全体を制御するものである。なお、メモリ23は、CPU30の作業メモリとしても用いられる。
【0041】
操作部26のスイッチ・キーが押下されることにより、操作部26から操作情報が送信されると、CPU30は、この操作情報に基づいて、イメージセンサ22、メモリ23、表示装置24、画像処理装置25等を制御する。
【0042】
具体的には、操作部26から撮影モードキー10が押下された旨の操作情報が送信されると、CPU30は各部を撮影モードに設定する。この状態で、シャッタキー9が押下されなければ、イメージセンサ22をプレビューモードに設定し、シャッタキー9が押下されれば、解像度の高い撮影対象画像を読み込む高解像度モードに設定する。その際、メニューキー16の操作により連続撮影モードが設定されていれば、シャッタキー9の押下に伴い、所定枚数分の画像の読み込み処理が所定時間間隔で実行される。
【0043】
また、再生モードキー11が押下された旨の操作情報が送信されると、CPU30は、各部を再生モードに設定する。
【0044】
また、CPU30は、外部記憶IO装置28を介してメモリカード31に、プレビュー画像、高解像度の画像のデータを記録したり、メモリカード31から、記録された画像データを読み出したりする。CPU30は、メモリカード31には、例えばJPEG(Joint Photographic Experts Group)フォーマットで圧縮した画像データを記録する。
【0045】
CPU30は、メモリ23に画像データを一時記憶する際、プレビュー画像、高解像度の画像データを異なる記憶領域に記録する。また、CPU30は、メモリカード31には、画像データを画像ファイルに分けて記録する。
【0046】
また、CPU30は、外部記憶IO装置28を介してメモリカード31に、プレビュー画像、高解像度の画像のデータを記録したり、メモリカード31から、記録された画像データを読み出したりする。CPU30は、メモリカード31に画像データを格納する画像ファイルを作成する。
【0047】
図3はCPU30の機能構成を示すブロック図である。CPU30を機能的に示すと、画像取得部30a、特徴点選択部30b、追跡部30c、評価点生成部30d、評価部30e、変換式算出部30f、画像処理部30gからなる。
【0048】
画像取得部30aは、図4に示すように、連続撮影などにより得られた少なくとも2つの画像A,Bを取得する。この場合、画像Aは基準画像としてメモリ23の第1のバッファ23aに格納され、画像Bは被追跡画像としてメモリ23の第2のバッファ23bに格納される。
【0049】
特徴点選択部30bは、画像取得部30aによって得られた画像Aから一定の制約の下で直線上に並んだ特徴点を選択する。
【0050】
追跡部30cは、特徴点選択部30bによって選択された各特徴点を画像B上で追跡する。
【0051】
評価点生成部30dは、追跡部30cによって追跡された各特徴点から所定数の点を選び、これらの点を元に画像B上で直線上に並んだ特徴点を評価点として再帰的に生成する。詳しくは、この評価点生成部30dは、追跡部30cによって得られた各特徴点の中で四角形の頂点をなす4点を抽出し、その4点を元に画像B上で直線上に並んだ特徴点を評価点として再帰的に生成する。また、この評価点生成部30dは、四角形の頂点をなす4点から前記四角形の内点を求める第1の追加処理部30d−1と、この第1の追加処理部30d−1によって得られた内点と前記四角形の辺との交点である境界点を求める第2の追加処理部30d−2と、この第2の追加処理部30−2によって得られた境界点と前記四角形の頂点との延長線と前四角形の辺の延長線との交点である外点を求める第3の追加処理部30d−3とを備え、前記各追加処理部30d−1〜30d−3によって得られた内点、境界点、外点を評価点として追加する。
【0052】
評価部30eは、評価点生成部30dによって生成された各評価点と画像B上で追跡された各特徴点との適合性を評価する。
【0053】
変換式算出部30fは、評価部30eによって最も適合性の高かった点の集まりを用いて画像間の変換式を算出する。
【0054】
また、画像処理部30gは、変換式算出部30fによって得られた変換式に基づいて画像Aと画像Bを位置合わせてして所定の画像を生成する。前記所定の画像とは、例えばパノラマ画像や手振れ補正した画像などである。
【0055】
次に、具体的な処理手順を説明する前に、理解を容易にするため、図5乃至図8を参照して、本方式について説明しておく。
【0056】
処理の全体はRANSACアルゴリズムに基づく。仮の変換行列を繰り返し計算する従来例のRANSACとの違いは、特徴点の配置に次に述べるような制約を設けることと、適合点の判定方法で用いる「変換によって移る座標」の算出を、従来のように変換パラメータ(射影変換行列)を求めることで行うのではなく、4組の特徴点から再帰的に求められる各点の座標から直接判定することである。
【0057】
なお、後述するように再帰的に各点の座標を求めていくため、計算誤差が蓄積する懸念はあるが、RANSACによってインライア集合を求めるのに十分な精度があれば良く、最終的なパラメータを算出するにはループを出てから再計算すれば良いので、大きな問題とはならない。
【0058】
(1)特徴点座標の制約
(入力の制約)
まず、特徴点を選出するに際し、以下のような制約を置く。
【0059】
一方の平面である基準平面上の各特徴点の座標は、正方格子状に所定の座標に固定的に設定するものとしている。ここで、特徴のないパターンの上にある特徴点は特徴点対応集合から除去してかまわない。
【0060】
他方の平面を被追跡平面と呼び、その上の各特徴点の座標は、基準平面上の特徴点座標にある特徴パターンが、どの座標に移動したかを追跡アルゴリズム(ブロックマッチングや勾配法)によって推定した座標によって構成するものとする。
【0061】
これらの特徴点対応がn組、すなわち、
((x0 ,y0 ),(x″0 ,y″0 )),((x1 ,y1 ),(x″1 ,y″1 )),…,((xn-1 ,yn-1 ),(x″n-1 ,y″n-1 ))
の要領で、対の配列として構成されているものとする。
【0062】
なお、(x,y)は基準平面上の特徴点の座標、(x″,y″)は被追跡平面上で追跡した特徴点の座標を表している。また、後述する(x′,y′)は被追跡平面上の特徴点の座標を表している。
【0063】
(部分集合の抽出)
従来例のRANSACによるランダムな部分集合の抽出は、4組の特徴点を使うアルゴリズムであれば、4個の特徴点をランダムに選んで行う。特徴点が重複したり、退化条件(一直線に並ぶなど)の場合は意味がなく、再度抽出し直すが、本方式では、さらに制約を強くする。
【0064】
すなわち、4組の特徴点を選択するが、基準平面(画像A)における4点の配置が、矩形の各頂点をなし、その1辺の長さが、前述した格子配置の間隔の2m(但し、mは任意の正整数)となっているものを選ぶ。
【0065】
具体的な方法としては、例えば、左上座標とmをランダムに決めることで選んでも良いし、制約が強く組み合わせ数が少ないため、ループによって順次すべての組み合わせを選択していっても良い。当然ながら、存在しない特徴点の座標を含んでしまった場合は破棄して次の組み合わせに進む。
【0066】
図5に基準平面における特徴点の部分集合の抽出例を示す。黒点は特徴点座標を示す。図中の点線枠で示した正方形の各頂点を構成する4点の組みが抽出対象となる。
【0067】
(2)変換によって移る座標の導出方法
ここが本実施形態の特徴となる。
【0068】
通常、正方形配置の4点の特徴点対応から射影変換は一意に決まる(射影変換が退化するような例外的な対応点が存在する場合を除く)。本実施形態では、この時点で基準平面(画像A)から被追跡平面(画像B)への射影変換のパラメータ(変換行列)を求めることはしないが、便宜的に変換Hとして名前をつけて説明する。
【0069】
4点の周囲の他の特徴点対応について、以下に述べるように、基準平面上の特徴点の座標(xi ,yi )が変換Hによって被追跡平面に移される座標(x′i ,y′i )を求める。求めた後の処理は、一般のRANSACと同様で、追跡座標(x″i ,y″i )との距離を調べて適合性を判定することができる。
【0070】
座標(x′i ,y′i )を変換Hの成分を求めることなく、直接に求めることができる理由は、特徴点相互の位置関係が制約されているために、射影変換の性質「直線を直線に移す」を利用できるからである。すなわち、基準平面から抽出した4つの特徴点を結ぶ6個の直線は、そのまま被追跡平面から抽出した4つの特徴点がなす6個の直線に移る。さらに、「直線の交点は直線の交点に移る」ことが言える。したがって、変換によって移る交点の座標が求められるという原理である。
【0071】
ここで示した導出方法を再帰的に適用して、全ての特徴点変換座標を求めるが、初期の抽出4点に関しては、基準平面の点a,b,c,dから、変換Hを用いて移る点a′,b′,c′,d′と、追跡された点a″,b″,c″,d″は同じ座標となる。それ以外の導出された点では同じ座標とは限らない。
【0072】
ここで、前記4点の周囲の他の特徴点として、内点、境界点、外点を導出する方法について説明する。
【0073】
(3)内点の変換座標の導出
まず、内点を導出する方法について説明する。内点とは、ここでは基準画像の選択矩形の中心点のことを指している。
【0074】
図6は内点の変換座標の導出方法を説明するための図である。図6(a)が基準平面の位置関係、同図(b)が被追跡平面の位置関係の例である。なお、図には、追跡された座標e″の例も示した(e′とe″の距離を測れば適合点か否かを判別できる)。但し、以後の処理で、再帰的処理のためにe′を求める場合には、e″は必ずしも存在しない。特徴点が除外されていて追跡が行われなかったり、再帰的処理の中間結果として導出する場合には、特徴点格子幅より小さい幅単位になっていることもあって良い。図7、図8についても同様である。
【0075】
基準平面の正方形頂点a,b,c,dを被追跡平面の点a′,b′,c′,d′に移す変換Hを用いて、ちょうど中央の点eが、被追跡平面に変換される座標e′を、以下のように求めることができる。
【0076】
点pの平面座標(xp ,yp )の内部表現を、(xp ,yp ,1)のように拡張ベクトルで表現する。なお、後で無限遠点も扱うが、平面原点から見て、(xp ,yp )方向の無限遠点は(xp ,yp ,0)のように表現する。同次座標と捉えても良い。
【0077】
ここで、基準平面上の点eは、点aと点dを通る直線と、点bと点cを通る直線の交点である。したがって、変換Hによって移される被追跡平面上の点e′は、点a′とd′を通る直線と、点b′と点c′を通る直線の交点を求めれば良い。この計算は、「2点を通る直線を求める方法」と、「2直線の交点を求める方法」を用いれば容易に構成できる。後の処理でも、この2つの方法をサブルーチンとして使う。
【0078】
「2点を通る直線を求める方法」
平面上の2点p,qを通る直線は、次の(1)式で表される。
【0079】
(x′p −x′q )(y′−y′q )=(y′p −y′q )(x′−x′q )
…(1)
前記(1)式において、同類項をまとめれば、直線:α1 x′+α2 y′+α3 =0となる。
【0080】
なお、後で、p,qのうち1点が無限遠点となる場合が出てくるが、その時は、無限遠点の方向に方向ベクトルを持ち、平面上の点(無限遠点でないほうの点)を通る直線を求めればよい。
【0081】
「2直線の交点を求める方法」
2直線の交点は、直線:α1 x′+α2 y′+α3 =0、直線:β1 x′+β2 y′+β3 =0とすると、次式の線形方程式の解を求めればよい。
【数1】
【0082】
但し、2直線が平行である場合(数値計算上は、ほぼ平行な場合)は、直線の延長上の無限遠点、例えば(α2,−α1,0)ないし(β2,−β1,0)を解と決める。
【0083】
(4)境界点の変換座標の導出
次に、境界点を導出する方法について説明する。境界点とは、ここでは基準画像の選択矩形の各辺の中点のことを指している。
【0084】
図7は境界点の変換座標の導出方法を説明するための図である。図7(a)が基準平面の位置関係、同図(b)が被追跡平面の位置関係の例である。なお、正方形を構成する4辺のどの辺を選んでも全く対称的なので、ここでは右辺上の点fを例にして説明する。
【0085】
基準平面の正方形頂点a,b,c,dを被追跡平面の点a′,b′,c′,d′に移す変換Hを用いて、任意の辺の中点が、被追跡平面のどの座標に変換されるかを、以下のように求めることができる。
【0086】
今、中央の点eに対応する点e′が求められているとする。まず、点a′と点b′を通る直線と、点c′と点d′を通る直線の交点w′を前述の方法によって求める。前述の通り、直線が平行ならば、w′は無限遠点である。
【0087】
次に、点b′と点d′を通る直線と、e′とw′を通る直線の交点を前述の方法によって求める。この交点が境界点fである。
【0088】
同様にして、すべての辺の中点を求めると、各辺の長さが半分の4個の小正方形の頂点の変換座標が求められる。なお、これらの小正方形の変換に対して、再帰的に、内点座標の導出と境界点座標の導出を適用していけば、もとの正方形の内部及び境界のすべての格子状特徴点の変換座標が求めることができる。
【0089】
(5)外点の変換座標の導出
次に、外点を導出する方法について説明する。外点とは、ここでは基準画像の選択矩形の頂点から矩形辺長だけ離れた格子点のことを指している。
【0090】
図8は外点の変換座標の導出方法を説明するための図である。図7(a)が基準平面の位置関係、同図(b)が被追跡平面の位置関係の例である。なお、正方形を構成する4辺のどの辺・方向を選んでも全く対称的なので、ここでは下辺を右側に延長した点gを例にして説明する。
【0091】
基準平面の正方形頂点a,b,c,dを被追跡平面の点a′,b′,c′,d′に移す変換Hを用いて、任意の辺上を辺の長さだけ外に延長した点が、被追跡平面のどの座標に変換されるかを、以下のように求めることができる。
【0092】
今、右辺の中点fに対応する点f′が求められているとする。変換Hによって移される点g′は、変換Hによって移される点a′,b′,c′,d′の座標から、点a′と点g′を通る直線と、点c′と点d′を通る直線の交点を求めれば良い。この交点が外点である。
【0093】
この方法で、外側の隣接点のすべてを求めることができ、もとと同じ大きさの4個の正方形の頂点の座標が求められる。以上の方法を再帰的に適用して、順次、隣接点とその内部・境界をたどっていけば、画面上の全ての特徴点の変換座標を求めることができる。
【0094】
以下に、具体的な処理手順について説明する。
今、連続した2つの画像Aと画像Bを位置合わせする場合を想定する。画像Aで直線上に並んだ特徴点は、カメラの回転などによって歪んだ画像B上でも直線上に並んでいるはずである。したがって、画像Aで直線上に並んでいた特徴点を画像B上で追跡してみて、これが画像B上で直線上になければ、異常な動きをしている特徴点として除外できる。
【0095】
ここで、直線が直線に移ることは保証されているが、直線自体の角度は変化しうるし、直線各部の長さも変化する。そこで、画像B上で評価用の適切な直線をいかに引くかという問題を「4点を基準にして内点を作り、境界点を作り、外点を作る」という手法を繰り返すことで解決するものである。
【0096】
図9は第1の実施形態における画像間の位置合わせの処理手順を示すフローチャートである。また、図10は図9に含まれる評価対象追加処理を示すフローチャートである。なお、これらのフローチャートで示す各処理は、プログラムコードの形態でプログラムコード記憶装置29に記憶されている。コンピュータであるCPU30は、このプログラムを読み込むことにより、以下のような処理を実行する。
【0097】
図9のフローチャートに示すように、CPU30は、連続した2つの画像Aと画像Bを取得する(ステップS100)。なお、この画像A,Bは、連続撮影などによってイメージセンサ22から直接取得することでも良いし、メモリカード31などを通じて外部から提供されるものであっても良い。画像Aは基準画像として、図3に示したメモリ23の第1のバッファ23aに格納され、画像Bは被追跡画像として、第2のバッファ23bに格納される。
【0098】
画像Aと画像Bが得られると、まず、CPU30は、図5に示したように基準画像である画像A上から格子状の特徴点を選択、つまり、直線上に並んだ特徴点の集まりを選択する(ステップS101)。続いて、CPU30は、画像A上の格子点(特徴点)に対応する画像B上の特徴点をブロックマッチングまたは勾配法などを用いて追跡する(ステップS102)。そして、この追跡処理によって得られた画像B上の特徴点の中から任意の4点を選び、これを仮想格子点とする(ステップS103)。この4点は、図6(b)に示した点a′,b′,c′,d′に相当し、四角形の頂点をなす。
【0099】
なお、ここで言う「仮想格子点」とは、画像Aの特徴点から変換Hによって画像Bに移される点のことであり、評価点として用いられる。この時点では、まだ4点しかないので、この4点を元に下記のような方法によって増やしていく。
【0100】
すなわち、CPU30は、この4点を元に、直線を引く操作と交点を求める操作を画像B上で繰り返すことにより、仮想格子点を追加していく(ステップS104)。
【0101】
詳しくは、図10のフローチャートに示すように、CPU30は、ステップS103で選んだ画像B上の4点を元に内点を求め(ステップS201)、続いて、その内点を手かがりにして境界点を求め(ステップS202)、さらに、その境界点を手かがりにして外点を求める(ステップS203)。なお、これらの点の求め方については、図6乃至図8で説明した通りであるため、ここでは省略する。
【0102】
このように、ステップS103で得られた4点を元に内点、境界点、外点の順で求めていく。これにより、内点1つ、境界点4つ、外点8つの計13個の点が仮想格子点(評価点)が生成されることになる。これらの点は、ステップS103で得られた4点から変換Hによって、画像Aから画像Bに移された特徴点座標を意味している。
【0103】
続いて、CPU30は、前記追加された点から四角形の頂点をなす4点を新たに選び(ステップS106)、その4点を元に前記同様の処理を繰り返して仮想格子点を順次追加していく(ステップS104)。
【0104】
仮想格子点の数が画像A上の格子点の数に達すると、つまり、仮想格子点が画像Bの全体に生成されると(ステップS105のYes)、ここでのループが終了する。この場合、最終的に画像A上の格子点の数まで追加処理を繰り返しても良いし、予め決められた数に達した時点で終了しても良い。精度を求めるのであれば、格子点の数になるまで追加処理を繰り返すことが好ましい。
【0105】
次に、CPU30は、画像B上で、それぞれに対応する仮想格子点と追跡点との間の距離を計算する(ステップS107)。つまり、画像Aの各特徴点から変換Hによって画像Bに移される各点と、画像Aの各特徴点からステップS102の追跡処理で求められた各点とを比較して、両者間の位置ずれを求める。
【0106】
そして、CPU30は、両者の距離が所定値以下であった場合、つまり、仮想格子点と追跡点との位置ずれが許容範囲内であれば、そのときの追跡点を適合点と判断し、その座標をメモリ23の所定の領域に記録しておくと共に(ステップS108)、適合点の総和を今回のスコアとして求め、図11に示すスコア管理テーブル32に記録する(ステップS109)。
【0107】
例えば、仮想格子点の数が100個あったとして、その中の20個の点が不適合であった場合には、その回のスコアとして80点がスコア管理テーブル32に記録される。なお、このスコア管理テーブル32は、メモリ23に設けられている。
【0108】
続いて、CPU30は、再び画像B上の特徴点からスタート点となる別の4点を仮想格子点として選ぶ(ステップS110のNo→S103)。そして、前記同様に、その4点を元に直線を引く操作と交点を求める操作を繰り返して仮想格子点を増やしていき、仮想格子点の数が格子点の数に達した時点で、仮想格子点と追跡点との距離に基づいて適合性を判断し、適合点として得られた数の総和を今回のスコアとしてスコア管理テーブル32に記録する(ステップS104〜S109)
以上の処理を所定回数繰り返す。
所定回数分のスコアが得られると(ステップS110のYes)、CPU30は、その中で最もスコアが高かった回の適合点を前記メモリ23の所定の領域から読み出し、その適合点の集合を用いて画像Aと画像Bの変換行列(射影変換の行列式)を計算する(ステップS111)。
【0109】
図11の例では、5回までのスコアが記録されており、その中で最もスコアの高い2回目で抽出された適合点が変換に最適な点として選択されることになる。なお、変換行列の求め方については従来と同様であるため、ここではその説明を省略するものとする。
【0110】
このようにして変換行列が得られると、以後、CPU30は、その変換行列を用いて画像Aと画像Bを位置合わせてして、予め設定された撮影モードに従って、例えばパノラマ画像を生成したり、手振れを補正した画像を生成するなどの所定の画像処理を行う(ステップS112)。なお、この変換行列を用いた画像処理については公知であるため、ここでは、その詳しい説明は省略する。この画像処理によって得られた画像は、JPEG等の所定の方式で圧縮された後、例えばメモリカード31などに記録保存される。
【0111】
このように、一定の制約の下で直線上に並んだ特徴点を選択し、その特徴点を元に「2点を通る直線を求める計算」と「2直線の交点座標を求める計算」を繰り返して、評価対象とする点を再帰的に求めていくことで、その中で適合性の高い点の集まりを用いて画像間の変換式を簡易に算出することが可能となる。したがって、従来のように仮の変換式を何度も繰り返し求める方法に比べて、計算量を大幅に削減でき、ハードウェア構成も簡素化して画像間の変換式を高速に求めることができる。
【0112】
また、このようにして得られた変換式をカメラの画像合成に適用することで、例えばパノラマ画像や手振れ補正した画像などを簡単に作成することができる。
【0113】
(第2の実施形態)
次に、本発明の第2の実施形態について説明する。
【0114】
前記第1の実施形態では、画像A上の全特徴点に対して一括して追跡処理を行い、以後の処理は画像Bだけで行うようにしたが、第2の実施形態では、画像A上で特徴点を追加しながら、画像B上でその特徴点に対応させて評価点を追加するようにしものである。
【0115】
なお、装置構成については、前記第1の実施形態と同様であるため、ここでは処理手順についてのみ説明する。
【0116】
図12は第2の実施形態における画像間の位置合わせの処理手順を示すフローチャートである。なお、このフローチャートで示す各処理は、プログラムコードの形態でプログラムコード記憶装置29に記憶されている。コンピュータであるCPU30は、このプログラムを読み込むことにより、以下のような処理を実行する。
【0117】
図12のフローチャートに示すように、CPU30は、連続した2つの画像Aと画像Bを取得する(ステップS300)。なお、この画像A,Bは、連続撮影などによってイメージセンサ22から直接取得することでも良いし、メモリカード31などを通じて外部から提供されるものであっても良い。画像Aは基準画像として、図3に示したメモリ23の第1のバッファ23aに格納され、画像Bは被追跡画像として、第2のバッファ23bに格納される。
【0118】
画像Aと画像Bが得られると、まず、図5で説明したように、CPU30は、基準画像である画像A上の特徴点から一定の制約の下に直線上に並んだ2点を2組、合わせて4点を選ぶ(ステップS301)。この4点は、図6(a)に示した点a,b,c,dに相当し、四角形(画像A上では矩形)の頂点をなす。
【0119】
続いて、CPU30は、画像A上の4点に対応する画像B上の4点をブロックマッチングまたは勾配法などを用いて追跡する(ステップS302)。この場合、画像Bはカメラの回転などによって歪んでいる可能性があるため、追跡処理によって得られた画像B上の4点は矩形になるとは限らない。
【0120】
ここで、画像Aに対し、CPU30は、前記ステップS301で選んだ4点の組み元に、直線を引く操作と交点を求める操作を繰り返すことにより、特徴点を追加していく(ステップS303)。なお、この追加処理については図10と同様である。すなわち、画像A上で、ステップS301で得られた4点を元に内点、境界点、外点を求めていく。
【0121】
画像Bについても同様であり、CPU30は、ステップS302の追跡処理で得られた4点を元に直線を引く操作と交点を求める操作を繰り返すことにより、評価点を追加していく(ステップS306)。なお、「評価点」とは、前記第1の実施形態で説明した「仮想格子点」と同様の意味であり、画像Aの特徴点から変換Hによって画像Bに移される点のことである。
【0122】
さらに、CPU30は、画像Aから前の処理で追加された点から四角形(画像Aでは矩形)の頂点をなす4点を新たに選び(ステップS305)、その4点を元に前記同様の処理を繰り返して特徴点を順次追加していく(ステップS303)。画像Bについても同様であり、画像Bから前の処理で追加された点から四角形の頂点をなす4点を新たに選び(ステップS308)、前記同様の処理を繰り返して評価値を順次追加していく(ステップS306)。
【0123】
なお、ステップS305の処理とステップS308の処理はリンクしており、画像A上で新たな4点を選んだ場合に、当然のことながら、画像B上では、その画像A上の4点と対応関係にある4点を選ぶことになる。
【0124】
画像A、B上で追加された点がそれぞれに所定数に達すると(ステップS304のYes,ステップS307のYes)、ここでのループが終了する。この場合、最終的に画像A上の特徴点のすべてを選び出すまで、追加処理を繰り返しても良いし、予め決められた数に達した時点で終了しても良い。精度を求めるのであれば、特徴点のすべてを選び出すまで、追加処理を繰り返すことが好ましい。
【0125】
次に、CPU30は、画像A上の特徴点に対応する画像B上の特徴点を追跡する(ステップS309)。そして、CPU30は、画像B上で、それぞれに対応する評価点と追跡点との距離を計算する(ステップS310)。つまり、画像Aの各特徴点から変換Hによって画像Bに移される各点(第2のループで得られる各点)と、画像Aの各特徴点(第1のループで得られる各点)からステップS309の追跡処理で求められた各点とを比較して、両者間の位置ずれを求める。なお、第1のループとはステップS303〜S305の繰り返し処理、第2のループとはステップS306〜S308の繰り返し処理のことを示す。
【0126】
そして、CPU30は、両者の距離が所定値以下であった場合、つまり、評価点と追跡点との位置ずれが許容範囲内であれば、そのときの追跡点を適合点と判断し、その座標をメモリ23の所定の領域に記録しておくと共に(ステップS311)、そのときに得られた適合点の総和を今回のスコアとして求め、図11に示すスコア管理テーブル32に記録する(ステップS312)。
【0127】
続いて、CPU30は、再び画像Aからスタート点となる別の4点を選び(ステップS313のNo→301)、その4点に対応する画像B上の4点を追跡する(ステップS302)。そして、前記同様に、画像A上で、その4点を元に直線を引く操作と交点を求める操作を繰り返して特徴点を増やしていく(ステップS303〜S305)。画像Bについても同様であり、画像Aで選んだ4点に対応した4点を元に直線を引く操作と交点を求める操作を繰り返しながら、評価点を増やしていく(ステップS306〜S307)。
【0128】
そして、CPU30は、画像A上の特徴点に対応する画像B上の特徴点を追跡し、前記同様に、画像B上で評価値と追跡点との距離に基づいて適合性を判断し、適合点として得られた数の総和を今回のスコアとしてスコア管理テーブル32に記録する(ステップS309〜S312)
以上の処理を所定回数繰り返す。
【0129】
所定回数分のスコアが得られると(ステップS313のYes)、CPU30は、その中で最もスコアが高かった回の適合点を前記メモリ23の所定の領域から読み出し、その適合点の集合を用いて画像Aと画像Bの変換行列(射影変換の行列式)を計算する(ステップS314)。
【0130】
このようにして変換行列が得られると、以後、CPU30は、前記変換行列を用いて画像Aと画像Bを位置合わせてして、予め設定された撮影モードに従って、例えばパノラマ画像を生成したり、手振れを補正した画像を生成するなどの所定の画像処理を行う(ステップS315)。
【0131】
このように、画像A上で特徴点を追加しながら、画像B上でその特徴点に対応させて評価点を追加するような方法であっても、前記第1の実施形態と同様の効果を得ることができる。
【0132】
なお、本発明の用途はRANSACに限定されない。例えば、特殊なマーカを用いるなどして絶対に信頼できる4点があった時に、その他の誤りを含む対応点の中からアウトライアを高速に除去する場合にも使える。
【0133】
また、前記各実施形態では、デジタルカメラに例にして説明したが、デジタルカメラの他に、例えばパーソナルコンピュータなど、画像を扱える装置であれば、そのすべてに適用可能である。この場合、図2に示すように、デジタルカメラ1とPC40とを接続し、デジタルカメラ1で連続撮影された各画像をPC40に転送し、PC40側で図9および図10に示したような処理を実行するといった構成にしても良い。
【0134】
要するに、本発明は前記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、前記各実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【0135】
また、上述した各実施形態において記載した手法は、コンピュータに実行させることのできるプログラムとして、例えば磁気ディスク(フレキシブルディスク、ハードディスク等)、光ディスク(CD−ROM、DVD等)、半導体メモリなどの記録媒体に書き込んで各種装置に適用したり、通信媒体により伝送して各種装置に適用することも可能である。本装置を実現するコンピュータは、記録媒体に記録されたプログラムを読み込み、このプログラムによって動作が制御されることにより、上述した処理を実行する。
【図面の簡単な説明】
【0136】
【図1】図1は本発明の第1の実施形態に係る画像処理装置をデジタルカメラに適用した場合の外観構成を示す図であり、図1(a)は主に前面の構成、同図(b)は主に背面の構成を示す斜視図である。
【図2】図2は同実施形態におけるデジタルカメラの電子回路構成を示すブロック図である。
【図3】図3は同実施形態におけるデジタルカメラのCPUの機能構成を示すブロック図である。
【図4】図4は同実施形態におけるデジタルカメラの処理対象とする2つの連続した画像の一例を示す図である。
【図5】図5は同実施形態における基準平面における特徴点の部分集合の抽出例を示す図である。
【図6】図6は同実施形態における内点の変換座標の導出方法を説明するための図である。
【図7】図7は同実施形態における境界点の変換座標の導出方法を説明するための図である。
【図8】図8は同実施形態における外点の変換座標の導出方法を説明するための図である。
【図9】図9は同実施形態における画像間の位置合わせの処理手順を示すフローチャートである。
【図10】図10は同実施形態における評価対象追加処理を示すフローチャートである。
【図11】図11は同実施形態におけるすスコア管理テーブルの一例を示す図である。
【図12】図12は本発明の第2の実施形態における画像間の位置合わせの処理手順を示すフローチャートである。
【図13】図13は従来方式による画像間の位置合わせの処理手順を示すフローチャートである。
【符号の説明】
【0137】
1…デジタルカメラ、2…ボディ、3…撮影レンズ、4…セルフタイマランプ、5…光学ファインダ窓、6…ストロボ発光部、7…マイクロホン部、8…電源キー、9…シャッタキー、10…撮影モード(R)キー、11…再生モード(P)キー、12…光学ファインダ、13…スピーカ部、14…マクロキー、15…ストロボキー、16…メニュー(MENU)キー、17…リングキー、18…セット(SET)キー、19…表示部、21…光学レンズ装置、22…イメージセンサ、23…メモリ、24…表示装置、25…画像処理装置、26…操作部、27…コンピュータインタフェース部、28…外部記憶IO装置、29…プログラムコード記憶装置、30…CPU、30a…画像取得部、30b…特徴点選択部、30c…追跡部、30d…評価点生成部、30d−1…第1の追加処理部、30d−2…第2の追加処理部、30d−3…第3の追加処理部、30e…評価部、30f…変換式算出部、30g…画像処理部、31…メモリカード、32…スコア管理テーブル、40…PC。
【技術分野】
【0001】
本発明は、平面から平面への特徴点群の対応をもとに、その妥当な射影変換(ホモグラフィ)を求める画像処理装置、画像変換方法及びプログラムに関する。
【背景技術】
【0002】
例えば、デジタルカメラ等の撮像装置では、パノラマ合成や手振れ補正などの目的で、複数の連続した画像を重ね合わせて処理することがある。ここで、画像間の特徴点の対応を定める手法として、RANSAC(random sampling consensus)と呼ばれるロバスト化のアルゴリズムが知られている。これは、特徴点対応に誤りが含まれている場合に、アウトライア(外れ値)を除外するための計算手法であり、具体的には以下のような手順を有する。
【0003】
すなわち、まず、ランダムに抽出した特徴点対応の小さな部分集合を用いて、仮の変換パラメータ(ここでは、射影変換行列)を求め、その変換パラメータによって変換した特徴点の座標が実際の対応点の座標と適合するか否かを判別し、その適合点数をカウントする。
【0004】
ループにより、このランダム抽出を多数回繰り返して、適合点数が最も多かった時の適合点の集合を最終的なインライアとし、それ以外はアウトライアとして除外する。この場合、精度が必要でなければ、最終的なインライアを求めたときの変換パラメータをそのまま答えとしても良い。高精度を求めるならば、得られた最終的なインライア集合を用いてより大規模な非線形最小化アルゴリズム等によって変換パラメータを再算出することができる(例えば、非特許文献1参照)。
【0005】
今、画像Aと画像Bとの位置合わせする場合を例にして具体的に説明すると、以下のような処理手順となる。
【0006】
図13は従来方式による画像間の位置合わせのための処理手順を示すフローチャートである。なお、このフローチャートで示す処理は、一般的な電子計算機によって実行されるものとする。
【0007】
まず、画像Aと画像Bから複数の特徴点を抽出し(ステップS11)、これらの特徴点の中の任意の4点を選び(ステップS12,S13)、これらの4点の組から画像Aと画像Bを位置合わせするための変換行列(射影変換の行列式)を求める(ステップS14)。この時点では、まだ適合するかどうか分からないので、仮の変換行列である。
【0008】
ここで、画像Aに変換行列を適用し(ステップS15)、画像A上の各特徴点を射影変換した座標と、それに対応する画像B上の各特徴点の座標との距離を計算する(ステップS16)。その結果、両者間の距離が所定値以上の特徴点を不適合点つまりアウトライアとして除外し(ステップS17)、残った適合点の総和を今回のスコアとして記録する(ステップS18)。
【0009】
このようにして、ランダムに4点を選びながら、前記同様の処理を所定回数繰り返し(ステップS19)、最もスコアが良かった回の適合点を用いて変換行列を計算し、これを用いて、画像Aと画像Bとの位置合わせを行う(ステップS20)。
【非特許文献1】「特徴点の位置分布に基づくランダムサンプリングによる平面領域のロバストな検出法」、電子情報通信学会論文誌 D-II Vol. J88-D-II No.2 pp.313-324
【発明の開示】
【発明が解決しようとする課題】
【0010】
上述したように、RANSACでは、特徴点の部分集合をランダム抽出し、仮の変換行列を求めて適合点数をカウントするといった処理を繰り返すことになる。通常、この繰り返しのループは数十回以上となる。仮の変換行列を求めるために最も簡易な線形アルゴリズムを用いたとしても、ループ数が多いために計算量が非常に多くなり、処理に時間がかかる、あるいはハードウェア構成が大かがりになるなどの問題がある。
【0011】
本発明は前記のような点に鑑みなされたもので、複雑な計算を必要とせずに、各画像を位置合わせするための変換式または特徴点対応のインライア集合を高速に求めることのできる画像処理装置、画像変換方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0012】
本発明の請求項1に係る画像処理装置は、少なくとも2つの画像を取得する画像取得手段と、この画像取得手段によって得られた第1の画像から一定の制約の下で直線上に並んだ特徴点を選択する特徴点選択手段と、この特徴点選択手段によって選択された特徴点を第2の画像上で追跡する追跡手段と、この追跡手段によって追跡された各特徴点から所定数の点を選び、これらの点を元に前記第2の画像上で直線上に並んだ特徴点を評価点として再帰的に生成する評価点生成手段と、この評価点生成手段によって生成された各評価点と前記第2の画像上で追跡された各特徴点との適合性を評価する評価手段と、この評価手段によって最も適合性の高かった点の集まりを用いて画像間の変換式を算出する変換式算出手段とを具備したことを特徴とする。
【0013】
また、本発明の請求項2は、請求項1記載の画像処理装置において、前記評価点生成手段は、前記追跡手段によって得られた各特徴点の中で四角形の頂点をなす4点を抽出し、その4点を元に前記第2の画像上で直線上に並んだ特徴点を評価点として再帰的に生成することを特徴とする。
【0014】
また、本発明の請求項3は、請求項2記載の画像処理装置において、前記評価点生成手段は、前記四角形の頂点をなす4点から前記四角形の内点を求める第1の追加処理手段と、この第1の追加処理手段によって得られた内点と前記四角形の辺との交点である境界点を求める第2の追加処理手段と、この第2の追加処理手段によって得られた境界点と前記四角形の頂点との延長線と前四角形の辺の延長線との交点である外点を求める第3の追加処理手段とを備え、前記各追加処理手段によって得られた内点、境界点、外点を評価点として追加することを特徴とする。
【0015】
また、本発明の請求項4は、請求項1記載の画像処理装置において、前記変換式算出手段によって得られた変換式に基づいて前記第1の画像と前記第2の画像を位置合わせてして所定の画像を生成する画像処理手段とをさらに具備したことを特徴とする。
【0016】
本発明の請求項5に係る画像変換方法は、少なくとも2つの画像を取得する第1のステップと、この第1のステップによって得られた第1の画像から一定の制約の下で直線上に並んだ特徴点を選択する第2のステップと、この第2のステップによって選択された特徴点を第2の画像上で追跡する第3のステップと、この第3のステップによって追跡された各特徴点から所定数の点を選び、これらの点を元に前記第2の画像上で直線上に並んだ特徴点を評価点として再帰的に生成する第4のステップと、この第4のステップによって生成された各評価点と前記第2の画像上で追跡された各特徴点との適合性を評価する第5のステップと、この第5のステップによって最も適合性の高かった点の集まりを用いて画像間の変換式を算出する第6のステップとを備えたことを特徴とする
また、本発明の請求項6に係るプログラムは、コンピュータによって読み取り可能な記録媒体に記録されたプログラムであって、前記コンピュータに、少なくとも2つの画像を取得する第1の機能と、この第1の機能によって得られた第1の画像から一定の制約の下で直線上に並んだ特徴点を選択する第2の機能と、この第2の機能によって選択された特徴点を第2の画像上で追跡する第3の機能と、この第3の機能によって追跡された各特徴点から所定数の点を選び、これらの点を元に前記第2の画像上で直線上に並んだ特徴点を評価点として再帰的に生成する第4の機能と、この第4の機能によって生成された各評価点と前記第2の画像上で追跡された各特徴点との適合性を評価する第5の機能と、この第5の機能によって最も適合性の高かった点の集まりを用いて画像間の変換式を算出する第6の機能とを実現させることを特徴とする。
【発明の効果】
【0017】
本発明によれば、複雑な計算を必要とせずに、各画像を位置合わせするための変換式または特徴点対応のインライア集合を高速に求めることができる。
【発明を実施するための最良の形態】
【0018】
以下、図面を参照して本発明の実施形態を説明する。
【0019】
(第1の実施形態)
図1は本発明の第1の実施形態に係る画像処理装置をデジタルカメラに適用した場合の外観構成を示す図であり、図1(a)は主に前面の構成、同図(b)は主に背面の構成を示す斜視図である。
【0020】
このデジタルカメラ1は、略矩形の薄板状ボディ2の前面に、撮影レンズ3、セルフタイマランプ4、光学ファインダ窓5、ストロボ発光部6、マイクロホン部7などを有し、上面の(ユーザにとって)右端側には電源キー8及びシャッタキー9などが設けられている。
【0021】
電源キー8は、電源のオン/オフ毎に操作するキーであり、シャッタキー9は、撮影時に撮影タイミングを指示するキーである。
【0022】
また、デジタルカメラ1の背面には、撮影モード(R)キー10、再生モード(P)キー11、光学ファインダ12、スピーカ部13、マクロキー14、ストロボキー15、メニュー(MENU)キー16、リングキー17、セット(SET)キー18、表示部19などが設けられている。
【0023】
撮影モードキー10は、電源オフの状態から操作することで自動的に電源オンとして静止画の撮影モードに移行する一方で、電源オンの状態から繰返し操作することで、静止画モード、動画モードを循環的に設定する。静止画モードは、静止画を撮影するためのモードである。また、動画モードは、動画を撮影するためのモードである。
【0024】
前記シャッタキー9は、これらの撮影モードに共通に使用される。すなわち、静止画モードでは、シャッタキー9が押下されたときのタイミングで静止画の撮影が行われる。動画モードでは、シャッタキー9が押下されたときのタイミングで動画の撮影が開始され、シャッタキー9が再度押下されたときにその動画の撮影が終了する。
【0025】
再生モードキー11は、電源オフの状態から操作することで自動的に電源オンとして再生モードに移行する。
【0026】
マクロキー14は、静止画の撮影モードで通常撮影とマクロ撮影とを切換える際に操作する。ストロボキー15は、ストロボ発光部6の発光モードを切換える際に操作する。メニューキー16は、連続撮影モードを含む各種メニュー項目等を選択する際に操作する。リングキー17は、上下左右各方向への項目選択用のキーが一体に形成されたものであり、このリングキー17の中央に位置するセットキー18は、その時点で選択されている項目を設定する際に操作する。
【0027】
表示部19は、バックライト付きのカラー液晶パネルで構成されるもので、撮影モード時には電子ファインダとしてスルー画像のモニタ表示を行う一方で、再生モード時には選択した画像等を再生表示する。
【0028】
なお、図示はしないがデジタルカメラ1の底面には、記録媒体として用いられるメモリカードを着脱するためのメモリカードスロットや、外部のパーソナルコンピュータ等と接続するためのシリアルインタフェースコネクタとして、例えばUSB(Universal Serial Bus)コネクタ等が設けられている。
【0029】
図2はデジタルカメラ1の電子回路構成を示すブロック図である。
【0030】
このデジタルカメラ1には、光学レンズ装置21、イメージセンサ22、メモリ23、表示装置24、画像処理装置25、操作部26、コンピュータインタフェース部27、外部記憶IO装置28、プログラムコード記憶装置29、CPU30、メモリカード31が備えられている。
【0031】
光学レンズ装置21は、撮影レンズ3を構成する図示せぬフォーカスレンズおよびズームレンズを含むレンズ光学系とその駆動部とを備えたものであり、イメージセンサ22上に、撮影対象からの光を集光させて像を結像させる。
【0032】
イメージセンサ22は、結像した画像を、デジタル化した画像データとして取り込むためのものであり、例えば、CCD(Charge Coupled Device:電荷結合素子)等によって構成される。イメージセンサ22は、CPU30によって制御され、シャッタキー9が押下されなければ、プレビュー用の解像度の低いデジタルの画像データを生成し、この画像データを秒間30枚程度の間隔で、定期的にメモリ23に送出する。また、イメージセンサ22は、シャッタキー9が押下されると、解像度の高い画像データを生成し、生成した画像データをメモリ23に送出する。また、イメージセンサ22は、CPU30によって撮像感度(ISO感度)の設定可能である。
【0033】
メモリ23は、イメージセンサ22からの低解像度のプレビュー画像、高解像度の画像データまたは画像処理装置25が画像処理する元画像のデータ、処理後の画像データを一時記憶するものである。メモリ23は、一時記憶した画像データを表示装置24または画像処理装置25に送り出す。
【0034】
表示装置24は、液晶モニタである表示部19に画像を表示させるためのものである。表示装置24は、メモリ23が一時記憶した低解像度のプレビュー画像または解像度の高い画像を表示部19に表示する。
【0035】
画像処理装置25は、メモリ23に一時記憶された画像データに対して、画像データの圧縮等の画像処理を行うためのものである。
【0036】
操作部26は、シャッタキー9の他に、電源キー8、撮影モードキー10、再生モードキー11、マクロキー14、ストロボキー15、メニューキー16、リングキー17、セットキー18などから構成され、それらのキー操作に伴う信号は直接CPU30へ送出される。
【0037】
コンピュータインタフェース部27は、デジタルカメラ1がPC40に接続されたときに、USBのストレジクラスドライバとして動作するものである。これにより、PC40は、デジタルカメラ1に接続されると、メモリカード31をコンピュータの外部記憶装置として取り扱う。
【0038】
外部記憶IO装置28は、メモリカード31との間で、画像データ等の入出力を行うものである。メモリカード31は、外部記憶IO装置28から供給された画像データ等を記憶するものである。
【0039】
プログラムコード記憶装置29は、CPU30が実行するプログラムを記憶するためのものであり、ROMやフラッシュメモリなどによって構成される。
【0040】
CPU30は、プログラムコード記憶装置29に格納されているプログラムに従って、システム全体を制御するものである。なお、メモリ23は、CPU30の作業メモリとしても用いられる。
【0041】
操作部26のスイッチ・キーが押下されることにより、操作部26から操作情報が送信されると、CPU30は、この操作情報に基づいて、イメージセンサ22、メモリ23、表示装置24、画像処理装置25等を制御する。
【0042】
具体的には、操作部26から撮影モードキー10が押下された旨の操作情報が送信されると、CPU30は各部を撮影モードに設定する。この状態で、シャッタキー9が押下されなければ、イメージセンサ22をプレビューモードに設定し、シャッタキー9が押下されれば、解像度の高い撮影対象画像を読み込む高解像度モードに設定する。その際、メニューキー16の操作により連続撮影モードが設定されていれば、シャッタキー9の押下に伴い、所定枚数分の画像の読み込み処理が所定時間間隔で実行される。
【0043】
また、再生モードキー11が押下された旨の操作情報が送信されると、CPU30は、各部を再生モードに設定する。
【0044】
また、CPU30は、外部記憶IO装置28を介してメモリカード31に、プレビュー画像、高解像度の画像のデータを記録したり、メモリカード31から、記録された画像データを読み出したりする。CPU30は、メモリカード31には、例えばJPEG(Joint Photographic Experts Group)フォーマットで圧縮した画像データを記録する。
【0045】
CPU30は、メモリ23に画像データを一時記憶する際、プレビュー画像、高解像度の画像データを異なる記憶領域に記録する。また、CPU30は、メモリカード31には、画像データを画像ファイルに分けて記録する。
【0046】
また、CPU30は、外部記憶IO装置28を介してメモリカード31に、プレビュー画像、高解像度の画像のデータを記録したり、メモリカード31から、記録された画像データを読み出したりする。CPU30は、メモリカード31に画像データを格納する画像ファイルを作成する。
【0047】
図3はCPU30の機能構成を示すブロック図である。CPU30を機能的に示すと、画像取得部30a、特徴点選択部30b、追跡部30c、評価点生成部30d、評価部30e、変換式算出部30f、画像処理部30gからなる。
【0048】
画像取得部30aは、図4に示すように、連続撮影などにより得られた少なくとも2つの画像A,Bを取得する。この場合、画像Aは基準画像としてメモリ23の第1のバッファ23aに格納され、画像Bは被追跡画像としてメモリ23の第2のバッファ23bに格納される。
【0049】
特徴点選択部30bは、画像取得部30aによって得られた画像Aから一定の制約の下で直線上に並んだ特徴点を選択する。
【0050】
追跡部30cは、特徴点選択部30bによって選択された各特徴点を画像B上で追跡する。
【0051】
評価点生成部30dは、追跡部30cによって追跡された各特徴点から所定数の点を選び、これらの点を元に画像B上で直線上に並んだ特徴点を評価点として再帰的に生成する。詳しくは、この評価点生成部30dは、追跡部30cによって得られた各特徴点の中で四角形の頂点をなす4点を抽出し、その4点を元に画像B上で直線上に並んだ特徴点を評価点として再帰的に生成する。また、この評価点生成部30dは、四角形の頂点をなす4点から前記四角形の内点を求める第1の追加処理部30d−1と、この第1の追加処理部30d−1によって得られた内点と前記四角形の辺との交点である境界点を求める第2の追加処理部30d−2と、この第2の追加処理部30−2によって得られた境界点と前記四角形の頂点との延長線と前四角形の辺の延長線との交点である外点を求める第3の追加処理部30d−3とを備え、前記各追加処理部30d−1〜30d−3によって得られた内点、境界点、外点を評価点として追加する。
【0052】
評価部30eは、評価点生成部30dによって生成された各評価点と画像B上で追跡された各特徴点との適合性を評価する。
【0053】
変換式算出部30fは、評価部30eによって最も適合性の高かった点の集まりを用いて画像間の変換式を算出する。
【0054】
また、画像処理部30gは、変換式算出部30fによって得られた変換式に基づいて画像Aと画像Bを位置合わせてして所定の画像を生成する。前記所定の画像とは、例えばパノラマ画像や手振れ補正した画像などである。
【0055】
次に、具体的な処理手順を説明する前に、理解を容易にするため、図5乃至図8を参照して、本方式について説明しておく。
【0056】
処理の全体はRANSACアルゴリズムに基づく。仮の変換行列を繰り返し計算する従来例のRANSACとの違いは、特徴点の配置に次に述べるような制約を設けることと、適合点の判定方法で用いる「変換によって移る座標」の算出を、従来のように変換パラメータ(射影変換行列)を求めることで行うのではなく、4組の特徴点から再帰的に求められる各点の座標から直接判定することである。
【0057】
なお、後述するように再帰的に各点の座標を求めていくため、計算誤差が蓄積する懸念はあるが、RANSACによってインライア集合を求めるのに十分な精度があれば良く、最終的なパラメータを算出するにはループを出てから再計算すれば良いので、大きな問題とはならない。
【0058】
(1)特徴点座標の制約
(入力の制約)
まず、特徴点を選出するに際し、以下のような制約を置く。
【0059】
一方の平面である基準平面上の各特徴点の座標は、正方格子状に所定の座標に固定的に設定するものとしている。ここで、特徴のないパターンの上にある特徴点は特徴点対応集合から除去してかまわない。
【0060】
他方の平面を被追跡平面と呼び、その上の各特徴点の座標は、基準平面上の特徴点座標にある特徴パターンが、どの座標に移動したかを追跡アルゴリズム(ブロックマッチングや勾配法)によって推定した座標によって構成するものとする。
【0061】
これらの特徴点対応がn組、すなわち、
((x0 ,y0 ),(x″0 ,y″0 )),((x1 ,y1 ),(x″1 ,y″1 )),…,((xn-1 ,yn-1 ),(x″n-1 ,y″n-1 ))
の要領で、対の配列として構成されているものとする。
【0062】
なお、(x,y)は基準平面上の特徴点の座標、(x″,y″)は被追跡平面上で追跡した特徴点の座標を表している。また、後述する(x′,y′)は被追跡平面上の特徴点の座標を表している。
【0063】
(部分集合の抽出)
従来例のRANSACによるランダムな部分集合の抽出は、4組の特徴点を使うアルゴリズムであれば、4個の特徴点をランダムに選んで行う。特徴点が重複したり、退化条件(一直線に並ぶなど)の場合は意味がなく、再度抽出し直すが、本方式では、さらに制約を強くする。
【0064】
すなわち、4組の特徴点を選択するが、基準平面(画像A)における4点の配置が、矩形の各頂点をなし、その1辺の長さが、前述した格子配置の間隔の2m(但し、mは任意の正整数)となっているものを選ぶ。
【0065】
具体的な方法としては、例えば、左上座標とmをランダムに決めることで選んでも良いし、制約が強く組み合わせ数が少ないため、ループによって順次すべての組み合わせを選択していっても良い。当然ながら、存在しない特徴点の座標を含んでしまった場合は破棄して次の組み合わせに進む。
【0066】
図5に基準平面における特徴点の部分集合の抽出例を示す。黒点は特徴点座標を示す。図中の点線枠で示した正方形の各頂点を構成する4点の組みが抽出対象となる。
【0067】
(2)変換によって移る座標の導出方法
ここが本実施形態の特徴となる。
【0068】
通常、正方形配置の4点の特徴点対応から射影変換は一意に決まる(射影変換が退化するような例外的な対応点が存在する場合を除く)。本実施形態では、この時点で基準平面(画像A)から被追跡平面(画像B)への射影変換のパラメータ(変換行列)を求めることはしないが、便宜的に変換Hとして名前をつけて説明する。
【0069】
4点の周囲の他の特徴点対応について、以下に述べるように、基準平面上の特徴点の座標(xi ,yi )が変換Hによって被追跡平面に移される座標(x′i ,y′i )を求める。求めた後の処理は、一般のRANSACと同様で、追跡座標(x″i ,y″i )との距離を調べて適合性を判定することができる。
【0070】
座標(x′i ,y′i )を変換Hの成分を求めることなく、直接に求めることができる理由は、特徴点相互の位置関係が制約されているために、射影変換の性質「直線を直線に移す」を利用できるからである。すなわち、基準平面から抽出した4つの特徴点を結ぶ6個の直線は、そのまま被追跡平面から抽出した4つの特徴点がなす6個の直線に移る。さらに、「直線の交点は直線の交点に移る」ことが言える。したがって、変換によって移る交点の座標が求められるという原理である。
【0071】
ここで示した導出方法を再帰的に適用して、全ての特徴点変換座標を求めるが、初期の抽出4点に関しては、基準平面の点a,b,c,dから、変換Hを用いて移る点a′,b′,c′,d′と、追跡された点a″,b″,c″,d″は同じ座標となる。それ以外の導出された点では同じ座標とは限らない。
【0072】
ここで、前記4点の周囲の他の特徴点として、内点、境界点、外点を導出する方法について説明する。
【0073】
(3)内点の変換座標の導出
まず、内点を導出する方法について説明する。内点とは、ここでは基準画像の選択矩形の中心点のことを指している。
【0074】
図6は内点の変換座標の導出方法を説明するための図である。図6(a)が基準平面の位置関係、同図(b)が被追跡平面の位置関係の例である。なお、図には、追跡された座標e″の例も示した(e′とe″の距離を測れば適合点か否かを判別できる)。但し、以後の処理で、再帰的処理のためにe′を求める場合には、e″は必ずしも存在しない。特徴点が除外されていて追跡が行われなかったり、再帰的処理の中間結果として導出する場合には、特徴点格子幅より小さい幅単位になっていることもあって良い。図7、図8についても同様である。
【0075】
基準平面の正方形頂点a,b,c,dを被追跡平面の点a′,b′,c′,d′に移す変換Hを用いて、ちょうど中央の点eが、被追跡平面に変換される座標e′を、以下のように求めることができる。
【0076】
点pの平面座標(xp ,yp )の内部表現を、(xp ,yp ,1)のように拡張ベクトルで表現する。なお、後で無限遠点も扱うが、平面原点から見て、(xp ,yp )方向の無限遠点は(xp ,yp ,0)のように表現する。同次座標と捉えても良い。
【0077】
ここで、基準平面上の点eは、点aと点dを通る直線と、点bと点cを通る直線の交点である。したがって、変換Hによって移される被追跡平面上の点e′は、点a′とd′を通る直線と、点b′と点c′を通る直線の交点を求めれば良い。この計算は、「2点を通る直線を求める方法」と、「2直線の交点を求める方法」を用いれば容易に構成できる。後の処理でも、この2つの方法をサブルーチンとして使う。
【0078】
「2点を通る直線を求める方法」
平面上の2点p,qを通る直線は、次の(1)式で表される。
【0079】
(x′p −x′q )(y′−y′q )=(y′p −y′q )(x′−x′q )
…(1)
前記(1)式において、同類項をまとめれば、直線:α1 x′+α2 y′+α3 =0となる。
【0080】
なお、後で、p,qのうち1点が無限遠点となる場合が出てくるが、その時は、無限遠点の方向に方向ベクトルを持ち、平面上の点(無限遠点でないほうの点)を通る直線を求めればよい。
【0081】
「2直線の交点を求める方法」
2直線の交点は、直線:α1 x′+α2 y′+α3 =0、直線:β1 x′+β2 y′+β3 =0とすると、次式の線形方程式の解を求めればよい。
【数1】
【0082】
但し、2直線が平行である場合(数値計算上は、ほぼ平行な場合)は、直線の延長上の無限遠点、例えば(α2,−α1,0)ないし(β2,−β1,0)を解と決める。
【0083】
(4)境界点の変換座標の導出
次に、境界点を導出する方法について説明する。境界点とは、ここでは基準画像の選択矩形の各辺の中点のことを指している。
【0084】
図7は境界点の変換座標の導出方法を説明するための図である。図7(a)が基準平面の位置関係、同図(b)が被追跡平面の位置関係の例である。なお、正方形を構成する4辺のどの辺を選んでも全く対称的なので、ここでは右辺上の点fを例にして説明する。
【0085】
基準平面の正方形頂点a,b,c,dを被追跡平面の点a′,b′,c′,d′に移す変換Hを用いて、任意の辺の中点が、被追跡平面のどの座標に変換されるかを、以下のように求めることができる。
【0086】
今、中央の点eに対応する点e′が求められているとする。まず、点a′と点b′を通る直線と、点c′と点d′を通る直線の交点w′を前述の方法によって求める。前述の通り、直線が平行ならば、w′は無限遠点である。
【0087】
次に、点b′と点d′を通る直線と、e′とw′を通る直線の交点を前述の方法によって求める。この交点が境界点fである。
【0088】
同様にして、すべての辺の中点を求めると、各辺の長さが半分の4個の小正方形の頂点の変換座標が求められる。なお、これらの小正方形の変換に対して、再帰的に、内点座標の導出と境界点座標の導出を適用していけば、もとの正方形の内部及び境界のすべての格子状特徴点の変換座標が求めることができる。
【0089】
(5)外点の変換座標の導出
次に、外点を導出する方法について説明する。外点とは、ここでは基準画像の選択矩形の頂点から矩形辺長だけ離れた格子点のことを指している。
【0090】
図8は外点の変換座標の導出方法を説明するための図である。図7(a)が基準平面の位置関係、同図(b)が被追跡平面の位置関係の例である。なお、正方形を構成する4辺のどの辺・方向を選んでも全く対称的なので、ここでは下辺を右側に延長した点gを例にして説明する。
【0091】
基準平面の正方形頂点a,b,c,dを被追跡平面の点a′,b′,c′,d′に移す変換Hを用いて、任意の辺上を辺の長さだけ外に延長した点が、被追跡平面のどの座標に変換されるかを、以下のように求めることができる。
【0092】
今、右辺の中点fに対応する点f′が求められているとする。変換Hによって移される点g′は、変換Hによって移される点a′,b′,c′,d′の座標から、点a′と点g′を通る直線と、点c′と点d′を通る直線の交点を求めれば良い。この交点が外点である。
【0093】
この方法で、外側の隣接点のすべてを求めることができ、もとと同じ大きさの4個の正方形の頂点の座標が求められる。以上の方法を再帰的に適用して、順次、隣接点とその内部・境界をたどっていけば、画面上の全ての特徴点の変換座標を求めることができる。
【0094】
以下に、具体的な処理手順について説明する。
今、連続した2つの画像Aと画像Bを位置合わせする場合を想定する。画像Aで直線上に並んだ特徴点は、カメラの回転などによって歪んだ画像B上でも直線上に並んでいるはずである。したがって、画像Aで直線上に並んでいた特徴点を画像B上で追跡してみて、これが画像B上で直線上になければ、異常な動きをしている特徴点として除外できる。
【0095】
ここで、直線が直線に移ることは保証されているが、直線自体の角度は変化しうるし、直線各部の長さも変化する。そこで、画像B上で評価用の適切な直線をいかに引くかという問題を「4点を基準にして内点を作り、境界点を作り、外点を作る」という手法を繰り返すことで解決するものである。
【0096】
図9は第1の実施形態における画像間の位置合わせの処理手順を示すフローチャートである。また、図10は図9に含まれる評価対象追加処理を示すフローチャートである。なお、これらのフローチャートで示す各処理は、プログラムコードの形態でプログラムコード記憶装置29に記憶されている。コンピュータであるCPU30は、このプログラムを読み込むことにより、以下のような処理を実行する。
【0097】
図9のフローチャートに示すように、CPU30は、連続した2つの画像Aと画像Bを取得する(ステップS100)。なお、この画像A,Bは、連続撮影などによってイメージセンサ22から直接取得することでも良いし、メモリカード31などを通じて外部から提供されるものであっても良い。画像Aは基準画像として、図3に示したメモリ23の第1のバッファ23aに格納され、画像Bは被追跡画像として、第2のバッファ23bに格納される。
【0098】
画像Aと画像Bが得られると、まず、CPU30は、図5に示したように基準画像である画像A上から格子状の特徴点を選択、つまり、直線上に並んだ特徴点の集まりを選択する(ステップS101)。続いて、CPU30は、画像A上の格子点(特徴点)に対応する画像B上の特徴点をブロックマッチングまたは勾配法などを用いて追跡する(ステップS102)。そして、この追跡処理によって得られた画像B上の特徴点の中から任意の4点を選び、これを仮想格子点とする(ステップS103)。この4点は、図6(b)に示した点a′,b′,c′,d′に相当し、四角形の頂点をなす。
【0099】
なお、ここで言う「仮想格子点」とは、画像Aの特徴点から変換Hによって画像Bに移される点のことであり、評価点として用いられる。この時点では、まだ4点しかないので、この4点を元に下記のような方法によって増やしていく。
【0100】
すなわち、CPU30は、この4点を元に、直線を引く操作と交点を求める操作を画像B上で繰り返すことにより、仮想格子点を追加していく(ステップS104)。
【0101】
詳しくは、図10のフローチャートに示すように、CPU30は、ステップS103で選んだ画像B上の4点を元に内点を求め(ステップS201)、続いて、その内点を手かがりにして境界点を求め(ステップS202)、さらに、その境界点を手かがりにして外点を求める(ステップS203)。なお、これらの点の求め方については、図6乃至図8で説明した通りであるため、ここでは省略する。
【0102】
このように、ステップS103で得られた4点を元に内点、境界点、外点の順で求めていく。これにより、内点1つ、境界点4つ、外点8つの計13個の点が仮想格子点(評価点)が生成されることになる。これらの点は、ステップS103で得られた4点から変換Hによって、画像Aから画像Bに移された特徴点座標を意味している。
【0103】
続いて、CPU30は、前記追加された点から四角形の頂点をなす4点を新たに選び(ステップS106)、その4点を元に前記同様の処理を繰り返して仮想格子点を順次追加していく(ステップS104)。
【0104】
仮想格子点の数が画像A上の格子点の数に達すると、つまり、仮想格子点が画像Bの全体に生成されると(ステップS105のYes)、ここでのループが終了する。この場合、最終的に画像A上の格子点の数まで追加処理を繰り返しても良いし、予め決められた数に達した時点で終了しても良い。精度を求めるのであれば、格子点の数になるまで追加処理を繰り返すことが好ましい。
【0105】
次に、CPU30は、画像B上で、それぞれに対応する仮想格子点と追跡点との間の距離を計算する(ステップS107)。つまり、画像Aの各特徴点から変換Hによって画像Bに移される各点と、画像Aの各特徴点からステップS102の追跡処理で求められた各点とを比較して、両者間の位置ずれを求める。
【0106】
そして、CPU30は、両者の距離が所定値以下であった場合、つまり、仮想格子点と追跡点との位置ずれが許容範囲内であれば、そのときの追跡点を適合点と判断し、その座標をメモリ23の所定の領域に記録しておくと共に(ステップS108)、適合点の総和を今回のスコアとして求め、図11に示すスコア管理テーブル32に記録する(ステップS109)。
【0107】
例えば、仮想格子点の数が100個あったとして、その中の20個の点が不適合であった場合には、その回のスコアとして80点がスコア管理テーブル32に記録される。なお、このスコア管理テーブル32は、メモリ23に設けられている。
【0108】
続いて、CPU30は、再び画像B上の特徴点からスタート点となる別の4点を仮想格子点として選ぶ(ステップS110のNo→S103)。そして、前記同様に、その4点を元に直線を引く操作と交点を求める操作を繰り返して仮想格子点を増やしていき、仮想格子点の数が格子点の数に達した時点で、仮想格子点と追跡点との距離に基づいて適合性を判断し、適合点として得られた数の総和を今回のスコアとしてスコア管理テーブル32に記録する(ステップS104〜S109)
以上の処理を所定回数繰り返す。
所定回数分のスコアが得られると(ステップS110のYes)、CPU30は、その中で最もスコアが高かった回の適合点を前記メモリ23の所定の領域から読み出し、その適合点の集合を用いて画像Aと画像Bの変換行列(射影変換の行列式)を計算する(ステップS111)。
【0109】
図11の例では、5回までのスコアが記録されており、その中で最もスコアの高い2回目で抽出された適合点が変換に最適な点として選択されることになる。なお、変換行列の求め方については従来と同様であるため、ここではその説明を省略するものとする。
【0110】
このようにして変換行列が得られると、以後、CPU30は、その変換行列を用いて画像Aと画像Bを位置合わせてして、予め設定された撮影モードに従って、例えばパノラマ画像を生成したり、手振れを補正した画像を生成するなどの所定の画像処理を行う(ステップS112)。なお、この変換行列を用いた画像処理については公知であるため、ここでは、その詳しい説明は省略する。この画像処理によって得られた画像は、JPEG等の所定の方式で圧縮された後、例えばメモリカード31などに記録保存される。
【0111】
このように、一定の制約の下で直線上に並んだ特徴点を選択し、その特徴点を元に「2点を通る直線を求める計算」と「2直線の交点座標を求める計算」を繰り返して、評価対象とする点を再帰的に求めていくことで、その中で適合性の高い点の集まりを用いて画像間の変換式を簡易に算出することが可能となる。したがって、従来のように仮の変換式を何度も繰り返し求める方法に比べて、計算量を大幅に削減でき、ハードウェア構成も簡素化して画像間の変換式を高速に求めることができる。
【0112】
また、このようにして得られた変換式をカメラの画像合成に適用することで、例えばパノラマ画像や手振れ補正した画像などを簡単に作成することができる。
【0113】
(第2の実施形態)
次に、本発明の第2の実施形態について説明する。
【0114】
前記第1の実施形態では、画像A上の全特徴点に対して一括して追跡処理を行い、以後の処理は画像Bだけで行うようにしたが、第2の実施形態では、画像A上で特徴点を追加しながら、画像B上でその特徴点に対応させて評価点を追加するようにしものである。
【0115】
なお、装置構成については、前記第1の実施形態と同様であるため、ここでは処理手順についてのみ説明する。
【0116】
図12は第2の実施形態における画像間の位置合わせの処理手順を示すフローチャートである。なお、このフローチャートで示す各処理は、プログラムコードの形態でプログラムコード記憶装置29に記憶されている。コンピュータであるCPU30は、このプログラムを読み込むことにより、以下のような処理を実行する。
【0117】
図12のフローチャートに示すように、CPU30は、連続した2つの画像Aと画像Bを取得する(ステップS300)。なお、この画像A,Bは、連続撮影などによってイメージセンサ22から直接取得することでも良いし、メモリカード31などを通じて外部から提供されるものであっても良い。画像Aは基準画像として、図3に示したメモリ23の第1のバッファ23aに格納され、画像Bは被追跡画像として、第2のバッファ23bに格納される。
【0118】
画像Aと画像Bが得られると、まず、図5で説明したように、CPU30は、基準画像である画像A上の特徴点から一定の制約の下に直線上に並んだ2点を2組、合わせて4点を選ぶ(ステップS301)。この4点は、図6(a)に示した点a,b,c,dに相当し、四角形(画像A上では矩形)の頂点をなす。
【0119】
続いて、CPU30は、画像A上の4点に対応する画像B上の4点をブロックマッチングまたは勾配法などを用いて追跡する(ステップS302)。この場合、画像Bはカメラの回転などによって歪んでいる可能性があるため、追跡処理によって得られた画像B上の4点は矩形になるとは限らない。
【0120】
ここで、画像Aに対し、CPU30は、前記ステップS301で選んだ4点の組み元に、直線を引く操作と交点を求める操作を繰り返すことにより、特徴点を追加していく(ステップS303)。なお、この追加処理については図10と同様である。すなわち、画像A上で、ステップS301で得られた4点を元に内点、境界点、外点を求めていく。
【0121】
画像Bについても同様であり、CPU30は、ステップS302の追跡処理で得られた4点を元に直線を引く操作と交点を求める操作を繰り返すことにより、評価点を追加していく(ステップS306)。なお、「評価点」とは、前記第1の実施形態で説明した「仮想格子点」と同様の意味であり、画像Aの特徴点から変換Hによって画像Bに移される点のことである。
【0122】
さらに、CPU30は、画像Aから前の処理で追加された点から四角形(画像Aでは矩形)の頂点をなす4点を新たに選び(ステップS305)、その4点を元に前記同様の処理を繰り返して特徴点を順次追加していく(ステップS303)。画像Bについても同様であり、画像Bから前の処理で追加された点から四角形の頂点をなす4点を新たに選び(ステップS308)、前記同様の処理を繰り返して評価値を順次追加していく(ステップS306)。
【0123】
なお、ステップS305の処理とステップS308の処理はリンクしており、画像A上で新たな4点を選んだ場合に、当然のことながら、画像B上では、その画像A上の4点と対応関係にある4点を選ぶことになる。
【0124】
画像A、B上で追加された点がそれぞれに所定数に達すると(ステップS304のYes,ステップS307のYes)、ここでのループが終了する。この場合、最終的に画像A上の特徴点のすべてを選び出すまで、追加処理を繰り返しても良いし、予め決められた数に達した時点で終了しても良い。精度を求めるのであれば、特徴点のすべてを選び出すまで、追加処理を繰り返すことが好ましい。
【0125】
次に、CPU30は、画像A上の特徴点に対応する画像B上の特徴点を追跡する(ステップS309)。そして、CPU30は、画像B上で、それぞれに対応する評価点と追跡点との距離を計算する(ステップS310)。つまり、画像Aの各特徴点から変換Hによって画像Bに移される各点(第2のループで得られる各点)と、画像Aの各特徴点(第1のループで得られる各点)からステップS309の追跡処理で求められた各点とを比較して、両者間の位置ずれを求める。なお、第1のループとはステップS303〜S305の繰り返し処理、第2のループとはステップS306〜S308の繰り返し処理のことを示す。
【0126】
そして、CPU30は、両者の距離が所定値以下であった場合、つまり、評価点と追跡点との位置ずれが許容範囲内であれば、そのときの追跡点を適合点と判断し、その座標をメモリ23の所定の領域に記録しておくと共に(ステップS311)、そのときに得られた適合点の総和を今回のスコアとして求め、図11に示すスコア管理テーブル32に記録する(ステップS312)。
【0127】
続いて、CPU30は、再び画像Aからスタート点となる別の4点を選び(ステップS313のNo→301)、その4点に対応する画像B上の4点を追跡する(ステップS302)。そして、前記同様に、画像A上で、その4点を元に直線を引く操作と交点を求める操作を繰り返して特徴点を増やしていく(ステップS303〜S305)。画像Bについても同様であり、画像Aで選んだ4点に対応した4点を元に直線を引く操作と交点を求める操作を繰り返しながら、評価点を増やしていく(ステップS306〜S307)。
【0128】
そして、CPU30は、画像A上の特徴点に対応する画像B上の特徴点を追跡し、前記同様に、画像B上で評価値と追跡点との距離に基づいて適合性を判断し、適合点として得られた数の総和を今回のスコアとしてスコア管理テーブル32に記録する(ステップS309〜S312)
以上の処理を所定回数繰り返す。
【0129】
所定回数分のスコアが得られると(ステップS313のYes)、CPU30は、その中で最もスコアが高かった回の適合点を前記メモリ23の所定の領域から読み出し、その適合点の集合を用いて画像Aと画像Bの変換行列(射影変換の行列式)を計算する(ステップS314)。
【0130】
このようにして変換行列が得られると、以後、CPU30は、前記変換行列を用いて画像Aと画像Bを位置合わせてして、予め設定された撮影モードに従って、例えばパノラマ画像を生成したり、手振れを補正した画像を生成するなどの所定の画像処理を行う(ステップS315)。
【0131】
このように、画像A上で特徴点を追加しながら、画像B上でその特徴点に対応させて評価点を追加するような方法であっても、前記第1の実施形態と同様の効果を得ることができる。
【0132】
なお、本発明の用途はRANSACに限定されない。例えば、特殊なマーカを用いるなどして絶対に信頼できる4点があった時に、その他の誤りを含む対応点の中からアウトライアを高速に除去する場合にも使える。
【0133】
また、前記各実施形態では、デジタルカメラに例にして説明したが、デジタルカメラの他に、例えばパーソナルコンピュータなど、画像を扱える装置であれば、そのすべてに適用可能である。この場合、図2に示すように、デジタルカメラ1とPC40とを接続し、デジタルカメラ1で連続撮影された各画像をPC40に転送し、PC40側で図9および図10に示したような処理を実行するといった構成にしても良い。
【0134】
要するに、本発明は前記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、前記各実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【0135】
また、上述した各実施形態において記載した手法は、コンピュータに実行させることのできるプログラムとして、例えば磁気ディスク(フレキシブルディスク、ハードディスク等)、光ディスク(CD−ROM、DVD等)、半導体メモリなどの記録媒体に書き込んで各種装置に適用したり、通信媒体により伝送して各種装置に適用することも可能である。本装置を実現するコンピュータは、記録媒体に記録されたプログラムを読み込み、このプログラムによって動作が制御されることにより、上述した処理を実行する。
【図面の簡単な説明】
【0136】
【図1】図1は本発明の第1の実施形態に係る画像処理装置をデジタルカメラに適用した場合の外観構成を示す図であり、図1(a)は主に前面の構成、同図(b)は主に背面の構成を示す斜視図である。
【図2】図2は同実施形態におけるデジタルカメラの電子回路構成を示すブロック図である。
【図3】図3は同実施形態におけるデジタルカメラのCPUの機能構成を示すブロック図である。
【図4】図4は同実施形態におけるデジタルカメラの処理対象とする2つの連続した画像の一例を示す図である。
【図5】図5は同実施形態における基準平面における特徴点の部分集合の抽出例を示す図である。
【図6】図6は同実施形態における内点の変換座標の導出方法を説明するための図である。
【図7】図7は同実施形態における境界点の変換座標の導出方法を説明するための図である。
【図8】図8は同実施形態における外点の変換座標の導出方法を説明するための図である。
【図9】図9は同実施形態における画像間の位置合わせの処理手順を示すフローチャートである。
【図10】図10は同実施形態における評価対象追加処理を示すフローチャートである。
【図11】図11は同実施形態におけるすスコア管理テーブルの一例を示す図である。
【図12】図12は本発明の第2の実施形態における画像間の位置合わせの処理手順を示すフローチャートである。
【図13】図13は従来方式による画像間の位置合わせの処理手順を示すフローチャートである。
【符号の説明】
【0137】
1…デジタルカメラ、2…ボディ、3…撮影レンズ、4…セルフタイマランプ、5…光学ファインダ窓、6…ストロボ発光部、7…マイクロホン部、8…電源キー、9…シャッタキー、10…撮影モード(R)キー、11…再生モード(P)キー、12…光学ファインダ、13…スピーカ部、14…マクロキー、15…ストロボキー、16…メニュー(MENU)キー、17…リングキー、18…セット(SET)キー、19…表示部、21…光学レンズ装置、22…イメージセンサ、23…メモリ、24…表示装置、25…画像処理装置、26…操作部、27…コンピュータインタフェース部、28…外部記憶IO装置、29…プログラムコード記憶装置、30…CPU、30a…画像取得部、30b…特徴点選択部、30c…追跡部、30d…評価点生成部、30d−1…第1の追加処理部、30d−2…第2の追加処理部、30d−3…第3の追加処理部、30e…評価部、30f…変換式算出部、30g…画像処理部、31…メモリカード、32…スコア管理テーブル、40…PC。
【特許請求の範囲】
【請求項1】
少なくとも2つの画像を取得する画像取得手段と、
この画像取得手段によって得られた第1の画像から一定の制約の下で直線上に並んだ特徴点を選択する特徴点選択手段と、
この特徴点選択手段によって選択された特徴点を第2の画像上で追跡する追跡手段と、
この追跡手段によって追跡された各特徴点から所定数の点を選び、これらの点を元に前記第2の画像上で直線上に並んだ特徴点を評価点として再帰的に生成する評価点生成手段と、
この評価点生成手段によって生成された各評価点と前記第2の画像上で追跡された各特徴点との適合性を評価する評価手段と、
この評価手段によって最も適合性の高かった点の集まりを用いて画像間の変換式を算出する変換式算出手段と
を具備したことを特徴とする画像処理装置。
【請求項2】
前記評価点生成手段は、前記追跡手段によって追跡された各特徴点の中で四角形の頂点をなす4点を抽出し、その4点を元に前記第2の画像上で直線上に並んだ特徴点を評価点として再帰的に生成することを特徴とする請求項1記載の画像処理装置。
【請求項3】
前記評価点生成手段は、
前記四角形の頂点をなす4点から前記四角形の内点を求める第1の追加処理手段と、
この第1の追加処理手段によって得られた内点と前記四角形の辺との交点である境界点を求める第2の追加処理手段と、
この第2の追加処理手段によって得られた境界点と前記四角形の頂点との延長線と前四角形の辺の延長線との交点である外点を求める第3の追加処理手段とを備え、
前記各追加処理手段によって得られた内点、境界点、外点を評価点として追加することを特徴とする請求項2記載の画像処理装置。
【請求項4】
前記変換式算出手段によって得られた変換式に基づいて前記第1の画像と前記第2の画像を位置合わせてして所定の画像を生成する画像処理手段と
をさらに具備したことを特徴とする請求項1記載の画像処理装置。
【請求項5】
少なくとも2つの画像を取得する第1のステップと、
この第1のステップによって得られた第1の画像から一定の制約の下で直線上に並んだ特徴点を選択する第2のステップと、
この第2のステップによって選択された特徴点を第2の画像上で追跡する第3のステップと、
この第3のステップによって追跡された各特徴点から所定数の点を選び、これらの点を元に前記第2の画像上で直線上に並んだ特徴点を評価点として再帰的に生成する第4のステップと、
この第4のステップによって生成された各評価点と前記第2の画像上で追跡された各特徴点との適合性を評価する第5のステップと、
この第5のステップによって最も適合性の高かった点の集まりを用いて画像間の変換式を算出する第6のステップと
を備えたことを特徴とする画像変換方法。
【請求項6】
コンピュータによって読み取り可能な記録媒体に記録されたプログラムであって、
前記コンピュータに、
少なくとも2つの画像を取得する第1の機能と、
この第1の機能によって得られた第1の画像から一定の制約の下で直線上に並んだ特徴点を選択する第2の機能と、
この第2の機能によって選択された特徴点を第2の画像上で追跡する第3の機能と、
この第3の機能によって追跡された各特徴点から所定数の点を選び、これらの点を元に前記第2の画像上で直線上に並んだ特徴点を評価点として再帰的に生成する第4の機能と、
この第4の機能によって生成された各評価点と前記第2の画像上で追跡された各特徴点との適合性を評価する第5の機能と、
この第5の機能によって最も適合性の高かった点の集まりを用いて画像間の変換式を算出する第6の機能と
を実現させることを特徴とするプログラム。
【請求項1】
少なくとも2つの画像を取得する画像取得手段と、
この画像取得手段によって得られた第1の画像から一定の制約の下で直線上に並んだ特徴点を選択する特徴点選択手段と、
この特徴点選択手段によって選択された特徴点を第2の画像上で追跡する追跡手段と、
この追跡手段によって追跡された各特徴点から所定数の点を選び、これらの点を元に前記第2の画像上で直線上に並んだ特徴点を評価点として再帰的に生成する評価点生成手段と、
この評価点生成手段によって生成された各評価点と前記第2の画像上で追跡された各特徴点との適合性を評価する評価手段と、
この評価手段によって最も適合性の高かった点の集まりを用いて画像間の変換式を算出する変換式算出手段と
を具備したことを特徴とする画像処理装置。
【請求項2】
前記評価点生成手段は、前記追跡手段によって追跡された各特徴点の中で四角形の頂点をなす4点を抽出し、その4点を元に前記第2の画像上で直線上に並んだ特徴点を評価点として再帰的に生成することを特徴とする請求項1記載の画像処理装置。
【請求項3】
前記評価点生成手段は、
前記四角形の頂点をなす4点から前記四角形の内点を求める第1の追加処理手段と、
この第1の追加処理手段によって得られた内点と前記四角形の辺との交点である境界点を求める第2の追加処理手段と、
この第2の追加処理手段によって得られた境界点と前記四角形の頂点との延長線と前四角形の辺の延長線との交点である外点を求める第3の追加処理手段とを備え、
前記各追加処理手段によって得られた内点、境界点、外点を評価点として追加することを特徴とする請求項2記載の画像処理装置。
【請求項4】
前記変換式算出手段によって得られた変換式に基づいて前記第1の画像と前記第2の画像を位置合わせてして所定の画像を生成する画像処理手段と
をさらに具備したことを特徴とする請求項1記載の画像処理装置。
【請求項5】
少なくとも2つの画像を取得する第1のステップと、
この第1のステップによって得られた第1の画像から一定の制約の下で直線上に並んだ特徴点を選択する第2のステップと、
この第2のステップによって選択された特徴点を第2の画像上で追跡する第3のステップと、
この第3のステップによって追跡された各特徴点から所定数の点を選び、これらの点を元に前記第2の画像上で直線上に並んだ特徴点を評価点として再帰的に生成する第4のステップと、
この第4のステップによって生成された各評価点と前記第2の画像上で追跡された各特徴点との適合性を評価する第5のステップと、
この第5のステップによって最も適合性の高かった点の集まりを用いて画像間の変換式を算出する第6のステップと
を備えたことを特徴とする画像変換方法。
【請求項6】
コンピュータによって読み取り可能な記録媒体に記録されたプログラムであって、
前記コンピュータに、
少なくとも2つの画像を取得する第1の機能と、
この第1の機能によって得られた第1の画像から一定の制約の下で直線上に並んだ特徴点を選択する第2の機能と、
この第2の機能によって選択された特徴点を第2の画像上で追跡する第3の機能と、
この第3の機能によって追跡された各特徴点から所定数の点を選び、これらの点を元に前記第2の画像上で直線上に並んだ特徴点を評価点として再帰的に生成する第4の機能と、
この第4の機能によって生成された各評価点と前記第2の画像上で追跡された各特徴点との適合性を評価する第5の機能と、
この第5の機能によって最も適合性の高かった点の集まりを用いて画像間の変換式を算出する第6の機能と
を実現させることを特徴とするプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2008−276621(P2008−276621A)
【公開日】平成20年11月13日(2008.11.13)
【国際特許分類】
【出願番号】特願2007−121147(P2007−121147)
【出願日】平成19年5月1日(2007.5.1)
【出願人】(000001443)カシオ計算機株式会社 (8,748)
【Fターム(参考)】
【公開日】平成20年11月13日(2008.11.13)
【国際特許分類】
【出願日】平成19年5月1日(2007.5.1)
【出願人】(000001443)カシオ計算機株式会社 (8,748)
【Fターム(参考)】
[ Back to top ]