(57)【特許請求の範囲】
【請求項１】
複数の撮像装置によって撮影された複数の撮像画像を合成する処理を行う画像処理装置であって、
前記複数の撮像画像の各々を、前記複数の撮像画像の各々を撮影した撮像装置の特定情報と撮影時刻を示す時刻情報と関連付けて記憶部に記録する画像記録部と、
前記記憶部に記録された前記複数の撮像画像から、前記複数の撮像装置の各々の推定移動量を計算する移動量推定部と、
撮影時刻が同じである前記複数の撮像画像を合成することによって生成された合成画像を構成する前記複数の撮像画像の重複領域におけるずれ量の評価値を取得する処理、前記推定移動量及び前記ずれ量の前記評価値に基づいて前記複数の撮像装置の各々の外部パラメータを更新する処理、及び更新された外部パラメータを用いて撮影時刻が同じである前記複数の撮像画像を合成する処理、を含むずれ補正処理を繰り返し実行するずれ補正部と、
を有し、
前記移動量推定部は、前記複数の撮像装置の各々について、前記画像記録部から指定期間内における前記撮像画像を取得し、時間順に並ぶ複数の撮像画像から隣接画像期間における移動量を求め、前記隣接画像期間における移動量を用いた計算によって前記推定移動量を取得する
ことを特徴とする画像処理装置。
【請求項２】
前記ずれ補正部は、前記ずれ量の前記評価値が予め決められた条件を満たすまで前記ずれ補正処理を繰り返し実行することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記推定移動量は、前記指定期間内に存在する前記隣接画像期間における移動量の合計値であることを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記隣接画像期間における移動量が予め決められた外れ値の条件を満たすか否かを判定する外れ値除外部をさらに有し、
前記移動量推定部は、前記外れ値の条件を満たす前記隣接画像期間における移動量を、前記推定移動量を算出する計算に用いない
ことを特徴とする請求項１から３のいずれか１項に記載の画像処理装置。
【請求項５】
前記ずれ補正部が前記ずれ補正処理を実行するタイミングを生成する補正タイミング決定部をさらに有することを特徴とする請求項１から４のいずれか１項に記載の画像処理装置。
【請求項６】
前記ずれ補正部は、前記ずれ補正処理の対象が前記複数の撮像装置である場合に、前記ずれ補正処理において用いられる前記ずれ量の前記評価値として、前記合成画像における複数のずれ量を合計して得られた合計値を用いることを特徴とする請求項１から５のいずれか１項に記載の画像処理装置。
【請求項７】
複数の撮像装置によって撮影された複数の撮像画像を合成する処理を行う画像処理方法であって、
前記複数の撮像画像の各々を、前記複数の撮像画像の各々を撮影した撮像装置の特定情報と撮影時刻を示す時刻情報と関連付けて記憶部に記録するステップと、
前記記憶部に記録された前記複数の撮像画像から、前記複数の撮像装置の各々の推定移動量を計算する際に、前記複数の撮像装置の各々について、前記記憶部から指定期間内における前記撮像画像を取得し、時間順に並ぶ複数の撮像画像から隣接画像期間における移動量を求め、前記隣接画像期間における移動量を用いた計算によって前記推定移動量を取得するステップと、
撮影時刻が同じである前記複数の撮像画像を合成することによって生成された合成画像を構成する前記複数の撮像画像の重複領域におけるずれ量の評価値を取得する処理、前記推定移動量及び前記ずれ量の前記評価値に基づいて前記複数の撮像装置の各々の外部パラメータを更新する処理、及び更新された外部パラメータを用いて撮影時刻が同じである前記複数の撮像画像を合成する処理、を含むずれ補正処理を繰り返し実行するステップと、
を有することを特徴とする画像処理方法。
【請求項８】
複数の撮像装置によって撮影された複数の撮像画像を合成する処理をコンピュータに実行させる画像処理プログラムであって、
前記複数の撮像画像の各々を、前記複数の撮像画像の各々を撮影した撮像装置の特定情報と撮影時刻を示す時刻情報と関連付けて記憶部に記録するステップと、
前記記憶部に記録された前記複数の撮像画像から、前記複数の撮像装置の各々の推定移動量を計算する際に、前記複数の撮像装置の各々について、前記記憶部から指定期間内における前記撮像画像を取得し、時間順に並ぶ複数の撮像画像から隣接画像期間における移動量を求め、前記隣接画像期間における移動量を用いた計算によって前記推定移動量を取得するステップと、
撮影時刻が同じである前記複数の撮像画像を合成することによって生成された合成画像を構成する前記複数の撮像画像の重複領域におけるずれ量の評価値を取得する処理、前記推定移動量及び前記ずれ量の前記評価値に基づいて前記複数の撮像装置の各々の外部パラメータを更新する処理、及び更新された外部パラメータを用いて撮影時刻が同じである前記複数の撮像画像を合成する処理、を含むずれ補正処理を繰り返し実行するステップと、
を前記コンピュータに実行させることを特徴とする画像処理プログラム。
【請求項９】
複数のカメラによって撮影された複数のカメラ画像を合成することで合成画像を生成する処理を行う画像処理装置であって、
前記複数のカメラのカメラパラメータである複数の外部パラメータを提供するカメラパラメータ入力部と、
前記カメラパラメータ入力部から提供される前記複数の外部パラメータに基づいて、投影画像の合成時に用いるマッピングテーブルである合成テーブルを生成し、前記合成テーブルを用いて前記複数のカメラ画像を同じ投影面上に投影することによって、前記複数のカメラ画像に対応する複数の投影画像を生成する投影処理部と、
前記複数の投影画像から前記合成画像を生成する合成処理部と、
前記複数のカメラに対応する基準となるカメラ画像である複数の参照画像と前記複数の参照画像に対応する複数の外部パラメータとを含む参照データと、前記複数のカメラによって撮影された前記複数のカメラ画像とに基づいて、前記複数のカメラの移動量を推定し、前記複数のカメラのカメラパラメータである複数の補正後の外部パラメータを計算する移動量推定・パラメータ計算部と、
前記カメラパラメータ入力部から提供される前記複数の外部パラメータを、前記移動量推定・パラメータ計算部によって計算された結果を用いて前記複数の補正後の外部パラメータに更新するずれ補正部と、
を備えたことを特徴とする画像処理装置。
【請求項１０】
前記参照データを予め記憶する記憶装置から、前記参照データを読み出す参照データ読出部をさらに備えたことを特徴とする請求項９に記載の画像処理装置。
【請求項１１】
前記参照データを予め記憶する記憶装置をさらに備えたことを特徴とする請求項９又は１０に記載の画像処理装置。
【請求項１２】
前記複数のカメラによって撮影された前記複数のカメラ画像から、前記参照データを選択する入力データ選択部をさらに備えたことを特徴とする請求項９に記載の画像処理装置。
【請求項１３】
前記複数のカメラによって撮影された前記複数のカメラ画像を記憶装置に記録するカメラ画像記録部をさらに備え、
前記入力データ選択部は、前記カメラ画像記録部によって記録された前記複数のカメラ画像から前記参照データを選択する
ことを特徴とする請求項１２に記載の画像処理装置。
【請求項１４】
前記複数のカメラの移動量の推定及び補正後の前記複数の外部パラメータの計算に用いないマスク領域を指定するマスク画像を生成するマスク画像生成部をさらに備え、
前記移動量推定・パラメータ計算部は、前記複数の参照画像から前記マスク領域を除く領域と、前記複数のカメラによって撮影された前記複数のカメラ画像から前記マスク領域を除く領域とに基づいて、前記複数のカメラの移動量を推定し、前記複数の補正後の外部パラメータを計算する
ことを特徴とする請求項９から１３のいずれか１項に記載の画像処理装置。
【請求項１５】
前記複数のカメラ画像が撮影された状態に基づいて前記複数のカメラ画像の各々を複数のドメインのいずれかに分類し、前記複数の参照画像が撮影された状態に基づいて前記複数の参照画像の各々を前記複数のドメインのいずれかに分類し、前記複数のカメラ画像のうちの比較対象のカメラ画像のドメインと前記複数の参照画像のうちの比較対象の参照画像のドメインとが近い状態になるようにする変換処理を、前記比較対象のカメラ画像及び前記比較対象の参照画像の少なくとも一方に行う入力画像変換部をさらに備え、
前記移動量推定・パラメータ計算部は、前記入力画像変換部から出力された前記比較対象のカメラ画像と前記比較対象の参照画像とに基づいて、前記複数のカメラの移動量を推定し、前記複数のカメラに対応する複数の補正後の外部パラメータを計算する
ことを特徴とする請求項９から１４のいずれか１項に記載の画像処理装置。
【請求項１６】
前記ドメインが近い状態は、
撮影した時刻の差が予め決められた範囲内である状態、移動体が存在しない状態、人物の数の差が予め決められた値以内である状態、日照時間の差が予め決められた時間以内である状態、及び輝度の差、輝度の分布及びコントラストのいずれかを含む画像の類似性を評価するときにおける指標が予め決められた範囲内である状態、のうちの１つ以上である画像である、もしくは
画像を分類する学習モデルから得られる分類結果から判断される
ことを特徴とする請求項１５に記載の画像処理装置。
【請求項１７】
前記変換処理は、前記比較対象のカメラ画像のドメインと前記比較対象の参照画像のドメインとを一致させる処理、又は、画像間の距離を短縮する処理であることを特徴とする請求項１５又は１６に記載の画像処理装置。
【請求項１８】
前記複数のカメラ画像に基づいて、前記複数のカメラ画像の各々を前記複数のドメインのいずれに分類するかを示す学習モデルと、前記参照画像を前記複数のドメインのいずれに分類するかを示す学習モデルを生成及び更新する再学習部をさらに備え、
前記入力画像変換部は、前記学習モデルに基づいて、前記複数のカメラ画像の各々の分類、前記複数の参照画像の各々の分類、及び前記変換処理を行う
ことを特徴とする請求項１５から１７のいずれか１項に記載の画像処理装置。
【請求項１９】
前記変換処理は、補正対象のカメラ画像のドメインと前記補正対象のカメラ画像に隣接するカメラ画像のドメインとが近い状態になるようにする処理であることを特徴とする請求項１５又は１６に記載の画像処理装置。
【請求項２０】
前記複数のカメラによって撮影された前記複数のカメラ画像を記憶装置に記録するカメラ画像記録部をさらに備え、
前記再学習部は、前記カメラ画像記録部によって記録された前記複数のカメラ画像に基づいて前記学習モデルを生成及び更新する
ことを特徴とする請求項１８に記載の画像処理装置。
【請求項２１】
前記複数のカメラ画像の各々を、前記複数のカメラ画像の各々を撮影したカメラの特定情報と撮影時刻を示す時刻情報と関連付けて記憶部に記録する画像記録部と、
前記記憶部に記録された前記複数のカメラ画像から、前記複数のカメラの各々の推定移動量を計算する移動量推定部と、
撮影時刻が同じである前記複数のカメラ画像を合成することによって生成された合成画像を構成する前記複数のカメラ画像の重複領域におけるずれ量の評価値を取得する処理、前記推定移動量及び前記ずれ量の前記評価値に基づいて前記複数のカメラの各々の外部パラメータを更新する処理、及び更新された外部パラメータを用いて撮影時刻が同じである前記複数のカメラ画像を合成する処理、を含むずれ補正処理を繰り返し実行する他のずれ補正部と、
をさらに備えたことを特徴とする請求項９から１２のいずれか１項に記載の画像処理装置。
【請求項２２】
複数のカメラによって撮影された複数のカメラ画像を合成することで合成画像を生成する処理を行う画像処理装置が行う画像処理方法であって、
前記複数のカメラのカメラパラメータである複数の外部パラメータを提供するステップと、
前記複数の外部パラメータに基づいて、投影画像の合成時に用いるマッピングテーブルである合成テーブルを生成し、前記合成テーブルを用いて前記複数のカメラ画像を同じ投影面上に投影することによって、前記複数のカメラ画像に対応する複数の投影画像を生成するステップと、
前記複数の投影画像から前記合成画像を生成するステップと、
前記複数のカメラに対応する基準となるカメラ画像である複数の参照画像と前記複数の参照画像に対応する複数の外部パラメータとを含む参照データと、前記複数のカメラによって撮影された前記複数のカメラ画像とに基づいて、前記複数のカメラの移動量を推定し、前記複数のカメラのカメラパラメータである複数の補正後の外部パラメータを計算するステップと、
前記複数の外部パラメータを、前記補正後の外部パラメータを計算するステップにおける計算の結果を用いて前記複数の補正後の外部パラメータに更新するステップと、
を有することを特徴とする画像処理方法。
【請求項２３】
複数のカメラによって撮影された複数のカメラ画像を合成することで合成画像を生成する処理をコンピュータに実行させる画像処理プログラムであって、
前記複数のカメラのカメラパラメータである複数の外部パラメータを提供するステップと、
前記複数の外部パラメータに基づいて、投影画像の合成時に用いるマッピングテーブルである合成テーブルを生成し、前記合成テーブルを用いて前記複数のカメラ画像を同じ投影面上に投影することによって、前記複数のカメラ画像に対応する複数の投影画像を生成するステップと、
前記複数の投影画像から前記合成画像を生成するステップと、
前記複数のカメラに対応する基準となるカメラ画像である複数の参照画像と前記複数の参照画像に対応する複数の外部パラメータとを含む参照データと、前記複数のカメラによって撮影された前記複数のカメラ画像とに基づいて、前記複数のカメラの移動量を推定し、前記複数のカメラのカメラパラメータである複数の補正後の外部パラメータを計算するステップと、
前記複数の外部パラメータを、前記補正後の外部パラメータを計算するステップにおける計算の結果を用いて前記複数の補正後の外部パラメータに更新するステップと、
を前記コンピュータに実行させることを特徴とする画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理方法、及び画像処理プログラムに関する。
【背景技術】
【０００２】
複数のカメラによって撮影された複数の撮像画像を合成することによって合成画像を生成する装置が提案されている（例えば、特許文献１を参照）。この装置は、車両の姿勢の変動前に撮影された撮像画像における特徴点と車両の姿勢の変動後に撮影された撮像画像における特徴点とを用いて複数のカメラの各々のカメラパラメータをキャリブレーションして、複数の撮像画像の境界部分におけるずれを補正している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】国際公開第２０１７／０６９１９１号（例えば、段落００４１、図５参照）
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記従来の装置は、短時間に発生する撮像装置の位置姿勢変化を、位置姿勢変化前後の撮像画像内の特徴点同士のマッチングによって推定している。このため、長期間（数日〜数年）におけるカメラの位置姿勢変化を推定する場合、位置姿勢変化前後の撮像画像の特徴が大きく変化することから、特徴点同士のマッチングがうまくいかない可能性がある。また、ずれの補正後に、複数の撮像画像の境界部分におけるずれが正確に補正されているかどうかを評価していない。このため、合成画像における境界部分にずれが残るという課題がある。【０００５】
本発明は、上記した従来の課題を解決するためになされたものであり、複数の撮像装置の位置姿勢の変化によって合成画像を構成する複数の撮像画像の重複領域に生じたずれを高精度に補正することができる画像処理装置、画像処理方法、及び画像処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一態様に係る画像処理装置は、複数の撮像装置によって撮影された複数の撮像画像を合成する処理を行う装置であって、前記複数の撮像画像の各々を、前記複数の撮像画像の各々を撮影した撮像装置の特定情報と撮影時刻を示す時刻情報と関連付けて記憶部に記録する画像記録部と、前記記憶部に記録された前記複数の撮像画像から、前記複数の撮像装置の各々の推定移動量を計算する移動量推定部と、撮影時刻が同じである前記複数の撮像画像を合成することによって生成された合成画像を構成する前記複数の撮像画像の重複領域におけるずれ量の評価値を取得する処理、前記推定移動量及び前記ずれ量の前記評価値に基づいて前記複数の撮像装置の各々の外部パラメータを更新する処理、及び更新された外部パラメータを用いて撮影時刻が同じである前記複数の撮像画像を合成する処理、を含むずれ補正処理を繰り返し実行するずれ補正部と、を有し、前記移動量推定部は、前記複数の撮像装置の各々について、前記画像記録部から指定期間内における前記撮像画像を取得し、時間順に並ぶ複数の撮像画像から隣接画像期間における移動量を求め、前記隣接画像期間における移動量を用いた計算によって前記推定移動量を取得することを特徴とする。
【０００７】
また、本発明の他の態様に係る画像処理方法は、複数の撮像装置によって撮影された複数の撮像画像を合成する処理を行う方法であって、前記複数の撮像画像の各々を、前記複数の撮像画像の各々を撮影した撮像装置の特定情報と撮影時刻を示す時刻情報と関連付けて記憶部に記録するステップと、前記記憶部に記録された前記複数の撮像画像から、前記複数の撮像装置の各々の推定移動量を計算する際に、前記複数の撮像装置の各々について、前記記憶部から指定期間内における前記撮像画像を取得し、時間順に並ぶ複数の撮像画像から隣接画像期間における移動量を求め、前記隣接画像期間における移動量を用いた計算によって前記推定移動量を取得するステップと、撮影時刻が同じである前記複数の撮像画像を合成することによって生成された合成画像を構成する前記複数の撮像画像の重複領域におけるずれ量の評価値を取得する処理、前記推定移動量及び前記ずれ量の前記評価値に基づいて前記複数の撮像装置の各々の外部パラメータを更新する処理、及び更新された外部パラメータを用いて撮影時刻が同じである前記複数の撮像画像を合成する処理、を含むずれ補正処理を繰り返し実行するステップと、を有することを特徴とする。
【０００８】
また、本発明の他の態様に係る画像処理装置は、複数のカメラによって撮影された複数のカメラ画像を合成することで合成画像を生成する処理を行う画像処理装置であって、前記複数のカメラのカメラパラメータである複数の外部パラメータを提供するカメラパラメータ入力部と、前記カメラパラメータ入力部から提供される前記複数の外部パラメータに基づいて、投影画像の合成時に用いるマッピングテーブルである合成テーブルを生成し、前記合成テーブルを用いて前記複数のカメラ画像を同じ投影面上に投影することによって、前記複数のカメラ画像に対応する複数の投影画像を生成する投影処理部と、前記複数の投影画像から前記合成画像を生成する合成処理部と、前記複数のカメラに対応する基準となるカメラ画像である複数の参照画像と前記複数の参照画像に対応する複数の外部パラメータとを含む参照データと、前記複数のカメラによって撮影された前記複数のカメラ画像とに基づいて、前記複数のカメラの移動量を推定し、前記複数のカメラのカメラパラメータである複数の補正後の外部パラメータを計算する移動量推定・パラメータ計算部と、前記カメラパラメータ入力部から提供される前記複数の外部パラメータを、前記移動量推定・パラメータ計算部によって計算された結果を用いて前記複数の補正後の外部パラメータに更新するずれ補正部と、を備えたことを特徴とする。
【発明の効果】
【０００９】
本発明によれば、複数の撮像装置の位置姿勢の変化によって合成画像を構成する複数の撮像画像の重複領域に生じたずれを高精度に補正することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施の形態１に係る画像処理装置のハードウェア構成の例を示す図である。
【図２】実施の形態１に係る画像処理装置の構成を概略的に示す機能ブロック図である。
【図３】（Ａ）及び（Ｂ）は、実施の形態１に係る画像処理装置の合成テーブル生成部及び合成処理部によって実行される処理の例を示す説明図である。
【図４】（Ａ）及び（Ｂ）は、実施の形態１に係る画像処理装置の合成テーブル生成部及び合成処理部によって実行される処理の他の例を示す説明図である。
【図５】実施の形態１に係る画像処理装置によって実行される処理の概要を示すフローチャートである。
【図６】実施の形態１に係る画像処理装置の画像記録部によって実行される処理を示すフローチャートである。
【図７】実施の形態１に係る画像処理装置の移動量推定部によって実行される処理を示すフローチャートである。
【図８】記録された撮像画像と移動量との関係を示す図である。
【図９】実施の形態１に係る画像処理装置の外れ値除外部によって実行される処理を示すフローチャートである。
【図１０】外れ値除外部によって実行される外れ値の除外のための処理を示す説明図である。
【図１１】実施の形態１に係る画像処理装置の補正タイミング決定部によって実行される処理を示すフローチャートである。
【図１２】実施の形態１に係る画像処理装置によって実行されるパラメータ最適化処理（すなわち、ずれ補正処理）を示すフローチャートである。
【図１３】実施の形態１に係る画像処理装置のパラメータ最適化部によって実行される外部パラメータの更新に用いられる計算式を示す説明図である。
【図１４】実施の形態１に係る画像処理装置のパラメータ最適化部によって実行されるずれ補正処理の例を示す説明図である。
【図１５】（Ａ）から（Ｄ）は、実施の形態１に係る画像処理装置のパラメータ最適化部によって実行されるずれ補正処理の他の例を示す説明図である。
【図１６】（Ａ）から（Ｃ）は、実施の形態１に係る画像処理装置のパラメータ最適化部によって実行されるずれ補正処理の他の例を示す説明図である。
【図１７】実施の形態１に係る画像処理装置の合成テーブル生成部によって実行される処理を示すフローチャートである。
【図１８】実施の形態１に係る画像処理装置の合成処理部によって実行される処理を示すフローチャートである。
【図１９】（Ａ）から（Ｃ）は、実施の形態１に係る画像処理装置のずれ量評価部によって実行されるずれ量の評価値の取得のための処理を示す説明図である。
【図２０】実施の形態１に係る画像処理装置のずれ量評価部によって実行される処理を示すフローチャートである。
【図２１】実施の形態１に係る画像処理装置の重複領域抽出部によって実行される処理を示すフローチャートである。
【図２２】実施の形態１に係る画像処理装置の表示画像出力部によって実行される処理を示すフローチャートである。
【図２３】本発明の実施の形態２に係る画像処理装置によって実行されるパラメータ最適化処理（すなわち、ずれ補正処理）を示すフローチャートである。
【図２４】実施の形態２に係る画像処理装置のパラメータ最適化部によって実行されるずれ補正処理の例を示す説明図である。
【図２５】（Ａ）から（Ｄ）は、実施の形態２に係る画像処理装置のパラメータ最適化部によって実行されるずれ補正処理の他の例を示す説明図である。
【図２６】本発明の実施の形態３に係る画像処理装置のハードウェア構成の例を示す図である。
【図２７】実施の形態３に係る画像処理装置の構成を概略的に示す機能ブロック図である。
【図２８】図２７に示される投影処理部の構成を概略的に示す機能ブロック図である。
【図２９】図２７に示される合成処理部の構成を概略的に示す機能ブロック図である。
【図３０】図２７に示されるずれ検出部の構成を概略的に示す機能ブロック図である。
【図３１】図２７に示されるずれ補正部の構成を概略的に示す機能ブロック図である。
【図３２】図２７及び図２９に示される合成処理部によって実行される処理を示すフローチャートである。
【図３３】図２７及び図２８に示される投影処理部によって実行される処理を示すフローチャートである。
【図３４】図２７及び図２８に示される投影処理部によって実行される処理の例を示す説明図である。
【図３５】図２７及び図３０に示されるずれ検出部によって実行される処理を示すフローチャートである。
【図３６】図３１に示される重畳領域抽出部によって実行される処理を示す説明図である。
【図３７】（Ａ）及び（Ｂ）は、図３０に示される投影領域ずれ量評価部によって実行される処理の例を示す説明図である。
【図３８】図２７に示される移動量推定・パラメータ計算部によって実行される処理を示すフローチャートである。
【図３９】図２７及び図３１に示されるずれ補正部によって実行される処理を示すフローチャートである。
【図４０】本発明の実施の形態４に係る画像処理装置の構成を概略的に示す機能ブロック図である。
【図４１】図４０に示されるカメラ画像記録部によって実行される処理を示すフローチャートである。
【図４２】（Ａ）から（Ｃ）は、図４０に示される入力データ選択部によって実行される処理を示す説明図である。
【図４３】図４０に示される入力データ選択部によって実行される処理を示すフローチャートである。
【図４４】（Ａ）から（Ｃ）は、図４０に示される入力データ選択部によって実行される処理を示す説明図である。
【図４５】本発明の実施の形態５に係る画像処理装置の構成を概略的に示す機能ブロック図である。
【図４６】図４５に示されるカメラ画像記録部によって実行される処理を示すフローチャートである。
【図４７】図４５に示されるマスク画像生成部の構成を概略的に示す機能ブロック図である。
【図４８】図４５に示されるマスク画像生成部によって実行される処理を示すフローチャートである。
【図４９】（Ａ）から（Ｅ）は、図４５に示されるマスク画像生成部によって実行される処理を示す説明図である。
【図５０】（Ａ）から（Ｅ）は、図４５に示されるマスク画像生成部によって実行される処理を示す説明図である。
【図５１】（Ａ）から（Ｄ）は、図４５に示されるマスク画像生成部によって実行される処理を示す説明図である。
【図５２】（Ａ）から（Ｃ）は、図４５に示されるマスク画像生成部によって実行される処理を示す説明図である。
【図５３】（Ａ）から（Ｃ）は、図４５に示されるマスク画像生成部によって実行される処理を示す説明図である。
【図５４】図４５に示される移動量推定・パラメータ計算部によって実行される処理を示すフローチャートである。
【図５５】（Ａ）から（Ｃ）は、図４５に示される移動量推定・パラメータ計算部によって実行される処理を示す説明図である。
【図５６】図４５に示されるずれ補正部の構成を概略的に示す機能ブロック図である。
【図５７】ずれ補正のための処理を示すフローチャートである。
【図５８】本発明の実施の形態６に係る画像処理装置の構成を概略的に示す機能ブロック図である。
【図５９】図５８に示される入力画像変換部の構成を概略的に示す機能ブロック図である。
【図６０】図５８及び図５９に示される入力画像変換部によって実行される処理を示すフローチャートである。
【図６１】図５８及び図５９に示される入力画像変換部によって実行される処理を示す説明図である。
【図６２】図５８及び図５９に示される入力画像変換部によって実行される処理を示す説明図である。
【図６３】実施の形態６の変形例に係る画像処理装置の画像変換先決定部によって実行される処理を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下に、本発明の実施の形態に係る画像処理装置、画像処理方法、及び画像処理プログラムを、図面を参照しながら説明する。以下の実施の形態は、例にすぎず、本発明の範囲内で種々の変更が可能である。
【００１２】
《１》実施の形態１．
《１−１》構成
図１は、本発明の実施の形態１に係る画像処理装置１０のハードウェア構成の例を示す図である。図１に示されるように、画像処理装置１０は、プロセッサ１１と、主記憶装置であるメモリ１２と、補助記憶装置である記憶装置１３と、画像入力インタフェース１４と、表示機器インタフェース１５とを備えている。プロセッサ１１は、メモリ１２に記憶されているプログラムを実行することにより、各種の演算処理及び各種のハードウェア制御処理を行う。メモリ１２に記憶されているプログラムは、実施の形態１に係る画像処理プログラムを含む。画像処理プログラムは、例えば、インターネットを経由して取得される。また、画像処理プログラムは、これが記録されて磁気ディスク、光ディスク、半導体メモリ、などの記録媒体から取得されてもよい。記憶装置１３は、例えば、ハードディスク装置、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、などである。画像入力インタフェース１４は、撮像装置であるカメラ１ａ，１ｂ，１ｃ，１ｄから提供された撮像画像すなわちカメラ画像を、撮像画像データに変換して取り込む。表示機器インタフェース１５は、撮像画像データ又は後述する合成画像データをディスプレイである表示装置１８に出力する。図１には、４台のカメラ１ａ〜１ｄが示されているが、カメラの台数は４台に限定されない。
【００１３】
カメラ１ａ〜１ｄは、画像を撮影する機能を有する。カメラ１ａ〜１ｄの各々は、ＣＣＤ（Ｃｈａｒｇｅｄ−Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅ）イメージセンサ、ＣＭＯＳ（Ｃｏｍｐｌｅｍｅｎｔａｒｙ  Ｍｅｔａｌ−Ｏｘｉｄｅ−Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）イメージセンサ、などの撮像素子と、１枚以上のレンズを含むレンズ部とを備えている。カメラ１ａ〜１ｄは、互いに同一の構造を持つ同一種類の機器である必要はない。カメラ１ａ〜１ｄは、例えば、レンズ部が固定されておりズーム機能を備えない固定カメラ、レンズ部が可動式でありズーム機能を備えたズームカメラ、又はパン・チルト・ズーム（ＰＴＺ  Ｐａｎ  Ｔｉｌｔ  Ｚｏｏｍ）カメラ、などである。実施の形態１では、カメラ１ａ〜１ｄが固定カメラである場合を説明する。
【００１４】
カメラ１ａ〜１ｄは、画像処理装置１０の画像入力インタフェース１４と接続されている。この接続は、有線接続又は無線接続のいずれであってもよい。カメラ１ａ〜１ｄと画像入力インタフェース１４との接続は、例えば、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）ネットワークによるものである。カメラ１ａ〜１ｄと画像入力インタフェース１４との接続は、他の種類の接続であってもよい。
【００１５】
画像入力インタフェース１４は、カメラ１ａ〜１ｄから撮像画像（すなわち、画像データ）を受け取る。受け取った撮像画像は、メモリ１２又は記憶装置１３に記憶される。プロセッサ１１は、メモリ１２又は記憶装置１３に記憶されたプログラムを実行して、カメラ１ａ〜１ｄから受け取った複数の撮像画像に合成処理を施すことによって、合成画像（すなわち、合成画像データ）を生成する。合成画像は、表示機器インタフェース１５を介してディスプレイとしての表示装置１８へ送られる。表示装置１８は、受け取った合成画像に基づいて画像を表示する。
【００１６】
〈画像処理装置１０〉
図２は、実施の形態１に係る画像処理装置１０の構成を概略的に示す機能ブロック図である。画像処理装置１０は、実施の形態１に係る画像処理方法を実施することができる装置である。図２に示されるように、画像処理装置１０は、画像記録部１０２と、記憶部１１４と、タイミング決定部１０３と、移動量推定部１０４と、特徴点抽出部１０５と、パラメータ最適化部１０６と、補正タイミング決定部１０７と、合成テーブル生成部１０８と、合成処理部１０９と、ずれ量評価部１１０と、重複領域抽出部１１１と、表示画像出力部１１２とを備えている。パラメータ最適化部１０６、合成テーブル生成部１０８、合成処理部１０９、ずれ量評価部１１０、及び重複領域抽出部１１１は、合成画像における撮像画像の重複領域（すなわち、重畳領域）におけるずれを補正するずれ補正部１００を構成している。また、画像処理装置１０は、外れ値除外部１１３を備えてもよい。また、画像記録部１０２は、撮像画像１０１ａ〜１０１ｄを記憶する外部記憶部１１５と接続される。記憶部１１４は、例えば、図１に示されるメモリ１２、記憶装置１３、又はそれらの一部である。外部記憶部１１５は、例えば、図１に示される外部記憶装置１７又はその一部である。
【００１７】
画像処理装置１０は、カメラ１ａ〜１ｄから撮像画像１０１ａ〜１０１ｄを受け取り、撮像画像１０１ａ〜１０１ｄを合成して、１つの合成画像を生成する。画像記録部１０２は、カメラ１ａ〜１ｄが撮像した撮像画像１０１ａ〜１０１ｄを記憶部１１４又は外部記憶部１１５又はこれらの両方に記録する。
【００１８】
タイミング決定部１０３は、画像記録部１０２が撮像画像１０１ａ〜１０１ｄを記録するタイミングを指示する。
【００１９】
移動量推定部１０４は、カメラ１ａ〜１ｄの各々の推定移動量（すなわち、位置姿勢ずれ量）を計算する。移動量は、例えば、カメラ１ａ〜１ｄの並進移動成分と回転移動成分とで表される。並進移動成分は、ＸＹＺ直交座標系におけるＸ軸、Ｙ軸、Ｚ軸方向の３成分を含む。回転移動成分は、ロール、ピッチ、ヨーの３成分を含む。なお、カメラの移動量が一意に決まるものであれば、ここではパラメータの形式は問わない。また、移動量は、上記複数の成分のうちの一部の成分から構成されてもよい。カメラ１ａ〜１ｄの移動（すなわち、位置姿勢ずれ）は、例えば、３つの並進移動成分と３つの回転移動成分とを要素とする移動ベクトルで表記することができる。移動ベクトルの例は、後述の図１３に移動ベクトルＰｔとして示される。
【００２０】
外れ値除外部１１３は、移動量推定部１０４によって推定されたカメラ１ａ〜１ｄの各々の指定期間中における移動量（以下「推定移動量」とも言う。）を決定する過程で、隣接画像の間の期間における移動量（以下「隣接画像期間における移動量」とも言う。）＃１〜＃Ｎ−１が外れ値に該当するか否かを判定し、外れ値に該当する隣接画像期間における移動量を、移動量推定部１０４で生成される推定移動量の決定のための計算に用いない。ここで、Ｎは正の整数である。隣接画像期間における移動量のいずれかが外れ値に該当するか否かの判定は、隣接画像期間における移動量が起こり得ない値であるか否かで行われことができる。例えば、外れ値除外部１１３は、隣接画像期間における移動量が予め決められた閾値を超えた場合に、隣接画像期間における移動量は外れ値であると判定する。隣接画像期間における移動量が外れ値であるか否かの判定の具体例は、後述の図９及び図１０で説明される。
【００２１】
特徴点抽出部１０５は、撮像画像１０１ａ〜１０１ｄからカメラ１ａ〜１ｄの各々の推定移動量を計算するための特徴点を抽出する。
【００２２】
パラメータ最適化部１０６は、移動量推定部１０４によって計算された推定移動量と、後述するずれ量評価部１１０から提供されるずれ量の評価値とに基づいて、合成画像を構成する撮像画像間の重複領域におけるずれを補正する最適な外部パラメータを求め、これを用いて外部パラメータを更新する。撮像画像間の重複領域におけるずれは、「合成画像におけるずれ」とも言う。この量は、後述の図１３に示される。
【００２３】
補正タイミング決定部１０７は、合成画像におけるずれを補正するタイミングを決定する。
【００２４】
合成テーブル生成部１０８は、パラメータ最適化部１０６から提供された外部パラメータに対応する撮像画像の各々のマッピングテーブルである合成テーブルを生成する。合成処理部１０９は、合成テーブル生成部１０８から提供された合成テーブルを用いて撮像画像１０１ａ〜１０１ｄを１枚の画像に合成することで、合成画像を生成する。
【００２５】
ずれ量評価部１１０は、合成画像におけるずれの量、すなわち、ずれ量を計算して、ずれ量の計算値をずれ量の評価値として出力する。ずれ量の評価値は、パラメータ最適化部１０６に提供される。重複領域抽出部１１１は、合成処理部１０９において撮像画像１０１ａ〜１０１ｄを合成する際に、合成画像を構成する撮像画像１０１ａ〜１０１ｄ間の重複領域を抽出する。表示画像出力部１１２は、ずれが補正された合成画像、すなわち、ずれ補正処理後の合成画像を出力する。
【００２６】
〈画像記録部１０２〉
画像記録部１０２は、タイミング決定部１０３によって指定されたタイミングにおいて撮像画像１０１ａ〜１０１ｄを、記憶部１１４又は外部記憶部１１５又はこれらの両方に記録する。撮像画像１０１ａ〜１０１ｄを記録する際には、画像記録部１０２は、撮像画像１０１ａ〜１０１ｄの各々に、撮像画像１０１ａ〜１０１ｄを生成したカメラを特定するための識別情報である装置ＩＤと撮影時刻とを関連付けて、装置ＩＤと撮影時刻も記録する。装置ＩＤ及び撮影時刻は、「付随情報」とも言う。つまり、画像記録部１０２は、付随情報が関連付けられた撮像画像１０１ａ〜１０１ｄを、記憶部１１４又は外部記憶部１１５又はこれらの両方に記録する。
【００２７】
撮像画像１０１ａ〜１０１ｄと付随情報とを関連付けて記録する方法として、例えば、撮像画像１０１ａ〜１０１ｄのデータ内に付随情報を含める方法、ＲＤＢＭＳ（リレーショナルデータベースマネジメントシステム）などの関係データベースによって関連付けを行う方法、などがある。撮像画像１０１ａ〜１０１ｄと付随情報とを関連付けて記録する方法は、上記以外の方法であってもよい。
【００２８】
〈タイミング決定部１０３〉
タイミング決定部１０３は、カメラ１ａ〜１ｄから提供された撮像画像を記録するタイミングを、例えば、ユーザによって指定された条件に基づいて決定し、画像記録部１０２に伝える。指定された条件とは、予め決められた一定時間間隔ごと、又は予め決められた状況が発生した時点ごと、などである。予め決められた時間間隔は、秒、分、時間、日、月、などの単位を用いて指定される一定の時間間隔である。予め決められた状況が発生した時点とは、例えば、カメラ１ａ〜１ｄの撮像画像から特徴点が検出されたとき（例えば、日中におけるある時点）、又はカメラ１ａ〜１ｄの撮像画像において動く物体が検出されないとき、などである。また、撮像画像を記録するタイミングは、カメラ１ａ〜１ｄの各々の特性及び設置位置の状況に応じて、カメラ１ａ〜１ｄの各々について、個別に決定されてもよい。
【００２９】
〈特徴点抽出部１０５〉
特徴点抽出部１０５は、撮像画像１０１ａ〜１０１ｄに基づいて、カメラ１ａ〜１ｄの各々の推定移動量を計算するために、撮像画像１０１ａ〜１０１ｄの各々における特徴点を抽出し、特徴点の座標を検出する。特徴点の検出アルゴリズムの代表例としては、ＡＫＡＺＥがある。ただし、特徴点の検出アルゴリズムは、上記例に限定されない。
【００３０】
〈移動量推定部１０４〉
移動量推定部１０４は、画像記録部１０２によって記録された撮像画像１０１ａ〜１０１ｄの特徴点からカメラ１ａ〜１ｄの各々の推定移動量を計算する、すなわち、推定移動量を計算する。カメラ１ａ〜１ｄの各々の推定移動量は、例えば、カメラ１ａ〜１ｄが設置された時点を基準時とし、この基準時における位置からの移動量である。カメラ１ａ〜１ｄの各々の推定移動量は、例えば、指定された開始日と終了日との間の期間中における移動量である。カメラ１ａ〜１ｄの各々の推定移動量は、開始時刻と終了時刻とを指定することで、開始時刻と終了時刻との期間中におけるカメラ１ａ〜１ｄの各々の推定移動量であってもよい。移動量推定部１０４は、撮像画像１０１ａ〜１０１ｄの各々についての２つの時点の特徴点の座標に基づいて、カメラ１ａ〜１ｄの各々の推定移動量を計算する。
【００３１】
また、移動量推定部１０４は、ずれ補正部１００によってパラメータ最適化処理（すなわち、ずれ補正処理）が実行されたときに、パラメータ最適化部１０６からフィードバック情報を受け取る。具体的には、移動量推定部１０４は、パラメータ最適化部１０６がカメラ１ａ〜１ｄの各々の外部パラメータを最適化し及び更新したタイミングで、当該カメラ１ａ〜１ｄの各々について計算された推定移動量をゼロに設定（すなわち、リセット）する。あるいは、移動量推定部１０４は、パラメータ最適化部１０６から受け取ったフィードバック情報に基づいて、機械学習ベースで推定移動量の計算を行ってもよい。その後、移動量推定部１０４は、フィードバック情報を受け取った時点を基準時として、推定移動量の計算を行う。
【００３２】
移動量推定部１０４によって提供される推定移動量は、カメラ１ａ〜１ｄの並進移動成分と回転移動成分とで表される。並進移動成分は、Ｘ軸、Ｙ軸、Ｚ軸方向の３成分を含み、回転移動成分は、ロール、ピッチ、ヨーの３成分を含む。なお、カメラの移動量が一意に決まるものであれば、ここではパラメータの形式は問わない。並進移動成分及び回転移動成分は、ベクトル又は行列の形式で出力されてもよい。なお、カメラ１ａ〜１ｄの各々の推定移動量の計算のための処理は、上記の処理に限定されない。例えば、カメラ画像間の移動量を表す方法として、ホモグラフィ行列を用いる方法がある。カメラの内部パラメータが既知である場合、ホモグラフィ行列から外部パラメータを算出することが可能である。カメラ１ａ〜１ｄの各々の推定移動量の回転移動成分は、センサが取り付けられたカメラ又はセンサが内蔵されたカメラ（例えば、ＰＴＺカメラ）におけるロータリーエンコーダの出力などに基づいて取得されてもよい。
【００３３】
〈パラメータ最適化部１０６〉
パラメータ最適化部１０６は、補正タイミング決定部１０７がパラメータ最適化処理（すなわち、ずれ補正処理）の対象であると判断したカメラについて、移動量推定部１０４から提供されたカメラ１ａ〜１ｄの各々の推定移動量と、ずれ量評価部１１０によって計算された合成画像におけるずれ量の評価値（「ずれ量の計算値」とも言う。）とに基づいて、合成画像におけるずれを補正するために用いられる外部パラメータを求める。外部パラメータは、例えば、並進移動成分であるＸ軸、Ｙ軸、Ｚ軸方向の３成分と、回転移動成分であるロール、ピッチ、ヨーの３成分と、からなる。なお、カメラの位置姿勢が一意に決まるものであれば、外部パラメータの形式は問わない。
【００３４】
パラメータ最適化部１０６は、移動量推定部１０４によって得られたカメラ１ａ〜１ｄの各々の推定移動量と、ずれ量評価部１１０によって得られた合成画像におけるずれ量の評価値とに基づいて、合成画像におけるずれ量を小さくするように、合成画像におけるずれを補正するために用いられる外部パラメータを算出する。各カメラの外部パラメータの最適化処理は、例えば、以下の処理（Ｈ１）〜（Ｈ５）を行った後に、処理（Ｈ２）〜（Ｈ５）を、この順番に繰り返すことで、実行される。
（Ｈ１）パラメータ最適化部１０６がカメラ１ａ〜１ｄの各々の外部パラメータを更新する処理。
（Ｈ２）合成テーブル生成部１０８がカメラ１ａ〜１ｄの各々のパラメータ（すなわち、内部パラメータ、ゆがみ補正パラメータ、及び外部パラメータ）に対応する合成テーブルを生成する処理。
（Ｈ３）合成処理部１０９がカメラ１ａ〜１ｄの各々の合成テーブルを用いて撮像画像１０１ａ〜１０１ｄを合成して、合成画像を生成する処理。
（Ｈ４）ずれ量評価部１１０がこの合成画像におけるずれ量の評価値を求めて、これをフィードバックする処理。
（Ｈ５）パラメータ最適化部１０６がずれ量の評価値をフィードバック情報として用いて、外部パラメータを更新する処理。
【００３５】
また、パラメータ最適化部１０６は、カメラ１ａ〜１ｄのうちの２つ以上のカメラに位置姿勢ずれが生じた場合は、撮像画像１０１ａ〜１０１ｄの中から基準となる撮像画像を決定する処理と、ずれ補正処理の対象となるカメラの順番を決定する処理とを行う。また、パラメータ最適化部１０６は、ずれ補正処理を実行したタイミングで、各カメラの推定移動量をリセットするためのフィードバック情報を、移動量推定部１０４へ提供する。このフィードバック情報は、移動量のリセットの対象となるカメラを示す装置ＩＤと、補正後の外部パラメータとを含む。
【００３６】
〈補正タイミング決定部１０７〉
補正タイミング決定部１０７は、指定された条件を満たすタイミングを、合成画像におけるずれを補正するためのずれ補正処理の実行のタイミングとして、パラメータ最適化部１０６へ提供する。ここで、指定された条件とは、パラメータ最適化部１０６を介し移動量推定部１０４から得られるカメラ１ａ〜１ｄの推定移動量が閾値を超えたという条件、又はずれ量評価部１１０から得られる合成画像におけるずれ量の評価値が予め決められた閾値を超えたという条件、などである。カメラ１ａ〜１ｄの各々の推定移動量が閾値を超えたという条件は、例えば、「指定期間中における推定移動量」が閾値を超えたという条件、などである。補正タイミング決定部１０７は、パラメータ最適化部１０６に、合成画像におけるずれを補正するためのずれ補正処理を実行させる指示を出力する。なお、ずれ補正処理のタイミングは、マウス又はキーボードなどの入力インタフェースを用いて、利用者によって指定されてもよい。
【００３７】
〈合成テーブル生成部１０８〉
合成テーブル生成部１０８は、カメラ１ａ〜１ｄの各々の内部パラメータ及びゆがみ補正パラメータと、パラメータ最適化部１０６から提供されるカメラ１ａ〜１ｄの各々の外部パラメータとに基づいて、合成画像を生成するための合成テーブルを生成する。
【００３８】
図３（Ａ）及び（Ｂ）は、合成テーブル生成部１０８及び合成処理部１０９によって実行される処理を示す説明図である。図３（Ａ）は、カメラ１ａ〜１ｄの位置及び姿勢を示す。図３（Ｂ）は、カメラ１ａ〜１ｄによって撮影された撮像画像２０２ａ，２０２ｂ，２０２ｃ，２０２ｄと、合成画像２０５と、合成画像２０５を生成するために用いられる合成テーブル２０４ａ，２０４ｂ，２０４ｃ，２０４ｄとを示す。
【００３９】
合成テーブル生成部１０８は、カメラ１ａ〜１ｄの各々の内部パラメータ及びゆがみ補正パラメータと、パラメータ最適化部１０６から提供されるカメラ１ａ〜１ｄの各々の外部パラメータとに基づいて、合成テーブル２０４ａ〜２０４ｄを合成処理部１０９に与える。合成処理部１０９は、撮像画像２０２ａ〜２０２ｄに基づいて合成画像２０５を生成する。
【００４０】
なお、カメラ１ａ〜１ｄの位置関係及び撮影範囲を変更することによって、合成画像として、俯瞰合成画像、パノラマ合成画像、又はアラウンドビュー画像、などを生成することができる。合成テーブル生成部１０８は、撮像画像２０２ａ〜２０２ｄの画素と合成画像２０５の画素との対応を合成テーブルとして出力する。合成テーブル生成部１０８は、例えば、合成テーブル２０４ａ〜２０４ｄが２行２列の撮像画像の合成に用いられるものである場合、撮像画像２０２ａ〜２０２ｄを２行２列に並べる。
【００４１】
図４（Ａ）及び（Ｂ）は、合成テーブル生成部１０８及び合成処理部１０９が行う他の処理を示す説明図である。図４（Ａ）は、カメラ１ａ〜１ｄの位置及び姿勢を示す。図４（Ｂ）は、カメラ１ａ〜１ｄによって撮影された撮像画像２０６ａ，２０６ｂ，２０６ｃ，２０６ｄと、合成画像２０８と、合成画像２０８を生成するために用いられる合成テーブル２０７ａ，２０７ｂ，２０７ｃ，２０７ｄとを示す。
【００４２】
合成テーブル生成部１０８は、カメラ１ａ〜１ｄの各々の内部パラメータ及びゆがみ補正パラメータと、パラメータ最適化部１０６から提供されるカメラ１ａ〜１ｄの各々の外部パラメータとに基づいて、合成テーブル２０７ａ〜２０７ｄを合成処理部１０９に与える。合成処理部１０９は、撮像画像２０６ａ〜２０６ｄに基づいて合成画像２０８を生成する。
【００４３】
なお、カメラ１ａ〜１ｄの位置関係及び撮影範囲を変更することによって、合成画像として、俯瞰合成画像、パノラマ合成画像、又はアラウンドビュー画像、などを生成することができる。合成テーブル生成部１０８は、撮像画像２０６ａ〜２０６ｄの画素と合成画像２０８の画素との対応を合成テーブルとして出力する。合成テーブル生成部１０８は、例えば、合成テーブル２０７ａ〜２０７ｄが１行４列の撮像画像の合成に用いられるものである場合、撮像画像２０６ａ〜２０６ｄを１行４列に並べる。
【００４４】
〈合成処理部１０９〉
合成処理部１０９は、合成テーブル生成部１０８によって生成されたカメラ１ａ〜１ｄの各々の合成テーブルと、カメラ１ａ〜１ｄの撮像画像とを受け取り、撮像画像を合成して１枚の合成画像を生成する。合成処理部１０９は、撮像画像同士が重複する部分に対して、ブレンディング処理を行う。
【００４５】
〈ずれ量評価部１１０〉
ずれ量評価部１１０は、合成処理部１０９によって生成された合成画像と合成時に使用した合成テーブルとから合成画像におけるずれの大きさを示すずれ量の評価値を計算し、このずれ量の評価値をパラメータ最適化部１０６へ提供することで、合成画像におけるずれを補正するためのずれ補正処理の結果をパラメータ最適化部１０６にフィードバックする。合成画像におけるずれは、合成テーブルを使用して変換された撮像画像同士（すなわち、変換後の画像同士）を繋ぎ合わせた境界部分で発生する。境界部分は、重複領域又は重複部分とも言う。合成画像におけるずれ量の評価値の計算では、繋ぎ合わせる変換後の撮像画像の重複領域における、輝度値の差、又は対応する特徴点の間の距離、又は画像類似度、などの数値が用いられる。ずれ量の評価値は、変換後の撮像画像同士の組み合わせごとに計算される。例えば、カメラ１ａ〜１ｄが存在する場合には、カメラ１ａのずれ量の評価値は、カメラ１ａと１ｂ、カメラ１ａと１ｃ、及びカメラ１ａと１ｄについて計算される。また、ずれ量の評価値を計算するために使用される範囲は、自動的に検出されるが、利用者の操作によって指定されてもよい。
【００４６】
〈重複領域抽出部１１１〉
重複領域抽出部１１１は、合成処理部１０９によって生成された合成画像における変換後の撮像画像同士の重複領域を抽出する。抽出された重複領域を示す情報は、ずれ量評価部１１０に提供される。
【００４７】
〈表示画像出力部１１２〉
表示画像出力部１１２は、合成処理部１０９から提供された合成画像を表示装置（例えば、図１に示される）などに出力する。
【００４８】
《１−２》動作
《１−２−１》概要
図５は、画像処理装置１０によって実行される処理の概要を示すフローチャートである。図５に示されるように、画像処理装置１０は、画像記録処理群Ｓ１０と、移動量推定処理群Ｓ２０と、パラメータ最適化処理群（すなわち、ずれ補正処理群）Ｓ３０と、合成・表示処理群Ｓ４０とを並列に実行する。
【００４９】
画像記録処理群Ｓ１０において、画像記録部１０２は、タイミング決定部１０３からトリガを受け取ったときに（ステップＳ１１）、撮像画像１０１ａ〜１０１ｄを取得し（ステップＳ１２）、記憶部１１４又は外部記憶部１１５又はこれらの両方に撮像画像１０１ａ〜１０１ｄを記録する（ステップＳ１３）。
【００５０】
移動量推定処理群Ｓ２０において、移動量推定部１０４は、画像記録部１０２から撮像画像１０１ａ〜１０１ｄを受け取り、外れ値除外部１１３によって除外されなかった撮像画像、すなわち、予め決められた条件を満たす撮像画像を選択する（ステップＳ２１）。次に、移動量推定部１０４は、選択された撮像画像における特徴点を特徴点抽出部１０５から受け取る（ステップＳ２２）。次に、移動量推定部１０４は、カメラ１ａ〜１ｄの各々の推定移動量を計算する（ステップＳ２３）。移動量推定部１０４は、推定移動量が閾値を超えた場合、パラメータ最適化部１０６に推定移動量を提供する（ステップＳ２４）。
【００５１】
パラメータ最適化処理群Ｓ３０において、パラメータ最適化部１０６は、補正タイミング決定部１０７から補正指示を受け取ると（ステップＳ３１）、移動量推定部１０４からカメラ１ａ〜１ｄの各々の推定移動量を取得する（ステップＳ３２）。パラメータ最適化部１０６は、カメラ１ａ〜１ｄの外部パラメータの初期値を設定し（ステップＳ３３）、外部パラメータを更新する（ステップＳ３４）。次に、合成テーブル生成部１０８は、マッピングテーブルである合成テーブルを生成し（ステップＳ３５）、合成処理部１０９は合成テーブルを用いて画像を合成する（ステップＳ３６）。次に、ずれ量評価部１１０は、合成画像におけるずれ量の評価値を計算する（ステップＳ３７）。ステップＳ３４〜Ｓ３７の処理は、最適解が求まるまで、繰り返し実行される。
【００５２】
合成・表示処理群Ｓ４０において、合成処理部１０９は、変換後の撮像画像を取得し（ステップＳ４１）、合成テーブルを用いて変換後の撮像画像を合成する（ステップＳ４２）。表示画像出力部１１２は、合成画像を表示装置に出力する。表示装置は、合成画像に基づく映像を表示する（ステップＳ４３）。
【００５３】
《１−２−２》画像記録処理群Ｓ１０の詳細
図６は、画像記録部１０２によって実行される処理を示すフローチャートである。先ず、画像記録部１０２は、タイミング決定部１０３からトリガを受け取ったかどうかを判断する（ステップＳ１１０）。トリガは、撮影画像１ａ〜１ｄを記憶部１１４又は外部記憶部１１５又はこれらの両方に記録するタイミングを与える。トリガには、記憶する撮像画像を撮影したカメラを特定する装置ＩＤが含まれている。
【００５４】
画像記録部１０２は、トリガを受け取ったときに、カメラの装置ＩＤを取得する（ステップＳ１１１）。次に、画像記録部１０２は、トリガが発生した時刻を示す時刻情報を取得する（ステップＳ１１２）。例えば、画像記録部１０２は、画像処理装置１０を構成するコンピュータに搭載されている時計からトリガが発生した時刻を取得する。なお、時刻情報は、記録される撮像画像の順序関係が分かる順序番号などの情報であってもよい。
【００５５】
次に、画像記録部１０２は、カメラの現在の撮像画像を取得する（ステップＳ１１３）。最後に、画像記録部１０２は、撮像画像に、カメラの装置ＩＤと撮影時刻を示す時刻情報とを関連付けて、記憶部１１４又は外部記憶部１１５又はこれらの両方に記録する（ステップＳ１１４）。なお、画像記録部１０２は、トリガを受け取ったタイミングにおいて、設置されている複数のカメラの撮像画像を記録してもよい。また、画像記録部１０２は、トリガを受け取ったタイミングにおいて、予め決められた条件を満たすカメラの撮像画像のみを記録してもよい。また、画像記録部１０２は、移動量推定部１０４から記録した撮像画像の要求があった場合は、要求された撮像画像を、移動量推定部１０４に提供する。移動量推定部１０４は、撮像画像の要求に際し、カメラの装置ＩＤと、撮影時刻又は撮像期間とによって、要求する撮像画像を指定する。
【００５６】
《１−２−３》移動量推定処理群Ｓ２０の詳細
移動量推定処理群Ｓ２０では、画像記録処理群Ｓ１０において記録されたカメラ１ａ〜１ｄの各々の撮像画像から、特徴点を抽出し、カメラ１ａ〜１ｄの各々の推定移動量を計算する。推定移動量は、例えば、並進移動成分であるＸ軸、Ｙ軸、Ｚ軸方向の３成分と、回転移動成分であるロール、ピッチ、ヨーの３成分とを含む。推定移動量の計算は、補正タイミング決定部１０７によって実行される補正タイミングの決定の処理と、並列で実行される。推定移動量を計算するタイミングは、一定時間間隔が経過する度でもよいし、又は、画像記録処理群Ｓ１０において撮像画像が更新されたときであってもよい。
【００５７】
図７は、移動量推定部１０４によって実行される処理を示すフローチャートである。図８は、画像記録部１０２によって記録された撮像画像と、隣接画像期間における移動量（＃１〜＃Ｎ−１）３０２との関係を示す図である。
【００５８】
先ず、移動量推定部１０４は、画像記録部１０２によって記録された、各カメラの撮像画像の中から、推定移動量の計算を行うための指定期間中に記録された撮像画像３００ａを受け取る（ステップＳ１２０）。
【００５９】
次に、移動量推定部１０４は、受け取った複数の撮像画像３００ａを、画像記録部１０２が記録した順番で整列させる（ステップＳ１２１）。撮像画像３００ａは、撮像画像＃１〜＃Ｎの順に並ぶ。ここで、Ｎは、撮像画像の撮影時刻の順番を示す正の整数である。
【００６０】
次に、移動量推定部１０４は、隣接画像期間における移動量３０２を画像解析によって求める（ステップＳ１２２）。図８に示されるように、隣接画像期間は、Ｋが撮像画像の撮影時刻の順番を示す１以上Ｎ−１以下の整数であるときに、撮像画像＃Ｋから撮像画像＃Ｋ＋１までの期間である。隣接画像期間における移動量＃１〜＃Ｎ−１は、並進移動成分であるＸ軸、Ｙ軸、Ｚ軸方向の成分と、回転移動成分であるロール、ピッチ、ヨーの成分とを含む。図８の例では、Ｎ−１個の移動量（＃１〜＃Ｎ−１）３０２が得られる。画像解析には、例えば、５点アルゴリズムが用いられる。ただし、画像解析は、撮像画像中の特徴からカメラの位置姿勢を求めることができるものであれば、他の方法によって実行されてもよい。なお、「位置姿勢」は、位置又は姿勢又はこれらの両方を意味する。
【００６１】
このときの画像解析では、特徴点抽出部１０５によって撮像画像間で画像マッチングした特徴点の座標が用いられる。特徴点抽出部１０５が画像マッチングした特徴点を検出できなかった場合は、移動量推定部１０４は、その隣接画像期間における移動量を算出しない。
【００６２】
最後に、移動量推定部１０４は、隣接画像期間における移動量３０２において、予め決められた条件を満たす移動量３０２を合計し、それを指定期間中における各カメラの移動量すなわち推定移動量３０１として出力する。ここで、予め決められた条件とは、隣接画像期間における移動量＃１〜＃Ｎのうちの外れ値となっている移動量に該当しないことである。つまり、画像解析によって求められた隣接画像期間における移動量＃１〜＃Ｎの中から、外れ値となっている移動量を除外してえられた、移動量の合計が推定移動量３０１として算出される。予め条件を満たさない移動量を除外する処理は、外れ値除外部１１３によって実行される。
【００６３】
外れ値除外部１１３は、移動量推定部１０４において隣接画像期間における移動量３０２の中で外れ値となっているものを、指定期間中における推定移動量３０１の計算に用いないようにする機能を持つ。具体的には、外れ値除外部１１３は、カメラ１ａ〜１ｄの並進移動成分が閾値を超える大きな値である場合、回転移動成分が閾値を超える大きな値である場合など、移動量が通常は起こりえない値である場合に、この移動量を、指定期間中における推定移動量３０１の計算に用いないようにする。
【００６４】
外れ値除外部１１３は、図９及び図１０に示されるように、隣接画像期間における移動量３０２の時間的な前後関係を考慮に入れて、外れ値の除外を行うことも可能である。図９は、外れ値除外部１１３によって実行される処理を示すフローチャートである。図１０は、外れ値除外部１１３によって実行される外れ値の除外のための処理を示す説明図である。なお、Ｍは正の整数である。
【００６５】
図１０に示される複数の撮像画像３１０は、画像記録部１０２によって記録された各カメラの撮像画像を、記録した順番で整列させた状態を示すものである。Ｍ番目に撮像された撮像画像（＃Ｍ）３１２によって、外れ値に該当する移動量が存在するか否かを判断する場合、外れ値除外部１１３は、Ｍ番目に記録された撮像画像（＃Ｍ）３１２とその直前に記録された撮像画像（＃Ｍ−１）３１１とから隣接画像期間における移動量としてＧ１＝“移動量３１４”を計算し、Ｍ番目に記録された撮像画像（＃Ｍ）３１２とその直後に記録された撮像画像（＃Ｍ＋１）３１３とから隣接画像期間における移動量としてＧ２＝“移動量３１５”を求める（ステップＳ１３０，Ｓ１３１）。
【００６６】
次に、外れ値除外部１１３は、Ｍ番目に記録された撮像画像（＃Ｍ）３１２の直前と直後に記録された撮像画像（＃Ｍ−１）３１１と撮像画像（＃Ｍ＋１）３１３とから、Ｇ３＝“移動量３１６”を求める（ステップＳ１３２）。このとき、理想的に移動量が取得できた場合は、Ｇ１＋Ｇ２＝Ｇ３が成立する。
【００６７】
この性質を利用して、Ｇ１＋Ｇ２がＧ３と大きく異なる場合、外れ値除外部１１３は、Ｇ１＝“移動量３１４”又はＧ２＝“移動量３１５”に外れ値が含まれていると判断する（ステップＳ１３３）。つまり、外れ値除外部１１３は、｜Ｇ１＋Ｇ２−Ｇ３｜が予め決められた閾値以上である場合に、移動量であるＧ１又はＧ２が外れ値であると判断する。
【００６８】
｜Ｇ１＋Ｇ２−Ｇ３｜が予め決められた閾値以上である場合、外れ値除外部１１３は、外れ値を除外するために、Ｇ１＝“移動量３１４”とＧ２＝“移動量３１５”とを除外し、Ｇ３＝“移動量３１６”を、推定移動量の計算に含めるようにする。外れ値除外部１１３は、このようにして、Ｍ番目の撮像画像（＃Ｍ）３１２における移動量を外れ値として扱い、推定移動量の計算からＭ番目の撮像画像（＃Ｍ）３１２を用いて得られた移動量であるＧ１＝“移動量３１４”及びＧ２＝“移動量３１５”を除外する（ステップＳ１３４）。
【００６９】
《１−２−４》パラメータ最適化処理群Ｓ３０の詳細
パラメータ最適化処理群Ｓ３０では、補正タイミング決定部１０７は、移動量推定部１０４から提供されたカメラ１ａ〜１ｄの各々の推定移動量と、ずれ量評価部１１０から提供されたカメラ１ａ〜１ｄの各々の合成画像におけるずれ量の評価値とから、パラメータ最適化処理すなわちずれ補正処理の対象であるカメラの装置ＩＤを判定する。その後、パラメータ最適化部１０６は、パラメータ最適化処理の対象であるカメラの外部パラメータを求める。外部パラメータは、例えば、並進移動成分であるＸ軸、Ｙ軸、Ｚ軸方向の３成分と、回転移動成分であるロール、ピッチ、ヨーの３成分とを含む。
【００７０】
パラメータ最適化部１０６は、補正タイミング決定部１０７から、パラメータ最適化処理の対象であるカメラの装置ＩＤを受信後、パラメータ最適化処理の対象であるカメラの外部パラメータの値を、移動したカメラの外部パラメータとして設定する。
【００７１】
次に、パラメータ最適化部１０６は、パラメータ最適化処理の対象であるカメラの外部パラメータを変化させる。変化のさせ方は、パラメータ最適化処理の手法によって異なる。そして、パラメータ最適化部１０６は、複数のカメラの現在の外部パラメータを合成テーブル生成部１０８へ提供する。
【００７２】
合成テーブル生成部１０８は、パラメータ最適化部１０６から提供されたカメラ１ａ〜１ｄの各々の外部パラメータと、カメラ１ａ〜１ｄの各々の内部パラメータ及びゆがみ補正パラメータとに基づいて、合成画像を生成するための合成テーブルを、各カメラについて生成する。
【００７３】
合成処理部１０９は、合成テーブル生成部１０８によって生成された合成テーブルを用いて、カメラ１ａ〜１ｄの各々の撮像画像に対応する変換後の撮像画像を合成して、１枚の合成画像を生成する。
【００７４】
ずれ量評価部１１０は、生成された合成画像と、合成画像の生成時に使用された合成テーブルとに基づいて、生成された合成画像におけるずれ量の評価値を求め、ずれ量の評価値をパラメータ最適化部１０６へフィードバックする。パラメータ最適化部１０６は、フィードバックされたずれ量の評価値に基づいて、パラメータ最適化処理の対象であるカメラの外部パラメータを変化させ、ずれ量の評価値が小さくなるように、パラメータ最適化処理を実行する。
【００７５】
図１１は、補正タイミング決定部１０７によって実行される処理を示すフローチャートである。補正タイミング決定部１０７は、カメラの外部パラメータの最適化処理が必要になったタイミングで、パラメータ最適化処理の対象であるカメラの装置ＩＤをパラメータ最適化部１０６に伝える。複数のカメラに位置姿勢ずれ（すなわち、移動）が発生している場合には、補正タイミング決定部１０７は、パラメータ最適化部１０６に、複数のカメラの装置ＩＤを通知する。パラメータ最適化処理（すなわち、ずれ補正処理）のタイミングは、各カメラの推定移動量と合成画像におけるずれ量の評価値とから自動的に決定される。ただし、このタイミングは、利用者によって行われる手動操作によって決定されてもよい。
【００７６】
以下に、補正するタイミングを自動的に決定する方法について説明する。先ず、補正タイミング決定部１０７は、パラメータ最適化処理が必要であるか否かを判断する指標として、各カメラの推定移動量、又は合成画像におけるずれ量の評価値、又はそれらの両方を、移動量推定部１０４又はずれ量評価部１１０から取得する（ステップＳ１４０，Ｓ１４１）。
【００７７】
次に、補正タイミング決定部１０７は、取得した各カメラの推定移動量を閾値と比較する、又は取得した合成画像におけるずれ量の評価値を閾値と比較する（ステップＳ１４２）。例えば、推定移動量がその閾値を超えた場合又はずれ量の評価値がその閾値を超えた場合は、補正タイミング決定部１０７は、パラメータ最適化処理の実行をパラメータ最適化部１０６に伝える（ステップＳ１４３）。閾値を用いたずれ補正処理の実行の条件は、各カメラの推定移動量がその閾値を超えた場合、又は合成画像におけるずれ量の評価値がその閾値を超えた場合、又はこれらの両方が成立した場合など、様々な条件に設定されることができる。
【００７８】
また、補正タイミング決定部１０７は、ずれ補正処理を実行できない状況の発生を、合成画像におけるずれ量の評価値と予め決められた閾値との比較の結果に基づいて検出し、利用者に通知する構成を有してもよい。ずれ補正処理ができない場合は、例えば、撮像画像同士の重複領域がなくなるほど大きな位置姿勢ずれがカメラに生じたときである。また、利用者に伝える仕組みは、例えば、表示する合成画像上に通知を重ねて表示する、などである。
【００７９】
パラメータ最適化部１０６は、移動量推定部１０４から各カメラの推定移動量を受け取り、ずれ量評価部１１０から合成画像におけるずれ量の評価値を受け取り、ずれ補正処理のための外部パラメータを出力する。なお、合成画像におけるずれの補正処理のためのパラメータ最適化処理は、移動量推定部１０４とずれ補正部１００とによって実行される。
【００８０】
図１２は、実施の形態１に係る画像処理装置１０によって実行されるパラメータ最適化処理（すなわち、ずれ補正処理）を示すフローチャートである。先ず、パラメータ最適化部１０６は、補正タイミング決定部１０７から、ずれ補正処理の対象であるカメラの装置ＩＤを受け取る（ステップＳ１５０）。
【００８１】
次に、パラメータ最適化部１０６は、移動量推定部１０４から、パラメータ最適化処理の対象である各カメラの推定移動量を受け取る（ステップＳ１５１）。推定移動量は、例えば、並進移動成分であるＸ軸、Ｙ軸、Ｚ軸方向の３成分と、回転移動成分であるロール、ピッチ、ヨーの３成分とを含む。
【００８２】
次に、パラメータ最適化部１０６は、パラメータ最適化処理の対象であるカメラの外部パラメータを移動量推定部１０４から取得したカメラ１ａ〜１ｄの各々の推定移動量に基づいて変更する（ステップＳ１５２）。なお、カメラの設置時又はカメラの初回起動時における外部パラメータは、カメラキャリブレーションパターンを備えたキャリブレーション用ボードを使用したカメラキャリブレーション作業によって取得される。
【００８３】
図１３は、パラメータ最適化部１０６によって実行される外部パラメータの更新に用いられる計算式を示す説明図である。図１３に示されるように、
更新後の（すなわち、時刻ｔにおける）外部パラメータ（すなわち、外部パラメータベクトル）Ｐ１は、以下のように表記される。
Ｐ１＝（Ｘ，Ｙ，Ｚ，ｒｏｌｌ，ｐｉｔｃｈ，ｙａｗ）
ここで、Ｘ，Ｙ，Ｚは、Ｘ軸、Ｙ軸、Ｚ軸方向の外部パラメータを示し、ｒｏｌｌ，ｐｉｔｃｈ，ｙａｗは、ロール、ピッチ、ヨー方向の外部パラメータを示す。
【００８４】
また、更新前の（すなわち、時刻０における）外部パラメータ（すなわち、外部パラメータベクトル）Ｐ０は、以下のように表記される。
Ｐ０＝（Ｘ＿０，Ｙ＿０，Ｚ＿０，ｒｏｌｌ＿０，ｐｉｔｃｈ＿０，ｙａｗ＿０）
ここで、Ｘ＿０，Ｙ＿０，Ｚ＿０は、Ｘ軸、Ｙ軸、Ｚ軸方向の外部パラメータを示し、ｒｏｌｌ＿０，ｐｉｔｃｈ＿０，ｙａｗ＿０は、ロール、ピッチ、ヨー方向の外部パラメータを示す。
【００８５】
また、時刻０から時刻ｔまでの移動すなわち位置姿勢ずれを示す移動ベクトルＰｔは、以下のように表記される。
Ｐｔ＝（Ｘ＿ｔ，Ｙ＿ｔ，Ｚ＿ｔ，ｒｏｌｌ＿ｔ，ｐｉｔｃｈ＿ｔ，ｙａｗ＿ｔ）
ここで、Ｘ＿ｔ，Ｙ＿ｔ，Ｚ＿ｔは、Ｘ軸、Ｙ軸、Ｚ軸方向の移動量（すなわち、距離）を示し、ｒｏｌｌ＿ｔ，ｐｉｔｃｈ＿ｔ，ｙａｗ＿ｔは、ロール、ピッチ、ヨー方向の移動量（すなわち、角度）を示す。
【００８６】
この場合、以下の式（１）が成立する。
Ｐ１＝Ｐ０＋Ｐｔ            （１）
なお、初回更新時における更新前の外部パラメータＰ０は、カメラキャリブレーションによって取得された外部パラメータである。つまり、式（１）に示されるように、更新後の外部パラメータは、設置時における外部パラメータに、移動量推定部１０４によって取得した移動ベクトルＰｔの要素を加算したものである。
【００８７】
次に、パラメータ最適化部１０６は、補正タイミング決定部１０７から受け取ったカメラの装置ＩＤの数から、パラメータ最適化処理の対象であるカメラの台数を判定する（ステップＳ１５３）。パラメータ最適化処理の対象であるカメラが無い場合は、パラメータ最適化部１０６によるパラメータ最適化処理を終了する。
【００８８】
パラメータ最適化処理の対象であるカメラがある場合は（すなわち、ステップＳ１５３において判断がＹＥＳの場合）、合成画像におけるずれを補正するために、パラメータ最適化処理を実行する（ステップＳ１５４）。このとき、パラメータ最適化処理の対象であるカメラの台数が２台以上である場合は、移動量推定部１０４から取得した推定移動量が小さいカメラの外部パラメータの最適化処理を先に実施する。これは、推定移動量が小さいカメラは、誤差の小さいものであり、信頼性が高いと考えられるからである。
【００８９】
図１４は、実施の形態１に係る画像処理装置１０のパラメータ最適化部１０６によって実行されるずれ補正処理（すなわち、パラメータ最適化処理）の例を示す説明図である。図１４は、パラメータ最適化処理の対象であるカメラの台数が２台である場合を示している。このとき、パラメータ最適化処理の対象であるカメラの撮像画像３５３に対して、撮像画像が重複するカメラが２台存在し且つその内の１台のカメラがパラメータ最適化されていない状態である。つまり、パラメータ最適化処理の対象であるカメラの撮像画像３５３に対して、撮像画像３５２と３５４が重複している。この場合、撮像画像３５２を撮影したカメラのずれ補正は未実施（すなわち、未補正）である。
【００９０】
次に、パラメータ最適化部１０６は、ずれ補正処理のための外部パラメータを求め、この外部パラメータを用いてカメラの外部パラメータを更新する処理を繰り返し（ステップＳ１５４）、ずれ補正処理が完了したカメラをパラメータ最適化処理の対象から除外し、ずれ補正済みのカメラとしてみなす（ステップＳ１５５）。また、パラメータ最適化部１０６は、外部パラメータの更新時に、ずれ補正済みのカメラの装置ＩＤと補正後の外部パラメータを移動量推定部１０４へフィードバックする（ステップＳ１５６）。
【００９１】
パラメータ最適化部１０６は、パラメータ最適化処理（ステップＳ１５４）において、カメラの外部パラメータを変え、そのときの合成画像におけるずれ量の評価値を受け取り、ずれ量の評価値が小さくなるように処理を繰り返す。このときに用いられるパラメータ最適化処理のアルゴリズムとしては、遺伝的アルゴリズムなどの様々な手法を用いることができる。
【００９２】
先ず、パラメータ最適化部１０６は、最適化対象となるカメラのずれ量の評価値をずれ量評価部１１０から取得する（ステップＳ１５４１）。ずれ量の評価値は、合成時に撮像画像が重複するカメラの撮像画像ごとに取得する。パラメータ最適化部１０６は、ずれ量評価部１１０から、ずれ量の評価値を、変換後の撮像画像同士の組み合わせごとに受け取る。例えば、カメラ１ａ〜１ｄが存在する場合、パラメータ最適化部１０６は、カメラ１ａのずれ量の評価値として、カメラ１ａと１ｂの撮像画像に対応する変換後の撮像画像間の重複領域のずれ量の評価値、カメラ１ａと１ｃの撮像画像に対応する変換後の撮像画像間の重複領域のずれ量の評価値、及びカメラ１ａと１ｄの撮像画像に対応する変換後の撮像画像間の重複領域のずれ量の評価値を出力する。
【００９３】
その後、パラメータ最適化部１０６は、取得したずれ量の評価値に基づいて各カメラの外部パラメータを更新する（ステップＳ１５４２）。外部パラメータの更新処理は、使用する最適化アルゴリズムによって異なる。代表的な最適化アルゴリズムとしては、ニュートン法又は遺伝的アルゴリズムなどの手法がある。ただし、各カメラの外部パラメータの更新処理の方法は、これらに限定されない。
【００９４】
次に、パラメータ最適化部１０６は、更新したカメラの外部パラメータに加えて他のカメラの外部パラメータを合成テーブル生成部１０８へ送る（ステップＳ１５４３）。合成テーブル生成部１０８は、各カメラの外部パラメータから、合成時に使用する合成テーブルを各カメラについて生成する（ステップＳ１５４４）。
【００９５】
合成処理部１０９は、合成テーブル生成部１０８で生成された各カメラの合成テーブルを用いて、各カメラから取得した撮像画像を合成して、１枚の合成画像を生成する（ステップＳ１５４５）。
【００９６】
ずれ量評価部１１０は、合成処理部１０９が画像合成時に使用した各カメラの合成テーブルと撮像画像とから、各カメラのずれ量の評価値を求め、パラメータ最適化部１０６へ出力する（ステップＳ１５４６）。以上の処理を、ずれ量の評価値が一定の閾値以下になるまで繰り返すことで、合成画像におけるずれを補正する外部パラメータを算出する。もしくは、予め指定された回数まで繰り返し、補正する外部パラメータを算出してもよい。
【００９７】
図１５（Ａ）から（Ｄ）及び図１６（Ａ）から（Ｃ）は、カメラ１ａ〜１ｄの外部パラメータの補正をする順序を示す説明図である。図において、４００ａ〜４００ｄは、それぞれカメラ１ａ〜１ｄが撮影した撮像画像を示す。図１５（Ａ）にステップＳ１０として示されるように、カメラ１ａ〜１ｄは、補正タイミング決定部１０７によって、パラメータ最適化処理の対象となっている。
【００９８】
図１５（Ｂ）にステップＳ１１として示されるように、パラメータ最適化部１０６は、移動量推定部１０４よりパラメータ最適化処理の対象となる各カメラの推定移動量Ｑａ〜Ｑｄの値Ｊ１〜Ｊ４を取得し、取得した値Ｊ１〜Ｊ４に基づいて、カメラ１ａ〜１ｄの各々の外部パラメータを更新する（図１２におけるステップＳ１５０〜Ｓ１５２）。
【００９９】
次に、図１５（Ｃ）にステップＳ１２として示されるように、パラメータ最適化部１０６は、推定移動量の小さいカメラから順にパラメータ最適化処理の対象に設定する。ここで、撮像画像４００ａ〜４００ｄを撮影したカメラ１ａ〜１ｄの推定移動量Ｑａ〜Ｑｄの値をＪ１〜Ｊ４とした場合に、Ｊ１＜Ｊ２＜Ｊ３＜Ｊ４の関係が成立する例について説明する。したがって、推定移動量Ｑａ＝Ｊ１の場合の撮像画像４００ａを撮影したカメラ１ａについて１番目にパラメータ最適化処理を実行する。ここで、パラメータ最適化部１０６は、ずれ量評価部１１０からカメラ１ａ〜１ｄの重複領域におけるずれ量の評価値を取得し、カメラの外部パラメータを最適化する。この場合、重複する撮像画像を出力するカメラ４００ｂ、４００ｃ、４００ｄは、ずれ未補正の状態となっている。したがって、カメラ１ａの補正は、ずれ量の評価値によるフィードバック（図１２におけるステップＳ１５４）を実施せずに確定させる。
【０１００】
次に、図１５（Ｄ）にステップＳ１３として示されるように、移動量が２番目に小さい移動量Ｑｂ＝Ｊ２の場合の撮像画像４００ｂを撮影したカメラ１ｂのパラメータ最適化処理を実行する。カメラ１ｂのパラメータ最適化処理は、撮像画像４００ａと４００ｂの重複領域におけるずれ量の評価値に基づいて、実行される（図１２におけるステップＳ１５４）。
【０１０１】
次に、図１６（Ａ）にステップＳ１４として示されるように、移動量が３番目に小さい移動量Ｑｃ＝Ｊ３の場合の撮像画像４００ｃを撮影したカメラ１ｃのパラメータ最適化処理を実行する。カメラ１ｃのパラメータ最適化処理は、撮像画像４００ａと４００ｃの重複領域におけるずれ量の評価値に基づいて、実行される（図１２におけるステップＳ１５４）。
【０１０２】
次に、図１６（Ｂ）にステップＳ１５として示されるように、移動量が４番目に小さい移動量Ｑｄ＝Ｊ４の場合の撮像画像４００ｄを撮影したカメラ１ｄのパラメータ最適化処理を実行する。カメラ１ｄのパラメータ最適化処理は、撮像画像４００ｂと４００ｄの重複領域におけるずれ量の評価値に基づいて、及び撮像画像４００ｃと４００ｄの重複領域におけるずれ量の評価値に基づいて、実行される（図１２におけるステップＳ１５４）。以上の処理を行うことで、ずれが発生した複数のカメラの補正が実行される（ステップＳ１６）。
【０１０３】
合成テーブル生成部１０８は、パラメータ最適化部１０６から受け取ったカメラ１ａ〜１ｄの各々のパラメータに基づいて、画像合成時に用いられる合成テーブルを生成する。パラメータは、外部パラメータと、内部パラメータ及びゆがみ補正パラメータとを含む。
【０１０４】
図１７は、合成テーブル生成部１０８によって実行される処理を示すフローチャートである。先ず、合成テーブル生成部１０８は、パラメータ最適化部１０６からカメラの外部パラメータを取得する（ステップＳ１６０）。
【０１０５】
次に、合成テーブル生成部１０８は、カメラの内部パラメータとゆがみ補正パラメータを取得する。なお、カメラの内部パラメータ及びゆがみ補正パラメータは、例えば、合成テーブル生成部１０８に備えられたメモリに予め記憶されていてもよい。
【０１０６】
最後に、合成テーブル生成部１０８は、受け取った各カメラの外部パラメータと、カメラにおける内部パラメータ及びゆがみ補正パラメータとに基づいて、合成テーブルを生成する。生成された合成テーブルは、合成処理部１０９に提供される。
【０１０７】
以上の処理は、各カメラについて実行される。なお、合成テーブルの生成方法は、使用するカメラに応じて変更される。例えば、合成テーブルの生成には、射影方式（例えば、中心射影方式、等距離射影方式など）が使用される。また、レンズ歪みの補正には、歪みモデル（例えば、半径方向歪みモデル、円周方向歪みモデルなど）が使用される。ただし、合成テーブルの生成方法は、上記例に限定されない。
【０１０８】
図１８は、合成処理部１０９によって実行される処理を示すフローチャートである。先ず、合成処理部１０９は、合成テーブル生成部１０８からカメラに対応する合成テーブルを取得する（ステップＳ１７０）。次に、合成処理部１０９は、カメラによって撮影された撮像画像を取得する（ステップＳ１７１）。最後に、合成処理部１０９は、合成テーブルに基づいて撮像画像を投影（すなわち、表示）する（ステップＳ１７２）。例えば、図３（Ｂ）における撮像画像２０２ａから、合成テーブル２０４ａによって画像２０５の一部が生成される。同様の処理を各カメラについて実行することで、変換後の撮像画像を合成して、１枚の合成画像を生成する。例えば、図３（Ｂ）における撮像画像２０２ｂ、２０２ｃ、２０２ｄから、合成テーブル２０４ｂ、２０４ｃ、２０４ｄによって画像２０５の残りの部分が生成される。なお、画像が重なり合う重複領域に対して、アルファブレンドを行ってもよい。アルファブレンドは、２つの画像を係数であるα値を用いて合成する方法である。α値は、［０，１］の範囲の値を取る係数であり、透明度を表す値である。
【０１０９】
図１９（Ａ）から（Ｃ）は、ずれ量評価部１１０によって実行されるずれ量の評価値の取得のための処理を示す説明図である。図１９（Ａ）から（Ｃ）に示されるように、ずれ量評価部１１０は、合成処理部１０９によって合成されたカメラ１ａ〜１ｄの各々の撮像画像３００ａ〜３００ｄと、合成時に用いるマッピングテーブルである合成テーブルとから、カメラ１ａ〜１ｄの各々のずれ量の評価値を出力する。図１９（Ｂ）に示されるように、カメラ１ａ〜１ｄの各々の撮像画像３００ａ〜３００ｄは、他の撮像画像と重複する部分が存在する。図１９（Ｂ）に示されるように、撮像画像３００ａにおける斜線部分３０１ａは、他の撮像画像と重複する重複領域の部分である。
【０１１０】
図１９（Ｃ）に示されるように、ずれ量評価部１１０は、この重複領域の部分に基づいてずれ量の評価値を求める。以下に、２つの変換後の撮像画像３１０ａと３１０ｂを合成したときの、合成画像３１０ｃのずれ量の評価値の取得のための処理について説明する。合成画像３１０ｃは、位置３１１を境界として変換後の撮像画像３１０ａと３１０ｂとを合成することで生成される。このとき、２つの変換後の撮像画像３１０ａと３１０ｂとは、波線部分（すなわち、右側の領域）と斜線部分（すなわち、左側の領域）に画素が重複する部分ができる。ずれ量評価部１１０は、この重複した部分からずれ量の評価値を求める。
【０１１１】
図２０は、ずれ量評価部１１０によって実行される処理を示すフローチャートである。先ず、ずれ量評価部１１０は、合成画像と、合成処理部１０９からカメラ１ａ〜１ｄの各々の撮像画像と、合成時に用いるマッピングテーブルである合成テーブルとを取得する（ステップＳ１８０）。次に、ずれ量評価部１１０は、重複領域抽出部１１１から、画像同士が重複する部分を取得する（ステップＳ１８１）。その後、ずれ量評価部１１０は、重複する部分に基づいて、ずれ量の評価値を求める（ステップＳ１８２）。
【０１１２】
ずれ量評価部１１０は、重複領域における画素同士の輝度の差を累積することで、ずれ量の評価値を計算してもよい。また、ずれ量評価部１１０は、重複領域における特徴点のマッチングを行い、それらの距離を累積することでずれ量の評価値を計算してもよい。また、ずれ量評価部１１０は、ＥＣＣ（Ｅｌｌｉｐｔｉｃ  Ｃｕｒｖｅ  Ｃｒｙｐｔｏｇｒａｐｈｙ）アルゴリズムによって画像類似度を求めることでずれ量の評価値を計算してもよい。さらに、ずれ量評価部１１０は、位相限定相関を求めることで画像同士のずれ量の評価値を計算してもよい。また、ずれ量の評価値を最小となるように最適化する評価値ではなく、評価値を最大化することで最適化する評価値を用いることも可能である。さらに、評価値が０になるときに最適となる評価値を用いることも可能である。以上の処理を各カメラについて行うことで、各カメラのずれ量の評価値を求めることができる。
【０１１３】
図２１は、重複領域抽出部１１１によって実行される処理を示すフローチャートである。重複領域抽出部１１１は、変換後の撮像画像の合成処理を行うときに、隣り合う変換後の撮像画像同士の重複領域を出力する。先ず、重複領域抽出部１１１は、ずれ量評価部１１０から、変換後の撮像画像と、マッピングテーブルである合成テーブルとを受け取る（ステップＳ１９０）。次に、重複領域抽出部１１１は、合成テーブルから、２つの変換後の撮像画像が合成時に重複する重複領域の画像を、又は領域を数値として表現したものを出力する（ステップＳ１９１）。
【０１１４】
《１−２−５》合成・表示処理群Ｓ４０の詳細
図５に示される合成・表示処理群Ｓ４０では、合成テーブル生成部１０８が生成した各カメラの合成テーブルに基づいて、複数のカメラで撮影された複数の撮像画像に対応する複数の変換後の撮像画像を１枚の画像に合成し、表示機器インタフェース１５を介して、合成画像を表示装置１８に出力する。
【０１１５】
図２２は、表示画像出力部１１２によって実行される処理を示すフローチャートである。表示画像出力部１１２は、合成処理部１０９によって生成された合成画像（例えば、俯瞰合成画像）を取得する（ステップＳ２００）。次に、表示画像出力部１１２は、取得した合成画像を表示装置が対応可能な形式の映像データ（例えば、俯瞰合成映像）に変換して出力する（ステップＳ２０１）。
【０１１６】
《１−３》効果
以上に説明したように、実施の形態１に係る画像処理装置１０、画像処理方法、又は画像処理プログラムを用いれば、合成画像におけるずれ量の評価値を、パラメータ最適化処理（すなわち、ずれ補正処理）にフィードバックしているので、カメラ１ａ〜１ｄの位置姿勢の変化によって合成画像を構成する複数の変換後の撮像画像の重複領域に生じたずれを、高精度に補正することができる。
【０１１７】
また、実施の形態１に係る画像処理装置１０、画像処理方法、又は画像処理プログラムを用いれば、合成画像を構成する複数の変換後の撮像画像の特徴点のマッチングを取りやすい時間間隔でカメラ１ａ〜１ｄの推定移動量を計算しているので、カメラ１ａ〜１ｄの位置姿勢の変化によって合成画像を構成する複数の変換後の撮像画像の重複領域に生じたずれを、高精度に補正することができる。
【０１１８】
また、実施の形態１に係る画像処理装置１０、画像処理方法、又は画像処理プログラムを用いれば、合成画像を構成する複数の変換後の撮像画像の重複領域に生じたずれを補正するために、カメラ１ａ〜１ｄの各々の外部パラメータを最適化している。このため、人手によるキャリブレーション作業を行わずに、合成画像における重複領域に生じるずれを、補正することができる。
【０１１９】
さらに、実施の形態１に係る画像処理装置１０、画像処理方法、又は画像処理プログラムを用いれば、高精度且つ人手によらずに、ずれを補正することができるので、複数のカメラを監視用途で用いる監視システムにおける保守費用を抑制することができる。
【０１２０】
《２》実施の形態２．
実施の形態２に係る画像処理装置は、パラメータ最適化部１０６が行う処理の点で、実施の形態１に係る画像処理装置１０と相違する。他の点に関して、実施の形態２は、実施の形態１と同じである。したがって、実施の形態２の説明においては、図１及び図２を参照する。
【０１２１】
実施の形態２において、パラメータ最適化部１０６は、移動量推定部１０４から取得したカメラ１ａ〜１ｄの各々の推定移動量と、ずれ量評価部１１０から取得した合成画像におけるずれ量の評価値とに基づいて、合成画像におけるずれを補正するために用いられる外部パラメータを、カメラ１ａ〜１ｄの各々について求める。外部パラメータは、並進移動成分であるＸ軸、Ｙ軸、Ｚ軸方向の３成分と、回転移動成分であるロール、ピッチ、ヨーの３成分と、からなる。
【０１２２】
パラメータ最適化部１０６は、移動量推定部１０４によって得られたカメラ１ａ〜１ｄの各々の推定移動量と、ずれ量評価部１１０によって得られた合成画像におけるずれ量の評価値とに基づいて、合成画像におけるずれ量の評価値を小さくするように、外部パラメータを変更する。各カメラの外部パラメータの最適化処理は、例えば、上記処理（Ｈ１）〜（Ｈ５）を行った後に、処理（Ｈ２）〜（Ｈ５）を、この順番に繰り返すことで、実行される。
【０１２３】
また、パラメータ最適化部１０６は、カメラ１ａ〜１ｄのうちの２つ以上のカメラに位置姿勢ずれが起きた場合は、撮像画像１０１ａ〜１０１ｄの中から基準となる撮像画像を決定する処理と、ずれ補正処理の順番を決定する処理とを行う。また、パラメータ最適化部１０６は、ずれ補正処理を実行したタイミングで、カメラの推定移動量をリセットするためのフィードバック情報を、移動量推定部１０４へ提供する。このフィードバック情報は、推定移動量のリセットの対象となるカメラを示す装置ＩＤと、補正後の外部パラメータとを含む。
【０１２４】
実施の形態２においては、パラメータ最適化部１０６は、カメラ１ａ〜１ｄのうちの２台以上のカメラに位置姿勢ずれが起きた場合は、位置姿勢ずれが起きた全カメラのずれを同時に補正する。また、パラメータ最適化部１０６は、ずれ補正処理を実行したタイミングで、カメラの推定移動量をリセットするためのフィードバック情報を、移動量推定部１０４へ提供する。このフィードバック情報は、推定移動量のリセットの対象となるカメラを示す装置ＩＤと、補正後の外部パラメータとを含む。
【０１２５】
その後、パラメータ最適化部１０６は、移動量推定部１０４からカメラの推定移動量を受け取り、ずれ量評価部１１０から合成画像におけるずれ量の評価値を受け取り、ずれ補正処理のための外部パラメータを出力する。なお、合成画像におけるずれを補正するためのずれ補正処理は、移動量推定部１０４と、パラメータ最適化部１０６、合成テーブル生成部１０８、合成処理部１０９、及びずれ量評価部１１０からなるフィードバックループと、によって実行される。
【０１２６】
図２３は、実施の形態２に係る画像処理装置によって実行されるパラメータ最適化処理（すなわち、ずれ補正処理）を示すフローチャートである。先ず、パラメータ最適化部１０６は、補正タイミング決定部１０７から、ずれ補正処理の対象すなわちパラメータ最適化処理の対象であるカメラの装置ＩＤを受け取る（ステップＳ２１０）。
【０１２７】
その後、パラメータ最適化部１０６は、移動量推定部１０４から、パラメータ最適化処理の対象であるカメラの推定移動量を受け取る（ステップＳ２１１）。推定移動量は、例えば、並進移動成分であるＸ軸、Ｙ軸、Ｚ軸方向の３成分と、回転移動成分であるロール、ピッチ、ヨーの３成分とを含む。
【０１２８】
次に、パラメータ最適化部１０６は、パラメータ最適化処理の対象であるカメラの外部パラメータを移動量推定部１０４から取得したカメラ１ａ〜１ｄの各々の推定移動量に基づいて変更する（ステップＳ２１２）。なお、カメラの設置時又はカメラの初回起動時における外部パラメータは、カメラキャリブレーションパターンを備えたキャリブレーション用ボードを使用したカメラキャリブレーション作業によって取得される。パラメータ最適化部１０６によって実行される外部パラメータの更新に用いられる計算式は、図１３に示される。
【０１２９】
パラメータ最適化処理の対象であるカメラがある場合は、外部パラメータの最適化処理を実行する（ステップＳ２１３）。このとき、パラメータ最適化処理の対象であるカメラの台数が２台以上である場合は、同時に２台以上のカメラの外部パラメータを最適化する。図２４は、実施の形態２に係る画像処理装置のパラメータ最適化部１０６によって実行されるずれ補正処理の例を示す説明図である。図２４では、パラメータ最適化処理の対象であるずれ未補正の２台のカメラ１ｂ、１ｃが存在する。これら２台のカメラ１ｂ、１ｃによって撮影された撮像画像３６２及び３６３、並びに、カメラ１ａ、１ｄによって撮影された撮像画像３６１及び３６４には、重複領域が存在している。また、撮像画像３６１と３６２の間にはずれ量Ｄ３が存在し、撮像画像３６２と３６３の間にはずれ量Ｄ１が存在し、撮像画像３６３と３６４の間にはずれ量Ｄ２が存在する。
【０１３０】
次に、パラメータ最適化部１０６は、ずれを補正するために用いられる外部パラメータが求められた場合、それをカメラの外部パラメータとして更新し、パラメータ最適化処理を終了する。また、パラメータ最適化部１０６は、外部パラメータの更新時、補正したカメラの装置ＩＤと補正後の外部パラメータを移動量推定部１０４へフィードバックする（ステップＳ２１４）。
【０１３１】
パラメータ最適化部１０６は、パラメータ最適化処理（ステップＳ２１３）において、カメラの外部パラメータを変え、そのときの合成画像におけるずれ量の評価値を受け取り、ずれ量の評価値が小さくなるように処理を繰り返す。パラメータ最適化処理のアルゴリズムとしては、例えば、遺伝的アルゴリズムを用いることができる。ただし、パラメータ最適化処理のアルゴリズムは、他のアルゴリズムであってもよい。
【０１３２】
先ず、パラメータ最適化部１０６は、最適化対象となる１台以上のカメラのずれ量の評価値をずれ量評価部１１０から取得する（ステップＳ２１３１）。このずれ量の評価値は、合成時に撮像画像が重複するカメラの撮像画像ごとに取得する。パラメータ最適化部１０６は、ずれ量評価部１１０から、ずれ量の評価値を、撮像画像同士の組み合わせごとに受け取る。例えば、カメラ１ａ〜１ｄが存在する場合、パラメータ最適化部１０６は、図２４に示されるように、最適化対象＃１のカメラ１ｂについて、ずれ量Ｄ３とＤ１の評価値を取得し、最適化対象＃２のカメラ１ｃについて、ずれ量Ｄ２とＤ１の評価値を取得する。
【０１３３】
その後、パラメータ最適化部１０６は、取得したずれ量の評価値の全てを合計したものをずれ量の評価値として、対象となる複数のカメラの外部パラメータを更新する（ステップＳ２１３２）。外部パラメータの更新処理は、使用する最適化アルゴリズムによって異なる。代表的な最適化アルゴリズムとしては、ニュートン法又は遺伝的アルゴリズムなどの手法がある。ただし、外部パラメータの更新処理の方法は、これらに限定されない。
【０１３４】
次に、パラメータ最適化部１０６は、更新したカメラの外部パラメータに加えて他のカメラの外部パラメータを合成テーブル生成部１０８へ送る（ステップＳ２１３３）。合成テーブル生成部１０８は、複数のカメラの外部パラメータから、合成時に使用する合成テーブルをカメラごとに生成する（ステップＳ２１３４）。
【０１３５】
合成処理部１０９は、合成テーブル生成部１０８で生成された各カメラの合成テーブルを用いて、カメラから取得した撮像画像を合成して、１枚の合成画像を生成する（ステップＳ２１３５）。
ずれ量評価部１１０は、合成処理部１０９が画像合成時に使用した各カメラの合成テーブルと変換後の撮像画像から、カメラごとにずれ量の評価値を求め、パラメータ最適化部１０６へ出力する（ステップＳ２１３６）。以上の処理を、ずれ量の評価値が一定の閾値以下になるまで繰り返すことで、合成画像におけるずれを補正するために用いられる外部パラメータを計算する。もしくは、予め指定された回数まで繰り返し、補正する外部パラメータを算出してもよい。
【０１３６】
図２５（Ａ）から（Ｄ）は、複数のカメラの補正をする順序を示す説明図である。図において、５００ａ〜５００ｄは、カメラ１ａ〜１ｄが撮影した撮像画像を示す。図２５（Ａ）にステップＳ２０として示されるように、全てのカメラ１ａ〜１ｄは、補正タイミング決定部１０７によって、パラメータ最適化処理の対象となっている。
【０１３７】
図２５（Ｂ）にステップＳ２１として示されるように、パラメータ最適化部１０６は、移動量推定部１０４よりパラメータ最適化処理の対象となる各カメラの推定移動量Ｑａ〜Ｑｄの値Ｊ１〜Ｊ４を取得し、取得した値Ｊ１〜Ｊ４に基づいて、カメラ１ａ〜１ｄの各々の外部パラメータを更新する（図２３におけるステップＳ２１０〜Ｓ２１２）。
【０１３８】
次に、図２５（Ｃ）にステップＳ２２として示されるように、パラメータ最適化部１０６は、複数のカメラの外部パラメータの最適化を同時に実行する（図２３におけるステップＳ２１３）。
【０１３９】
次に、図２５（Ｄ）にステップＳ２３として示されるように、パラメータ最適化部１０６は、ずれ量評価部１１０から、複数の撮像画像におけるずれ量の評価値を取得し、ずれ量の評価値を合計したものを評価値として、その評価値が最小又は最大となる複数のカメラの外部パラメータを求める。以上の処理を行うことで、ずれが発生したカメラの補正を同時に実行する。
【０１４０】
以上に説明したように、実施の形態２に係る画像処理装置、画像処理方法、又は画像処理プログラムを用いれば、合成画像におけるずれ量の評価値を、パラメータ最適化処理（すなわち、ずれ補正処理）にフィードバックしているので、カメラ１ａ〜１ｄの位置姿勢の変化によって合成画像を構成する複数の変換後の撮像画像の重複領域に生じたずれを、高精度に補正することができる。
【０１４１】
また、実施の形態２に係る画像処理装置、画像処理方法、又は画像処理プログラムを用いれば、複数のずれ量の評価値の合計値に基づいてパラメータ最適化処理を実行しているので、演算量を減らすことができる。
【０１４２】
《３》実施の形態３．
《３−１》画像処理装置６１０
実施の形態３に係る画像処理装置６１０は、複数の撮像画像（すなわち、複数のカメラ画像）の重畳領域と、参照データとを用いて、ずれ補正処理を実行する。参照データは、参照画像と、その参照画像を撮像装置であるカメラで撮影したときのカメラパラメータとを含む。参照画像は、キャリブレーションされた状態にあるカメラによって撮影された撮像画像、すなわち、カメラ画像である。参照画像は、「補正されたカメラ画像」とも言う。参照画像は、例えば、カメラを設置した際に、キャリブレーション用ボードを用いてキャリブレーションされたカメラによって撮影されたカメラ画像である。
【０１４３】
図２６は、実施の形態３に係る画像処理装置６１０のハードウェア構成の例を示す図である。画像処理装置６１０は、実施の形態３に係る画像処理方法を実施することができる装置である。図２６に示されるように、画像処理装置６１０は、メインプロセッサ６１１と、メインメモリ６１２と、補助メモリ６１３とを備えている。また、画像処理装置６１０は、ファイルインタフェース６１６と、入力インタフェース６１７と、表示機器インタフェース１５と、画像入力インタフェース１４とを備えている。画像処理装置６１０は、画像処理プロセッサ６１４と、画像処理メモリ６１５とを備えてもよい。なお、図２６に示される画像処理装置６１０は、後述される実施の形態４、５及び６に係る画像処理装置７１０、８１０及び９１０のハードウェア構成の例でもある。また、実施の形態３、４、５及び６に係る画像処理装置６１０、７１０、８１０及び９１０のハードウェア構成は、図２６の構成に限定されない。例えば、実施の形態３、４、５及び６に係る画像処理装置６１０、７１０、８１０及び９１０のハードウェア構成は、図１に示されるものであってもよい。
【０１４４】
補助メモリ６１３は、例えば、カメラ６００＿１〜６００＿ｎによって撮影された複数のカメラ画像を保存する。ｎは、正の整数である。６００＿１〜６００＿ｎは、実施の形態１において説明されたカメラ１ａ〜１ｄと同様のものである。また、補助メモリ６１３は、カメラ６００＿１〜６００＿ｎの設置位置の関係及び画像合成時におけるブレンディング処理の情報と、事前のキャリブレーションによって算出されたカメラパラメータと、レンズ歪補正マップとを保存する。また、補助メモリ６１３は、複数のカメラ画像の各々に対して行われるマスク処理に使用される複数のマスク画像を保存してもよい。マスク処理及びマスク画像は、後述の実施の形態５で説明される。
【０１４５】
メインプロセッサ６１１は、補助メモリ６１３に保存されている情報をメインメモリ６１２に読み込む処理を行う。メインプロセッサ６１１は、静止画を用いた処理を行う場合に、補助メモリ６１３に静止画ファイルを保存する。また、メインプロセッサ６１１は、メインメモリ６１２に記憶されているプログラムを実行することにより、各種の演算処理及び各種の制御処理を行う。メインメモリ６１２に記憶されているプログラムは、実施の形態３に係る画像処理プログラムを含んでもよい。
【０１４６】
入力インタフェース６１７は、マウス入力、キーボード入力、タッチパネル入力、などのデバイス入力によって提供された入力情報を受け付ける。メインメモリ６１２は、入力インタフェース６１７を通して入力された入力情報を記憶する。
【０１４７】
画像処理メモリ６１５は、メインメモリ６１２から転送された入力画像と、画像処理プロセッサ６１４で作成された合成画像（すなわち、合成画像データ）及び投影画像（すなわち、投影画像データ）とを記憶する。
【０１４８】
表示機器インタフェース１５は、画像処理装置６１０において生成された合成画像を出力する。表示機器インタフェース１５は、ＨＤＭＩ（Ｈｉｇｈ−Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）ケーブルなどによって表示装置１８に接続される。表示装置１８は、表示機器インタフェース１５から提供された合成画像に基づく映像を表示する。
【０１４９】
画像入力インタフェース１４は、画像処理装置６１０に接続されたカメラ６００＿１〜６００＿ｎから提供された画像信号を受け付ける。カメラ６００＿１〜６００＿ｎは、例えば、ネットワークカメラ、アナログカメラ、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）カメラ、ＨＤ−ＳＤＩ（Ｈｉｇｈ  Ｄｅｆｉｎｉｔｉｏｎ−Ｓｅｒｉａｌ  Ｄｉｇｉｔａｌ  Ｉｎｔｅｒｆａｃｅ）カメラ、などである。カメラ６００＿１〜６００＿ｎと画像処理装置６１０との間の接続方式は、カメラ６００＿１〜６００＿ｎの種類に応じて決定される。画像入力インタフェース１４を通して入力された画像情報は、例えば、メインメモリ６１２に記憶される。
【０１５０】
外部記憶装置１７及び表示装置１８は、実施の形態１において説明されたものと同じである。外部記憶装置１７は、画像処理装置６１０に接続された記憶装置である。外部記憶装置１７は、ハードディスク装置（ＨＤＤ）、ＳＳＤ、などである。外部記憶装置１７は、例えば、補助メモリ６１３の容量を補うために備えられ、補助メモリ６１３と同等の動作をする。ただし、外部記憶装置１７を備えないことも可能である。
【０１５１】
図２７は、実施の形態３に係る画像処理装置６１０の構成を概略的に示す機能ブロック図である。図２７に示されるように、実施の形態３に係る画像処理装置６１０は、カメラ画像受信部６０９と、カメラパラメータ入力部６０１と、合成処理部６０２と、投影処理部６０３と、表示処理部６０４と、参照データ読出部６０５と、ずれ検出部６０６と、移動量推定・パラメータ計算部６０７と、ずれ補正部６０８とを備えている。画像処理装置６１０は、複数のカメラによって撮影された複数のカメラ画像を合成することで合成画像を生成する処理を行う。
【０１５２】
画像処理装置６１０において、投影処理部６０３は、カメラパラメータ入力部６０１から提供される複数の外部パラメータに基づいて、投影画像の合成時に用いるマッピングテーブルである合成テーブルを生成し、この合成テーブルを用いて複数のカメラ画像を同じ投影面上に投影することによって、複数のカメラ画像に対応する複数の投影画像を生成する。合成処理部６０２は、複数の投影画像から合成画像を生成する。参照データ読出部６０５は、複数のカメラに対応する基準となるカメラ画像である複数の参照画像と複数の参照画像に対応する複数の外部パラメータとを含む参照データを出力する。移動量推定・パラメータ計算部６０７は、複数のカメラ画像と参照データとに基づいて、複数のカメラの移動量を推定し、複数のカメラに対応する複数の補正後の外部パラメータとを計算する。ずれ検出部６０６は、複数のカメラのいずれかにずれが発生しているか否かを判断する。ずれ補正部６０８は、ずれ検出部６０６によってずれが発生していると判断された場合、カメラパラメータ入力部６０１によって提供される複数の外部パラメータを、移動量推定・パラメータ計算部６０７によって計算された複数の補正後の外部パラメータによって更新する。
【０１５３】
図２８は、図２７に示される投影処理部６０３の構成を概略的に示す機能ブロック図である。図２８に示されるように、投影処理部６０３は、合成テーブル生成部６０３１と、画像投影部６０３２とを有している。
【０１５４】
図２９は、図２７に示される合成処理部６０２の構成を概略的に示す機能ブロック図である。図２９に示されるように、合成処理部６０２は、合成画像生成部６０２１と、ブレンド情報読込部６０２２とを有している。
【０１５５】
図３０は、図２７に示されるずれ検出部６０６の構成を概略的に示す機能ブロック図である。図３０に示されるように、ずれ検出部６０６は、類似度評価部６０６１と、相対移動量推定部６０６２と、重畳領域抽出部６０６３と、重畳領域ずれ量評価部６０６４と、投影領域ずれ量評価部６０６５と、ずれ判定部６０６６とを有している。
【０１５６】
図３１は、図２７に示されるずれ補正部６０８の構成を概略的に示す機能ブロック図である。図３１に示されるように、ずれ補正部６０８は、パラメータ最適化部６０８２と、重畳領域抽出部６０８３と、重畳領域ずれ量評価部６０８４と、投影領域ずれ量評価部６０８５とを有している。
【０１５７】
《３−２》カメラ画像受信部６０９
図２７に示されるカメラ画像受信部６０９は、カメラ６００＿１〜６００＿ｎから提供されたカメラ画像の入力処理を行う。入力処理は、例えば、デコード処理である。図２６を参照して説明すると、メインプロセッサ６１１は、カメラ６００＿１〜６００＿ｎから画像入力インタフェース１４を通して受信したカメラ画像にデコード処理を施して、メインメモリ６１２に保存する。デコード処理は、カメラ画像受信部６０９以外の構成によって行われてもよい。例えば、デコード処理は、画像処理プロセッサ６１４によって行われてもよい。
【０１５８】
《３−３》カメラパラメータ入力部６０１
図２７に示されるカメラパラメータ入力部６０１は、カメラ６００＿１〜６００＿ｎに対する事前のキャリブレーションによって算出されたカメラパラメータを取得し、保存する。カメラパラメータは、例えば、内部パラメータ、外部パラメータ、レンズ歪み補正マップ（すなわち、歪みパラメータ）、などを含む。図２６を参照して説明すると、メインプロセッサ６１１は、補助メモリ６１３に記憶されているカメラパラメータを、ファイルインタフェース６１６を通してメインメモリ６１２へ読み込む。
【０１５９】
また、カメラパラメータ入力部６０１は、記憶装置に記憶されているカメラパラメータの外部パラメータを、ずれ補正部６０８によって補正された外部パラメータ（「補正後の外部パラメータ」とも言う。）に更新する処理を行う。また、補正後の外部パラメータを含むカメラパラメータは、「補正後のカメラパラメータ」とも言う。図２６を参照して説明すると、メインプロセッサ６１１は、メインメモリ６１２に記憶されている補正後の外部パラメータを、ファイルインタフェース６１６を通して補助メモリ６１３へ書き込む処理（例えば、上書きする処理）を行う。
【０１６０】
《３−４》合成処理部６０２
図３２は、図２７及び図２９に示される合成処理部６０２によって実行される処理を示すフローチャートである。合成処理部６０２は、カメラ画像受信部６０９によって受信され、入力処理が施された複数のカメラ画像を合成することによって、１枚画の合成画像を生成する。図３２に示される処理は、合成処理部６０２及び投影処理部６０３によって分担して行われてもよい。
【０１６１】
先ず、合成処理部６０２は、カメラパラメータ入力部６０１から、ブレンディング処理に用いられるブレンド情報とカメラパラメータとを読み込む（ステップＳ３２１、Ｓ３２２）。
【０１６２】
次に、合成処理部６０２は、取得したカメラパラメータを用いて投影処理部６０３が作成した合成テーブルを取得する（ステップＳ３２３）。
【０１６３】
次に、合成処理部６０２は、入力処理が施された複数のカメラ画像を受け取り（ステップＳ３２４）、投影処理部６０３に、合成テーブルを用いて同じ投影面上に投影した画像（すなわち、投影画像）を生成させることによって、複数のカメラ画像からなる投影画像を合成して１枚画である合成画像を生成する（ステップＳ３２５）。つまり、合成処理部６０２は、カメラパラメータ入力部６０１から取得したカメラパラメータとカメラ画像受信部６０９で読み込んだカメラ画像とを投影処理部６０３に提供し、投影処理部６０３から提供される各カメラの投影画像を受け取り、その後、受け取った各カメラの投影画像を合成画像生成部６０２１（図２９）において合成する。
【０１６４】
また、ステップＳ３２５において、合成処理部６０２の合成画像生成部６０２１は、ブレンド情報読込部６０２２から入力されたブレンド情報を用いて、投影画像同士の繋ぎ目部分に対してブレンディング処理を施してもよい。図２６を参照して説明すると、メインプロセッサ６１１は、補助メモリ６１３に記憶されているブレンド情報を、ファイルインタフェース６１６を通してメインメモリ６１２へ読み込んでもよい。
【０１６５】
次に、合成処理部６０２は、合成画像を、表示処理部６０４に出力する（ステップＳ３４６）。
【０１６６】
合成処理部６０２は、カメラパラメータ入力部６０１からカメラパラメータを読み込み（ステップＳ３２７）、カメラパラメータが変化しているか否かを判断する。カメラパラメータが変化している場合、処理はステップＳ３２３に進み、合成処理部６０２は、ステップＳ３２７で取得した最新のカメラパラメータを用いて、投影処理部６０３に合成処理に用いられる合成テーブルを作成させ、さらにステップＳ３２４〜Ｓ３２８の処理を行う。カメラパラメータが変化していない場合、処理はステップＳ３２４に進み、合成処理部６０２は、新たに複数のカメラ画像を受け取り（ステップＳ３２４）、さらにステップＳ３２５〜Ｓ３２８の処理を行う。
【０１６７】
《３−５》投影処理部６０３
図３３は、図２７及び図２８に示される投影処理部６０３によって実行される処理を示すフローチャートである。図３３に示されるように、投影処理部６０３は、合成処理部６０２からカメラパラメータを読み込む（ステップＳ３０１）。次に、投影処理部６０３は、取得したカメラパラメータを用いて、合成処理に用いられる合成テーブルを作成し、作成した合成テーブルを用いて、入力されたカメラ画像を投影画像に変換する（ステップＳ３０２）。
【０１６８】
次に、投影処理部６０３は、カメラパラメータを読み込み（ステップＳ３０３）、カメラ画像を読み込み（ステップＳ３０４）、作成した合成テーブルを用いて、入力されたカメラ画像から投影画像を生成する（ステップＳ３０５）。つまり、投影処理部６０３の合成テーブル生成部６０３１（図２８）は、入力されたカメラパラメータを用いて合成テーブルを作成し、投影処理部６０３の画像投影部６０３２（図２８）は、合成テーブルと複数のカメラ画像とから、投影画像を生成する。
【０１６９】
次に、投影処理部６０３は、入力されたカメラパラメータが変化しているか否かを判断する（ステップＳ３０６）。カメラパラメータが変化している場合、処理はステップＳ３０７に進み、投影処理部６０３は、ステップＳ３０３で取得した最新のカメラパラメータを用いて、合成テーブルを再生成し、その後、ステップＳ３０３〜Ｓ３０６の処理を行う。カメラパラメータが変化していない場合、投影処理部６０３は、新たに複数のカメラ画像を受け取り（ステップＳ３０４）、その後、ステップＳ３０５〜Ｓ３０６の処理を行う。
【０１７０】
図３４は、図２７及び図２８に示される投影処理部６０３によって実行される処理の例を示す説明図である。図３４において、６３０ａ〜６３０ｄは、カメラ６００＿１〜６００＿４のカメラ画像に基づいてカメラ画像受信部６０９で入力処理が施されたカメラ画像を示す。６３１ａ〜６３１ｄは、投影処理部６０３に入力されたカメラ６００＿１〜６００＿４のカメラパラメータを用いて、投影処理部６０３で作成される合成テーブルを示す。投影処理部６０３は、合成テーブル６３１ａ〜６３１ｄとカメラ画像６３０ａ〜６３０ｄとに基づいて、カメラ６００＿１〜６００＿４のカメラ画像の投影画像６３２ａ〜６３２ｄを生成する。
【０１７１】
また、投影処理部６０３は、合成テーブル生成部６０３１が作成した合成テーブルを出力してもよい。また、投影処理部６０３は、入力されたカメラパラメータが変化していない場合は、合成テーブルを作り直す必要が無い。そこで、合成テーブル生成部６０３１は、入力されたカメラパラメータが変化していない場合は、合成テーブルを作り直さずに、据え置く処理を実行する。
【０１７２】
《３−６》表示処理部６０４
表示処理部６０４は、合成処理部６０２によって作成された合成画像を、表示装置で表示可能な映像データに変換する処理を行い、表示装置に映像データを提供する。表示装置は、例えば、図２６に示される表示装置１８である。表示処理部６０４は、合成画像に基づく映像を、１枚のディスプレイを有する表示装置に表示する。表示処理部６０４は、合成画像に基づく映像を、縦横に並べて配置された複数枚のディスプレイを有する表示装置に表示してもよい。また、表示処理部６０４は、合成画像の特定の領域（すなわち、合成画像の一部）を切り出して表示装置に表示してもよい。また、表示処理部６０４は、合成画像に基づく映像上にアノテーションを重畳表示してもよい。アノテーションは、注釈を意味し、例えば、人物の検出の結果を示す枠（例えば、検出された人物を囲う枠）などの表示、色を変えて表示する部分又は輝度を上げるなどの強調表示（例えば、検出された人物を囲う領域の色を目立つ色に変更又は明るくする表示）を含む。
【０１７３】
《３−７》参照データ読出部６０５
参照データ読出部６０５は、画像処理装置６１０において、参照データを出力する。参照データは、例えば、校正済みの状態にある各カメラのカメラパラメータである外部パラメータとそのときのカメラ画像である参照画像とを含むデータである。校正済みの状態は、例えば、画像処理装置６１０と複数のカメラ６００＿１〜６００＿ｎを設置する際に、キャリブレーション用ボードを用いてキャリブレーションしたときのカメラ６００＿１〜６００＿ｎの状態である。図２６を参照して説明すると、メインプロセッサ６１１は、補助メモリ６１３に記憶されている参照データを、ファイルインタフェース６１６を通してメインメモリ６１２へ読み込む。
【０１７４】
《３−８》ずれ検出部６０６
図３５は、図２７及び図３０に示されるずれ検出部６０６によって実行される処理を示すフローチャートである。ずれ検出部６０６は、各カメラ６００＿１〜６００＿ｎにずれが発生しているか否かを検出する。すなわち、ずれ検出部６０６は、以下の４つの処理（Ｒ１）〜（Ｒ４）に基づいて、ずれの有無及びずれ量を判断する。ただし、ずれ検出部６０６は、以下の４つの処理（Ｒ１）〜（Ｒ４）の１つ以上の組み合わせに基づいて、ずれの有無及びずれ量を判断することも可能である。
【０１７５】
ずれ検出部６０６による処理（Ｒ１）〜（Ｒ４）の前に、図３５にステップＳ３２１〜Ｓ３２６として示される処理が実行される。ステップＳ３２１において、カメラ画像受信部６０９によってカメラ画像の読み込みが行われ、ステップＳ３２２において、カメラパラメータ入力部６０１によって外部パラメータが読み込まれ、ステップＳ３２３において、投影処理部３２３によって、カメラ画像と外部パラメータとを用いて投影画像が生成される。また、ステップＳ３２４において、参照データ読出部６０５によって参照データが読み出され、ステップＳ３２５において、投影処理部６０３によって参照データが読み出される。さらに、ステップＳ３２６において、移動量推定・パラメータ計算部６０７によってカメラの相対移動量が読み込まれる。
【０１７６】
（Ｒ１）ずれ検出部６０６は、参照データのカメラ画像である参照画像とカメラ画像受信部６０９から得られた現在のカメラ画像とを比較し、参照画像と現在のカメラ画像との類似度に基づいて、各カメラ６００＿１〜６００＿ｎの位置ずれを判断する。この処理は、図３５のステップＳ３３４及びＳ３３５に示される。類似度が閾値を超えた場合に、ずれ検出部６０６は、ずれが発生したと判断する。ここで、「類似度」は、例えば、輝度差であり、類似度が大きくなるほど、類似の程度が下がることを意味する。
【０１７７】
（Ｒ２）ずれ検出部６０６は、投影領域におけるずれ量に基づいてカメラの位置ずれを判断する。つまり、ずれ検出部６０６は、後述する投影領域ずれ量評価部６０６５で計算されたずれ量に基づいてずれ量を評価する。この処理は、図３５のステップＳ３２７及びＳ３２８に示される。ずれ量が閾値を超えた場合に、ずれ検出部６０６は、ずれが発生したと判断する。
【０１７８】
（Ｒ３）ずれ検出部６０６は、合成画像上の重畳領域におけるずれ量に基づいて位置ずれを判断する。つまり、ずれ検出部６０６は、後述する重畳領域ずれ量評価部６０６４で計算されたずれ量に基づいてずれ量を評価する。この処理は、図３５のステップＳ３３０〜Ｓ３３２に示される。ずれ量が閾値を超えた場合に、ずれ検出部６０６は、ずれが発生したと判断する。
【０１７９】
（Ｒ４）ずれ検出部６０６は、参照画像とカメラ画像受信部６０９から得られた現在のカメラ画像とを比較し、これら２つの画像間の相対移動量に基づいてずれの有無を判断する。この処理は、図３５のステップＳ３３３に示される。ずれ検出部６０６は、相対移動量が閾値を超えたときに、ずれが発生したと判断する。
【０１８０】
図３５には、処理（Ｒ１）〜（Ｒ４）のいずれかにおいて、ステップＳ３２８、Ｓ３３２、Ｓ３３３、Ｓ３３５の条件を満たす場合（すなわち、判断がＹＥＳの場合）に、ずれ検出部６０６は、ずれが発生していると判断する例が示されている。しかし、処理（Ｒ１）〜（Ｒ４）のステップＳ３２８、Ｓ３３２、Ｓ３３３、Ｓ３３５の条件の２つ以上が満たされたときに、ずれ検出部６０６は、ずれが発生していると判断してもよい。
【０１８１】
〈類似度評価部６０６１〉
図３０に示される類似度評価部６０６１は、参照画像とカメラ画像受信部６０９から得られた現在のカメラ画像との間の類似度を閾値と比較する。類似度は、例えば、輝度差又は構造類似性などに基づく値、などである。類似度が輝度差である場合には、類似度が大きいほど、類似の程度が低い。
【０１８２】
〈相対移動量推定部６０６２〉
図３０に示される相対移動量推定部６０６２は、カメラ画像受信部６０９から提供されたカメラ画像と、参照データ読出部６０５から得られた、校正済みの状態にある各カメラの参照データとに基づいて、カメラ画像受信部６０９から提供されたカメラ画像における各カメラの外部パラメータを算出する。
【０１８３】
図３０に示される相対移動量推定部６０６２は、２画像間における相対的な移動量の算出方法として、５点アルゴリズムなどの公知の方法を使用することができる。５点アルゴリズムでは、相対移動量推定部６０６２は、２画像の画像中の特徴点を検出し、２画像の特徴点のマッチングをとり、マッチング結果を５点アルゴリズムに適用する。したがって、相対移動量推定部６０６２は、参照データの参照画像とカメラ画像受信部６０９から提供されたカメラ画像とを５点アルゴリズムに適用することによって、参照画像を基準とした現在のカメラ画像の相対移動量を推定する。
【０１８４】
〈重畳領域抽出部６０６３〉
図３０に示される重畳領域抽出部６０６３は、投影処理部６０３から提供される投影画像と合成テーブルとから、合成画像における、隣接するカメラ画像同士の重畳する領域の画像部分である重畳領域画像を抽出し、これを重畳領域ずれ量評価部６０６４へ出力する。つまり、重畳領域抽出部６０６３は、隣接するカメラ画像の重畳領域画像のペア（すなわち、互いに関連付けられた画像データ）を出力する。
【０１８５】
図３６は、図３０に示される重畳領域抽出部６０６３によって実行される処理を示す説明図である。図３６において、投影画像６３３ａ及び６３３ｂは、投影処理部６０３によって出力される各カメラ画像の投影画像を示している。図３６において、画像６３４は、画像６３３ａと６３３ｂを合成したときの位置関係を示している。このとき、画像６３４内には、投影画像６３３ａと６３３ｂが重なり合う領域である重畳領域６３５が存在する。重畳領域抽出部６０６３は、重畳領域６３５を、投影処理部６０３から提供される投影画像と合成テーブルとに基づいて、求める。重畳領域抽出部６０６３は、重畳領域６３５を求めた後、投影画像ごとの重畳領域画像を出力する。重畳領域画像６３６ａは、カメラ６００＿１のカメラ画像の投影画像６３３ａの重畳領域６３５における画像である。重畳領域画像６３６ｂは、カメラ６００＿２のカメラ画像の投影画像６３３ｂの重畳領域６３５における画像を示している。重畳領域抽出部６０６３は、これら２つの重畳領域画像６３６ａ及び６３６ｂを重畳領域画像のペアとして出力する。図３６には、カメラ６００＿１と６００＿２とに関する重畳領域画像のペアを、１組示しているが、重畳領域抽出部６０６３は、全てのカメラの投影画像における重畳領域画像のペアを出力する。図３５に示されるカメラ配置の場合、重畳領域画像のペアの個数は、最大で６である。
【０１８６】
〈重畳領域ずれ量評価部６０６４〉
図３０に示される重畳領域ずれ量評価部６０６４は、重畳領域抽出部６０６３から提供された隣接するカメラ画像の重畳領域画像のペアに基づいて、ずれ量を計算する。ずれ量は、画像同士の類似度（例えば、構造類似性）又は特徴点の差分、などに基づいて算出する。例えば、重畳領域ずれ量評価部６０６４は、カメラ６００＿１と６００＿２の投影画像における重畳領域画像６３６ａと６３６ｂが１つのペアとして入力され、画像の類似度を求める。このとき、重畳領域ずれ量評価部６０６４は、投影画像を生成するときのカメラパラメータは、パラメータ最適化部６０８２から提供されたものを用いる。なお、比較処理をする場合は、互いに画素が存在する範囲に限定してもよい。
【０１８７】
〈投影領域ずれ量評価部６０６５〉
図３０に示される投影領域ずれ量評価部６０６５は、パラメータ最適化部６０８２から提供されるカメラパラメータに対応するカメラ画像受信部６０９から得られた各カメラ画像の投影画像（投影処理部６０３によって、投影画像を取得する）と、参照データ読出部６０５から得られた各カメラの参照データに基づく投影画像とを比較し、参照データに対するずれ量を計算する。つまり、投影領域ずれ量評価部６０６５は、参照データのカメラ画像である参照画像と、それに対応するカメラパラメータとを投影処理部６０３に入力し、投影画像を取得し、投影画像を比較する。投影領域ずれ量評価部６０６５は、ずれ量を、画像同士の類似度（例えば、構造類似性）又は特徴点の差分、などに基づいて算出する。
【０１８８】
図３７（Ａ）及び（Ｂ）は、図３０に示される投影領域ずれ量評価部６０６５によって実行される処理の例を示す説明図である。画像６３７１は、カメラ画像受信部６０９から得られたカメラ６００＿１の入力画像である。画像６３７２は、参照データ読出部６０５に記憶されているカメラ６００＿１の参照データ内の画像である。６３８１は、パラメータ最適化部６０８２から提供されるカメラパラメータを投影処理部６０３へ入力したときに得られた合成テーブルであり、６３８２は、参照データ読出部６０５に記憶されているカメラ６００＿１の参照データ内のカメラパラメータを投影処理部６０３へ入力したときに得られた合成テーブルである。投影画像６３９１は、合成テーブル６３８１によって画像６３７１を投影したときの画像である。投影画像６３９２は、合成テーブル６３８２によって画像６３７２を投影したときの画像である。なお、比較処理をする場合は、互いに画素が存在する範囲に限定してもよい。投影領域ずれ量評価部６０６５は、投影画像６３９１と６３９２を比較することにより、参照データに対するずれ量を計算する。例えば、投影領域ずれ量評価部６０６５は、それぞれの画像の類似度を求める。
【０１８９】
〈ずれ判定部６０６６〉
図３０に示されるずれ判定部６０６６は、前述した４つの処理（Ｒ１）〜（Ｒ４）に基づいて、ずれが発生しているカメラを検出し、判定結果を出力する。判定結果は、例えば、ずれが発生しているか否かを示す情報、ずれが発生しているカメラを特定する情報（例えば、カメラの番号、などを含む。ずれ判定部６０６６は、類似度評価部６０６１、相対移動量推定部６０６２、重畳領域抽出部６０６３、重畳領域ずれ量評価部６０６４から提供される評価値に基づいて判定結果を生成する。ずれ判定部６０６６は、それぞれの評価値に対して閾値を設定し、それを超えた場合にずれ発生として判断する。また、ずれ判定部６０６６は、それぞれの評価値に重み付けをし、合計したものを新たな評価値とし、それに対して閾値を設けて判定してもよい。
【０１９０】
《３−９》移動量推定・パラメータ計算部６０７
図３８は、図２７に示される移動量推定・パラメータ計算部６０７によって実行される処理を示すフローチャートである。図３８にステップＳ３４１〜Ｓ３４４として示されるように、移動量推定・パラメータ計算部６０７は、ずれ検出部６０６から提供されたカメラ画像と、参照データ読出部６０５から得られた、校正済みの状態にある各カメラの参照データとに基づいて、カメラ画像受信部６０９から提供されたカメラ画像における各カメラの外部パラメータを算出する。
【０１９１】
移動量推定・パラメータ計算部６０７は、２画像間における相対的なカメラの移動量の算出方法として、５点アルゴリズムなどの公知の方法を使用することができる。５点アルゴリズムでは、移動量推定・パラメータ計算部６０７は、２画像の画像中の特徴点を検出し、２画像の特徴点のマッチングをとり（ステップＳ３４２）、マッチング結果を５点アルゴリズムに入力する。したがって、移動量推定・パラメータ計算部６０７は、カメラ画像受信部６０９から提供されたカメラ画像と参照画像とを前記の方法に入力することで、参照データを基準とした各カメラの相対移動量（カメラ画像受信部６０９から入力されている時点での相対移動量）を推定することができる（ステップＳ３４３）。
【０１９２】
移動量推定・パラメータ計算部６０７は、カメラ画像受信部６０９から入力されている時点での各カメラの外部パラメータを、上記で推定した各カメラの相対移動量に、加算することで、相対的な移動量を示す外部パラメータを出力することも可能である（ステップＳ３４４）。
【０１９３】
《３−１０》ずれ補正部６０８
図３１に示されるずれ補正部６０８は、ずれ検出部６０６から提供される判定結果が「ずれ発生」であったときに、当該カメラの位置ずれを校正する際に使用される新たな外部パラメータ（すなわち、補正後の外部パラメータ）を算出する。補正後の外部パラメータは、合成画像に生じたずれを補正する際に使用される。
【０１９４】
ずれ補正部６０８は、ずれが発生しているカメラの外部パラメータとして、移動量推定・パラメータ計算部６０７、又は、カメラパラメータ入力部６０１から提供される外部パラメータを使用する。ずれ補正部６０８は、ずれが発生していないカメラの外部パラメータとして、カメラパラメータ入力部６０１から提供される外部パラメータを用いる。
【０１９５】
図３９は、ずれ補正処理を示すフローチャートである。ずれ補正部６０８は、参照データ読出部６０５から得られた、校正済みの状態にある各カメラの参照データと、投影処理部６０３から得られた投影画像と、カメラ画像受信部６０９から得られたカメラ画像と、移動量推定・パラメータ計算部６０７から得られたカメラの外部パラメータとを入力として（ステップＳ３５１〜Ｓ３５４）、位置ずれが検出されたカメラの位置ずれを校正する際に使用される新たな外部パラメータ（補正後の外部パラメータ）を出力する。ずれ補正部６０８は、補正後の外部パラメータを、合成画像に生じたずれを補正する際に使用する。
【０１９６】
〈パラメータ最適化部６０８２〉
図３１に示されるパラメータ最適化部６０８２は、ずれ検出部６０６から得られた位置ずれが検出されたカメラ（「補正対象カメラ」とも言う。）の位置ずれを補正する際に使用される外部パラメータを計算し、カメラパラメータ入力部６０１へ出力する。なお、パラメータ最適化部６０８２は、位置ずれが検出されていない（すなわち、位置ずれが発生していない）場合、カメラのパラメータを変更せずに、カメラパラメータ入力部６０１に設定されている値を出力する。
【０１９７】
パラメータ最適化部６０８２は、補正対象カメラの現在適用されている外部パラメータをベースとして、重畳領域ずれ量評価部６０８４から得られた補正対象カメラと隣接するカメラとの重畳領域におけるずれ量と、投影領域ずれ量評価部６０８５から得られた参照データの投影画像に対するずれ量（参照データ読出部６０５から得られた補正対象カメラの参照データ）から、評価値を計算し、評価値が最大又は、最小となる外部パラメータを算出する。パラメータ最適化部６０８２は、評価値が一定の条件を満たすまで（すなわち、図３９のステップＳ３６１の判断がＹＥＳになるまで）、図３９のステップＳ３６２、ステップＳ３５６〜Ｓ３６０の処理を繰り返す。この処理の繰り返し回数は、一定回数以下に制限されてもよい。つまり、パラメータ最適化部６０８２は、外部パラメータを更新し、その外部パラメータのときの評価値を求める処理を、評価値が一定の条件を満たすまで繰り返す。
【０１９８】
パラメータ最適化部６０８２は、重畳領域ずれ量評価部６０８４から提供される評価値である重畳領域画像のずれ量Ｅ１と、投影領域ずれ量評価部６０８５から提供される評価値である投影領域のずれ量Ｅ２に基づいて、新たに評価値を求め、外部パラメータの最適化を実施する。このときの評価値は、例えば、ずれ量Ｅ１とずれ量Ｅ２の合計値、又は、ずれ量Ｅ１とずれ量Ｅ２の重み付け加算値である。重み付け加算値は、例えば、ｗ１×Ｅ１＋ｗ２×Ｅ２で計算される。ここで、ｗ１とｗ２は、ずれ量Ｅ１とずれ量Ｅ２の重みパラメータである。なお、重みパラメータｗ１とｗ２は、例えば、重畳領域画像と投影画像の面積に基づいて求められる。また、重みパラメータｗ１とｗ２を変更することにより、重畳領域ずれ量評価部６０８４から提供される評価値であるずれ量Ｅ１のみでの評価（ｗ２＝０のとき）、又は投影領域ずれ量評価部６０８５から提供される評価値であるずれ量Ｅ２のみでの評価（ｗ１＝０のとき）で、ずれ補正処理を実施することも可能である。
【０１９９】
パラメータ最適化部６０８２は、繰り返し処理の際に、更新した外部パラメータに対応する評価値を再計算する必要があり、そのためには、更新した外部パラメータに対応する重畳領域ずれ量評価部６０８４から提供される評価値であるずれ量Ｅ１と投影領域ずれ量評価部６０８５から提供される評価値であるずれ量Ｅ２を再取得する必要がある。そこで、パラメータ最適化部６０８２は、外部パラメータを更新した際に、投影処理部６０３へ更新した外部パラメータを出力し、その外部パラメータに対応する各カメラの投影画像を再取得する。ここで、投影画像は、カメラ画像受信部６０９から得られた各カメラ画像の投影画像である。パラメータ最適化部６０８２は、再取得した各カメラの投影画像を、重畳領域抽出部６０８３へ入力し、出力される重畳領域画像を重畳領域ずれ量評価部６０８４へ入力し、評価値であるずれ量Ｅ１を再取得する。また、パラメータ最適化部６０８２は、再取得した各カメラの投影画像を投影領域ずれ量評価部６０８５へ入力し、評価値であるずれ量Ｅ２を再取得する。
【０２００】
〈重畳領域抽出部６０８３〉
図３１に示される重畳領域抽出部６０８３は、投影処理部６０３から提供される投影画像と合成テーブルとから、合成画像における隣接するカメラ画像同士の重畳領域の画像である重畳領域画像を抽出し、重畳領域ずれ量評価部６０８４へ出力する。つまり、重畳領域抽出部６０８３は、隣接するカメラ画像の重畳領域画像をペアとして出力する。重畳領域抽出部６０８３の機能は、重畳領域抽出部６０６３の機能と同じである。
【０２０１】
〈重畳領域ずれ量評価部６０８４〉
図３１に示される重畳領域ずれ量評価部６０８４は、重畳領域抽出部６０８３から提供された隣接するカメラ画像の重畳領域画像のペアに基づいて、ずれ量を計算する。重畳領域ずれ量評価部６０８４は、ずれ量を、隣接するカメラ画像同士の類似度（例えば、構造類似性など）又は特徴点の差分、などに基づいて算出する。重畳領域ずれ量評価部６０８４は、例えば、カメラ６００＿１と６００＿２の投影画像における重畳領域画像６３６ａと６３６ｂを１つのペアとして受け取り、各画像の類似度を求める。投影画像を生成するときのカメラパラメータは、パラメータ最適化部６０８２から提供されたものである。なお、画像同士の比較処理は、互いに画素が存在する範囲についてのみ行われる。
【０２０２】
〈投影領域ずれ量評価部６０８５〉
図３１に示される投影領域ずれ量評価部６０８５は、パラメータ最適化部６０８２から提供されるカメラパラメータに対応するカメラ画像受信部６０９から得られた各カメラ画像の投影画像（投影処理部６０３によって、投影画像を取得する）と、参照データ読出部６０５から得られた各カメラの参照データに基づく投影画像とを比較し、参照データに対するずれ量を計算する。参照データに基づく投影画像は、参照データ中のカメラ画像である参照画像とそれに対応するカメラパラメータとを投影処理部６０３に入力することで、投影処理部６０３から取得される。投影領域ずれ量評価部６０８５は、ずれ量を、画像同士の類似度（例えば、構造類似性など）又は特徴点の差分、などに基づいて算出する。なお、画像同士の比較処理は、互いに画素が存在する範囲についてのみ行われる。投影領域ずれ量評価部６０８５は、投影画像６３９１と６３９２とを比較することにより、参照データに対するずれ量を計算する。投影領域ずれ量評価部６０８５は、例えば、それぞれの画像の類似度を求める。投影領域ずれ量評価部６０８５の処理は、投影領域ずれ量評価部６０６５の処理と同じである。
【０２０３】
《３−１１》効果
以上に説明したように、実施の形態３に係る画像処理装置６１０、画像処理方法又は画像処理プログラムを用いれば、合成画像を構成するカメラ画像の位置関係を保持しつつ、合成画像におけるカメラ画像のずれを補正することができる。
【０２０４】
なお、実施の形態３における各種の処理方法として、実施の形態１で説明した方法を採用してもよい。また、実施の形態３において説明した、ずれ検出及びずれ補正の処理を、他の実施の形態に適用することも可能である。
【０２０５】
《４》実施の形態４．
《４−１》画像処理装置７１０
図４０は、実施の形態４に係る画像処理装置７１０の構成を概略的に示す機能ブロック図である。図４０において、図２７に示される構成要素と同一又は対応する構成要素には、図２７に示される符号と同じ符号が付されている。実施の形態４に係る画像処理装置７１０は、カメラ画像記録部７０１及び入力データ選択部７０２を備えている点において、実施の形態３に係る画像処理装置６１０と異なる。入力データ選択部７０２は、カメラ画像に基づいて参照画像と外部パラメータとを含む参照データを選択する参照データ読出部である。
【０２０６】
図４０に示されるように、画像処理装置７１０は、カメラ画像受信部６０９と、カメラパラメータ入力部６０１と、合成処理部６０２と、投影処理部６０３と、表示処理部６０４と、ずれ検出部６０６と、移動量推定・パラメータ計算部６０７と、ずれ補正部６０８と、カメラ画像記録部７０１と、入力データ選択部７０２とを備えている。画像処理装置７１０のハードウェア構成は、図２６に示されるものと同じである。
【０２０７】
画像処理装置７１０は、複数のカメラによって撮影された複数のカメラ画像を合成することで合成画像を生成する処理を行う。カメラ画像記録部７０１は、複数のカメラ画像と、複数のカメラ画像に対応する複数の外部パラメータとを記憶装置（例えば、図２６の外部記憶装置１７）に記録する。記憶装置は、画像処理装置７１０の一部である必要はない。ただし、カメラ画像記録部７０１は、記憶装置を含んでもよい。入力データ選択部７０２は、カメラ画像記録部７０１によって記録された複数のカメラ画像の中から、カメラ画像受信部６０９によって受信されたカメラ画像と近い状態にある画像を参照画像として選択し、選択された参照画像と参照画像に対応する外部パラメータとを含む参照データを出力する。移動量推定・パラメータ計算部６０７は、複数のカメラ画像と参照データとに基づいて、複数のカメラの移動量を推定し、複数のカメラに対応する複数の補正後の外部パラメータとを計算する。
【０２０８】
《４−２》カメラ画像記録部７０１
図４１は、カメラ画像記録部７０１によって実行される処理を示すフローチャートである。カメラ画像記録部７０１は、カメラ画像受信部６０９から提供されたカメラ画像を、一定時間間隔ごとに記録する（ステップＳ４０１）。一定時間間隔は、例えば、数フレームの時間間隔、数秒の間隔、などである。なお、一定時間間隔は、カメラ画像を取得する予め決められた時間間隔の代表例であり、この時間間隔は変化してもよい。また、カメラ画像記録部７０１は、カメラ画像を記憶装置に記録する際に、記録したタイミングの前後関係が分かるように、カメラ画像に加えて、順序番号又はタイムスタンプなども記録する（ステップＳ４０２、Ｓ４０５）。図２６を参照して説明すると、メインプロセッサ６１１は、カメラ画像とカメラ画像の順序がわかる情報をメインメモリ６１２に保存し、ファイルインタフェース６１６を通してメインメモリ６１２から補助メモリ６１３へ格納する。
【０２０９】
また、カメラ画像記録部７０１は、画像を記録する際に、カメラパラメータ入力部６０１に設定されているカメラ６００＿ｋ（ｋ＝１，…，ｎ）の外部パラメータも記録する（ステップＳ４０３、Ｓ４０５）。また、カメラ画像記録部７０１は、ずれ検出部６０６から提供されるカメラ６００＿ｋのずれの状態（例えば、ずれが存在しているか否か、ずれ量、ずれの方向、など）も同時に記録する（ステップＳ４０４、Ｓ４０５）。カメラ画像記録部７０１は、マスク画像を記録してもよい。マスク画像は、後述の実施の形態５で説明される。また、カメラ画像記録部７０１は、カメラ画像と外部パラメータ、カメラ画像の順序がわかる情報などを、１組のデータとして、入力データ選択部７０２へ提供する。ステップＳ４０２〜Ｓ４０６の処理は、カメラ６００＿１〜６００＿ｎの全てについて行われる。
【０２１０】
《４−３》入力データ選択部７０２
図４２（Ａ）から（Ｃ）は、図４０に示される入力データ選択部７０２によって実行される処理を示す説明図である。図４３は、図４０に示される入力データ選択部７０２によって実行される処理を示すフローチャートである。
【０２１１】
入力データ選択部７０２は、ずれが検出されたカメラにおいて、ずれが検出された時点からのカメラ画像記録部７０１に記憶されている全てのカメラ画像（例えば、図４２（Ａ）及び（Ｂ）における＃７、＃８）と、カメラ画像記録部７０１によって記録された、ずれが補正されている状態の全てのカメラ画像（例えば、図４２（Ａ）及び（Ｂ）における＃１〜＃６）との間で、互いに近い状態にある画像のペア（例えば、図４２（Ａ）及び（Ｂ）における＃３と＃８）を選択する（図４３におけるステップＳ４１１〜Ｓ４１５）。互いに近い状態にある画像のペアは、例えば、撮影時刻が互いに近い画像のペア、人物が存在しない画像のペア、日照条件が互いに近い画像のペア、輝度値が互いに近い画像のペア、類似度が互いに近い画像のペア、などである。
【０２１２】
その後、入力データ選択部７０２は、移動量推定・パラメータ計算部６０７とずれ補正部６０８に対して、ずれが検出された時点からのカメラ画像記録部７０１に記憶されている全てのカメラ画像の中で選択されたカメラ画像と、カメラ画像記録部７０１に記録されているずれが補正されている状態の全てのカメラ画像の中で選択された画像を出力する（図４３におけるステップＳ４１８）。加えて、入力データ選択部７０２は、移動量推定・パラメータ計算部６０７とずれ補正部６０８には、カメラ画像記録部７０１に記録されているずれが補正されている状態の全てのカメラ画像の中で選択された画像に対応するカメラパラメータである外部パラメータを出力する。
【０２１３】
また、入力データ選択部７０２は、カメラ画像受信部６０９から得られた現在のカメラ画像の全て又は、カメラ画像記録部７０１に記憶されているカメラ画像（現時点から、過去数フレーム以内のもの）に近い状態にある画像が存在しない場合は、新たにカメラ画像記録部７０１にずれ発生後のカメラ画像が記録されるまで待機し、前記の記録されたカメラ画像を含めて、上記の比較処理を再度実施する（図４３におけるステップＳ４１５〜Ｓ４１７、図４２（Ｃ））。又は、入力データ選択部７０２は、直接カメラ画像受信部６０９から得られた現在のカメラ画像に近い状態にある画像が得られるまでで待機してもよい。
【０２１４】
図４４（Ａ）から（Ｃ）は、図４０に示される入力データ選択部７０２によって実行される処理を示す説明図である。図４４（Ａ）は、カメラ画像記録部７０１によって記録されているカメラＡ（例えば、カメラ６００＿１）の画像＃１〜＃８を示している。カメラＡは、ずれが発生している状態にある。図４４（Ｂ）は、カメラ画像記録部７０１によって記録されているカメラＢ（例えば、カメラ６００＿２）の画像００１〜００８を示している。カメラＢは、ずれが発生していない（すなわち、ずれ補正されている）状態にある。図４４（Ｃ）は、ずれが発生していないカメラＢについての、カメラ画像の選択方法を示している。
【０２１５】
入力データ選択部７０２は、ずれが発生していないカメラについては、ずれが発生していない状況におけるカメラ画像を選択し（例えば、図４４（Ｃ）における００１、００２、００４、００７、００８）、それに対応する外部パラメータ（例えば、図４４（Ｃ）における００７）を出力する。具体的には、入力データ選択部７０２は、カメラ画像記録部７０１に記録されているカメラ画像と外部パラメータのペアの中で、補正されている状態のものを選択し、ずれ補正部６０８へ出力する。また、入力データ選択部７０２は、ずれが発生していないカメラの選択においても、ずれが発生しているカメラ画像（例えば、図４４（Ｃ）における＃８）と近い状態にある画像（例えば、図４４（Ｃ）における００７）を選択し出力してもよい。近い状態にある画像は、例えば、撮影時刻が近いもの、人物が存在しないもの、日照条件が近いもの、輝度値が近いもの、類似度が近いもの、などである。具体的には、近い状態にある画像は、撮影時刻の差が予め決められた時間内であるもの、人物が存在しないもの（又は、人物の数の差が予め決められた値以内であるもの）、１日当たりの日照時間の差が予め決められた時間内であるもの、輝度値の差が予め決められた値以内であるもの、類似度の差が予め決められた値以内のもの、などである。言い換えれば、近い状態にある画像は、撮影した時刻の差（例えば、季節の差、年月日の差、時刻（時：分：秒）の差）が予め決められた範囲内である状態、移動体が存在しない状態、人物の数の差が予め決められた値以内である状態、１日当たりの日照時間の差が予め決められた時間以内である状態、及び輝度の差、分布及びコントラストのいずれかを含む画像の類似性を評価するときにおける指標が予め決められた範囲内である状態、のうちの１つ以上に基づいて、もしくは画像を分類する学習モデルから得られる分類結果から判断される。
【０２１６】
《４−４》移動量推定・パラメータ計算部６０７
移動量推定・パラメータ計算部６０７は、ずれ検出部６０６によって位置姿勢のずれが存在していると判断されたカメラにおいて、入力データ選択部７０２から提供されるカメラ画像と参照データ（すなわち、参照画像及び外部パラメータ）を入力とし、これらに基づいて外部パラメータを計算する。この点以外に関して、移動量推定・パラメータ計算部６０７は、実施の形態３のものと同じである。
【０２１７】
《４−５》ずれ補正部６０８
ずれ補正部６０８は、ずれ検出部６０６によって位置姿勢のずれが存在していると判断されたカメラにおいては、入力データ選択部７０２から提供されるカメラ画像（すなわち、ずれている状態のカメラで撮影された画像）と、参照画像及び外部パラメータとを受け取る。ずれ補正部６０８は、ずれ検出部６０６によって位置姿勢のずれが存在していると判断されていないカメラにおいては、入力データ選択部７０２から提供されるカメラ画像と、それに対応する外部パラメータとを受け取る。実施の形態３では、位置姿勢のずれが存在していないカメラの外部パラメータとして、カメラパラメータ入力部６０１から提供された値が使用される。しかし、実施の形態４では、位置姿勢のずれが存在していないカメラの外部パラメータとして、入力データ選択部７０２によって選択された画像に対応する外部パラメータが使用される。ただし、実施の形態４では、実施の形態３と同様に、最適化処理において、位置姿勢のずれが存在していないカメラの外部パラメータは、更新されない。これらの点以外に関して、実施の形態４におけるずれ補正部６０８は、実施の形態３のものと同じである。
【０２１８】
《４−６》効果
以上に説明したように、実施の形態４に係る画像処理装置７１０、画像処理方法又は画像処理プログラムを用いれば、近い状態にある画像に基づいてずれ補正処理又は移動量推定処理が実行されるので、移動量の推定精度又はずれ量の評価値の計算精度を高めることができる。また、補正処理のロバスト性を高めることができ、補正が実行できる条件を広くすることができる。
【０２１９】
上記以外に関し、実施の形態４は、実施の形態３と同じである。また、実施の形態４において説明した、ずれ補正処理及び移動量図推定処理を、他の実施の形態に適用することも可能である。
【０２２０】
《５》実施の形態５．
《５−１》画像処理装置８１０
図４５は、実施の形態５に係る画像処理装置８１０の構成を概略的に示す機能ブロック図である。図４５において、図４０に示される構成要素と同一又は対応する構成要素には、図４０に示される符号と同じ符号が付されている。実施の形態５に係る画像処理装置８１０は、マスク画像生成部７０３をさらに備えている点において、実施の形態４に係る画像処理装置７１０と異なる。
【０２２１】
図４５に示されるように、実施の形態５に係る画像処理装置８１０は、カメラ画像受信部６０９と、カメラパラメータ入力部６０１と、合成処理部６０２と、投影処理部６０３と、表示処理部６０４と、ずれ検出部６０６と、移動量推定・パラメータ計算部６０７と、ずれ補正部６０８ａと、カメラ画像記録部７０１と、入力データ選択部７０２と、マスク画像生成部７０３とを備えている。実施の形態５に係る画像処理装置８１０は、投影処理部６０３、カメラ画像記録部７０１、入力データ選択部７０２、移動量推定・パラメータ計算部６０７、及びずれ補正部６０８ａの機能において、実施の形態４に係る画像処理装置７１０と異なる。マスク画像生成部７０３は、複数のカメラの移動量の推定及び複数の補正後の外部パラメータの計算に用いないマスク領域を指定するマスク画像を生成する。移動量推定・パラメータ計算部６０７は、複数の参照画像からマスク領域を除く領域と、複数のカメラによって撮影された複数のカメラ画像からマスク領域を除く領域とに基づいて、複数のカメラの移動量を推定し、複数の補正後の外部パラメータを計算する。
【０２２２】
画像処理装置８１０のハードウェア構成は、図２６に示されるものと同じである。以下に、実施の形態５に係る画像処理装置８１０を、実施の形態４に係る画像処理装置７１０と異なる点を中心に説明する。
【０２２３】
《５−２》投影処理部６０３
図４５に示される投影処理部６０３は、入力されたカメラ画像に、マスクされている領域がある場合に、マスクされている領域を含むカメラ画像を投影し、マスク領域を含む投影画像を出力する。この点以外に関し、図４５に示される投影処理部６０３は、図４０に示されるものと同じである。
【０２２４】
《５−３》カメラ画像記録部７０１
図４６は、図４５に示されるカメラ画像記録部７０１によって実行される処理を示すフローチャートである。図４６において、図４１に示される処理ステップと同じ処理ステップには、図４１に示される符号と同じ符号が付されている。カメラ画像記録部７０１は、カメラ画像受信部６０９から提供されたカメラ画像を、一定時間間隔ごとに記録する（ステップＳ４０１）。一定時間間隔は、例えば、数フレームの時間間隔、数秒の間隔、などである。カメラ画像記録部７０１は、カメラ画像を記録する際に、記録したタイミングの前後関係が分かるように、順序番号又はタイムスタンプなども記録する。図２６を参照して説明すると、メインプロセッサ６１１は、メインメモリ６１２に記録されている情報を、ファイルインタフェース６１６を通して、補助メモリ６１３へ格納する。
【０２２５】
カメラ画像記録部７０１は、画像を記録する際に、カメラパラメータ入力部６０１に設定されているカメラの外部パラメータも記録（すなわち、記憶）する（ステップＳ４０２、Ｓ４０３、Ｓ４０５）。また、カメラ画像記録部７０１は、画像を記録する際に、ずれ検出部６０６から提供されたカメラのずれの状態も記録する（ステップＳ４０２、Ｓ４０４、Ｓ４０５）。
【０２２６】
また、カメラ画像記録部７０１は、マスク画像生成部７０３に対して、各カメラの画像とカメラパラメータ入力部６０１に設定されている外部パラメータを入力し、各カメラのマスク画像を取得する（ステップＳ５０１）。カメラ画像記録部７０１は、カメラ画像を記録する際に、マスク画像生成部７０３から提供されるマスク画像をカメラ画像に関連付けて記録する（ステップＳ４０５）。
【０２２７】
また、カメラ画像記録部７０１は、記録する内容（カメラ画像と外部パラメータ、マスク画像、順序番号又はタイムスタンプなど）を、１組のデータとして、入力データ選択部７０２へ出力する。記録する内容は、例えば、カメラ画像、外部パラメータ、マスク画像、及び順序番号又はタイムスタンプ、などである。カメラ画像記録部７０１は、ステップＳ４０２〜Ｓ４０４、Ｓ５０１、Ｓ４０５の処理を、全てのカメラについて繰り返す（ステップＳ４０６）。
【０２２８】
《５−４》マスク画像生成部７０３
図４７は、図４５に示されるマスク画像生成部７０３の構成を概略的に示す機能ブロック図である。図４７に示されるように、マスク画像生成部７０３は、差分用カメラ画像記録部７０３１と、差分マスク画像出力部７０３２と、初回マスク画像出力部７０３３と、重畳領域抽出部７０３４と、重畳領域マスク画像出力部７０３５と、マスク画像統合処理部７０３６とを有している。
【０２２９】
図４８は、マスク画像生成部７０３によって実行される処理を示すフローチャートである。図４９（Ａ）から（Ｅ）、図５０（Ａ）から（Ｅ）、図５１（Ａ）から（Ｄ）、図５２（Ａ）から（Ｃ）、及び図５３（Ａ）から（Ｃ）は、マスク画像生成部７０３によって実行される処理を示す説明図である。図４９（Ａ）から（Ｅ）は、図４８のステップＳ５１１、Ｓ５１２に対応する処理を示している。図５０（Ａ）から（Ｅ）は、図４８のステップＳ５１３、Ｓ５１４に対応する処理を示している。また、図５１（Ａ）から（Ｄ）、図５２（Ａ）から（Ｃ）及び図５３（Ａ）から（Ｃ）は、図４８のステップＳ５１５、Ｓ５１６、及びＳ５１７に対応する処理をそれぞれ示している。マスク画像生成部７０３は、以下に示される３種類のマスクを生成し、カメラ画像に再投影するときに使用されるマスクを生成する。
【０２３０】
〈初回マスク画像出力部７０３３〉
図４７に示される初回マスク画像出力部７０３３は、カメラ画像において予め除外する領域を示すマスク画像情報を補助メモリ６１３（図２６）に記憶しており、このマスク画像情報をマスク画像統合処理部７０３６へ提供する（図４８のステップＳ５１１、図４９（Ａ）から（Ｃ））。初回マスク画像出力部７０３３は、例えば、合成画像として出力するときに、使用しないカメラ画像の領域（例えば、監視範囲以外の部分など）又は、構造物などのように位置が変化しない物体（又は、頻繁には位置が変形しない物体）などを除外するためにマスク画像情報を提供する。初回マスク画像出力部７０３３は、出力するマスク画像を、カメラ画像上へ再投影したときのマスク画像で正規化する。初回マスク画像出力部７０３３は、投影したときの画像をマスクするマスク画像を出力してもよい。初回マスク画像出力部７０３３は、マスクを他のマスクと統合するときに、カメラ画像座標系で正規化することで、１枚のマスク画像に統合することができる。したがって、初回マスク画像出力部７０３３は、例えば、投影画像上でマスク範囲を設定した場合には、カメラ画像記録部７０１から得られた外部パラメータを用いて、カメラ画像座標系へ再投影し、カメラ画像上におけるマスク領域に変換する（図４９（Ｄ））。補助メモリ６１３（図２６）上には、投影画像としてのマスク画像又は、カメラ画像上でのマスク画像が記憶される。投影画像上でマスク範囲を設定した場合には、カメラ画像座標上にマスク画像を変換し、出力する（図４９（Ｅ））。
【０２３１】
〈重畳領域マスク画像出力部７０３５〉
図４７に示される重畳領域マスク画像出力部７０３５は、カメラ画像記録部７０１から提供されたカメラ画像を投影し（図５０（Ａ）及び（Ｂ））、重畳領域抽出部７０３４において重畳領域を抽出したときに、画素値がずれている部分のマスクを生成し、出力する（図４８のステップＳ５１２、Ｓ５１３、図５０（Ｂ）及び（Ｃ））。出力するマスク画像は、初回マスクと同様に、カメラ画像上へ再投影したときのマスク画像で正規化する（図５０（Ｄ））。重畳領域マスク画像出力部７０３５は、カメラ画像記録部７０１から得られた外部パラメータを用いて、カメラ画像座標系へ再投影する（図４８のステップＳ５１４、図５０（Ｅ））。
【０２３２】
〈差分マスク画像出力部７０３２〉
図４７に示される差分マスク画像出力部７０３２は、過去に記録したカメラ画像に基づいて、物体の有無を検出し（図５１（Ａ）及び（Ｂ））、物体が存在する場所のマスクを生成する（図５１（Ｃ））。初回マスクは、構造物など頻繁に位置が変わらない物体などを除くことを目的としており、差分マスクは、頻繁に位置が変わる物体（例えば、駐車している車など）を除外することを目的としている。
【０２３３】
図４７に示される差分マスク画像出力部７０３２は、カメラ画像記録部７０１から得られたカメラ画像を差分用カメラ画像記録部７０３１に記録する（図４８のステップＳ５１５）。マスク画像を生成するときは、差分マスク画像出力部７０３２は、差分用カメラ画像記録部７０３１に記憶されたカメラ画像を少なくとも１枚読み込み（図５１（Ａ）及び（Ｂ））、差分画像を生成し、その領域をマスクするマスク画像を生成し（図５１（Ｃ））、マスク画像統合処理部７０３６へ出力する（図４８のステップＳ５１６）。
【０２３４】
差分マスク画像出力部７０３２は、受け取ったカメラ画像の差分を算出してもよいが、１度投影画像に変換し、投影画像上での差分を算出してもよい。この場合は、差分マスク画像出力部７０３２は、入力されたカメラ画像とカメラパラメータとに基づいて、投影処理部６０３において入力画像を投影画像に変換し、その投影画像上で差分を取り（図５２（Ａ））、マスク画像を生成した後（図５２（Ｂ））、そのマスク画像をカメラ座標系へ再投影する（図５２（Ｃ））。つまり、差分マスク画像出力部７０３２は、外部パラメータを用いて、再投影する。また、差分マスク画像出力部７０３２は、上記の差分を用いずに、物体検出アルゴリズムを用いて、直接カメラ画像から物体が存在する領域を抽出し、それをマスク画像として出力してもよい。
【０２３５】
〈マスク画像統合処理部７０３６〉
図４７に示されるマスク画像統合処理部７０３６が生成する統合マスクは、各カメラにおける初回マスクと重畳領域マスク、差分マスクを１つのマスクとして統合したものである。統合マスクは、全てのマスクを統合したものである必要はなく、いくつかの選択されたマスクを統合したものであってもよい。また、マスク画像統合処理部７０３６は、マスクを行わない処理を選択してもよい。マスク画像統合処理部７０３６は、初回マスク画像出力部７０３３と重畳領域マスク画像出力部７０３５、差分マスク画像出力部７０３２から提供されたマスク画像をＯＲ（すなわち、ＯＲ条件）で統合し（図５３（Ａ））、１枚のマスク画像として出力する（図４８のステップＳ５１７。図５３（Ｂ）及び（Ｃ））。
【０２３６】
《５−５》入力データ選択部７０２
図４５に示される入力データ選択部７０２は、以下の機能（Ｕ１）及び（Ｕ２）を有している。
（Ｕ１）入力データ選択部７０２は、位置姿勢のずれが存在しているカメラにおいて、選択された画像（ずれている状態）と参照画像及び外部パラメータを移動量推定・パラメータ計算部６０７とずれ補正部６０８ａに出力する際に、参照画像及び外部パラメータに対応付けられたマスク画像も出力する。
（Ｕ２）入力データ選択部７０２は、近い状態にある画像を選択する際に、参照画像及び外部パラメータに対応付けられたマスク画像を適用して近い状態にある画像を見つけ出す。つまり、この処理は、近い状態の画像を求めるときに、注目する画像の範囲を限定する処理である。
これらの点以外に関し、図４５に示される入力データ選択部７０２は、実施の形態４におけるものと同じである。
【０２３７】
《５−６》移動量推定・パラメータ計算部６０７
図５４は、図４５に示される移動量推定・パラメータ計算部６０７によって実行される処理を示すフローチャートである。図５４において、図３８に示される処理ステップと同じ処理ステップには、図３８に示される符号と同じ符号が付されている。図５５（Ａ）から（Ｃ）は、移動量推定・パラメータ計算部６０７によって実行される処理を示す説明図である。
【０２３８】
移動量推定・パラメータ計算部６０７は、ずれ検出部６０６によって位置姿勢のずれが存在していると判断されたカメラにおいて、入力データ選択部７０２から提供されるカメラ画像と参照画像及び外部パラメータとマスク画像を受け取る（図５４におけるステップＳ５２１、図５５（Ａ）及び（Ｂ））。移動量推定・パラメータ計算部６０７は、特徴点マッチングをする際に、マスク画像によってマスクされている部分における特徴点は、マッチングさせないようにする（図５４におけるステップＳ５２２〜Ｓ５２４、図５５（Ｃ））。つまり、移動量推定・パラメータ計算部６０７は、特徴点マッチングさせる範囲を限定させる。この点以外に関し、移動量推定・パラメータ計算部６０７の処理は、実施の形態４におけるものと同じである。
【０２３９】
《５−７》ずれ補正部６０８ａ
図５６は、図４５に示されるずれ補正部６０８ａの構成を概略的に示す機能ブロック図である。図５６において、図３１に示される構成要素と同一又は対応する構成要素には、図３１に示されている符号と同じ符号が付されている。図５７は、ずれ補正のための処理を示すフローチャートである。図５７において、図３９に示される処理ステップと同じ又は対応する処理ステップには、図３９に示される符号と同じ符号が付されている。
【０２４０】
図４５及び図５６に示されるずれ補正部６０８ａは、ずれ検出部６０６によって位置姿勢のずれが存在していると判断されたカメラにおいては、入力データ選択部７０２から提供されるカメラ画像（すなわち、ずれている状態のカメラで撮影されたカメラ画像）と、参照画像及び外部パラメータと、マスク画像とを受け取る（ステップＳ５７１、Ｓ３５１、Ｓ５７２、Ｓ３５２〜Ｓ３５５、Ｓ５７３）。ずれ補正部６０８ａは、ずれ検出部６０６によって位置姿勢のずれが存在していると判断されていないカメラにおいては、入力データ選択部７０２から提供されるカメラ画像とそれに対応する外部パラメータとマスク画像を受け取る。これは、重畳領域の比較の際に使用される。
【０２４１】
投影領域ずれ量評価部６０８５と重畳領域ずれ量評価部６０８４は、入力された画像（すなわち、投影画像及び重畳領域画像）にマスク領域が存在する場合は、その部分を比較処理の対象から除外する。投影処理部６０３から提供される投影画像にマスク領域が存在する場合は、重畳領域抽出部６０８３は、マスク領域を保持した状態で重畳領域を抽出し、重畳領域ずれ量評価部６０８４へ出力する。
【０２４２】
〈マスク適用部６０８６〉
マスク適用部６０８６は、以下の処理（Ｖ１）及び（Ｖ２）を行う。
（Ｖ１）マスク適用部６０８６は、選択された参照データ（すなわち、参照画像及び外部パラメータ）と参照データに対応するマスク画像を入力として、参照画像のマスク処理をし、投影処理部６０３にマスク済みの参照画像とそれに対応する外部パラメータを出力する。
（Ｖ２）マスク適用部６０８６は、選択された参照画像上において、マスク領域中に物体がある場合は、それを検出する。その後、検出された物体が、入力されたカメラ画像（ずれている状態のカメラ画像）上に存在する場合は、それをマスクした状態の画像を出力する。
上記以外に関して、ずれ補正部６０８ａは、実施の形態４におけるずれ補正部６０８と同じである。
【０２４３】
《５−８》効果
以上に説明したように、実施の形態５に係る画像処理装置８１０、画像処理方法又は画像処理プログラムを用いれば、ずれ補正処理に用いられる画像から、移動量の推定又はずれ量の評価値の計算に悪影響を与える画像部分が除外されているので、移動量の推定精度又はずれ量の評価値の計算精度を高めることができる。
【０２４４】
上記以外に関し、実施の形態５は、実施の形態３又は４と同じである。また、実施の形態５において説明したマスク画像の生成及び使用のための処理を、他の実施の形態に適用することも可能である。
【０２４５】
《６》実施の形態６．
《６−１》画像処理装置９１０
図５８は、実施の形態６に係る画像処理装置９１０の構成を概略的に示す機能ブロック図である。図５８において、図２７に示される構成要素と同一又は対応する構成要素には、図２７に示される符号と同じ符号が付されている。実施の形態６に係る画像処理装置９１０は、入力画像変換部９１１と、学習モデル・パラメータ読込部９１２と、再学習部９１３と、カメラ画像記録部９１４とを備えている点において、実施の形態３に係る画像処理装置６１０と異なる。
【０２４６】
図５８に示されるように、実施の形態６に係る画像処理装置９１０は、カメラ画像受信部６０９と、カメラパラメータ入力部６０１と、合成処理部６０２と、投影処理部６０３と、表示処理部６０４と、参照データ読出部６０５と、移動量推定・パラメータ計算部６０７と、ずれ補正部６０８と、カメラ画像記録部９１４と、入力画像変換部９１１と、学習モデル・パラメータ読込部９１２と、再学習部９１３とを備えている。画像処理装置９１０のハードウェア構成は、図２６に示されるものと同じである。
【０２４７】
入力画像変換部９１１は、複数のカメラ画像が撮影された状態に基づいて複数のカメラ画像の各々を複数のドメインのいずれかに分類し、複数の参照画像が撮影された状態に基づいて複数の参照画像の各々を複数のドメインのいずれかに分類し、複数のカメラ画像のうちの比較対象のカメラ画像のドメインと複数の参照画像のうちの比較対象の参照画像のドメインとが近い状態になるようにする変換処理を、比較対象のカメラ画像及び比較対象の参照画像の少なくとも一方に行う。また、入力画像変換部９１１は、複数のカメラ画像間においても、カメラ画像間のドメインが近い状態になるようにする変換処理を実施する。移動量推定・パラメータ計算部６０７は、入力画像変換部９１１から出力された比較対象のカメラ画像と比較対象の参照画像とに基づいて、複数のカメラの移動量を推定し、複数のカメラに対応する複数の補正後の外部パラメータを計算する。変換処理は、比較対象のカメラ画像のドメインと比較対象の参照画像のドメインとを一致させる処理、又は、ドメイン間の距離を短縮する処理である。
【０２４８】
また、再学習部９１３は、複数のカメラ画像に基づいて、複数のカメラ画像の各々を複数のドメインのいずれに分類するか及び参照画像を複数のドメインのいずれに分類するかを示す学習モデルを生成及び更新する。入力画像変換部９１１は、学習モデルに基づいて、複数のカメラ画像の各々の分類、複数の参照画像の各々の分類、及び前記変換処理を行う。また、再学習部９１３は、カメラ画像記録部９１４によって記録された複数のカメラ画像に基づいて学習モデルを生成及び更新する。
【０２４９】
図５９は、図５８に示される入力画像変換部９１１の構成を概略的に示す機能ブロック図である。図５９に示されるように、入力画像変換部９１１は、画像変換先決定部９１１１と、画像変換用学習モデル・パラメータ入力部９１１２と、参照画像変換処理部９１１３と、入力カメラ画像変換処理部９１１４とを有している。
【０２５０】
《６−２》参照データ読出部６０５
図５８に示される参照データ読出部６０５は、参照データである参照画像を入力画像変換部９１１へ提供する。また、参照データ読出部６０５は、参照データである外部パラメータを移動量推定・パラメータ計算部６０７へ提供する。これらの点以外に関し、図５８に示される参照データ読出部６０５は、実施の形態３において説明したものと同じである。
【０２５１】
《６−３》ずれ検出部６０６
図５８に示されるずれ検出部６０６は、入力画像変換部９１１にずれが発生したことを伝える。図５８に示されるずれ検出部６０６は、実施の形態３において説明したものと同じである。なお、ずれ検出部６０６は、ずれ検出する際、カメラ画像受信部からのカメラ画像ではなく、入力画像変換部９１１から出力された比較対象のカメラ画像と比較対象の参照画像とを入力して、ずれの検出を実施してもよい。
【０２５２】
《６−４》移動量推定・パラメータ計算部６０７
図５８に示される移動量推定・パラメータ計算部６０７は、入力画像変換部９１１から提供された変換された（又は、変換されない）参照画像と、カメラ画像受信部６０９から提供された変換された（又は、変換されない）カメラ画像と、参照データ読出部６０５から提供された外部パラメータとに基づいて、移動量を推定し、外部パラメータを計算する。この点以外に関し、図５８に示される移動量推定・パラメータ計算部６０７は、実施の形態３において説明したものと同じである。
【０２５３】
《６−５》ずれ補正部６０８
図５８に示されるずれ補正部６０８は、入力画像変換部９１１から提供された変換された（又は、変換されない）参照データの参照画像と、カメラ画像受信部６０９から提供された変換された（又は、変換されない）カメラ画像と、移動量推定・パラメータ計算部６０７から提供された外部パラメータ及び相対移動量とに基づいて、ずれ量を補正する。
【０２５４】
また、ずれ補正部６０８は、入力画像変換部９１１を用いて、カメラ画像どうしの変換を実施し、その結果得られた変換画像を用いてずれ量を算出する。ずれ補正部６０８では、実施の形態３と同様に、投影領域ずれ量評価部と重畳領域ずれ量評価部によって評価される値（すなわち、評価値）によって、カメラパラメータの最適化処理を実施する。前者の評価値をＥ１、後者の評価値をＥ２とする。
【０２５５】
Ｅ１を算出する場合は、入力画像変換部９１１は、１つのカメラにおける参照画像と現在のカメラ画像との比較が実施されるため、参照画像をカメラ画像受信部６０９から提供されるカメラ画像が属するドメインへ変換、もしくはカメラ画像受信部６０９から提供されるカメラ画像を参照画像が属するドメインへ変換する。投影領域ずれ量評価部は、前記画像を用いてずれ量の計算を実施する（すなわち、実施の形態３と同様に、画像を俯瞰変換しずれ量を評価する）。
【０２５６】
Ｅ２を算出する場合は、入力画像変換部９１１は、補正対象カメラの画像、もしくは隣接する補正済みカメラ（すなわち、ずれていない状態のカメラ）の画像、もしくはその両方を適切なドメインに変換する。重畳領域ずれ量評価部は、前記変換後の画像を用いてずれ量の計算を実施する（すなわち、実施の形態３と同様に、画像を俯瞰変換し、重畳領域を抽出し、抽出された重畳領域画像からずれ量を算出する）。
【０２５７】
異なるカメラ間でのドメイン変換先を決める（すなわち、上記Ｅ２のための変換）方法は、以下の（Ｙ１）〜（Ｙ３）の通りである。
（Ｙ１）  異なるカメラのすべてのドメイン間での距離を求めておく。
（Ｙ２）  補正対象カメラ及びその隣接カメラの画像を各カメラ内でのドメインに分類し、異なるカメラのドメイン間の距離を取得する。
（Ｙ３）  上記（Ｙ１）及び（Ｙ２）で求められた距離に基づいて、画像間の距離が小さくなるようなドメインが存在する場合には、補正対象カメラ及びその隣接カメラの画像のドメインを該当するドメインに変換する。
【０２５８】
また、隣接するカメラが複数存在する場合は、ドメイン変換は、それぞれの画像に最適なものを選べばよい。つまり、隣接するカメラごとに、異なるドメイン変換が行われる。例えば、補正対象カメラとその隣接カメラのドメイン間の距離の比較（すなわち、上記（Ｙ１））では、「夏かつ昼」のドメインに変換して重畳領域の画像類似度を算出する。補正対象カメラと隣接カメラのドメイン間の距離の比較（すなわち、上記（Ｙ２））では、「秋かつ昼」のドメインに変換して重畳領域の画像類似度を算出する。この点以外に関し、図５８に示されるずれ補正部６０８は、実施の形態３において説明したものと同じである。
【０２５９】
《６−６》カメラ画像記録部９１４
図５８に示されるカメラ画像記録部９１４は、カメラ画像受信部６０９から提供されたカメラ画像を、一定時間間隔ごとに記憶装置（例えば、図２６の外部記憶装置１７）に記録する。ここで、一定時間間隔は、予め決められた数のフレームの間隔（例えば、数フレームの間隔）、予め決められた時間間隔（例えば、数秒の間隔）、などである。カメラ画像記録部９１４は、カメラ画像受信部６０９から提供されたカメラ画像を記録する際に、カメラ画像を記録したタイミングの前後関係が分かるように、カメラ画像の順序番号又はタイムスタンプなどの情報をカメラ画像に関連付けて記録する。カメラ画像記録部９１４によって行われる処理を図２６を用いて説明すると、メインプロセッサ６１１は、カメラ画像を、ファイルインタフェース６１６を通して、メインメモリ６１２から補助メモリ６１３へ格納する。
【０２６０】
《６−７》入力画像変換部９１１
図６０は、図５８及び図５９に示される入力画像変換部９１１によって実行される処理を示すフローチャートである。図６１は、図５８及び図５９に示される入力画像変換部９１１によって実行される処理を示す説明図である。
【０２６１】
入力画像変換部９１１は、参照データ読出部６０５から提供された参照画像とカメラ画像受信部６０９から提供されたカメラ画像との少なくとも一方を、これらが互いに近い状態になるように変換するための変換処理を行い、変換処理後の参照画像及び変換処理後のカメラ画像を移動量推定・パラメータ計算部６０７に提供する。「参照画像とカメラ画像とが互いに近い状態」とは、例えば、日照状況が互いに近い状態、季節が互いに近い状態、人物の有無が互いに近い状態、などのうちの１つ以上を含む。例えば、入力画像変換部９１１は、参照データ読出部６０５から提供された参照画像が昼の画像であり、カメラ画像受信部６０９から提供されたカメラ画像が夜の画像である場合、カメラ画像受信部６０９から提供されたカメラ画像を昼の状態のカメラ画像に変換する。入力画像変換部９１１は、カメラＡによって撮影された現在のカメラ画像が夏に撮影されたカメラ画像（例えば、図６１における左下部分の夏のドメインのカメラ画像）であり、参照画像が冬に撮影されたカメラ画像（例えば、図６１における右上部分の冬のドメインのカメラ画像）である場合に、参照画像のドメインが冬から夏に変化するように参照画像を変換して、変換された参照画像（例えば、図６１における右下部分の夏のドメインの参照画像）を生成する。このように、参照画像とカメラ画像とが互いに近い状態になるように変換処理を行い、参照画像と変換処理後のカメラ画像とを比較することで、参照画像とカメラ画像とを互いに近い（望ましくは、同じ）条件下で比較することができる。
【０２６２】
〈画像変換先決定部９１１１〉
図５９に示される画像変換先決定部９１１１は、参照データ読出部６０５から提供された参照画像とカメラ画像受信部６０９から提供されたカメラ画像と予め準備されたドメイン分類用データとに基づいて、それぞれの画像の変換処理の方法を決定し、画像変換用学習モデル・パラメータ入力部９１１２へ変換処理の方法を通知する（図６０におけるステップＳ６０１〜Ｓ６０３）。画像変換先決定部９１１１は、参照画像又はカメラ画像の変換処理に際し、例えば、夜の画像を昼の画像に変換する、春の画像を冬に変換する、雨の日の画像を晴れの日の画像に変換する、など、参照画像及びカメラ画像の各々が属するドメインの変換を実行する（図６０におけるステップＳ６０４〜Ｓ６０６）。変換処理の方法は、例えば、ドメインＤ１からドメインＤ２へ変換する際に用いられる学習モデルとカメラパラメータ、などである。また、画像変換先決定部９１１１によって行われる変換処理は、参照画像及びカメラ画像の少なくとも一方を変更せずに、そのまま出力する処理を含む。なお、参照画像及びカメラ画像に変換処理を施した後に参照画像又はカメラ画像が属するドメインを、「変換処理後のドメイン」又は「変換先」とも言う。
【０２６３】
変換先を決める上で、参照データ読出部６０５から提供された参照データの参照画像とカメラ画像受信部６０９から提供されたカメラ画像が、どのドメインに属するのかを判定する必要があるため、画像変換先決定部９１１１は、どのドメインに属するかの判定も行う。画像変換先決定部９１１１は、予めラベル付けされた画像、すなわち、各ドメインに属する基準画像を用意し、基準画像との類似度（すなわち、各ドメインに属する画像との距離）に基づいてドメインを判定する。ドメインの判定には、ｔ−ＳＮＥ（Ｔ−ｄｉｓｔｒｉｂｕｔｅｄ  Ｓｔｏｃｈａｓｔｉｃ  Ｎｅｉｇｈｂｏｒ  Ｅｍｂｅｄｄｉｎｇ）などの機械学習アルゴリズムを使用することができる。例えば、画像変換先決定部９１１１は、画像を早朝、昼、夕方、夜の４つのドメインに分類する場合、早朝、昼、夕方、夜に撮影した基準画像を予め用意し、それぞれのドメインに属する基準画像と、参照データ読出部６０５から提供された参照画像又はカメラ画像受信部６０９から提供されたカメラ画像との間の類似度を求めることで、参照画像又はカメラ画像が属するドメインを判定する。なお、画像変換先決定部９１１１は、上記のように、参照画像又はカメラ画像と基準画像との類似度を直接求める例を説明したが、各画像を畳み込みしたもの（すなわち、中間データ）と基準画像を畳み込みしたもの（すなわち、中間基準データ）との間の類似度に基づいてドメインを判定してもよい。
【０２６４】
変換先の決定方法としては、例えば、以下の（Ｚ１）〜（Ｚ３）がある。
（Ｚ１）第１の決定方法は、参照データ読出部６０５から提供された参照画像をカメラ画像受信部６０９から提供されたカメラ画像が属するドメインに変換する方法である。画像変換先決定部９１１１は、例えば、参照画像が夜の画像であり、カメラ画像受信部６０９から提供されたカメラ画像が昼の画像であるとき、参照画像が属するドメインが夜のドメインから昼のドメインに変わるように、参照画像に変換処理を施す。
【０２６５】
（Ｚ２）第２の決定方法は、カメラ画像受信部６０９から提供されたカメラ画像を参照データ読出部６０５から提供された参照画像のドメインに変換する方法である。画像変換先決定部９１１１は、例えば、カメラ画像受信部６０９から提供されたカメラ画像が夜の画像であり、参照画像が昼の画像であるときに、カメラ画像受信部６０９から提供されたカメラ画像が属するドメインが夜のドメインから昼のドメインに変わるように、カメラ画像に変換処理を施す。
【０２６６】
（Ｚ３）第３の決定方法は、参照データ読出部６０５から提供された参照画像とカメラ画像受信部６０９から提供されたカメラ画像を、新たなドメインに変換する方法である。
画像変換先決定部９１１１は、例えば、カメラ画像受信部６０９から提供されたカメラ画像が早朝の画像であり、参照画像が夕方の画像であるときに、カメラ画像受信部６０９から提供されたカメラ画像を早朝の画像から昼の画像に変換し（すなわち、早朝のドメインから昼のドメインに変換し）、参照画像を夕方の画像から昼の画像に変換する（すなわち、夕方のドメインから昼のドメインに変換する）。
【０２６７】
上記のドメイン変換の方法の決定方法としては、参照データ読出部６０５から提供された参照画像とカメラ画像受信部６０９から提供されたカメラ画像との類似度（例えば、距離）と各ドメインに属する画像との距離とから決定する。
【０２６８】
〈（Ｚ１）〜（Ｚ３）の変換の例〉
図６２は、図５８及び図５９に示される入力画像変換部９１１によって実行される処理を示す説明図である。図６２において、「参照画像Ａ０」はドメインＤ１に属し、「カメラ画像Ａ１」はドメインＤ２に属し、ドメインＤ１とドメインＤ２との間の距離Ｌ２は、他のドメイン間の距離Ｌ３〜Ｌ７のいずれよりも短い。つまり、ドメインＤ１とドメインＤ２の関係は、他のドメイン間の関係よりも近い。この場合、入力画像変換部９１１は、参照画像Ａ０が属するドメインを、ドメインＤ１からドメインＤ２へ変換するための処理を参照画像Ａ０に対して行う。或いは、入力画像変換部９１１は、カメラ画像Ａ１が属するドメインを、ドメインＤ２からドメインＤ１へ変換するための処理をカメラ画像Ａ１に対して行う。
【０２６９】
〈（Ｚ３）の変換の例〉
図６２において、「参照画像Ｂ０」はドメインＤ１に属し、「カメラ画像Ｂ１」はドメインＤ４に属し、ドメインＤ１とドメインＤ４との間の距離Ｌ６は、ドメインＤ１とドメインＤ２との間の距離Ｌ２及びドメインＤ４とドメインＤ２との間の距離Ｌ３より短い。この場合、入力画像変換部９１１は、参照画像Ｂ０が属するドメインを、ドメインＤ１からドメインＤ２へ変換するための処理を参照画像Ｂ０に対して行い、カメラ画像Ｂ１が属するドメインを、ドメインＤ４からドメインＤ２へ変換するための処理をカメラ画像Ｂ１に対して行う。これにより、参照画像Ｂ０及びカメラ画像Ｂ１に対する過大な変更を回避できるので、変換処理において、参照画像Ｂ０又はカメラ画像Ｂ１に間違った情報が入ることを防ぐことができる。
【０２７０】
また、入力画像変換部９１１は、画像の類似度（距離）に加えて、各ドメインに補正に使用するデータとしての信頼度を追加し、類似度と信頼度の両方に基づいて変換先を決定してもよい。例えば、夜の画像よりも、昼間の画像のほうが補正の精度が向上するため、夜のドメインよりも昼のドメインの信頼度を大きくすることで、補正精度が向上するように変換先を動的に決定する。
【０２７１】
また、入力画像変換部９１１は、画像が属するドメイン間の距離の代りに、画像同士の直接的な距離に基づいて、参照画像とカメラ画像との類似度を判断してもよい。
【０２７２】
〈ドメイン分類用学習モデル・パラメータ入力部９１１５〉
図５９に示されるドメイン分類用学習モデル・パラメータ入力部９１１５は、画像変換先決定部９１１１が参照データ読出部６０５から提供された参照画像とカメラ画像受信部６０９から提供されたカメラ画像とが、どのドメインに属するかを判定するための学習モデル及びパラメータを画像変換先決定部９１１１へ出力する。対応する学習モデル及びカメラパラメータは、学習モデル・パラメータ読込部９１２から取得される。
【０２７３】
〈画像変換用学習モデル・パラメータ入力部９１１２〉
図５９に示される画像変換用学習モデル・パラメータ入力部９１１２は、画像変換先決定部９１１１から提供された画像の変換処理の方法に基づいて、その変換を実現する際に使用される学習モデル及びカメラパラメータを読み込む。画像変換先決定部９１１１は、参照データ読出部６０５から提供された参照画像とカメラ画像受信部６０９から提供されたカメラ画像のそれぞれの変換処理の方法に基づいて、対応する学習モデル及びカメラパラメータを学習モデル・パラメータ読込部９１２から取得し、参照画像変換処理部９１１３と入力カメラ画像変換処理部９１１４へ出力する（図６０におけるステップＳ６０５）。また、画像変換用学習モデル・パラメータ入力部９１１２は、画像変換先決定部９１１１から画像を変換しないという出力があった場合は、画像の変換をしない指示を参照画像変換処理部９１１３と入力カメラ画像変換処理部９１１４へ出力する。
【０２７４】
〈参照画像変換処理部９１１３〉
図５９に示される参照画像変換処理部９１１３は、参照データ読出部６０５から提供された参照画像を、画像変換用学習モデル・パラメータ入力部９１１２から入力された学習モデル及びカメラパラメータに基づいて変換し、変換後の参照画像を新たな参照画像として移動量推定・パラメータ計算部６０７とずれ補正部６０８へ出力する。参照画像変換処理部９１１３は、変換を必要としない場合は、変換をせずに参照データ読出部６０５から提供された参照画像を出力する。
【０２７５】
〈入力カメラ画像変換処理部９１１４〉
図５９に示される入力カメラ画像変換処理部９１１４は、カメラ画像受信部６０９から提供されたカメラ画像を、画像変換用学習モデル・パラメータ入力部９１１２から入力された学習モデル及びカメラパラメータに基づいて変換し、新たなカメラ画像として移動量推定・パラメータ計算部６０７とずれ補正部６０８へ出力する。変換を必要としない場合は、変換をせずにカメラ画像受信部６０９から提供されたカメラ画像を出力する。
【０２７６】
《６−８》学習モデル・パラメータ読込部９１２
図５８に示される学習モデル・パラメータ読込部９１２は、画像分類（すなわち、ドメインの分類）と画像変換に用いられる学習モデル及びカメラパラメータを入力画像変換部９１１へ提供する。図２６を参照して説明すると、メインプロセッサ６１１は、補助メモリ６１３に記憶されている学習モデル及びカメラパラメータを、ファイルインタフェース６１６を通してメインメモリ６１２へ読み込む。
【０２７７】
《６−９》再学習部９１３
図５８に示される再学習部９１３は、画像分類（すなわち、ドメインの分類）と画像変換に用いられる学習モデル及びカメラパラメータを、カメラ画像記録部９１４に記録されているカメラ画像に基づいて再学習する機能を持つ。
【０２７８】
《６−１０》実施の形態６の変形例
図６３は、実施の形態６の変形例に係る画像処理装置の画像変換先決定部９１１１によって実行される処理を示すフローチャートである。図６３において、図６０に示される処理ステップと同じ処理ステップには、図６０に示される符号と同じ符号が付されている。図６３と図６０とからわかるように、実施の形態６の変形例における画像変換先決定部９１１１は、カメラの移動量推定及びずれ補正処理において好適な変換先（変換された画像）が選ばれるまで、カメラ画像と参照画像の各ドメインの変換先を決める処理を繰り返す点（すなわち、ステップＳ６０７）が、実施の形態６に係る画像処理装置７１０と異なる。
【０２７９】
画像変換先決定部９１１１は、選択された変換先が、好適な変換先であるか否かの判断を、変換されたカメラ画像と変換された参照画像の２画像間における移動量、又は、変換されたカメラ画像と変換された参照画像の２画像間の類似度、又はこれらの両方に基づいて行うことができる。移動量の推定は、移動量推定・パラメータ計算部６０７が実行する処理と同じ処理によって行われる。例えば、画像変換先決定部９１１１は、変換されたカメラ画像と変換された参照画像の２画像間における移動量が外れ値である場合は、変換先が好適でないと判定することができる。或いは、画像変換先決定部９１１１は、変換されたカメラ画像と変換された参照画像の２画像間の類似度が、予め決められた閾値より小さい場合に、変換先が好適でないと判断することができる。
【０２８０】
《６−１１》効果
以上に説明したように、実施の形態６に係る画像処理装置９１０、画像処理方法又は画像処理プログラムを用いれば、移動量推定・パラメータ計算部６０７は、互いに近い状態にある画像を用いて移動量を推定し又はずれ量の評価値を計算しているので、移動量の推定精度又はずれ量の評価値の計算精度を高めることができ、カメラパラメータの最適化精度を向上させることができる。
【０２８１】
また、実施の形態６に係る画像処理装置９１０、画像処理方法又は画像処理プログラムを用いれば、互いに近い状態にある画像が記録されていない期間（例えば、カメラを設置してから１年以内であって、１年のうちの全ての季節の画像が取得されていない期間）であっても、互いに近い状態にある画像を新たに生成することができる。このため、移動量の推定精度又はずれ量の評価値の計算精度を高めることができる。
【０２８２】
上記以外に関し、実施の形態６は、実施の形態３から５のいずれかと同じである。また、実施の形態６において説明した、カメラ画像が属するドメインの変換機能を、他の実施の形態に適用することも可能である。
【０２８３】
《７》変形例．
上記実施の形態１から６に係る画像処理装置の構成を、適宜組み合わせることが可能である。例えば、実施の形態１又は２に係る画像処理装置の構成と、実施の形態３から６のいずれかに係る画像処理装置の構成とを組み合わせることが可能である。
【符号の説明】
【０２８４】
１ａ〜１ｄ  カメラ、  １０  画像処理装置、  １１  プロセッサ、  １２  メモリ、  １３  記憶装置、  １４  画像入力インタフェース、  １５  表示機器インタフェース、  １７  外部記憶装置、  １８  表示装置、  １００  ずれ補正部、  １０１ａ〜１０１ｄ  撮像画像、  １０２  画像記録部、  １０３  タイミング決定部、  １０４  移動量推定部、  １０５  特徴点抽出部、  １０６  パラメータ最適化部、  １０７  補正タイミング決定部、  １０８  合成テーブル生成部、  １０９  合成処理部、  １１０  ずれ量評価部、  １１１  重複領域抽出部、  １１２  表示画像出力部、  １１３  外れ値除外部、  １１４  記憶部、  １１５  外部記憶部、  ２０２ａ〜２０２ｄ，２０６ａ〜２０６ｄ  撮像画像、  ２０４ａ〜２０４ｄ，２０７ａ〜２０７ｄ，５００ａ〜５００ｄ  合成テーブル、  ２０５，２０８  合成画像、  ６００＿１〜６００＿ｎ  カメラ、  ６０１  カメラパラメータ入力部、  ６０２  合成処理部、  ６０３  投影処理部、  ６０４  表示処理部、  ６０５  参照データ読出部、  ６０６  ずれ検出部、  ６０７  移動量推定・パラメータ計算部、  ６０８、６０８ａ  ずれ補正部、  ６０９  カメラ画像受信部、  ６１０、７１０、８１０、９１０  画像処理装置、  ６１１  メインプロセッサ、  ６１２  メインメモリ、  ６１３  補助メモリ、  ６１４  画像処理プロセッサ、  ６１５  画像処理メモリ、  ６１６  ファイルインタフェース、  ６１７  入力インタフェース、  ６０６１  類似度評価部、  ６０６２  相対移動量推定部、  ６０６３  重畳領域抽出部、  ６０６４  重畳領域ずれ量評価部、  ６０６５  投影領域ずれ量評価部、  ６０６６  ずれ判定部、  ６０８２  パラメータ最適化部、  ６０８３  重畳領域抽出部、  ６０８４  重畳領域ずれ量評価部、  ６０８５  投影領域ずれ量評価部、  ７０１  カメラ画像記録部、  ７０２  入力データ選択部、  ７０３  マスク画像生成部、  ７０３１  差分用カメラ画像記録部、  ７０３２  差分マスク画像出力部、  ７０３３  初回マスク画像出力部、  ７０３４  重畳領域抽出部、  ７０３５  重畳領域マスク画像出力部、  ７０３６  マスク画像統合処理部、  ９１１  入力画像変換部、  ９１２  学習モデル・パラメータ読込部、  ９１３  再学習部、  ９１４  カメラ画像記録部、  ９１１１  画像変換先決定部、  ９１１２  画像変換用学習モデル・パラメータ入力部、  ９１１３  参照画像変換処理部、  ９１１４  入力カメラ画像変換処理部、  ９１１５  ドメイン分類用データ読出部、  ９１１５  ドメイン分類用学習モデル・パラメータ入力部。
【要約】
画像処理装置（１０）は、複数の撮像画像（１０１ａ〜１０１ｄ）の各々を撮影した撮像装置（１ａ〜１ｄ）の特定情報と撮影時刻を示す時刻情報と関連付けて記憶部（１１４，１１５）に記録する画像記録部（１０２）と、記憶部（１１４，１１５）に記録された複数の撮像画像から、複数の撮像装置（１ａ〜１ｄ）の各々の推定移動量を計算する移動量推定部（１０４）と、撮影時刻が同じである複数の撮像画像を合成することによって生成された合成画像の複数の撮像画像の重複領域におけるずれ量の評価値を取得する処理、推定移動量及びずれ量の評価値に基づいて複数の撮像装置（１ａ〜１ｄ）の各々の外部パラメータを更新する処理、及び更新された外部パラメータを用いて撮影時刻が同じである複数の撮像画像を合成する処理、を含むずれ補正処理を繰り返し実行するずれ補正部（１００）とを有する。【図１】
0006746031.tif 000002
【図２】
0006746031.tif 000003
【図３】
0006746031.tif 000004
【図４】
0006746031.tif 000005
【図５】
0006746031.tif 000006
【図６】
0006746031.tif 000007
【図７】
0006746031.tif 000008
【図８】
0006746031.tif 000009
【図９】
0006746031.tif 000010
【図１０】
0006746031.tif 000011
【図１１】
0006746031.tif 000012
【図１２】
0006746031.tif 000013
【図１３】
0006746031.tif 000014
【図１４】
0006746031.tif 000015
【図１５】
0006746031.tif 000016
【図１６】
0006746031.tif 000017
【図１７】
0006746031.tif 000018
【図１８】
0006746031.tif 000019
【図１９】
0006746031.tif 000020
【図２０】
0006746031.tif 000021
【図２１】
0006746031.tif 000022
【図２２】
0006746031.tif 000023
【図２３】
0006746031.tif 000024
【図２４】
0006746031.tif 000025
【図２５】
0006746031.tif 000026
【図２６】
0006746031.tif 000027
【図２７】
0006746031.tif 000028
【図２８】
0006746031.tif 000029
【図２９】
0006746031.tif 000030
【図３０】
0006746031.tif 000031
【図３１】
0006746031.tif 000032
【図３２】
0006746031.tif 000033
【図３３】
0006746031.tif 000034
【図３４】
0006746031.tif 000035
【図３５】
0006746031.tif 000036
【図３６】
0006746031.tif 000037
【図３７】
0006746031.tif 000038
【図３８】
0006746031.tif 000039
【図３９】
0006746031.tif 000040
【図４０】
0006746031.tif 000041
【図４１】
0006746031.tif 000042
【図４２】
0006746031.tif 000043
【図４３】
0006746031.tif 000044
【図４４】
0006746031.tif 000045
【図４５】
0006746031.tif 000046
【図４６】
0006746031.tif 000047
【図４７】
0006746031.tif 000048
【図４８】
0006746031.tif 000049
【図４９】
0006746031.tif 000050
【図５０】
0006746031.tif 000051
【図５１】
0006746031.tif 000052
【図５２】
0006746031.tif 000053
【図５３】
0006746031.tif 000054
【図５４】
0006746031.tif 000055
【図５５】
0006746031.tif 000056
【図５６】
0006746031.tif 000057
【図５７】
0006746031.tif 000058
【図５８】
0006746031.tif 000059
【図５９】
0006746031.tif 000060
【図６０】
0006746031.tif 000061
【図６１】
0006746031.tif 000062
【図６２】
0006746031.tif 000063
【図６３】
0006746031.tif 000064