(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-12-13
(45)【発行日】2022-12-21
(54)【発明の名称】情報処理装置および蓄積画像選択方法
(51)【国際特許分類】
G06T 1/00 20060101AFI20221214BHJP
G06T 7/55 20170101ALI20221214BHJP
G01N 21/88 20060101ALI20221214BHJP
G01B 11/24 20060101ALI20221214BHJP
G01B 11/30 20060101ALI20221214BHJP
H04N 5/232 20060101ALI20221214BHJP
H04N 5/92 20060101ALI20221214BHJP
【FI】
G06T1/00 200E
G06T7/55
G01N21/88 J
G01B11/24 K
G01B11/30 A
H04N5/232 290
H04N5/232 300
H04N5/92 010
(21)【出願番号】P 2019048934
(22)【出願日】2019-03-15
【審査請求日】2021-12-08
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】長谷川 英司
【審査官】山口 大志
(56)【参考文献】
【文献】特開2016-090547(JP,A)
【文献】特開2018-185146(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 1/00
G06T 7/55
G01N 21/88
G01B 11/24
G01B 11/30
H04N 5/232
H04N 5/92
(57)【特許請求の範囲】
【請求項1】
構造物に対する位置を変えながら前記構造物を撮像した複数の画像のデータと、前記構造物の三次元形状を示す三次元モデルのデータを記憶する記憶部と、
前記複数の画像のうち前記構造物における損傷箇所が映った画像の中から、前記損傷箇所が最も大きく映った画像を、蓄積すべき第1の蓄積画像として選択し、
前記複数の画像のうち前記第1の蓄積画像を除く画像の中から蓄積すべき第2の蓄積画像を2以上選択する選択処理であって、前記三次元モデルにおいて前記第1の蓄積画像でカバーされない撮像範囲について、複数の前記第2の蓄積画像間で重複する撮像範囲が少なくなるように、かつ、2以上選択した前記第2の蓄積画像と前記第1の蓄積画像とによる前記三次元モデルにおける撮像範囲のカバー率が所定値以上になるように、2以上の前記第2の蓄積画像を選択する前記選択処理を実行する、処理部と、
を有する情報処理装置。
【請求項2】
前記選択処理では、前記複数の画像のうち前記第1の蓄積画像および前記第2の蓄積画像として選択されていない画像の中から第1の画像を選択した場合に、前記三次元モデルの表面領域のうち、前記第1の蓄積画像および前記第2の蓄積画像として選択済みの画像による第1の撮像範囲と前記第1の画像による第2の撮像範囲とによってカバーされるカバー範囲の合計面積を算出するとともに、前記カバー範囲の周囲長を算出し、前記合計面積と前記周囲長とから算出される評価値に基づいて前記第1の画像を前記第2の蓄積画像として選択するかを判定する、
請求項1記載の情報処理装置。
【請求項3】
前記選択処理では、
前記複数の画像のうち前記第1の蓄積画像および前記第2の蓄積画像として選択されていない画像の中から第2の画像を選択した場合に、前記三次元モデルの表面領域のうち、前記第1の蓄積画像および前記第2の蓄積画像として選択済みの画像による第3の撮像範囲と前記第2の画像による第4の撮像範囲とによってカバーされるカバー範囲の合計面積を算出するとともに、前記カバー範囲の周囲長を算出し、前記周囲長に対する前記合計面積の比率によって表される評価値が最大となる前記第2の画像を前記第2の蓄積画像として選択する、
処理を、前記第1の蓄積画像および前記第2の蓄積画像による前記三次元モデルにおける撮像範囲のカバー率が前記所定値以上になるまで繰り返し実行する、
請求項1記載の情報処理装置。
【請求項4】
前記選択処理では、前記三次元モデルの表面を分割して得られた分割領域のそれぞれについて、前記複数の画像のうち前記分割領域が映った第3の画像の中から、最小数の前記第3の画像によって前記分割領域における撮像範囲のカバー率が所定の閾値以上になるように前記第3の画像の組み合わせを特定し、特定された前記組み合わせに含まれる前記第3の画像を前記第2の蓄積画像として選択する、
請求項1記載の情報処理装置。
【請求項5】
前記選択処理では、前記第1の蓄積画像および少ない数の前記第2の蓄積画像のそれぞれの中心部における所定の大きさの領域による、前記三次元モデルにおける撮像範囲のカバー率が前記所定値以上となるように、前記第2の蓄積画像を選択する、
請求項1記載の情報処理装置。
【請求項6】
前記第1の蓄積画像の選択では、前記三次元モデルにおける前記損傷箇所の三次元形状を示す形状データに基づいて、前記複数の画像のうち前記損傷箇所が映った第4の画像のそれぞれにおける、前記損傷箇所が投影された投影面積を算出し、前記第4の画像のうち前記投影面積が最大の画像を前記第1の蓄積画像として選択する、
請求項1乃至5のいずれか1項に記載の情報処理装置。
【請求項7】
前記第1の蓄積画像の選択では、前記複数の画像の中に前記損傷箇所の全体が映っている画像が存在しない場合、前記複数の画像の中から前記損傷箇所が部分的に映っている第5の画像を特定し、少ない数の前記第1の蓄積画像によって前記損傷箇所全体が撮像範囲に含まれるように、前記第5の画像の中から前記第1の蓄積画像を複数選択する、
請求項1乃至6のいずれか1項に記載の情報処理装置。
【請求項8】
前記第1の蓄積画像の選択では、前記複数の画像のそれぞれの中心部における所定の大きさの領域において、前記損傷箇所が最も大きく映った画像を、前記第1の蓄積画像として選択する、
請求項1乃至6のいずれか1項に記載の情報処理装置。
【請求項9】
前記複数の画像のうち、前記三次元モデルの撮像面の法線と撮像方向との角度が所定角度以上である画像は、前記第1の蓄積画像または前記第2の蓄積画像の少なくとも一方の選択対象から除外される、
請求項1乃至8のいずれか1項に記載の情報処理装置。
【請求項10】
コンピュータが、
構造物に対する位置を変えながら前記構造物を撮像した複数の画像のデータと、前記構造物の三次元形状を示す三次元モデルのデータとを取得し、
前記複数の画像のうち前記構造物における損傷箇所が映った画像の中から、前記損傷箇所が最も大きく映った画像を、蓄積すべき第1の蓄積画像として選択し、
前記複数の画像のうち前記第1の蓄積画像を除く画像の中から蓄積すべき第2の蓄積画像を2以上選択する選択処理であって、前記三次元モデルにおいて前記第1の蓄積画像でカバーされない撮像範囲について、複数の前記第2の蓄積画像間で重複する撮像範囲が少なくなるように、かつ、2以上選択した前記第2の蓄積画像と前記第1の蓄積画像とによる前記三次元モデルにおける撮像範囲のカバー率が所定値以上になるように、2以上の前記第2の蓄積画像を選択する前記選択処理を実行する、
蓄積画像選択方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置および蓄積画像選択方法に関する。
【背景技術】
【0002】
近年、建物や道路などの構造物の維持管理のために、構造物を撮像した画像や構造物の3D(three-dimensional)モデルが活用されている。例えば、橋梁の維持管理のためのシステムにおいて、変状や補修箇所を撮影し、撮影された画像上の該当箇所をなぞることで3Dモデルに該当箇所の位置や形状を反映させることが提案されている。また、道路構造物の管理のためのシステムにおいて、道路を走行しながらレーザスキャナを用いて取得された点群データと、それらと同時に取得され、撮像時の位置と角度の情報が対応付けられた画像データとが用いられることが提案されている。
【先行技術文献】
【特許文献】
【0003】
【非特許文献】
【0004】
【文献】清水智弘、外7名、「3Dモデルを用いた橋梁維持管理システムの開発」、土木学会論文集F3(土木情報学),Vol.69,No.2、2013年10月4日、I_45~I_53頁
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、構造物の点検のために構造物全体を網羅的に撮像した場合、それによって得られた大量の画像を蓄積することに関して次のような課題がある。一般的に、これらの画像のうち、損傷している箇所が明確に映っている画像を残しておくことが重要である。その一方で、それ以外の部分が映っている画像を破棄してしまうと、その部分が本当に損傷していなかったかを事後に検証できなくなってしまう。しかし、事後検証を可能とするために構造物全体が撮像範囲に含まれるように多数の画像を蓄積すると、蓄積されるデータ量が膨大になるという問題がある。
【0006】
1つの側面では、本発明は、損傷箇所を確認しやすい画像と構造物全体が映った画像の蓄積データ量を削減可能な情報処理装置および蓄積画像選択方法を提供することを目的とする。
【課題を解決するための手段】
【0007】
1つの案では、記憶部と処理部とを有する次のような情報処理装置が提供される。この情報処理装置において、記憶部は、構造物に対する位置を変えながら構造物を撮像した複数の画像のデータと、構造物の三次元形状を示す三次元モデルのデータを記憶する。処理部は、複数の画像のうち構造物における損傷箇所が映った画像の中から、損傷箇所が最も大きく映った画像を、蓄積すべき第1の蓄積画像として選択する。また、処理部は、複数の画像のうち第1の蓄積画像を除く画像の中から蓄積すべき第2の蓄積画像を2以上選択する選択処理を実行する。この選択処理では、処理部は、三次元モデルにおいて第1の蓄積画像でカバーされない撮像範囲について、複数の第2の蓄積画像間で重複する撮像範囲が少なくなるように、かつ、2以上選択した第2の蓄積画像と第1の蓄積画像とによる三次元モデルにおける撮像範囲のカバー率が所定値以上になるように、2以上の第2の蓄積画像を選択する。
【0008】
また、1つの案では、上記の情報処理装置と同様の処理をコンピュータが実行する蓄積画像選択方法が提供される。
【発明の効果】
【0009】
1つの側面では、損傷箇所を確認しやすい画像と構造物全体が映った画像の蓄積データ量を削減できる。
【図面の簡単な説明】
【0010】
【
図1】第1の実施の形態に係る情報処理装置の構成例および処理例を示す図である。
【
図2】第2の実施の形態に係る情報処理システムの構成例を示す図である。
【
図3】蓄積サーバのハードウェア構成例を示す図である。
【
図4】点検サーバおよび蓄積サーバが備える処理機能の構成例を示すブロック図である。
【
図5】点検サーバおよび蓄積サーバによる全体の処理手順を示すフローチャートの例である。
【
図6】損傷形状計算処理の手順を示すフローチャートの例である。
【
図8】損傷画像の選択処理手順を示すフローチャートの例である。
【
図9】損傷箇所全体を含む撮像画像が存在しない場合における損傷画像の選択処理例を示す図である。
【
図10】非損傷画像の選択についての第1の処理例の概要を説明するための図である。
【
図11】ポリゴンを用いた評価値の算出例を示す図である。
【
図12】非損傷画像の選択についての第1の処理例を示すフローチャートである。
【
図13】非損傷画像の選択を効率化するための処理例を示す図である。
【
図14】非損傷画像の選択についての第2の処理例の概要を説明するための図である。
【
図15】非損傷画像の選択についての第2の処理例を示すフローチャートである。
【
図16】第1の変形例について説明するための図である。
【
図17】第2の変形例について説明するための図である。
【発明を実施するための形態】
【0011】
以下、本発明の実施の形態について図面を参照して説明する。
〔第1の実施の形態〕
図1は、第1の実施の形態に係る情報処理装置の構成例および処理例を示す図である。
図1に示す情報処理装置10は、記憶部11と処理部12を有する。記憶部11は、例えば、情報処理装置10が備える図示しない記憶装置として実現される。処理部12は、例えば、情報処理装置10が備える図示しないプロセッサとして実現される。
【0012】
記憶部11は、画像1a,1b,・・・のデータと、3D(三次元)モデル2aを記憶する。画像1a,1b,・・・のデータは、カメラ3により、構造物2に対する位置を変えながら構造物2を撮像することによって取得される。3Dモデル2aのデータは、構造物2の3D形状を示すデータである。3Dモデル2aのデータは、例えば、画像1a,1b,・・・のデータを基にSfM(Structure from Motion)によって生成されたものであってもよい。
【0013】
処理部12は、画像1a,1b,・・・のうち構造物2における損傷箇所4が映った画像の中から、損傷箇所4が最も大きく映った画像を、蓄積すべき第1の蓄積画像として選択する。
図1の例では、画像1a,1b,・・・の中から損傷箇所4が写った画像1-1,1-2が抽出されたものとする。画像1-2より画像1-1の方が損傷箇所4が大きく映っていることから、画像1-1が第1の蓄積画像として選択される。
【0014】
処理部12はさらに、画像1a,1b,・・・のうち第1の蓄積画像(画像1-1)を除く画像の中から、蓄積すべき第2の蓄積画像を2以上選択する選択処理を実行する。この選択処理では、処理部12は、3Dモデル2aにおいて第1の蓄積画像でカバーされない撮像範囲について、第2の蓄積画像間で重複する撮像範囲が少なくなるように、かつ、選択した第2の蓄積画像と第1の蓄積画像とによる3Dモデル2aにおける撮像範囲のカバー率が所定値以上になるように、第2の蓄積画像を選択する。これにより、第1の蓄積画像と少ない数の第2の蓄積画像とによって3Dモデル2aにおける撮像範囲のカバー率が所定値以上になるように、第2の蓄積画像が選択される。
図1では、第2の蓄積画像の一例として画像1-3~1-5が選択された例を示している。ただし、画像1-3~1-5は、選択される第2の蓄積画像のうちの一部である。
【0015】
以上の情報処理装置10によれば、損傷箇所4を確認しやすい画像と構造物2全体が映った画像の蓄積データ量を削減できる。すなわち、損傷箇所4が最も大きく映った画像が蓄積画像として選択されることで、損傷箇所4が確認しやすく、点検や解析に有用な画像を残すことができる。一方、構造物2全体が映った画像として、画像間で重複する撮像範囲が少なく、かつ3Dモデル2aにおける撮像範囲のカバー率が所定値以上になるように画像が選択されることで、画像の選択数を削減でき、選択された画像による総データ量を削減できる。したがって、損傷箇所4を明確に確認できる画像だけでなく、その画像に映っていないその他の領域について損傷の有無を事後に検証できる画像を、少ないデータ量によって残しておくことができる。
【0016】
〔第2の実施の形態〕
図2は、第2の実施の形態に係る情報処理システムの構成例を示す図である。
図2に示す情報処理システムは、道路、鉄道、水道、通信などの社会的・経済的基盤に関する施設(インフラストラクチャ)の維持管理に用いられるシステムである。この情報処理システムは、点検サーバ100と蓄積サーバ200を含む。点検サーバ100と蓄積サーバ200とは、ネットワーク50を介して接続されている。
【0017】
点検サーバ100は、構造物60に損傷がないかを点検するために用いられるサーバコンピュータである。点検サーバ100は、構造物60の外観を撮像した撮像画像をカメラ70から取得し、その撮像画像を基に構造物60に損傷がないかを点検するための処理を行う。カメラ70による構造物60の撮像は、構造物60の外観全体が網羅的に撮像されるように複数回行われ、これによって得られた複数の撮像画像が点検サーバ100に入力される。また、構造物60の撮像は、人手によって行われてもよいし、ドローンなどのロボットを用いて行われてもよい。
【0018】
また、点検サーバ100は、損傷箇所に関する情報を、構造物60の3Dモデル上の形状データとして管理する。すなわち、損傷箇所は、撮像画像上の2D形状としてだけでなく、3D形状としても管理される。これにより、損傷箇所の解析や事後の活用のために有用な情報を残すことができる。
【0019】
蓄積サーバ200は、点検サーバ100からの依頼に応じて、点検サーバ100が取得した構造物60についての複数の撮像画像の中から、蓄積すべき撮像画像(すなわち、保存して残しておくべき撮像画像)を選択するサーバコンピュータである。以下、選択された蓄積すべき撮像画像を「蓄積画像」と記載する。本実施の形態では、蓄積サーバ200は、蓄積画像を選択するとともに、選択された蓄積画像を記憶装置に蓄積する。ただし、蓄積サーバ200は、蓄積画像を選択してその選択結果を点検サーバ100に通知するものであってもよい。なお、蓄積サーバ200は、例えば、点検サーバ100に対し、蓄積画像を選択するサービスをWebサービスとして提供する。
【0020】
ここで、構造物60の外観を網羅的に撮像した場合、大量の撮像画像が得られる。蓄積サーバ200は、そのような大量の撮像画像の中から残しておくべき画像を取捨選択して、画像の蓄積データ量を低減する。
【0021】
蓄積サーバ200は、点検サーバ100によって構造物60に損傷があると判定された場合に、損傷箇所が映っている撮像画像を蓄積画像として選択する。この選択では、損傷箇所の解析や事後の検証を可能にするように、損傷箇所を確認しやすい撮像画像が選択される。
【0022】
ただし、損傷箇所が映っていると判定された撮像画像だけを残した場合、それ以外の部分に損傷がないことは保証されない。それは、当初の撮像画像から、目視や画像処理によって検出できなかった損傷があり得るからである。損傷箇所以外の部分を写した撮像画像も残しておくことで、本当に損傷がなかったのかを事後に検証できるようになる。したがって、インフラストラクチャの維持管理の分野では、損傷箇所以外の部分を写した撮像画像も残しておきたいという要望がある。
【0023】
しかしながら、損傷箇所以外の部分を写した撮像画像を残しておこうとすると、多数の撮像画像が蓄積されることになり、蓄積データ量が膨大になってしまう。そこで、蓄積サーバ200は、損傷箇所以外の部分を写した撮像画像として必要最小限の画像を選択することで、画像の蓄積データ量を削減する。
【0024】
図3は、蓄積サーバのハードウェア構成例を示す図である。蓄積サーバ200は、例えば、
図3に示すようなコンピュータとして実現される。
図3に示す蓄積サーバ200は、プロセッサ201、RAM(Random Access Memory)202、HDD(Hard Disk Drive)203、グラフィックインタフェース(I/F)204、入力インタフェース(I/F)205、読み取り装置206および通信インタフェース(I/F)207を備える。
【0025】
プロセッサ201は、蓄積サーバ200全体を統括的に制御する。プロセッサ201は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)またはPLD(Programmable Logic Device)である。また、プロセッサ201は、CPU、MPU、DSP、ASIC、PLDのうちの2以上の要素の組み合わせであってもよい。
【0026】
RAM202は、蓄積サーバ200の主記憶装置として使用される。RAM202には、プロセッサ201に実行させるOS(Operating System)プログラムやアプリケーションソフトウェアの少なくとも一部が一時的に格納される。また、RAM202には、プロセッサ201による処理に必要な各種データが格納される。
【0027】
HDD203は、蓄積サーバ200の補助記憶装置として使用される。HDD203には、OSプログラム、アプリケーションソフトウェア、および各種データが格納される。なお、補助記憶装置としては、SSD(Solid State Drive)などの他の種類の不揮発性記憶装置を使用することもできる。
【0028】
グラフィックインタフェース204には、表示装置204aが接続されている。グラフィックインタフェース204は、プロセッサ201からの命令にしたがって、画像を表示装置204aに表示させる。表示装置204aとしては、液晶ディスプレイや有機EL(Electroluminescence)ディスプレイなどがある。
【0029】
入力インタフェース205には、入力装置205aが接続されている。入力インタフェース205は、入力装置205aから出力される信号をプロセッサ201に送信する。入力装置205aとしては、キーボードやポインティングデバイスなどがある。ポインティングデバイスとしては、マウス、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【0030】
読み取り装置206には、可搬型記録媒体206aが脱着される。読み取り装置206は、可搬型記録媒体206aに記録されたデータを読み取ってプロセッサ201に送信する。可搬型記録媒体206aとしては、光ディスク、光磁気ディスク、半導体メモリなどがある。
【0031】
通信インタフェース207は、ネットワーク50を介して点検サーバ100などの他の装置との間でデータの送受信を行う。
以上のようなハードウェア構成によって、蓄積サーバ200の処理機能を実現することができる。なお、点検サーバ100についても
図3のようなハードウェア構成のコンピュータとして実現可能である。
【0032】
図4は、点検サーバおよび蓄積サーバが備える処理機能の構成例を示すブロック図である。
点検サーバ100は、記憶部110、画像入力部120、モデル化処理部130、損傷形状計算部140および情報送信部150を備える。記憶部110は、例えば、点検サーバ100が備える図示しない記憶装置の記憶領域として実現される。画像入力部120、モデル化処理部130、損傷形状計算部140および情報送信部150の処理は、例えば、点検サーバ100が備える図示しないプロセッサが所定のプログラムを実行することで実現される。
【0033】
記憶部110には、撮像画像111、画像管理情報112、3Dモデルデータ113および損傷形状データ114が記憶される。
撮像画像111は、カメラ70によって構造物60を撮像して得られた画像である。撮像画像111は、画像入力部120によってカメラ70から取得されて、記憶部110に格納される。前述のように、撮像画像111は、構造物60の表面を網羅的に撮像することによって複数生成され、記憶部110に記憶される。
【0034】
画像管理情報112は、撮像画像111のそれぞれについてのメタデータを保持する。例えば、画像管理情報112は、撮像画像111ごとに、撮像時のカメラ70の位置と姿勢(向き)を示すカメラ位置姿勢、カメラ70の内部パラメータ、撮像画像111に映っている損傷箇所に対応する損傷形状データ114を示す識別情報を含む。
【0035】
3Dモデルデータ113は、構造物60の3D形状を示す3Dモデルを示すデータである。3Dモデルデータ113は、例えば、3Dモデルを構成するポリラインとポリゴンの一方、または両方を示すデータを含む。
【0036】
損傷形状データ114は、構造物60の3Dモデルにおける損傷箇所の3D形状を示す。例えば、損傷形状データ114は、3Dモデルを構成するポリラインやポリゴンのうち、損傷箇所に対応するポリラインやポリゴンを示すデータを含む。
【0037】
画像入力部120は、カメラ70によって撮像された複数の撮像画像111の入力を受け、それらの撮像画像111を記憶部110に格納する。例えば、カメラ70によって、その位置を構造物60の周囲で移動させながら動画像が撮像され、画像入力部120に入力される。画像入力部120は、入力された動画像に含まれるフレームを一定間隔で間引くことで、複数の静止画像をそれぞれ撮像画像111として記憶部110に格納する。
【0038】
モデル化処理部130は、撮像画像111に基づき、SfMによって撮像画像111のそれぞれについてのカメラ位置姿勢を推定するとともに、構造物60の3D形状を復元して3Dモデルを作成する。モデル化処理部130は、推定したカメラ位置姿勢を画像管理情報112に登録し、作成した3Dモデルのデータを3Dモデルデータ113として記憶部110に格納する。
【0039】
損傷形状計算部140は、撮像画像111の中から損傷箇所が映っている撮像画像111を特定するとともに、特定された撮像画像111における損傷箇所の位置を特定する。なお、以下の説明において、「損傷箇所」とは、ひとまとまりの損傷が発生している箇所を指す。
【0040】
損傷形状計算部140はさらに、損傷箇所が映っている撮像画像111および損傷箇所の位置と、3Dモデルデータ113とに基づいて、3Dモデルにおける損傷箇所の3D形状を示す損傷形状データ114を作成し、記憶部110に格納する。構造物60に損傷箇所が複数存在する場合、損傷形状データ114は損傷箇所ごとに作成され、記憶部110に格納される。
【0041】
情報送信部150は、すべての撮像画像111、画像管理情報112、3Dモデルデータ113およびすべての損傷形状データ114を、記憶部110から読み出す。情報送信部150は、読み出したこれらの情報を蓄積サーバ200に送信して、撮像画像111の中から蓄積画像を選択する処理の実行を依頼する。
【0042】
一方、蓄積サーバ200は、記憶部210、画像蓄積部220、情報受信部230、損傷画像選択部240および非損傷画像選択部250を備える。記憶部210および画像蓄積部220は、例えば、蓄積サーバ200が備え記憶装置の記憶領域として実現される。ただし、記憶部210は、一時的な記憶領域であればよく、RAM202などの揮発性記憶装置によって実現されればよい。一方、画像蓄積部220は、HDD203などの不揮発性記憶装置によって実現されることが望ましい。なお、画像蓄積部220は、蓄積サーバ200の外部に接続された記憶装置によって実現されてもよい。情報受信部230、損傷画像選択部240および非損傷画像選択部250の処理は、例えば、蓄積サーバ200が備えるプロセッサ201が所定のプログラムを実行することで実現される。
【0043】
記憶部210には、点検サーバ100から送信された撮像画像111、画像管理情報112、3Dモデルデータ113および損傷形状データ114を記憶する。
画像蓄積部220は、蓄積画像として選択された撮像画像111を蓄積する。
【0044】
情報受信部230は、点検サーバ100から蓄積画像の選択依頼を受信すると、点検サーバ100から送信された撮像画像111、画像管理情報112、3Dモデルデータ113および損傷形状データ114を記憶部210に格納する。なお、蓄積サーバ200での処理により、画像管理情報112にはさらに、撮像画像111ごとに、撮像画像111に映っているポリラインまたはポリゴンを示す情報が登録される。
【0045】
損傷画像選択部240は、損傷箇所が映っている撮像画像111の中から、損傷形状データ114と、画像管理情報112に含まれるカメラ70の内部パラメータとに基づいて、撮像画像111における損傷箇所の投影面積を計算する。損傷画像選択部240は、損傷箇所の投影面積が最大の撮像画像111を、蓄積画像として選択して画像蓄積部220に格納する。以下、損傷画像選択部240によって蓄積画像として選択された、損傷箇所が映っている撮像画像111を、「損傷画像」と記載する。
【0046】
非損傷画像選択部250は、記憶部210内の撮像画像111のうち、損傷画像として選択されたものを除く撮像画像111の中から、構造物60の表面の全体が撮像範囲に含まれるような撮像画像111を蓄積画像として選択し、画像蓄積部220に蓄積する。以下、非損傷画像選択部250によって蓄積画像として選択された撮像画像111を、「非損傷画像」と記載する。
【0047】
非損傷画像選択部250は、構造物60の表面における一定割合以上の範囲が、損傷画像選択部240によって選択された損傷画像と、非損傷画像とによる撮像範囲に含まれ、なおかつ、非損傷画像の数ができるだけ少なくなるように、非損傷画像を選択する。このとき、非損傷画像選択部250は、構造物60の表面における撮像範囲のカバー率を、構造物60の3Dモデルデータ113を用いて計算する。すなわち、非損傷画像選択部250は、損傷画像とできるだけ少ない数の非損傷画像とによって構造物60の表面における撮像範囲のカバー率が所定値以上になるように、非損傷画像を選択する。
【0048】
なお、
図4に示した各サーバにおける処理機能の配置はあくまで一例であり、これらの配置を変更することもできる。例えば、損傷形状計算部140の処理機能を蓄積サーバ200が備えるようにすることもできる。また、画像入力部120およびモデル化処理部130の処理機能もさらに蓄積サーバ200が備えるようにしてもよい。すなわち、画像入力部120、モデル化処理部130、損傷形状計算部140、損傷画像選択部240および非損傷画像選択部250の処理機能が、1つのサーバコンピュータにおいて実現されてもよい。
【0049】
図5は、点検サーバおよび蓄積サーバによる全体の処理手順を示すフローチャートの例である。
まず、ステップS11~S15の処理が点検サーバ100において実行される。
【0050】
[ステップS11]画像入力部120は、構造物60が撮像された複数の撮像画像111の入力を受け、これらの撮像画像111を記憶部110に格納する。なお、前述のように、画像入力部120は、カメラ70によって撮像された動画像の入力を受けてもよい。この場合、画像入力部120は、入力された動画像に含まれるフレームを一定間隔で間引き、間引き後に残ったフレーム(静止画像)を撮像画像111として記憶部110に格納する。
【0051】
[ステップS12]モデル化処理部130は、記憶部110内の撮像画像111に基づき、SfMによって撮像画像111のそれぞれについてのカメラ位置姿勢を推定するとともに、構造物60の3D形状を復元して3Dモデルを作成する。モデル化処理部130は、推定したカメラ位置姿勢を画像管理情報112に登録し、作成した3Dモデルのデータを3Dモデルデータ113として記憶部110に格納する。
【0052】
なお、モデル化処理部130は、撮像画像111に加えて、構造物60の3DCAD(Computer-Aided Design)データを用いて3Dモデルを作成してもよい。例えば、撮像画像111に基づいて復元された構造物60の3D点群データと3DCADデータとの間で位置合わせすることにより、3Dモデルを高精度に作成できる。
【0053】
[ステップS13]損傷形状計算部140は、記憶部110内の撮像画像111の中から損傷箇所が映っている撮像画像111を特定する。例えば、損傷形状計算部140は、撮像画像111をそれぞれ表示装置に表示させ、オペレータの操作によって、損傷箇所が映っている撮像画像111の選択を受け付ける。また、損傷形状計算部140は、画像処理によって、撮像画像111の中から損傷箇所が映っている撮像画像111を選択してもよい。
【0054】
[ステップS14]損傷形状計算部140は、損傷箇所が映っている撮像画像111と、その撮像画像111における損傷箇所の位置と、3Dモデルデータ113とに基づいて、3Dモデルにおける損傷箇所の3D形状を示す損傷形状データ114を作成する。損傷形状計算部140は、作成した損傷形状データ114を記憶部110に格納する。構造物60に損傷箇所が複数存在する場合、損傷形状データ114は損傷箇所ごとに作成され、記憶部110に格納される。
【0055】
なお、撮像画像111における損傷箇所の位置は、例えば、撮像画像111を表示装置に表示した画面に対するオペレータの選択操作によって指示される。また、ステップS13において損傷箇所が映っている撮像画像111が画像処理によって特定された場合、その画像処理によって撮像画像111における損傷箇所の位置が特定されていてもよい。
【0056】
[ステップS15]情報送信部150は、すべての撮像画像111、画像管理情報112、3Dモデルデータ113およびすべての損傷形状データ114を、記憶部110から読み出す。情報送信部150は、読み出したこれらの情報を蓄積サーバ200に送信して、蓄積画像の選択を依頼する。
【0057】
続いて、ステップS16~S18の処理が蓄積サーバ200において実行される。
[ステップS16]点検サーバ100から蓄積画像の選択依頼を受信するとともに、点検サーバ100から送信された撮像画像111、画像管理情報112、3Dモデルデータ113および損傷形状データ114を記憶部210に格納する。
【0058】
[ステップS17]損傷画像選択部240は、損傷箇所が映っている撮像画像111の中から、蓄積すべき損傷画像を選択して、画像蓄積部220に格納する。この処理では、損傷箇所の投影面積が最大の撮像画像111が、損傷画像として選択される。
【0059】
[ステップS18]非損傷画像選択部250は、記憶部210内の撮像画像111のうち、蓄積画像として選択済みのものを除く撮像画像111の中から、蓄積すべき非損傷画像を選択し、画像蓄積部220に蓄積する。この処理では、損傷画像とできるだけ少ない数の非損傷画像とによる撮像範囲が、構造物60の表面におけるできるだけ大きな面積をカバーできるように、非損傷画像が選択される。
【0060】
なお、ステップS13において損傷箇所が映っている画像を特定できなかった場合、すなわち、構造物60に損傷があると判定されなかった場合には、ステップS14,S17の処理はスキップされる。
【0061】
次に、ステップS14の損傷形状計算処理について説明する。
図6は、損傷形状計算処理の手順を示すフローチャートの例である。
[ステップS21]損傷形状計算部140は、記憶部110内の撮像画像111の中から、損傷箇所が映っている撮像画像111を1つ選択する。この処理では、
図5のステップS13において損傷箇所が映っているとして特定された撮像画像111の中から、1つが選択される。
【0062】
なお、ステップS22以降の処理は、ステップS21で選択された撮像画像111に対して画像の歪みを除去する処理が施された処理後の撮像画像111を用いて実行されることが望ましい。
【0063】
[ステップS22]損傷形状計算部140は、選択された撮像画像111に含まれる損傷箇所中の点を1つ選択する。このステップS22の処理により、撮像画像111における損傷箇所の位置が特定される。
【0064】
損傷箇所中の点は、次のようにして選択される。例えば、損傷形状計算部140は、選択された撮像画像111を表示装置に表示させ、表示された画面における損傷箇所の一点に対するオペレータの指示操作を受け付けることで、損傷箇所中の一点を選択する。また、
図5のステップS13において損傷箇所が映っている撮像画像111が画像処理によって特定された場合、その画像処理によって撮像画像111における損傷箇所の位置(2D座標)が特定されていることもある。その場合、損傷形状計算部140は、特定されている損傷箇所に含まれる1つの画素を、損傷箇所中の一点として選択してもよい。
【0065】
[ステップS23]損傷形状計算部140は、選択された撮像画像111についてのカメラ位置姿勢とカメラ70の内部パラメータと3Dモデルデータ113とに基づき、選択された損傷箇所の点に対応する、3Dモデル上の3D座標を算出する。この処理では、例えば、損傷形状計算部140は、ステップS22で選択された点を通る光軸(撮像画像111に対応する2D座標平面に直交する直線)が、構造物60の3Dモデルの表面と交差する点の3D座標を計算する。
【0066】
[ステップS24]損傷形状計算部140は、損傷箇所中の点の選択を終了するかを判定する。損傷形状計算部140は、損傷箇所中の他の点を選択する場合、ステップS22の処理を実行し、点の選択を終了する場合、ステップS25の処理を実行する。なお、損傷箇所中の点はできるだけ多くの数が選択されることが望ましい。
【0067】
[ステップS25]損傷形状計算部140は、ステップS23で計算された3D座標を基に、損傷箇所の3D形状を示す損傷形状データ114を作成する。損傷形状データ114は、3Dモデルを構成するポリラインまたはポリゴンのうち、複数のポリラインの組み合わせまたは複数のポリゴンの組み合わせによって表現される。また、損傷形状計算部140は、画像管理情報112に対し、ステップS21で選択された撮像画像111に映っている損傷箇所を示す識別情報として、作成した損傷形状データ114の識別情報を登録する。
【0068】
[ステップS26]損傷形状計算部140は、すでに作成済みの損傷形状データ114の中に、ステップS25で新たに作成された損傷形状データ114と損傷箇所の少なくとも一部が重複するものがあるかを判定する。この処理では、作成済みの損傷形状データ114と新たに作成された損傷形状データ114との間で、ポリラインまたはポリゴンの少なくとも1つが同一である場合、損傷箇所が重複すると判定される。損傷形状計算部140は、重複するデータがあった場合、ステップS27の処理を実行し、重複するデータがない場合、ステップS28の処理を実行する。
【0069】
[ステップS27]損傷形状計算部140は、ステップS26で損傷箇所が重複すると判定された2つの損傷形状データ114を、1つの損傷形状データ114に統合する。これにより、ひとまとまりの損傷箇所が1つの損傷形状データ114として登録されるようになる。また、このとき、ステップS25で画像管理情報112に対して登録された損傷箇所の識別情報は、統合された作成済みの損傷形状データ114を示す識別情報に書き替えられる。
【0070】
[ステップS28]損傷形状計算部140は、損傷箇所が映っている撮像画像111の選択を終了するかを判定する。損傷形状計算部140は、損傷箇所が映っている撮像画像111のうちステップS21で未選択のものがある場合、画像選択を続行すると判定して、ステップS21の処理を実行する。一方、損傷形状計算部140は、損傷箇所が映っているすべての撮像画像111をステップS21で選択済みの場合、画像選択を終了すると判定して、損傷形状計算処理を終了する。
【0071】
次に、
図5のステップS17に示した損傷画像の選択処理について説明する。
図7は、損傷画像の選択処理例を示す図である。損傷画像選択部240は、損傷箇所ごと、すなわち損傷形状データ114ごとに、次のような処理を実行する。
【0072】
損傷画像選択部240は、損傷形状データ114と、画像管理情報112内のカメラ位置姿勢およびカメラ70の内部パラメータとに基づいて、記憶部210内の撮像画像111の中から該当する損傷箇所が映っている撮像画像111を特定する。損傷画像選択部240は、特定された撮像画像111のそれぞれから損傷箇所が投影された領域を特定し、投影された領域の面積(投影面積)を計算する。損傷画像選択部240は、特定された撮像画像111の中から、損傷箇所の投影面積が最大のものを蓄積すべき損傷画像として選択し、画像蓄積部220に格納する。
【0073】
損傷形状データ114がポリラインの組み合わせによって表現される場合、損傷画像選択部240は、例えば、撮像画像111においてポリラインの各頂点が投影されている点の2D座標を計算する。損傷画像選択部240は、撮像画像111において、各頂点の投影点がすべて含まれる最も小さい矩形(すなわち、損傷箇所に外接する外接矩形)を作成し、作成された外接矩形の面積を損傷箇所の投影面積として計算する。
【0074】
図7の例では、構造物60上の損傷箇所61が映っている撮像画像111a,111bが特定されている。撮像画像111aでは、損傷箇所61の領域に外接する外接矩形1111a1が作成され、撮像画像111bでは、損傷箇所61の領域に外接する外接矩形111b1が作成される。そして、外接矩形111b1より外接矩形111a1の面積の方が大きいことから、損傷箇所61に対応する損傷画像として撮像画像111aが選択され、画像蓄積部220に蓄積される。
【0075】
また、損傷形状データ114がポリゴンの組み合わせによって表現される場合、損傷画像選択部240は、例えば、撮像画像111においてポリゴンの各頂点が投影されている点の2D座標を計算する。損傷画像選択部240は、計算された各投影点を直線で結ぶことで囲まれる領域を、損傷箇所が投影された領域として特定し、特定された領域の面積を損傷箇所の投影面積として計算する。損傷画像選択部240は、投影面積が最大の撮像画像111を損傷画像として選択する。
【0076】
なお、撮像画像111における、ポリラインまたはポリゴンの頂点の投影位置は、例えば以下の手順により算出可能である。ポリラインまたはポリゴンの頂点を示す3D座標を(Xc,Yc,Zc)とし、x=Xc/Zc,y=Yc/Zc,r2=x2+y2とする。このとき、撮像画像111における頂点の投影位置を示す2D座標(x’,y’)は、次の式(1),(2)によって算出される。
x’=x(1+k1r2+k2r4+k3r6)+(2p1xy+p2(2x2+r2))・・・(1)
y’=y(1+k1r2+k2r4+k3r6)+(p1(2y2+r2)+2p2xy)・・・(2)
なお、k1,k2,k3,p1,p2は、カメラ70の内部パラメータを示す。
【0077】
図8は、損傷画像の選択処理手順を示すフローチャートの例である。
[ステップS31]損傷画像選択部240は、損傷形状データ114を1つ選択する。 [ステップS32]損傷画像選択部240は、画像管理情報112に登録された損傷箇所の識別情報に基づき、記憶部210内の撮像画像111の中から、選択された損傷形状データ114に対応する損傷箇所が映っている撮像画像111を特定する。
【0078】
[ステップS33]損傷画像選択部240は、ステップS32で特定された撮像画像111のすべてについて、
図7で説明した手順により、撮像画像111における損傷箇所の投影面積を計算する。
【0079】
[ステップS34]損傷画像選択部240は、ステップS32で特定された撮像画像111の中から、ステップS33で計算された投影面積が最大のものを損傷画像として選択し、画像蓄積部220に格納して蓄積する。
【0080】
[ステップS35]損傷画像選択部240は、損傷形状データ114の選択を終了するかを判定する。損傷画像選択部240は、記憶部210内の損傷形状データ114のうちステップS31で未選択のものがある場合、損傷形状データ114の選択を続行すると判定して、ステップS31の処理を実行する。一方、損傷画像選択部240は、記憶部210内のすべての損傷形状データ114をステップS31で選択済みの場合、損傷形状データ114の選択を終了すると判定して、損傷画像の選択処理を終了する。
【0081】
図9は、損傷箇所全体を含む撮像画像が存在しない場合における損傷画像の選択処理例を示す図である。
図8のステップS32では、損傷箇所全体が映っている撮像画像111が特定される。ただし、損傷箇所の大きさや撮像時の状況によっては、1つの損傷箇所全体が映っている撮像画像111が存在しない場合があり得る。その場合、例えば、次のような手順で損傷画像が選択される。
【0082】
図9の例では、構造物60の3Dモデル60a上に、特徴点F1~F6を通るポリラインによって表現される線状の損傷箇所62が存在するものとする。すなわち、損傷箇所62を示す損傷形状データ114は、ポリラインF1-F2,F2-F3,F3-F4,F4-F5,F5-F6によって表現される。
【0083】
また、記憶部210内の撮像画像111から、損傷箇所62が映っている撮像画像P1~P3が特定されたとする。ここで、撮像画像P1には特徴点F1~F3が投影されており、撮像画像P2には特徴点F2~F5が投影されており、撮像画像P3には特徴点F3~F6が投影されているとする。このように、撮像画像P1~P3のいずれにも損傷箇所62の一部のみが映っているものとする。
【0084】
この場合、損傷画像選択部240は、1つの損傷箇所62に対して複数の損傷画像を選択することを許容する。その際に、損傷画像選択部240は、できるだけ少ない数の損傷画像によって損傷箇所62の全体をカバーできるように(損傷箇所62の全体が撮像範囲に含まれるように)、損傷画像を選択する。
【0085】
具体的には、損傷画像選択部240は、撮像画像P1~P3のそれぞれについて、画像内に投影されている特徴点を判別する。この処理では、上記の式(1),(2)を用いて、撮像画像P1~P3におけるポリライン上の各特徴点(頂点)の2D座標を計算することで、特徴点F1~F6のうち画像内に投影されている特徴点が判別される。あるいは、
図5のステップS12においてSfMにより3Dモデルが作成されたときに各撮像画像111から抽出された特徴点の点群データを利用することもできる。すなわち、損傷画像選択部240は、このときに撮像画像P1~P3から抽出された特徴点と、損傷箇所62のポリライン上の特徴点とを比較することで、撮像画像P1~P3のそれぞれに対して投影されている特徴点を判別できる。
【0086】
損傷画像選択部240は次に、特徴点の判別結果から、撮像画像P1~P3のそれぞれに投影されているポリラインを判別する。損傷画像選択部240は、この判別結果に基づき、撮像画像P1~P3の中から、少ない数の損傷画像によって損傷箇所62に対応するポリライン全体を網羅できるように損傷画像を選択する。これによって、蓄積される損傷画像の枚数を減らし、その蓄積データ量を削減することができる。
【0087】
図9に示すテーブル115は、撮像画像P1~P3のそれぞれに投影されている特徴点およびポリラインをリスト化したものである。損傷画像選択部240は例えば、このようなテーブル115を作成し、テーブル115に基づいて損傷画像を選択する。テーブル115の例によれば、撮像画像P1にはポリラインF1-F2,F2-F3が投影され、撮像画像P3には残りのポリラインF3-F4,F4-F5,F5-F6がすべて投影されている。このように、2つの撮像画像P1,P3によって損傷箇所62に対応するポリライン全体が網羅されるので、撮像画像P1,P3が損傷画像として選択され、画像蓄積部220に蓄積される。
【0088】
次に、
図5のステップS18に示した非損傷画像の選択処理について説明する。まず、
図10~
図13を用いて非損傷画像の選択についての第1の処理例を説明する。
図10は、非損傷画像の選択についての第1の処理例の概要を説明するための図である。
【0089】
前述のように、非損傷画像選択部250は、記憶部210内の撮像画像111のうち、蓄積画像として選択済みのものを除く撮像画像111の中から、蓄積すべき非損傷画像を選択して画像蓄積部220に蓄積する。このとき、非損傷画像選択部250は、損傷画像とできるだけ少ない数の非損傷画像とによる撮像範囲が、構造物60の表面におけるできるだけ大きな面積をカバーできるように、非損傷画像が選択される。また、非損傷画像選択部250は、構造物60における画像による撮像範囲を、3Dモデルデータ113に基づき、構造物60の3Dモデルにおける撮像範囲として算出する。
【0090】
非損傷画像選択部250は、1つ以上の蓄積画像が選択済みであるときに、記憶部210内の撮像画像111のうち蓄積画像として選択済みのものを除く残りの撮像画像111の中から、次の蓄積画像(非損傷画像)として選択する候補画像を1つずつ選択する。非損傷画像選択部250は、3Dモデルの表面領域のうち、選択済みの蓄積画像による撮像範囲と、候補画像による撮像範囲の両方によってカバーされるカバー範囲の合計面積を算出する。これとともに、非損傷画像選択部250は、このカバー範囲の周囲長を算出する。
【0091】
そして、非損傷画像選択部250は、周囲長に対する合計面積の比率を評価値として算出し、評価値が最も高い候補画像を非損傷画像(すなわち、新たな蓄積画像)として選択する。これにより、候補画像を非損傷画像として選択した場合に、合計面積ができるだけ大きく、かつ、周囲長ができるだけ短くなるような候補画像が、非損傷画像として選択される。
【0092】
図10の例では、1つ以上の選択済みの蓄積画像による撮像範囲によって、3Dモデル60aにおける領域81がカバーされているとする。ここで言う選択済みの蓄積画像には、少なくとも損傷画像が含まれる。1つ以上の非損傷画像が選択済みの場合、選択済みの蓄積画像には、損傷画像と選択済みの非損傷画像とが含まれる。
【0093】
一方、
図10の例では、蓄積画像として選択されていない3つの撮像画像111が存在するものとする。
図10(A)に示すように、第1の撮像画像111による撮像範囲によって、3Dモデル60aにおける領域82aがカバーされるとする。また、
図10(B)に示すように、第2の撮像画像111による撮像範囲によって、3Dモデル60aにおける領域82bがカバーされるとする。さらに、
図10(C)に示すように、第3の撮像画像111による撮像範囲によって、3Dモデル60aにおける領域82cがカバーされるとする。
【0094】
図10(A)と
図10(B)の各ケースを比較した場合、
図10(A)のケースでは、領域81,82aによってカバーされるカバー範囲の合計面積は大きく、そのカバー範囲の周囲長も長い。一方、
図10(B)のケースでは、領域81,82bによってカバーされるカバー範囲の合計面積は小さく、そのカバー範囲の周囲長も短い。なお、
図10(B)のように領域81,82bの一部が重複している場合には、領域81,82bによるカバー範囲とは、領域81,82bを結合した範囲を示す。
【0095】
また、
図10(C)のケースでは、領域81,82cによってカバーされるカバー範囲の合計面積は、
図10(A)での合計面積とは同等であり、
図10(B)での合計面積より大きい。また、領域81,82cによるカバー範囲の周囲長は、
図10(B)での周囲長よりは長いものの、
図10(A)での周囲長よりは短い。
図10(A)との比較の点では、
図10(A)では領域82aの4辺の分だけ周囲長が増加するのに対し、
図10(C)では領域82cのほぼ3辺の分しか周囲長が増加しない。その結果、周囲長に対する合計面積の比率という評価値は、
図10(C)のケースで最も高くなり、領域82cに対応する第3の撮像画像111が非損傷画像として選択される。
【0096】
以上の処理によれば、蓄積画像として選択済みの撮像画像111による撮像範囲に、新たに追加される候補画像による撮像範囲を追加した場合に、追加される撮像範囲によるカバー範囲の増加量が大きく、かつ、撮像範囲間の一部が重複するような候補画像が、非損傷画像として選択される。少ない数の画像によって3Dモデルの表面全体をカバーするためには、新たな非損傷画像の面積が大きく、なおかつ、その非損傷画像が既存のカバー範囲と重複することが望ましい。ただし、蓄積画像全体で見たときには、隣接する蓄積画像間で重複する面積は小さくなることが望ましい。合計面積と周囲長による上記条件で非損傷画像が選択されることで、全体として、隣接してその一部が重複する蓄積画像間の重複面積が小さく、かつ、大きい面積の蓄積画像が選択されるようになる。これにより、少ない数の非損傷画像によって3Dモデルの表面全体をカバーできるようになり、非損傷画像の蓄積データ量を削減できる。
【0097】
図11は、ポリゴンを用いた評価値の算出例を示す図である。
非損傷画像選択部250は、構造物60における画像による撮像範囲を、構造物60の3Dモデルデータ113を用いて算出する。3Dモデルデータ113のポリゴンが用いられる場合、構造物60におけるある画像による撮像範囲は、3Dモデル上のポリゴンのうち、その画像に映っている(投影されている)ポリゴンによって示される。
【0098】
図11に示す領域83は、構造物60の3Dモデルにおける一部を示している。領域83には、ポリゴンG1~G16が含まれている。また、ポリゴンG1~G16のうち、ハッチングで示したポリゴンG6~G8,G11~G13が、蓄積画像として選択済みの撮像画像111による撮像範囲に含まれているとする。
【0099】
このとき、非損傷画像選択部250は、撮像範囲に含まれており、かつ辺(頂点間を結ぶ直線)が隣接するポリゴン同士を結合する。
図11の例では、ポリゴンG6~G8を結合することで領域83aが生成され、ポリゴンG11~G13を結合することで領域83bが生成される。
【0100】
ここで、蓄積画像として選択されていない撮像画像111cが存在し、撮像画像111cによる撮像範囲にポリゴンG3~G5が含まれているとする。非損傷画像選択部250は、撮像画像111cを非損傷画像として追加した場合におけるカバー領域の合計面積Sおよび周囲長Lを算出する。すなわち、撮像画像111cが非損傷画像として追加された場合、3Dモデルにおいて、ポリゴンG3~G8,G11~S13を結合した領域83cが撮像範囲としてカバーされる。このため、非損傷画像選択部250は、領域83cの合計面積Sと周囲長Lを計算し、(S/L)を評価値Eとして計算する。
【0101】
以上の
図11に示した処理では、各ポリゴンの面積や周囲長は同一であることから、撮像範囲によってカバーされる範囲の面積を、撮像範囲に含まれるポリゴンの数によって容易に計算できる。また、撮像範囲によってカバーされる範囲の周囲長を、撮像範囲に含まれるポリゴンの位置関係に基づいて容易に計算できる。
【0102】
図12は、非損傷画像の選択についての第1の処理例を示すフローチャートである。
[ステップS41]非損傷画像選択部250は、記憶部210内の撮像画像111のそれぞれに映っているポリラインまたはポリゴンを特定する。この処理では、ポリラインまたはポリゴンの頂点の3D座標と、撮像画像111の内部パラメータとに基づき、上記の式(1),(2)を用いて、撮像画像111における頂点の2D座標が求められる。頂点の2D座標が撮像画像111の範囲内の座標として算出された場合、その頂点が撮像画像111に映っていると判定される。非損傷画像選択部250は、撮像画像111ごとに、撮像画像111に映っているポリラインまたはポリゴンの情報を画像管理情報112に登録する。
【0103】
[ステップS42]非損傷画像選択部250は、現時点で蓄積画像(損傷画像または非損傷画像)として選択されていない残りの撮像画像111のそれぞれについて、次のような処理を実行する。非損傷画像選択部250は、撮像画像111を非選択画像として追加した場合の3Dモデルにおける撮像範囲と、選択済みの蓄積画像による撮像範囲とによってカバーされるカバー範囲の合計面積と周囲長を計算する。
【0104】
[ステップS43]非損傷画像選択部250は、残りの撮像画像111のそれぞれについて、ステップS42での計算結果に基づき、(合計面積/周囲長)を評価値として計算する。
【0105】
[ステップS44]非損傷画像選択部250は、残りの撮像画像111のうち評価値が最大の撮像画像111を新たな非損傷画像として選択し、画像蓄積部220に蓄積する。
[ステップS45]非損傷画像選択部250は、現時点でのすべての蓄積画像による撮像範囲によってカバーされる範囲のカバー率が、所定の閾値以上かを判定する。このカバー率は、例えば、構造物60の3Dモデル全体における表面の面積(すべてのポリゴンの合計面積)に対する、現時点での蓄積画像による撮像範囲に含まれるポリゴンの合計面積の比率として計算される。非損傷画像選択部250は、カバー率が閾値未満の場合、ステップS42の処理を実行し、カバー率が閾値以上の場合、非損傷画像の選択処理を終了する。
【0106】
図13は、非損傷画像の選択を効率化するための処理例を示す図である。
図12のステップS42では、残りの撮像画像111のすべてについて、カバー範囲の合計面積と周囲長が計算されていた。しかし、非損傷画像選択部250は、選択済みの蓄積画像による撮像範囲と、残りの撮像画像111による撮像範囲との位置関係によって、残りの撮像画像111の中から非損傷画像の候補(合計面積と周囲長の計算対象)を絞り込んでもよい。
【0107】
例えば、
図13では、構造物60の3Dモデルにおける領域83のうち、ポリゴンG6~G11が選択済みの蓄積画像による撮像範囲に含まれているとする。このとき、3Dモデルにおけるカバー範囲には、ポリゴンG6~G8を結合した結合領域83dと、ポリゴンG9~G11を結合した結合領域83eという2つの結合領域が含まれている。この状態から、第1、第2の撮像画像111を非損傷画像の候補とするかを判定するケースを考える。
【0108】
第1の撮像画像111による撮像範囲には、ポリゴンG2~G4が含まれている。この第1の撮像画像111が非損傷画像として選択されたと仮定すると、ポリゴンG2~G4,G6~G11がカバーされるようになる。ただし、このカバー範囲には、ポリゴンG2~G4を結合した結合領域83fという、上記の結合領域83d,83eとは分離された新たな結合領域が増加する。
【0109】
一方、第2の画像による撮像範囲にはポリゴンG3~G5が含まれているとする。この第2の撮像画像111が非損傷画像として選択されたと仮定すると、ポリゴンG3~G11がカバーされるようになる。また、このカバー範囲には、上記の結合領域83eと、ポリゴンG3~G8を結合した結合領域83gという2つの結合領域が含まれ、第2の撮像画像111の追加前から結合領域が増加しない。
【0110】
前述の評価値は、新たな非損傷画像を追加した場合にカバー範囲の周囲長が小さいほど高くなる。しかし、
図13において第1の撮像画像111を追加したケースのように、その追加によってカバー範囲に含まれる互いに分離した領域の数が増加する場合には、カバー範囲の周囲長が長くなる可能性が高い。そこで、非損傷画像選択部250は、第2の撮像画像111のように、撮像画像111の追加後に互いに分離した領域の数が増加する場合には、その撮像画像111を非損傷画像の候補から除外し、カバー範囲の合計面積と周囲長の計算処理をスキップする。これにより、非損傷画像の選択処理負荷を軽減できる。
【0111】
ただし、非損傷画像選択部250は、領域数を増加させずに非損傷画像を追加できない場合には、例えば、領域数の増加数が少なくなるような撮像画像111のみを非損傷画像の候補として選択して、カバー領域の合計面積および周囲長と評価値の算出を行う。
【0112】
次に、
図14、
図15を用いて非損傷画像の選択についての第2の処理例を説明する。非損傷画像選択部250は、次のような手順で非損傷画像を選択してもよい。
図14は、非損傷画像の選択についての第2の処理例の概要を説明するための図である。
【0113】
第2の処理例では、非損傷画像選択部250は、構造物60の3Dモデルを複数の部分領域に分割する。部分領域は、例えば、3Dモデルのサーフェス単位で分割される。非損傷画像選択部250は、部分領域ごとに、部分領域を最小の数の撮像画像111でカバーできるような(撮像範囲に含められるような)撮像画像111の組み合わせを計算し、その組み合わせに含まれる撮像画像111を非損傷画像として選択する。ここで、3Dモデルの表面全体を最小の数でカバーできるような撮像画像111の組み合わせを計算すると、計算量が膨大になる。このような組み合わせを部分領域単位で計算することで、計算量を抑制できる。
【0114】
図14の例では、構造物60の3Dモデル60aにおける部分領域84を撮像範囲に含む撮像画像111として、画像P11~P15が存在したとする。また、テーブル91では、画像P11~P15を用いて部分領域84における所定のカバー率以上の領域をカバーできる画像の組み合わせを示している。ここでは例として、カバー率の閾値を95%としている。テーブル91に示すように、このような組み合わせとして、画像P11~P15の組み合わせと、画像P11,P13~P15の組み合わせと、画像P11,P12,P14,P15の組み合わせとが抽出されたとする。
【0115】
この場合、非損傷画像選択部250は、カバー率の高い組み合わせの中から、画像数が最小となる組み合わせを選択する。テーブル91の例では、画像P11,P13~P15の組み合わせが選択される。すなわち、画像P11,P13~P15が非損傷画像として選択される。
【0116】
図15は、非損傷画像の選択についての第2の処理例を示すフローチャートである。
[ステップS51]非損傷画像選択部250は、
図12のステップS41と同様の手順により、記憶部210内の撮像画像111のそれぞれに映っているポリラインまたはポリゴンを特定する。非損傷画像選択部250は、撮像画像111ごとに、撮像画像111に映っているポリラインまたはポリゴンの情報を画像管理情報112に登録する。
【0117】
[ステップS52]非損傷画像選択部250は、3Dモデルデータ113に基づき、構造物60の3Dモデルにおける部分領域を1つ選択する。
[ステップS53]非損傷画像選択部250は、記憶部210内の撮像画像111の中から、選択された部分領域を撮像範囲に含む撮像画像111を特定する。この処理では、ステップS51で画像管理情報112に登録された情報に基づき、部分領域に含まれるポリラインまたはポリゴンが1つ以上映っている撮像画像111が特定される。部分領域に損傷箇所が含まれる場合には、この損傷箇所に対応する損傷画像も特定される。
【0118】
[ステップS54]非損傷画像選択部250は、ステップS53で特定された撮像画像111についての組み合わせのそれぞれについて、部分領域におけるカバー率を計算する。この処理では、ステップS53で損傷画像が特定された場合、この損傷画像を必ず含むすべての組み合わせについてカバー率が計算される。カバー率は、部分領域のうち、組み合わせに含まれる各撮像画像111による撮像範囲によってカバーされる領域の割合として計算される。
【0119】
[ステップS55]非損傷画像選択部250は、ステップS54でカバー率が計算された組み合わせの中から、カバー率が所定の閾値以上で、かつ、画像数が最小となる組み合わせを選択する。非損傷画像選択部250は、選択した組み合わせに含まれる撮像画像111(ただし、損傷画像を除く)を非損傷画像として選択し、画像蓄積部220に蓄積する。
【0120】
[ステップS56]非損傷画像選択部250は、部分領域の選択を終了するかを判定する。非損傷画像選択部250は、3Dモデルに含まれる部分領域の中にステップS52で未選択の部分領域がある場合、部分領域の選択を続行すると判定し、ステップS52の処理を実行する。一方、非損傷画像選択部250は、ステップS52ですべての部分領域を選択済みの場合、部分領域の選択を終了すると判定して、非損傷画像の選択処理を終了する。
【0121】
なお、以上の
図15の処理によれば、部分領域ごとに、カバー率が閾値以上になるように蓄積画像が選択される。これにより、結果的に、3Dモデルの表面における一定割合以上の領域がカバーされるように蓄積画像が選択される。
【0122】
<変形例>
次に、第2の実施の形態における処理の一部を変形した変形例について説明する。
図16は、第1の変形例について説明するための図である。一般的に、カメラによる撮像画像では、端部に近くなるほど歪みが大きくなる。そこで、記憶部110,210に記憶された撮像画像111を用いた処理では、撮像画像111の画像領域の全体を用いず、その中心部の所定領域だけを用いてもよい。
【0123】
例えば、損傷画像選択部240は、
図8のステップS33において、撮像画像111における中心部の所定領域における損傷箇所の投影面積を計算する。これにより、損傷箇所が鮮明に映った撮像画像111を損傷画像として選択できる。
【0124】
図16の例では、撮像画像111dにポリラインF11-F12,F12-F13,F13-F14,F14-F15によって表現される損傷箇所が映っている。また、撮像画像111dの中心部には領域111d1が設定されている。この領域111d1には特徴点F12~F14は含まれるものの、特徴点F11,F15は含まれない。この場合、損傷画像選択部240は、撮像画像111dにポリラインF11-F12,F14-F15は映っていないので、撮像画像111dには損傷箇所の全体が映っていないと判定する。そして、損傷画像選択部240は、
図9に示したように、損傷箇所の全体をカバーできるように複数の撮像画像111を損傷画像として選択する。
【0125】
また、非損傷画像選択部250は、構造物60の3Dモデルに対する撮像画像111によるカバー範囲を計算する際、撮像画像111における中心部の所定領域によるカバー範囲を計算する。これにより、構造物60が鮮明に映った撮像画像111を非損傷画像としえ選択できる。
【0126】
なお、以上のように撮像画像111の中心部の所定領域だけを処理に用いる方法としては、例えば、画像入力部120が撮像画像111を記憶部110に格納する際に、撮像画像111における中心部の所定領域のみをトリミングして撮像画像111を縮小してもよい。
【0127】
図17は、第2の変形例について説明するための図である。カメラによる撮像画像では、撮像対象面の法線に対するカメラ方向の傾きが大きいほど、撮像画像によって撮像対象を確認しにくい。そこで、蓄積サーバ200は、構造物60の3Dモデルの法線に対するカメラ方向の傾きが一定以上である撮像画像を、損傷画像や非損傷画像として選択しないようにしてもよい。
【0128】
例えば、損傷画像選択部240は、
図8のステップS32において、損傷箇所が映っている撮像画像111を特定する。このとき、損傷画像選択部240は、特定された撮像画像111の中から、3Dモデルの法線に対するカメラ方向の傾きが一定以上である撮像画像111を除外する。これにより、カメラ方向の傾きが大きい撮像画像111が損傷画像として選択されなくなる。その結果、損傷箇所を確認しやすい撮像画像111を損傷画像として選択できるようになる。
【0129】
また、非損傷画像選択部250は、3Dモデルの法線に対するカメラ方向の傾きが一定以上である撮像画像111を、
図12や
図15の処理から除外する。あるいは、非損傷画像選択部250は、
図12のステップS44において、評価値が最大で、かつ、3Dモデルの法線に対するカメラ方向の傾きが一定角度未満である撮像画像111を、非損傷画像として選択してもよい。いずれの場合でも、カメラ方向の傾きが大きい撮像画像111が非損傷画像として選択されなくなる。これにより、構造物60の状態を確認しやすい撮像画像111を非損傷画像として選択できるようになる。また、3Dモデルにおけるカバー率の計算精度を向上させることもできる。
【0130】
カメラ方向の傾きは、例えば、次のように計算できる。蓄積サーバ200は、3Dモデルの面に対する法線の逆ベクトルを計算する。この逆ベクトルは、撮像画像の中心からのカメラ光軸が3Dモデルを通る位置における法線の逆ベクトルであることが望ましい。また、蓄積サーバ200は、撮像画像の光軸ベクトルを計算する。撮像画像の光軸ベクトルは、画像管理情報112に含まれるカメラの方向(姿勢)から求められる。そして、蓄積サーバ200は、逆ベクトルと光軸ベクトルと内積を計算し、内積が所定の閾値以下の場合、傾きが大き過ぎると判断して、撮像画像を蓄積画像(損傷画像または非損傷画像)の候補から除外する。
【0131】
図17の例では、3Dモデル60aの法線の逆ベクトルV0と、撮像画像111eの光軸ベクトルV1と、撮像画像111fの光軸ベクトルV2が求められている。そして、逆ベクトルV0と光軸ベクトルV1との内積、および、逆ベクトルV0と光軸ベクトルV2との内積が計算される。前者の計算結果が閾値より大きく、後者の計算結果が閾値以下であったとすると、撮像画像111eは蓄積画像の候補に含められ、撮像画像111fは蓄積画像の候補から除外される。
【0132】
さらに、第2の実施の形態における処理の一部を次のように変形することもできる。
損傷画像や非損傷画像として、次のような画質評価値に基づいて画質が高いと判断される撮像画像111が選択されてもよい。画質評価値としては、例えば、コントラスト評価値、輝度勾配評価値、白飛び・黒沈み評価値を用いることができる。コントラスト評価値は、撮像画像111内の全画素について、画素値と、全画素における画素値の中間値との差分の絶対値を求め、これらの絶対値を合計することで算出される。輝度勾配は、撮像画像111内の全画素について、画素値と、その画素の周囲画素の画素値との差分の絶対値を画素の輝度勾配として求め、これらの絶対値を合計することで算出される。白飛び・黒沈み評価値は、撮像画像111内の画素についての輝度ヒストグラムから、所定の上限閾値と下限閾値との間の画素値を有する画素の数の全画素数に対する比率を求めることで算出される。
【0133】
これらの画質評価値は、例えば次のように利用可能である。損傷画像選択部240は、
図8のステップS34において、投影面積が大きい順に所定数の撮像画像111を選択する。損傷画像選択部240は、選択された撮像画像111の中から画質評価値が最も高い画像を損傷画像として選択する。また、非損傷画像選択部250は、
図12のステップS44において、評価値が大きい順に所定数の撮像画像111を選択する。非損傷画像選択部250は、選択された撮像画像111の中から画質評価値が最も高い画像を非損傷画像として選択する。さらに、非損傷画像選択部250は、
図15のステップS55において、条件を満たす撮像画像111の組み合わせが複数組抽出された場合、各組み合わせに含まれる撮像画像111の画質評価値を計算する。非損傷画像選択部250は、例えば、画質評価値の平均値が最も高い組み合わせ、あるいは、画質評価値の最小値が最も高い組み合わせを選択して、その組み合わせに含まれる撮像画像111を非損傷画像として選択する。
【0134】
なお、上記の各実施の形態に示した装置(例えば、情報処理装置10、点検サーバ100、蓄積サーバ200)の処理機能は、コンピュータによって実現することができる。その場合、各装置が有すべき機能の処理内容を記述したプログラムが提供され、そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記憶装置には、ハードディスク装置(HDD)、磁気テープなどがある。光ディスクには、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスク(Blu-ray Disc:BD、登録商標)などがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。
【0135】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたDVD、CDなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【0136】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムまたはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムにしたがった処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムにしたがった処理を実行することもできる。また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムにしたがった処理を実行することもできる。
【符号の説明】
【0137】
1a,1b,1-1~1-5 画像
2 構造物
2a 3Dモデル
3 カメラ
4 損傷箇所
10 情報処理装置
11 記憶部
12 処理部