画像処理装置、画像処理方法、およびプログラム
【課題】処理時間を低減することができる画像処理装置、画像処理方法、およびプログラムを提供する。
【解決手段】モニタ22は、計測対象物の画像と、計測対象物に対応する物体であって予め算出された3次元形状を有する物体の画像とを表示する。CPU34cは、リモコン23を介して入力される指示に基づいて、計測対象物の画像上の第1の点と物体の画像上の第2の点とを指定する。CPU34cは、第1の点を基準とする第1の図形と、第2の点を基準とする第2の図形との幾何学計算を行い、幾何学計算の結果に基づいて、計測対象物の画像と物体の画像との少なくとも一方の姿勢または位置を調整する。CPU34cは、姿勢または位置が調整された後、リモコン23を介して入力される指示に基づいて指定された計測位置に対応する物体上の空間座標を算出し、算出した空間座標に基づいて、物体のサイズを算出する。
【解決手段】モニタ22は、計測対象物の画像と、計測対象物に対応する物体であって予め算出された3次元形状を有する物体の画像とを表示する。CPU34cは、リモコン23を介して入力される指示に基づいて、計測対象物の画像上の第1の点と物体の画像上の第2の点とを指定する。CPU34cは、第1の点を基準とする第1の図形と、第2の点を基準とする第2の図形との幾何学計算を行い、幾何学計算の結果に基づいて、計測対象物の画像と物体の画像との少なくとも一方の姿勢または位置を調整する。CPU34cは、姿勢または位置が調整された後、リモコン23を介して入力される指示に基づいて指定された計測位置に対応する物体上の空間座標を算出し、算出した空間座標に基づいて、物体のサイズを算出する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、計測対象物の画像を処理して計測対象物のサイズを計測する画像処理装置、画像処理方法、およびプログラムに関する。
【背景技術】
【0002】
従来、内視鏡等の観察用治具を使用して、ジェットエンジン内のブレード等の計測が行われている。特許文献1には、ブレード等の計測に適した技術が記載されている。この特許文献1に記載された技術では、被写体を撮像した被写体画像と、コンピュータグラフィックス(CG)により生成したCG画像とをモニタに表示し、CG画像における物体の状態と被写体画像における被写体の状態とが一致するように、ユーザの指示に基づいてCG画像を変更し、計測を行いたい部分に対してCG画像上で計測を行うことが可能である。
【0003】
しかし、特許文献1に記載された技術では、被写体の見え方が異なる複数の被写体画像を切り替えながら各被写体画像に対して計測を行う場合、被写体画像を切り替えるたびに、CG画像における物体の状態を被写体画像における被写体の状態に一致させる操作が必要となる。このため、ジェットエンジン内に周期的に配置された複数のブレードの計測を行う場合、上記の操作が頻繁に発生し、手間がかかるという問題がある。
【0004】
これに対して、特許文献2には、被写体を撮像して得られた2次元画像と、CAD(Computer Aided Design)を利用して得られたデータに基づく3Dオブジェクトとを自動的にマッチング(パターンマッチング)させることで、上記の手間の問題を解決した技術が記載されている。特許文献2に記載された技術では、まず、3Dオブジェクトを仮想的な複数の視点から観察した場合に、それぞれの視点において観察される3Dオブジェクトの投影図を生成し、複数の投影図をまとめて2Dモデルとして保存しておく。そして、2次元画像と、生成した2Dモデルとの間でマッチングを行い、2Dモデルとの類似度が 最も高い投影図を検索し、その投影図が生成されたときの視点の位置をもとに、2次元画像に写っている被写体と、2次元画像を撮像したカメラとの相対位置を算出する。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平3−102202号公報
【特許文献2】米国特許出願公開第2009/0096790号明細書
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献2に記載された技術では、2次元画像と3Dオブジェクトの投影図(2Dモデル)とを用いて、画像から検出されるエッジをベースとした画像処理によるマッチングを行うことで、類似度を算出していた。この方法によると、エッジをベースとした画像処理を行うため、マッチングに必要な処理時間が長かった。また、大量の投影図のそれぞれに対して画像処理を行うことになるので、マッチングに必要な処理時間が膨大となっていた。
【0007】
本発明は、上述した課題に鑑みてなされたものであって、処理時間を低減することができる画像処理装置、画像処理方法、およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明は、上記の課題を解決するためになされたもので、計測対象物の画像と、前記計測対象物に対応する物体であって予め算出された3次元形状を有する前記物体の画像とを表示する表示部と、入力装置を介して入力される指示に基づいて、前記計測対象物の画像上の第1の点と前記物体の画像上の第2の点とを指定する指定部と、前記第1の点を基準とする第1の図形と、前記第2の点を基準とする第2の図形との幾何学計算を行う計算部と、前記幾何学計算の結果に基づいて、前記計測対象物の画像と前記物体の画像との少なくとも一方の姿勢または位置を調整する調整部と、前記姿勢または前記位置が調整された後、入力装置を介して入力される指示に基づいて指定された計測位置に対応する前記物体上の空間座標を算出し、算出した空間座標に基づいて、前記物体のサイズを算出する計測部と、を備えたことを特徴とする画像処理装置である。
【0009】
また、本発明は、計測対象物の画像と、前記計測対象物に対応する物体であって予め算出された3次元形状を有する前記物体の画像とを表示する表示部と、入力装置を介して入力される指示に基づいて、前記計測対象物の画像上の第1の点を指定する指定部と、前記第1の点を基準とする第1の図形と、前記物体の画像と関連付けて記録されている第2の点を基準とする第2の図形との幾何学計算を行う計算部と、前記幾何学計算の結果に基づいて、前記計測対象物の画像と前記物体の画像との少なくとも一方の姿勢または位置を調整する調整部と、前記姿勢または前記位置が調整された後、入力装置を介して入力される指示に基づいて指定された計測位置に対応する前記物体上の空間座標を算出し、算出した空間座標に基づいて、前記物体のサイズを算出する計測部と、を備えたことを特徴とする画像処理装置である。
【0010】
また、本発明の画像処理装置において、前記第1の点および前記第2の点は、入力装置を介して入力される指示に基づいて指定された3点以上の点を含むことを特徴とする。
【0011】
また、本発明の画像処理装置において、前記計算部は、前記第1の点の指定された順番と、前記第2の点の指定された順番とに基づいて、前記第1の点と前記第2の点とを対応付けて前記幾何学計算を行うことを特徴とする。
【0012】
また、本発明の画像処理装置において、前記計算部は、前記第1の点を基準とする平面上の第1の図形と、前記第2の点に対応する前記物体の空間上の点を基準とする空間上の第2の図形との幾何学計算を行うことを特徴とする。
【0013】
また、本発明の画像処理装置において、前記計算部は、前記平面上の第1の図形と、前記空間上の第2の図形を前記平面に投影した第3の図形との幾何学計算を行うことを特徴とする。
【0014】
また、本発明の画像処理装置において、前記指定部はさらに、前記第1の点を指定する場合に、前記物体の画像の透過率を、前記第2の点を指定する場合の前記物体の画像の透過率よりも大きな透過率に設定することを特徴とする。
【0015】
また、本発明の画像処理装置において、前記表示部は、前記計測対象物の画像と前記物体の画像とを表示した後、前記幾何学計算が終了するまで、前記計測対象物の画像と前記物体の画像の姿勢および位置を維持し、前記幾何学計算が終了した後、前記姿勢または前記位置が調整された前記計測対象物の画像と前記物体の画像を再表示することを特徴とする。
【0016】
また、本発明は、計測対象物の画像と、前記計測対象物に対応する物体であって予め算出された3次元形状を有する前記物体の画像とを表示部が表示するステップと、入力装置を介して入力される指示に基づいて、指定部が前記計測対象物の画像上の第1の点と前記物体の画像上の第2の点とを指定するステップと、前記第1の点を基準とする第1の図形と、前記第2の点を基準とする第2の図形との幾何学計算を計算部が行うステップと、前記幾何学計算の結果に基づいて、調整部が前記計測対象物の画像と前記物体の画像との少なくとも一方の姿勢または位置を調整するステップと、前記姿勢または前記位置が調整された後、計測部が、入力装置を介して入力される指示に基づいて指定された計測位置に対応する前記物体上の空間座標を算出し、算出した空間座標に基づいて、前記物体のサイズを算出するステップと、を備えたことを特徴とする画像処理方法である。
【0017】
また、本発明の画像処理方法において、前記第1の点および前記第2の点は、入力装置を介して入力される指示に基づいて指定された3点以上の点を含み、前記計算部は、前記第1の点の指定された順番と、前記第2の点の指定された順番とに基づいて、前記第1の点と前記第2の点とを対応付けて前記幾何学計算を行うことを特徴とする。
【0018】
また、本発明は、計測対象物の画像と、前記計測対象物に対応する物体であって予め算出された3次元形状を有する前記物体の画像とを表示する表示部と、入力装置を介して入力される指示に基づいて、前記計測対象物の画像上の第1の点と前記物体の画像上の第2の点とを指定する指定部と、前記第1の点を基準とする第1の図形と、前記第2の点を基準とする第2の図形との幾何学計算を行う計算部と、前記幾何学計算の結果に基づいて、前記計測対象物の画像と前記物体の画像との少なくとも一方の姿勢または位置を調整する調整部と、前記姿勢または前記位置が調整された後、入力装置を介して入力される指示に基づいて指定された計測位置に対応する前記物体上の空間座標を算出し、算出した空間座標に基づいて、前記物体のサイズを算出する計測部と、としてコンピュータを機能させるためのプログラムである。
【発明の効果】
【0019】
本発明によれば、第1の図形と第2の図形との幾何学計算を行い、幾何学計算の結果に基づいて、計測対象物の画像と物体の画像との少なくとも一方の姿勢または位置を調整することによって、処理時間を低減することができる。
【図面の簡単な説明】
【0020】
【図1】本発明の一実施形態によるブレード検査システムの構成を示すブロック図である。
【図2】本発明の一実施形態によるブレード検査システムが備える内視鏡装置の構成を示すブロック図である。
【図3】本発明の一実施形態によるブレード検査システム(変形例)の構成を示すブロック図である。
【図4】本発明の一実施形態によるブレード検査システム(変形例)の構成を示すブロック図である。
【図5】本発明の一実施形態によるブレード検査システム(変形例)が備えるPCの構成を示すブロック図である。
【図6】本発明の一実施形態における3D計測ソフトの画面を示す参考図である。
【図7】本発明の一実施形態における3Dオブジェクトとカメラポーズの関係を示す参考図である。
【図8】本発明の一実施形態における3Dオブジェクトとカメラポーズの関係を示す参考図である。
【図9】本発明の一実施形態における3Dオブジェクトとカメラポーズの関係を示す参考図である。
【図10】本発明の一実施形態における3Dオブジェクトとカメラポーズの関係を示す参考図である。
【図11】本発明の一実施形態における3D計測ソフトによる動作の手順を示すフローチャートである。
【図12】本発明の一実施形態における3D計測ソフトによる動作の手順を示すフローチャートである。
【図13】本発明の一実施形態におけるカメラポーズの初期値を説明するための参考図である。
【図14】本発明の一実施形態におけるカメラポーズの初期値を説明するための参考図である。
【図15】本発明の一実施形態における3D計測ソフトによる動作の手順を示すフローチャートである。
【図16】本発明の一実施形態におけるカメラポーズ設定処理の内容を説明するための参考図である。
【図17】本発明の一実施形態における3D計測ソフトによる動作の手順を示すフローチャートである。
【図18】本発明の一実施形態における参照点(計測)指定処理の内容を説明するための参考図である。
【図19】本発明の一実施形態における3D計測ソフトによる動作の手順を示すフローチャートである。
【図20】本発明の一実施形態における参照点(3D)指定処理の内容を説明するための参考図である。
【図21】本発明の一実施形態における3D計測ソフトによる動作の手順を示すフローチャートである。
【図22】本発明の一実施形態におけるマッチング処理の内容を説明するための参考図である。
【図23】本発明の一実施形態における3D計測ソフトによる動作の手順を示すフローチャートである。
【図24】本発明の一実施形態における計測処理の内容を説明するための参考図である。
【図25】本発明の一実施形態における計測処理の内容を説明するための参考図である。
【図26】本発明の一実施形態における空間座標の算出方法を説明するための参考図である。
【図27】本発明の一実施形態における空間座標の算出方法を説明するための参考図である。
【図28】本発明の一実施形態における空間座標の算出方法を説明するための参考図である。
【図29】本発明の一実施形態における空間座標の算出方法を説明するための参考図である。
【図30】本発明の一実施形態における3D計測ソフトによる動作の手順を示すフローチャートである。
【図31】本発明の一実施形態における参照点と参照図形を示す参考図である。
【図32】本発明の一実施形態におけるパン・チルト方向のマッチング処理の内容を説明するための参考図である。
【図33】本発明の一実施形態におけるデータリストを示す参考図である。
【図34】本発明の一実施形態におけるデータリストを示す参考図である。
【図35】本発明の一実施形態におけるデータリストを示す参考図である。
【図36】本発明の一実施形態における3D計測ソフトによる動作の手順を示すフローチャートである。
【図37】本発明の一実施形態におけるロール方向のマッチング処理の内容を説明するための参考図である。
【図38】本発明の一実施形態における3D計測ソフトによる動作の手順を示すフローチャートである。
【図39】本発明の一実施形態におけるズーム方向のマッチング処理の内容を説明するための参考図である。
【図40】本発明の一実施形態における辺長(3D)とカメラポーズのズーム方向位置との関係を示すグラフである。
【図41】本発明の一実施形態における3D計測ソフトによる動作の手順を示すフローチャートである。
【図42】本発明の一実施形態におけるシフト方向のマッチング処理の内容を説明するための参考図である。
【図43】本発明の一実施形態の変形例を説明するための参考図である。
【図44】本発明の一実施形態の変形例を説明するための参考図である。
【図45】本発明の一実施形態の変形例を説明するための参考図である。
【図46】本発明の一実施形態によるブレード検査システムが備える制御用コンピュータのCPUの機能構成を示すブロック図である。
【発明を実施するための形態】
【0021】
以下、図面を参照し、本発明の実施形態を説明する。図1は、本実施形態によるブレード検査システムの構成を示している。ジェットエンジン1内には、検査対象物である複数のタービンブレード10(もしくはコンプレッサーブレード)が所定の間隔で周期的に配置されている。また、ジェットエンジン1には、タービンブレード10を回転方向Aに所定の速度で回転させるターニングツール2が接続されている。本実施形態では、タービンブレード10の画像を取り込んでいる間は常にタービンブレード10を回転させた状態にしている。
【0022】
本実施形態では、タービンブレード10の画像を取得するため、内視鏡装置3(本発明の画像処理装置に対応)が用いられる。ジェットエンジン1の内部には、内視鏡装置3の内視鏡挿入部20が挿入されており、この内視鏡挿入部20により、回転しているタービンブレード10の映像が取り込まれる。また、内視鏡装置3には、タービンブレード10の3次元計測を行うための3D計測ソフトが記憶されている。
【0023】
図2は内視鏡装置3の構成を示している。内視鏡装置3は、内視鏡挿入部20、内視鏡装置本体21、モニタ22、およびリモコン(リモートコントローラ)23から構成されている。内視鏡挿入部20の先端には、撮像光学系30aおよび撮像素子30bが内蔵されている。また、内視鏡装置本体21には、画像信号処理装置(CCU)31、光源32、湾曲制御ユニット33、および制御用コンピュータ34が内蔵されている。
【0024】
内視鏡挿入部20において、撮像光学系30aは被写体(被検体)からの光を集光し、撮像素子30bの撮像面上に被写体像を結像する。撮像素子30bは、被写体像を光電変換して撮像信号を生成する。撮像素子30bから出力された撮像信号は画像信号処理装置31に入力される。
【0025】
内視鏡装置本体21において、画像信号処理装置31は、撮像素子30bからの撮像信号をNTSC信号等の映像信号に変換して制御用コンピュータ34に供給し、さらに必要に応じてアナログビデオ出力として、外部に出力する。
【0026】
光源32は、光ファイバ等を通じて内視鏡挿入部20の先端に接続されており、光を外部に照射することができる。湾曲制御ユニット33は内視鏡挿入部20の先端と接続されており、先端を上下左右に湾曲させることができる。光源32および湾曲制御ユニット33の制御は、制御用コンピュータ34によって行われる。
【0027】
制御用コンピュータ34は、RAM34a、ROM34b、CPU34c、外部インターフェースとしてネットワークI/F34d、RS232C I/F34e、カード I/F34fから構成されている。RAM34aは、ソフトウェア動作に必要な画像情報等のデータを一時記憶するために使用される。ROM34bには、内視鏡装置3を制御するための一連のソフトウェア(プログラム)が記憶されており、後述する3D計測ソフトもROM34b内に記憶される。CPU34cは、ROM34bに記憶されているソフトウェアの命令コードに従って、RAM34aに記憶されたデータを用いて各種制御のための演算等を実行する。
【0028】
ネットワークI/F34dは、外部PCとLANケーブルによって接続するためのインターフェースであり、外部PCに対して、画像信号処理装置31から出力された映像情報を展開することができる。RS232C I/F34eは、リモコン23と接続するためのインターフェースであり、このリモコン23をユーザが操作することによって、内視鏡装置3の各種動作を制御することができる。カード I/F34fは、記録媒体である各種メモリカード50を自由に着脱できるようになっている。メモリカード50を装着することにより、CPU34cの制御によって、メモリカード50に記憶されている画像情報等のデータを取り込み、あるいは画像情報等のデータをメモリカード50に記録することができる。
【0029】
本実施形態によるブレード検査システムの構成の変形例として、図3に示す構成を用いてもよい。本変形例では、内視鏡装置3にビデオ端子ケーブル4およびビデオキャプチャカード5が接続されており、これによって、内視鏡装置3が取り込んだ映像をPC6(本発明の画像処理装置に対応)にも取り込ませることが可能となっている。PC6は、図3ではノート型PCとして描かれているが、デスクトップ型のPC等でもよい。PC6には、タービンブレード10の3次元計測を行うための3D計測ソフトが記憶されている。
【0030】
さらに、図3では、PC6への映像の取り込みにビデオ端子ケーブル4およびビデオキャプチャカード5を用いているが、図4に示すようにLANケーブル7を用いてもよい。内視鏡装置3は、取り込まれた映像をLANネットワーク上に展開することのできるネットワークI/F34dを備えている。そして、LANケーブル7を通じて、PC6に映像を取りませることができる。
【0031】
図5はPC6の構成を示している。PC6はPC本体24およびモニタ25から構成されている。PC本体24には、制御用コンピュータ35が内蔵されている。制御用コンピュータ35は、RAM35a、HDD(ハードディスクドライブ)35b、CPU35c、外部インターフェースとして、ネットワークI/F35d、USB I/F35eから構成されている。制御用コンピュータ35はモニタ25に接続されており、映像情報およびソフトウェアの画面等がモニタ25に表示される。
【0032】
RAM35aは、ソフトウェア動作に必要な画像情報等のデータを一時記憶するために使用される。HDD35bには、内視鏡装置を制御するために一連のソフトウェアが記憶されており、3D計測ソフトもHDD35b内に記憶される。また、本実施形態では、タービンブレード10の画像を保存する保存用フォルダはHDD35b内に設定される。CPU35cは、HDD35bに記憶されているソフトウェアの命令コードに従って、RAM35aに記憶されたデータを用いて各種制御のための演算等を実行する。
【0033】
ネットワークI/F35dは、内視鏡装置3とPC6をLANケーブル7によって接続するためのインターフェースであり、内視鏡装置3からLAN出力された映像情報をPC6に入力することができる。USB I/F35eは、内視鏡装置3とPC6をビデオキャプチャカード5によって接続するためのインターフェースであり、内視鏡装置3からアナログビデオ出力された映像情報をPC6に入力することができる。
【0034】
図3および図4に示すブレード検査システムでは、図1に示すブレード検査システムと同様の効果を得ることができる。特に、内視鏡装置の性能がPCよりも劣っており、内視鏡装置の動作速度等が十分でない場合等に、図3および図4に示すブレード検査システムは有効である。
【0035】
次に、3D計測ソフトの画面を説明する。図6は、3D計測ソフトのメインウィンドウを示している。図6に示すメインウィンドウ600は、ユーザが3D計測ソフトを起動した際にモニタ22に表示される。CPU34cは、3D計測ソフトに従って、メインウィンドウ600内の各種CUIの操作に基づく処理を行う。
【0036】
メインウィンドウ600の表示は、CPU34cによる制御に従って行われる。CPU34cは、メインウィンドウ600を表示するためのグラフィック画像信号(表示信号)を生成し、モニタ22へ出力する。また、内視鏡装置3に取り込まれた映像(以下、計測画像と記載)をメインウィンドウ600上に重畳表示する場合には、CPU34cは、画像信号処理装置31から取り込んだ画像データをグラフィック画像信号に重畳する処理を行い、処理後の信号(表示信号)をモニタ22へ出力する。
【0037】
また、メインウィンドウ600上のGUIの表示状態を更新する場合、CPU34cは、更新後のメインウィンドウ600に対応したグラフィック画像信号を生成し、上記と同様の処理を行う。メインウィンドウ600以外のウィンドウの表示に係る処理も上記と同様である。以下、メインウィンドウ600等を表示(更新も含む)するためにCPU34cがグラフィック画像信号を生成する処理のことを、メインウィンドウ600等を表示するための処理と記載する。
【0038】
ユーザは、GUI(グラフィカルユーザインタフェース)機能を利用して、リモコン23を介してメインウィンドウ600を操作し、メインウィンドウ600に重畳表示されるカーソルCを移動させ、クリック等の指示を入力することにより、メインウィンドウ600の各種GUIの操作を行うことができる。以下、各種GUIの機能を説明する。
【0039】
メインウィンドウ600の右上部には、[ファイル選択]ボックス610が配置されている。また、メインウィンドウ600の左上部には[計測画像]ボックス611が配置されている。[ファイル選択]ボックス610は、[計測画像]ボックス611に表示される計測画像の選択、および[計測画像]ボックス611に表示される3Dオブジェクトに対応したCADデータの選択を行うためのボックスである。
【0040】
CADデータは、CADを利用して予め算出されたタービンブレード10の3次元形状を表すデータである。CADデータの形式には、STL(Standard Triangulated Language)形式等を用いる。3Dオブジェクトは、CADデータの内容をもとに構築されたCG物体である。[ファイル選択]ボックス610内のGUIおよび操作の詳細については、記載しない。
【0041】
[計測画像]ボックス611は、計測対象物であるタービンブレード10を撮像して得られた計測画像IMGを表示し、計測画像IMG上に3DオブジェクトOBを重畳表示するためのボックスである。後述するように、ユーザは[計測画像]ボックス611の操作を行うことにより、カメラポーズの変更、参照点の指定、計測点の指定等を行う。
【0042】
メインウィンドウ600の左下部には、[表示設定]ボックス620が配置されている。[表示設定]ボックス620内には、[計測画像]ボックス611に表示された3DオブジェクトOBの表示設定に関するGUIが配置されている。[表示設定]ボックス620内の各GUIの機能は以下の通りである。
【0043】
[透過率]バー621は、3Dオブジェクトの表示透過率を設定するためのバーである。[透過率]バー621は水平方向(横方向)に移動(スライド)可能になっており、ユーザが[透過率]バー621を移動させることで、3Dオブジェクトの表示透過率が変化する。
【0044】
例えば、透過率が大きく設定された場合、3DオブジェクトOBは透明に近い透過率で表示され、透過率が小さく設定された場合、3DオブジェクトOBは透過されずに表示される。後述するように、[計測画像]ボックス611において、ユーザが計測画像IMGに参照点を指定する際には、3DオブジェクトOBの透過率を大きく設定することで、計測画像IMGを見やすくすると良い。また、ユーザが3DオブジェクトOBに参照点を指定する際には、3DオブジェクトOBの透過率を小さく設定することで、3DオブジェクトOBを見やすくすると良い。
【0045】
[表示方法]ラジオボタン622は、3DオブジェクトOBの表示方法を設定するためのラジオボタンである。[表示方法]ラジオボタン622には、「シェーディング」と「ワイヤーフレーム」の2つの設定項目がある。「シェーディング」が選択された場合、3DオブジェクトOBは、ワイヤーフレームおよび表面が塗りつぶされた状態で表示され、「ワイヤーフレーム」が選択された場合、図6のように、3DオブジェクトOBはワイヤーフレームのみの状態で表示される。
【0046】
[表示方法]ラジオボタン623は、3DオブジェクトOBの表示色を設定するためのラジオボタンである。[表示方法]ラジオボタン623には、「水色」と「黄色」の2つの設定項目がある。[表示方法]ラジオボタン623の設定によって、3DオブジェクトOBの表示色を切り替えることができる。
【0047】
[移動方向]ラジオボタン624は、カメラポーズの移動方向を設定するためのラジオボタンである。カメラポーズは、3DオブジェクトOBの姿勢(ポーズ)、すなわち3DオブジェクトOBをどの方向、どの位置から見ているかを示すパラメータである。[移動方向]ラジオボタン624には、「パン/チルト」と「ロール/ズーム」の2つの設定項目がある。「パン/チルト」が選択された場合、[計測画像]ボックス611において、ユーザがカーソルCを上下左右に移動させることで、カメラポーズをパン・チルト方向に回転させることができる。また、「ロール/ズーム」が選択された場合、同様の操作で、カメラポーズをロール・ズーム方向に回転させることができる。
【0048】
[計測画像]ボックス611の下側には、[現在位置]ボックス630が配置されている。[現在位置]ボックス630は、カーソル位置における3DオブジェクトOBの表面座標をリアルタイムで表示するためのボックスである。3DオブジェクトOBの表面座標は空間座標系の座標としてmm単位で示される。[計測画像]ボックス611において、ユーザがカーソルCを移動させることで、[現在位置]ボックス630の値もリアルタイムに変更される。例えば、カーソルCが3DオブジェクトOB上に位置する場合、3DオブジェクトOBの表面座標が算出され、[現在位置]ボックス630に表示される。カーソルCが3DオブジェクトOB上に位置しない場合は、[現在位置]ボックス630に「null」と表示される。3DオブジェクトOBの表面座標の算出方法については、図26〜図29を用いて後述する。
【0049】
[現在位置]ボックス630の下側には、[カメラポーズ]ボックス640が配置されている。[カメラポーズ]ボックス640は、カメラポーズをリアルタイムで表示するためのボックスである。ユーザがカメラポーズを変更することで、[カメラポーズ]ボックス640の値がアルタイムに変更される。カメラポーズは、空間座標系の座標としてmm単位で示される。
【0050】
[カメラポーズ]ボックス640の右側には、[シフト位置]ボックス650が配置されている。[シフト位置]ボックス650は、[計測画像]ボックス611における3DオブジェクトOBのシフト位置を表示するためのボックスである。3DオブジェクトOBのシフト位置は、平面座標系の座標としてpixel単位で示される。
【0051】
3DオブジェクトOBは[計測画像]ボックス611の中央部に表示されており、カメラポーズが変更されても表示位置は変化しない。しかし、計測画像IMGに写った被検体は、必ずしも画像の中央部に位置しているわけではない。そのため、計測画像IMGと3Dオブジェクト3Dとをマッチングさせる処理である3Dマッチング処理の実行後、3DオブジェクトOBは[計測画像]ボックス611の中央部ではなく、計測画像に写った被検体の上に位置しているべきである。
【0052】
上記のシフト位置は、[計測画像]ボックス611の中央部からの3DオブジェクトOBの相対位置を示している。以下、平面座標系におけるシフト位置の移動方向をシフト方向と記載する。ユーザが手動で任意にシフト位置を変更することはできない。シフト位置は、3Dマッチング処理の実行後に、CPU34cが算出するものである。
【0053】
[ファイル選択]ボックス610の下側には、[マッチング/計測]ボックス660が配置されている。[マッチング/計測]ボックス660内には、3Dマッチング処理および計測に関するGUIが配置されている。[マッチング/計測]ボックス660内の各GUIの機能は以下の通りである。
【0054】
[カメラポーズ]ボタン661aは、カメラポーズを変更するためのボタンである。[カメラポーズ]ボタン661aが押下された後、[計測画像]ボックス611aにおいて、ユーザがカーソルCを上下左右に移動させることで、カメラポーズが変更可能となる。また、[カメラポーズ]ボタン661aの右側には、[リセット]ボタン661bが配置されており、[リセット]ボタン661bが押下されると、カメラポーズが初期値に設定される。
【0055】
[参照点(計測)]ボタン662aは、計測画像IMGの参照点(計測)を指定するためのボタンである。参照点(計測)とは、CPU34cが3Dマッチング処理を実行する際の基準となる計測画像IMG上の点のことである。[参照点(計測)]ボタン662aが押下された後、[計測画像]ボックス611において、ユーザがカーソルCを移動させて、指定したい位置でクリック等を行うことで、計測画像IMGに写った被検体に対して参照点(計測)を指定することができる。参照点(計測)は、平面座標系の座標としてpixel単位で示される。また、[参照点(計測)]ボタン662aが押下されると、3DオブジェクトOBの表示透過率が自動的に大きく設定され、計測画像IMGが見やすい状態となる。また、[参照点(計測)]ボタン662aの右側には、[クリア]ボタン662bが配置されており、[クリア]ボタン662bが押下されると、既に指定された参照点(計測)が全てクリアされ、指定前の状態となる。
【0056】
[参照点(3D)]ボタン663aは、3DオブジェクトOBの参照点(3D)を指定するためのボタンである。参照点(3D)とは、参照点(計測)と同様に、CPU34cが3Dマッチング処理を実行する際の基準となる3Dオブジェクト上の点である。[参照点(3D)]ボタン663aが押下された後、[計測画像]ボックス611において、ユーザがカーソルCを移動させて、参照点(3D)を指定したい位置でクリック等の操作を行うことで、3DオブジェクトOBに対して参照点(3D)を指定することができる。参照点(3D)は、空間座標系の座標としてmm単位で示される。また、[参照点(3D)]ボタン663aが押下された後、3DオブジェクトOBの表示透過率が自動的に小さく設定され、3DオブジェクトOBが見やすい状態となる。また、[参照点(3D)]ボタン663aの右側には、[クリア]ボタン663bが配置されており、[クリア]ボタン663bが押下されると、既に指定された参照点(3D)が全てクリアされ、指定前の状態となる。
【0057】
[3Dマッチング]ボタン664は、3Dマッチング処理を実行するためのボタンである。[3Dマッチング]ボタン664が押下された後、ユーザが指定した2組の参照点(参照点(計測)と参照点(3D))に基づいて、CPU34cは3Dマッチング処理を実行する。このとき、CPU34cは、2組の参照点の位置がそれぞれ一致するように、3Dマッチング処理を行うことになる。3Dマッチング処理の結果、計測画像IMG内の被検体と3DオブジェクトOBとがほぼ一致するように表示され、計測画像IMG内の被検体と3DオブジェクトOBが計測に適した状態となる。
【0058】
[計測]ボタン665aは、計測点を指定するためのボタンである。計測点とは、計測を行う際の基準となる点である。[計測]ボタン665aが押下された後、[計測画像]ボックス611において、ユーザがカーソルCを移動させて、計測点を指定したい位置でクリック等の操作を行うことで、3DオブジェクトOBに対して計測点を指定することができる。CPU34cは、指定された計測点に基づいて、計測処理を実行する。また、[計測]ボタン665aの右側には、[クリア]ボタン665bが配置されており、[クリア]ボタン665bが押下されると、既に指定された計測点が全てクリアされ、指定前の状態となる。
【0059】
[マッチング/計測]ボックス660の下側には、[計測結果]ボックス670が配置されている。[計測結果]ボックス670は、計測結果を表示するためのボックスである。[計測画像]ボックス611においてユーザが計測点を指定すると、指定された計測点に基づいて計測処理が実行され、[計測結果]ボックス670に計測結果が表示される。
【0060】
メインウィンドウ600の右下部には、[終了]ボタン680が配置されている。[終了]ボタン680は、3D計測ソフトを終了するためのボタンである。[終了]ボタン680が押下されると、全てのソフト動作が終了し、メインウィンドウ600が閉じる(非表示となる)。
【0061】
次に、図7を用いて、3Dオブジェクトとカメラポーズとの関係について説明する。図7に示すように、実空間に対応する仮想的な空間上に3DオブジェクトOB1および視点700がある。3DオブジェクトOB1の位置は固定されているが、視点700の位置はユーザによって自由に変更される。3DオブジェクトOB1の重心位置には視線中心701があり、視点700から視線方向702に伸びる直線は、常にこの視線中心701を向いている。視線中心701の位置は固定されている。
【0062】
3DオブジェクトOB1と視点700との間には、矩形状のスクリーン平面703がある。スクリーン平面703は[計測画像]ボックス611に相当するものである。スクリーン平面703の縦方向および横方向のサイズは固定値である。3DオブジェクトOB1をスクリーン平面703に投影した投影像が、[計測画像]ボックス611に表示される3DオブジェクトOBである。
【0063】
スクリーン平面703は、視線方向702と常に垂直であり、視点700から視線方向702に伸びる直線は、常にスクリーン平面703の中心704を通る。視点700からスクリーン平面703の中心704までの距離706は固定値であるが、視点700から視線中心701までの距離は、ユーザによって自由に変更される。
【0064】
スクリーン平面703の向いている方向は、上方向ベクトル705によって示される。この上方向ベクトル705は、スクリーン平面703と平行であり、スクリーン平面703の上方向がどの方向かを表す単位ベクトルである。
【0065】
図7に示した項目のうち、カメラポーズを構成するパラメータは、視点位置、視線中心位置、上方向ベクトルの3つである。以下では、図8〜図10を用いて、カメラポーズを変更したときの3Dオブジェクトとカメラポーズとの関係について説明する。
【0066】
図8(a)は、カメラポーズをパン・チルト方向に変更した場合の3Dオブジェクトとカメラポーズとの関係を示している。パン方向とは、視点800から視線中心801までの距離を固定したまま、視点800を上方向ベクトル802と垂直に移動させた場合の方向(パン方向803)である。チルト方向とは、視点800から視線中心801までの距離を固定したまま、視点800を上方向ベクトル802と平行に移動させた場合の方向(チルト方向804)である。図8(a)のように、カメラポーズをパン・チルト方向に変更すると、図8(b)のように、スクリーン平面805に投影される3DオブジェクトOBは、上下左右の各方向に回転することがわかる。
【0067】
図9(a)は、カメラポーズをロール方向に変更した場合の3Dオブジェクトとカメラポーズとの関係を示している。ロール方向とは、視点900の位置を固定したまま、視点900から視点中心901に向かう視点方向902の軸を中心に、スクリーン平面903を回転させた場合の方向(ロール方向904)である。図9(a)のように、カメラポーズをロール方向に変更すると、図9(b)のように、スクリーン平面903に投影される3DオブジェクトOBは、スクリーン平面903の中心を軸として回転することがわかる。
【0068】
図10(a)は、カメラポーズをズーム方向に変更した場合の3Dオブジェクトとカメラポーズとの関係を示している。ズーム方向とは、上方向ベクトル1000を固定したまま、視点1001を視線方向1002と平行に移動させた場合の方向(ズーム方向1003)である。図10(a)のように、カメラポーズをズーム方向に変更すると、図10(b)のように、スクリーン平面1004に投影される3DオブジェクトOBは、拡大・縮小することがわかる。
【0069】
上記の説明の通り、カメラポーズが変更されると、スクリーン平面の位置・方向が変化する。それに伴い、スクリーン平面に投影される3Dオブジェクトの表示も変化し、その結果、[計測画像]ボックス611に表示される3Dオブジェクトの表示も変化することになる。CPU34cは、ユーザによってリモコン23を介して入力されるカメラポーズの変更指示を検出し、その変更指示に応じて、3Dオブジェクトを[計測画像]ボックス611に表示するための処理を行う。
【0070】
次に、図11を用いて、3D計測ソフトの動作の流れを説明する。以下では、メインウィンドウ600における全てのGUIに関する動作ではなく、一部のGUIに関する動作のみ説明するものとする。具体的には、[計測画像]ボックス611、[カメラポーズ]ボタン661a、[参照点(計測)]ボタン662a、[参照点(3D)]ボタン663a、[3Dマッチング]ボタン664、[計測]ボタン665a、[計測結果]ボックス670、[終了]ボタン680に関する動作は説明するが、その他のGUIに関する動作の説明は行わない。
【0071】
ステップSAでは、CPU34cが3D計測ソフトを起動する。具体的には、ユーザがリモコン23を介して入力した起動指示に基づいて、CPU34cは、ROM34bに格納されている3D計測ソフトをRAM34aに読み込み、3D計測ソフトに従った動作を開始する。ステップSBでは、CPU34cが、メインウィンドウ600を表示するための処理を行う。
【0072】
ステップSCでは、CPU34cが初期化処理を行う。初期化処理とは、メインウィンドウ600内の各種GUIの初期状態を設定したり、RAM34aに記録された各種データの初期値を設定したりする処理である。初期化処理の詳細については、後述する。
【0073】
ステップSDでは、CPU34cがカメラポーズ設定処理を行う。カメラポーズ設定処理とは、ユーザが入力した、カメラポーズを変更する指示に基づいて、[計測画像]ボックス611の計測画像内の被検体と3Dオブジェクトとを大まかにマッチングさせる処理である。カメラポーズ設定処理の詳細については、後述する。
【0074】
ステップSEでは、CPU34cが参照点(計測)指定処理を行う。参照点(計測)指定処理とは、ユーザが入力した、[計測画像]ボックス611の計測画像に写った被検体上の位置を指定する指示に基づいて、参照点を指定(設定)する処理である。参照点(計測)指定処理の詳細については、後述する。
【0075】
ステップSFでは、CPU34cが参照点(3D)指定処理を行う。参照点(3D)指定処理とは、ユーザが入力した、[計測画像]ボックス611の3Dオブジェクト上の位置を指定する指示に基づいて、参照点を指定(設定)する処理である。参照点(3D)指定処理の詳細については、後述する。
【0076】
ステップSGでは、CPU34cが3Dマッチング処理を行う。3Dマッチング処理とは、ユーザが指定した2組の参照点(参照点(計測)・参照点(3D))に基づいて、[計測画像]ボックス611に表示された計測画像と3Dオブジェクトとをマッチングさせる処理である。3Dマッチング処理の詳細については、後述する。
【0077】
ステップSHでは、CPU34cが計測処理を行う。計測処理とは、ユーザが入力した、[計測画像]ボックス611の3Dオブジェクト上の位置を指定する指示に基づいて、計測点を指定(設定)し、指定した計測点に基づいて、被検体のサイズを算出する処理である。計測処理の詳細については、後述する。
【0078】
ステップSIでは、CPU34cが、ユーザによって[終了]ボタン680が押下されたかどうかを確認する。ユーザが[終了]ボタン680を押下した場合、処理はステップSJに移行する。また、ユーザが[終了]ボタン680を押下しなかった場合、処理はステップSDに移行する。ステップSJでは、CPU34cがメインウィンドウ600を非表示とし、3D計測ソフトの動作を終了する。
【0079】
次に、図12を用いて、ステップSCの初期化処理の動作の流れを説明する。ステップSC1では、CPU34cが、メモリカード50に記録された所定の計測画像ファイルおよびCADデータをRAM34aに読み込む。ステップSC2では、CPU34cが、読み込まれたCADデータに基づいて、カメラポーズ(初期値)を算出する。
【0080】
カメラポーズのうち、視点位置については、図13のように、CPU34cは空間座標系の原点の座標(x,y,z)=(0,0,0)を初期値(視点1300)とする。カメラポーズのうち、視線中心位置については、図13のように、CPU34cは、CADデータにおける全ての空間座標の重心位置を算出し、その座標を初期値(視点中心1301)とする。この視線中心位置は、CADデータごとに固有の値であり、この後、カメラポーズが変更されても、この値が変化することはない。カメラポーズのうち、上方向ベクトルについては、図13のように、CPU34cは、視点1300と視線中心1301を結ぶ直線と直交する単位ベクトルのうち、Z方向成分の最も大きいものを初期値(上方向ベクトル1302)とする。ここでは、Z方向成分の最も大きい単位ベクトルを上方向ベクトルの初期値としているが、Z方向成分の最も大きい単位ベクトルに限るわけではない。
【0081】
ステップSC3では、CPU34cが、ステップSC2で算出したカメラポーズ(初期値)をカレントカメラポーズとしてRAM34aに記録する。カレントカメラポーズとは、現在設定されているカメラポーズのことであり、3Dオブジェクトは、このカレントカメラポーズに基づいて表示されることになる。
【0082】
ステップSC4では、CPU34cが、図14のように[計測画像]ボックス611に計測画像IMGを表示し、さらにその上に3DオブジェクトOBを所定の透過率で重畳表示するための処理を実行する。このとき、3DオブジェクトOBは、算出されたカメラポーズ(初期値)に基づいて、スクリーン平面に投影された平面図として表示される。ステップSC4の処理が終了すると、初期化処理が終了する。
【0083】
次に、図15を用いて、ステップSDのカメラポーズ設定処理の流れを説明する。ステップSD1では、CPU34cが、[カメラポーズ]ボタン661aが既に押下された状態(ステップSD3の処理が既に行われた状態)であるかどうかを確認する。[カメラポーズ]ボタン661aが押下された状態である場合、処理はステップSD4に移行し、[カメラポーズ]ボタン661aが押下された状態でない場合、処理はステップSD2に移行する。
【0084】
ステップSD2では、CPU34cが、[カメラポーズ]ボタン661aがユーザによって押下されたかどうかを確認する。[カメラポーズ]ボタン661aが押下された場合、処理はステップSD3に移行し、[カメラポーズ]ボタン661aが押下されていない場合、カメラポーズ設定処理が終了する。
【0085】
ステップSD3では、CPU34cが、図16(a)のように[カメラポーズ]ボタン661aを強調表示するための処理を行う。[カメラポーズ]ボタン661aを強調表示するのは、現在、カメラポーズが変更可能であることをユーザに通知するためである。
【0086】
ステップSD4では、CPU34cが、図16(b)のように、[計測画像]ボックス611において、ユーザがリモコン23を操作してカーソルCによりクリック等を行いながらカーソルCを上下左右に移動させる操作(ドラッグ操作)を検出し、カーソルCの操作を検出した結果に基づいてカメラポーズを変更する。このとき、ユーザは、計測画像に写った被検体DUTと3DオブジェクトOBとが大まかにマッチングするように、カメラポーズを変更する。カメラポーズは、前述したパン・チルト・ロール・ズームの方向に変更可能である。また、このとき、CPU34cは、リモコン23を介して入力されるカーソルCの操作指示を検出し、その操作指示に基づいて、変更後のカメラポーズを算出する。
【0087】
ステップSD5では、CPU34cが変更後のカメラポーズをカレントカメラポーズとしてRAM34aに上書き記録する。ステップSD6では、CPU34cが、カレントカメラポーズに基づいて、3Dオブジェクトを再表示するための処理を行う。これによって、図16(c)のように、カメラポーズが変更された3DオブジェクトOBが[計測画像]ボックス611に表示される。ステップSD6の処理が終了すると、カメラポーズ設定処理が終了する。
【0088】
次に、図17を用いて、ステップSEの参照点(計測)指定処理の流れを説明する。ステップSE1では、CPU34cが、[参照点(計測)]ボタン662aが既に押下された状態(ステップSE3,SE4の処理が既に行われた状態)であるかどうかを確認する。[参照点(計測)]ボタン662aが押下された状態である場合、処理はステップSE5に移行し、[参照点(計測)]ボタン662aが押下された状態でない場合、処理はステップSE2に移行する。
【0089】
ステップSE2では、CPU34cが、[参照点(計測)]ボタン662aがユーザによって押下されたかどうかを確認する。[参照点(計測)]ボタン662aが押下された場合、処理はステップSE3に移行し、押下されていない場合、参照点(計測)指定処理が終了する。
【0090】
ステップSE3では、CPU34cが、図18(a)のように、[参照点(計測)]ボタン662aを強調表示するための処理を行う。[参照点(計測)]ボタン662aを強調表示するのは、現在、計測画像に対して参照点が指定可能であることをユーザに通知するためである。
【0091】
ステップSE4では、CPU34cが、図18(b)のように、3DオブジェクトOBの透過率を変更し、変更後の透過率で3DオブジェクトOBを再表示するための処理を行う。ここで設定される透過率は大きな値であり、3DオブジェクトOBは透明に近い状態となり、計測画像が見やすい状態となる。なお、特に図示していないが、既に指定した参照点(3D)が存在する場合は、3DオブジェクトOBが一旦非表示となる。これも、計測画像を見やすい状態とするためである。
【0092】
ステップSE5では、CPU34cが、[計測画像]ボックス611において、計測画像に写った被検体DUTに対して参照点(計測)を指定するためにユーザがリモコン23を操作してカーソルCによりクリック等を行う操作を検出し、カーソルCの操作を検出した結果に基づいて、指定された参照点の座標を算出する。このとき算出される参照点(計測)の座標は、計測画像における平面座標(pixel単位)である。
【0093】
ステップSE6では、CPU34cが、指定された参照点(計測)の座標をRAM34aに記録する。ステップSE7では、CPU34cが、指定された参照点(計測)を計測画像上に重畳表示するための処理を行う。これによって、図18(c)のように、参照点(計測)R1,R2,R3が計測画像上に重畳表示される。ステップSE7の処理が終了すると、参照点(計測)指定処理が終了する。
【0094】
次に、図19を用いて、ステップSFの参照点(3D)指定処理の流れを説明する。ステップSF1では、CPU34cが、[参照点(3D)]ボタン663aが既に押下された状態(ステップSF3,SF4が既に行われた状態)であるかどうかを確認する。[参照点(3D)]ボタン663aが押下された状態である場合、処理はステップSF5に移行し、[参照点(3D)]ボタン663aが押下されていない状態でない場合、処理はステップSF2に移行する。
【0095】
ステップSF2では、CPU34cが、[参照点(3D)]ボタン663aがユーザによって押下されたかどうかを確認する。[参照点(3D)]ボタン663aが押下された場合、処理はステップSF3に移行し、[参照点(3D)]ボタン663aが押下されていない場合、参照点(3D)指定処理が終了する。
【0096】
ステップSF3では、CPU34cが、図20(a)のように、[参照点(3D)]ボタン663aを強調表示するための処理を行う。[参照点(3D)]ボタン663aを強調表示するのは、現在、3Dオブジェクトに対して参照点が指定可能であることをユーザに通知するためである。
【0097】
ステップSF4では、CPU34cが、図20(b)のように、3DオブジェクトOBの透過率を変更し、変更後の透過率で3DオブジェクトOBを再表示するための処理を行う。ここで設定される透過率は小さな値であり、3DオブジェクトOBが見やすい状態となる。このとき、特に図示していないが、既に指定した参照点(計測)が存在する場合は、計測画像が一旦非表示となる。これも、3DオブジェクトOBを見やすい状態とするためである。
【0098】
ステップSF5では、CPU34cが、[計測画像]ボックス611において、計測画像に写った被検体DUTに対して参照点(3D)を指定するためにユーザがリモコン23を操作してカーソルCによりクリック等を行う操作を検出し、カーソルCの操作を検出した結果に基づいて、指定された参照点の座標を算出する。このとき算出される参照点(3D)の座標は、3Dオブジェクト表面における空間座標(mm単位)であり、CPU34cは、まず指定された参照点の平面座標(pixel単位)を算出し、続いて、算出した平面座標から空間座標(mm単位)を算出する。
【0099】
ユーザが指定する参照点(3D)と、既に指定された参照点(計測)とが、それぞれ対応付けられていなくてはならない。本実施形態では、CPU34cは、ユーザが参照点(計測)を指定した順番と、参照点(3D)を指定した順番とに基づいて、参照点(3D)と参照点(計測)とを対応付けるものとする。より具体的には、CPU34cは、参照点(計測)のうち最初に指定された点と参照点(3D)のうち最初に指定された点とを対応付け、参照点(計測)のうち2番目に指定された点と参照点(3D)のうち2番目に指定された点とを対応付け、・・・、参照点(計測)のうちn番目に指定された点と参照点(3D)のうちn番目に指定された点とを対応付ける。上記の方法は一例であり、これに限るわけではない。
【0100】
図18(c)に示すように、被検体DUTの左上の参照点(計測)R1、右上の参照点(計測)R2、右下の参照点(計測)R3が指定されている。参照点(計測)の指定が終了した後、ユーザは、被検体DUT上の参照点(計測)に対応する3DオブジェクトOB上の参照点(3D)を、参照点(計測)を指定したときと同じ順番で指定する。図20(c)に示すように、被検体DUT上の参照点(計測)R1,R2,R3に対応する3Dオブジェクト上の位置に参照点(計測)R1’,R2’,R3’が指定されている。
【0101】
ステップSF6では、CPU34cが、指定された参照点(3D)の座標をRAM34aに記録する。ステップSF7では、CPU34cが、指定された参照点(3D)を3Dオブジェクト上に重畳表示するための処理を行う。これによって、図20(c)のように、参照点(3D)R1’,R2’,R3’が3DオブジェクトOB上に重畳表示される。ステップSF7の処理が終了すると、参照点(3D)指定処理が終了する。
【0102】
なお、CPU34cが、指定された参照点(3D)の座標をCADデータに記録してもよいし、CADデータと紐付けされた(関連付けられた)別のファイルに記録してもよい。これによって、再度ステップSC1にて同じCADデータを読み出した場合、ステップSF1〜ステップSF5の処理を省略することができる。また、参照点(3D)は必ずしもステップSFにおいて指定されるべきものではなく、予め内視鏡装置3またはPC6等によって、CADデータに記録されていてもよいし、CADデータと紐付けされた(関連付けられた)別のファイルに記録されていてもよい。
【0103】
次に、図21を用いて、ステップSGの3Dマッチング処理の流れを説明する。ステップSG1では、CPU34cが、[3Dマッチング]ボタン664がユーザによって押下されたかどうかを確認する。[3Dマッチング]ボタン664が押下された場合、処理はステップSG2に移行し、[3Dマッチング]ボタン664が押下されていない場合、3Dマッチング処理が終了する。
【0104】
ステップSG2では、CPU34cが、全ての参照点が既に指定済みであるどうかを確認する。具体的には、CPU34cは、参照点(計測)および参照点(3D)が、それぞれ3点ずつ、既に指定済みであるかどうかを確認する。全ての参照点が指定済みの場合、処理はステップSG3に移行し、参照点が指定済みでない場合、3Dマッチング処理が終了する。ステップSG3では、CPU34cが、RAM34aに記録された全ての参照点の座標を読み込む。
【0105】
ステップSG4では、CPU34cが、指定された参照点の座標に基づいて、パン・チルト方向のマッチング処理を行う。パン・チルト方向のマッチング処理の詳細については、後述する。ステップSG5では、CPU34cが、指定された参照点の座標に基づいて、ロール方向のマッチング処理を行う。ロール方向のマッチング処理の詳細については、後述する。
【0106】
ステップSG6では、CPU34cが、指定された参照点の座標に基づいて、ズーム方向のマッチング処理を行う。ズーム方向のマッチング処理の詳細については、後述する。ステップSG7では、CPU34cが、指定された参照点の座標に基づいて、シフト方向のマッチング処理を行う。シフト方向のマッチング処理の詳細については、後述する。
【0107】
ステップSG8では、CPU34cが、[計測画像]ボックス611において、3Dオブジェクトを再表示するための処理を行う。このとき、3Dオブジェクトは、ステップSG4〜SG7において最終的に算出されたカメラポーズおよびシフト位置に基づいて、姿勢および位置が調整されて表示される。図22は、マッチング処理後の計測画像に写った被検体と3Dオブジェクトを示している。図22のように、計測画像に写った被検体と3Dオブジェクトとが、ほぼ一致していること、すなわち、両者がうまくマッチングしていることがわかる。ステップSG8の処理が終了すると、3Dマッチング処理が終了する。
【0108】
次に、図23を用いて、ステップSHの計測処理の流れを説明する。ステップSH1では、CPU34cが、[計測]ボタン664が既に押下された状態(ステップSH3が既に行われた状態)であるかどうかを確認する。[計測]ボタン664が押下された状態である場合、処理はステップSH4に移行し、[計測]ボタン664が押下された状態でない場合、処理はステップSH2に移行する。
【0109】
ステップSH2では、CPU34cが、[計測]ボタン664がユーザによって押下されたかどうかを確認する。[計測]ボタン664が押下された場合、処理はステップSH3に移行し、[計測]ボタン664が押下されていない場合、計測処理が終了する。
【0110】
ステップSH3では、CPU34cが、図24(a)のように、[計測]ボタン664を強調表示するための処理を行う。[計測]ボタン664を強調表示するのは、現在、3Dオブジェクトに対して計測点が指定可能であることをユーザに通知するためである。
【0111】
ステップSH4では、CPU34cが、[計測画像]ボックス611において、3Dオブジェクトに対して計測点を指定するためにユーザがリモコン23を操作してカーソルCによりクリック等を行う操作を検出し、カーソルCの操作を検出した結果に基づいて、指定された計測点の座標を算出する。CPU34cは、算出した計測点の座標をRAM34aに記録する。このとき記録される計測点の座標は、3Dオブジェクト表面における空間座標(mm単位)である。
【0112】
ステップSH5では、CPU34cが、指定された計測点の座標に基づいて、計測結果を算出し、算出した計測結果をRAM34aに記録する。本実施形態では、2つの計測点の空間距離(2点間距離)を計測するものとする。ステップSH5で算出される計測結果は、既に指定された2つの計測点の空間距離である。指定された計測点が1点のみである場合、計測結果は算出されず、処理がステップSH6に移行する。
【0113】
ステップSH6では、CPU34cが、図24(b),(c)のように、指定された計測点を3Dオブジェクト上に重畳表示するための処理を行う。図24(b)は1点目の計測点P1が指定されたときの[計測画像]ボックス611であり、図24(c)は2点目の計測点P2が指定されたときの[計測画像]ボックス611である。さらに、CPU34cは、図25のように、算出した計測結果を[計測結果]ボックス670に表示するための処理を行う。指定された計測点が1点のみである場合、計測結果は表示されず、ステップSH6の処理が終了する。
【0114】
ステップSH6の処理が終了すると、計測処理が終了する。上記の説明では、2点間距離を計測する場合を例としているが、3点以上の計測点が指定される面積等の計測を行う場合も同様である。
【0115】
次に、図26〜図29を用いて、指定された計測点の、3Dオブジェクト表面における空間座標(3次元座標)の算出方法について説明する。図26は、3次元空間における3Dオブジェクトの一部と視点Eとの関係を示している。
【0116】
3Dオブジェクトは、複数の三角形の空間平面から構成されている。視点Eから3Dオブジェクトの重心点Gへ向かう方向を視線方向とする。視点Eと3Dオブジェクトとの間には、視線方向と垂直に交わるスクリーン平面SCが設定されている。
【0117】
ユーザが[計測画像]ボックス611における3Dオブジェクト上の計測点を指定すると、CPU34cは、図27のように、スクリーン平面SC上に計測点Sを設定する。計測点Sと視点Eとを通る空間直線を直線Lとする。そして、CPU34cは、3Dオブジェクトを構成する複数の三角形の中から、直線Lと交差する全ての三角形を検索する。直線と空間三角形とが交差するかどうかを判定する方法として、例えばTomas Mollerの交差判定法を用いることが可能である。この例では、図28のように、三角形T1,T2が、直線Lと交差する三角形であると判定される。
【0118】
そして、図29のように、CPU34cは、直線Lと三角形T1,T2との交点を算出し、算出したそれぞれの交点を交点F1,F2とする。ここでは、3Dオブジェクト表面における空間座標を算出したいので、CPU34cは、交点F1,F2のうち、より視点Eに近い方を選択する。この場合、CPU34cは、交点F1の空間座標を、3Dオブジェクト表面における空間座標として算出する。上記では、直線Lと交差すると判定された三角形を2つのみとしたが、3Dオブジェクトの形状や視線方向によっては、より多くの三角形が交差すると判定される場合もある。その場合も、直線Lと三角形との交点をそれぞれ求め、求めた交点の中で、最も視点Eに近い交点を選択することになる。
【0119】
上記のようにして、計測点の空間座標を算出することができる。ステップSF5における参照点(3D)の空間座標も上記と同様にして算出することができる。
【0120】
次に、図30を用いて、ステップSG4のパン・チルト方向のマッチング処理の流れを説明する。パン・チルト方向のマッチング処理の目的は、参照点(計測)によって構成される3角形と、参照点(3D)をスクリーン平面に降ろした投影点によって構成される3角形とが最も相似に近くなるカメラポーズを見つける、ということである。これらの3角形が相似に近い場合、計測画像に写った被検体が撮像されたときの視線のパン・チルト方向と、3Dオブジェクトを観察する視線のパン・チルト方向とが、ほぼ一致しているということができる。
【0121】
以下、図31(a)のように、参照点(3D)R1’〜R3’をスクリーン平面3100に降ろした投影点Rp1’〜Rp3’を投影点(3D)と記載する。さらに、図31(b)のように、参照点(計測)R1〜R3によって構成される3角形3102を参照図形(計測)と記載し、図31(a)のように、投影点(3D)Rp1’〜Rp3’によって構成される3角形3101を参照図形(3D)と記載する。
【0122】
ステップSG401では、CPU34cが頂点角(計測)を算出し、算出した頂点角(計測)をRAM34aに記録する。頂点角(計測)とは、図32(a)のように、参照図形(計測)3200の3つの頂点R1〜R3の角度A1〜A3である。
【0123】
ステップSG402では、CPU34cが、カメラポーズをパン・チルト方向にそれぞれ−31deg回転させる。ステップSG403〜SG407において繰り返し処理が行われるが、これは、図32(b)のように、カメラポーズをパン・チルト方向に回転させながら、頂点角(3D)を順次算出するためである。頂点角(3D)とは、図32(b)のように、参照図形(3D)3201の3つの投影点(3D)Rp1’〜Rp3’の角度A1’〜A3’である。
【0124】
前述したように、参照点(計測)と参照点(3D)は、各参照点が指定された順番によって対応付けられており、角度A1〜A3と角度A1’〜A3も、この順番によって対応付けられている。図32では、角度A1と角度A1’が対応付けられ、角度A2と角度A2’が対応付けられ、角度A3と角度A3’が対応付けられている。
【0125】
ステップSG403では、CPU34cが、カメラポーズをパン方向に+1deg回転させる。そして、ステップSG403〜SG407では、カメラポーズのパン方向の回転角度が+30degとなるまでCPU34cが繰り返し処理を行う。CPU34cは、カメラポーズをパン方向に−30degから+30degとなるまで+1degずつ回転させるので、結果としてステップSG403〜SG407の一連の処理を61回繰り返すことになる。
【0126】
ステップSG404では、CPU34cが、カメラポーズをチルト方向に+1deg回転させる。そして、ステップSG404〜SG407では、カメラポーズのチルト方向の回転角度が+30degとなるまでCPU34cが繰り返し処理を行う。CPU34cは、カメラポーズをチルト方向に−30degから+30degとなるまで+1degずつ回転させるので、結果としてステップSG404〜SG407の処理を61回繰り返すことになる。なお、ステップSG403〜SG407の繰り返し処理において、カメラポーズを−30degから+30degとなるまで回転させているが、カメラポーズを回転させる範囲は必ずしもこの範囲である必要はない。
【0127】
ステップSDのカメラポーズ設定処理において、ユーザがカメラポーズを変更する際、計測画像に写った被検体と3Dオブジェクトとをどの程度までマッチングさせるかによって、ステップSG403〜SG407の繰り返し処理において、カメラポーズを回転させるのに必要な範囲が変わることになる。範囲が広い場合、ユーザは大まかなマッチングさえ行えば良いが、その代わり、3Dマッチングの処理時間が長くなる。範囲が狭い場合、3Dマッチングの処理時間が短くて済むが、その代わり、ユーザはある程度詳細にマッチングを行う必要がある。
【0128】
ステップSG405では、CPU34cが、現在のパン・チルト方向の回転角度をRAM34aに記録する。図33は、RAM34aに記録される回転角度を示している。ステップSG405では、CPU34cは、回転角度をRAM34aに上書き記録するのではなく、カメラポーズをパン・チルト方向に回転するたびに、図33(a)のように、RAM34aに用意されたデータリストに現在のパン・チルト方向の回転角度を1行ずつ追加記録していく。このデータリストには、後述するように、パン・チルト方向の回転角度と関連付けて、頂点角(3D)等の様々なデータを記録することができる。
【0129】
ステップSG406では、CPU34cが投影点(3D)を算出し、算出した投影点(3D)をRAM34aに記録する。ステップSG407では、CPU34cが頂点角(3D)を算出し、算出した頂点角(3D)をRAM34aに記録する。このとき、CPU34cは、図33(b)のように、頂点角(3D)をパン・チルト方向の回転角度と関連付けて、データリストに1行ずつ追加記録していく。
【0130】
ステップSG403〜SG407の繰り返し処理が終了すると、処理はステップSG408に移行する。この時点でのデータリストは、図33(c)のようになり、61×61行分のデータで構成されている。ステップSG408では、CPU34cがカメラポーズをパン・チルト方向にそれぞれ−30deg回転させる。ステップSG403〜SG407の繰り返し処理が終了した時点で、パン・チルト方向の回転角度はそれぞれ+30degであるので、ここでは、−30deg回転させることによって、カメラポーズを元の状態に戻すことになる。
【0131】
ステップSG409では、CPU34cが、頂点角(計測)と頂点角(3D)との差を算出する。具体的には、CPU34cは、(1)式〜(3)式のように、頂点角(計測)A1〜A3と頂点角(3D)A1’〜A3’との差の絶対値D1〜D3を算出する。
D1=|A1−A1’| ・・・(1)
D2=|A2−A2’| ・・・(2)
D3=|A3−A3’| ・・・(3)
さらに、CPU34cは、図34(a)のように、頂点角の差をパン・チルト方向の回転角度と関連付けて、データリストに追加記録する。
【0132】
ステップSG410では、CPU34cが差D1〜D3の平均値を算出する。さらに、CPU34cは、図34(b)のように、平均値をパン・チルト方向の回転角度と関連付けて、データリストに追加記録する。
【0133】
ステップSG411では、CPU34cが平均値の最小値をデータリストから検索する。図35は、データリストにおいて、0.5が最小値として検索された様子を示している。
【0134】
ステップSG412では、CPU34cが、平均値が最小となる場合のパン・チルト方向の回転角度をデータリストから読み込む。具体的には、CPU34cは、図35のように、データリストから、最小の平均値に関連付けられたパン・チルト方向の回転角度を読み込む。
【0135】
ステップSG413では、CPU34cが、カメラポーズをパン・チルト方向に、ステップSG412で読み込まれた回転角度だけ回転させる。このカメラポーズで3Dオブジェクトを表示した場合、図32(c),(d)のように、回転後の頂点角(計測)と頂点角(3D)とが、良く一致しており、参照図形(計測)と参照図形(3D)とが相似に近いことがわかる。
【0136】
ステップSG414では、CPU34cが、このときのカメラポーズをカレントカメラポーズとしてRAM34aに上書き記録する。ここでは、カレントカメラポーズに基づく3Dオブジェクトの再表示は行わない。ステップSG414の処理が終了すると、パン・チルト方向のマッチング処理が終了する。
【0137】
次に、図36を用いて、ステップSG5のロール方向のマッチング処理の流れを説明する。ロール方向のマッチング処理の目的は、参照図形(計測)と参照図形(3D)の回転方向のアングルが最も一致するカメラポーズを見つける、ということである。それぞれの参照図形の回転方向のアングルが近い場合、計測画像に写った被検体を観察する視線のロール方向の回転角度と、3Dオブジェクトを観察する視線のロール方向の回転角度とが、ほぼ一致しているということができる。
【0138】
ステップSG501では、CPU34cが相対角(計測)を算出し、算出した相対角(計測)をRAM34aに記録する。相対角(計測)とは、図37(a)のように、計測画像において上下方向に伸びる直線3700と、参照図形(計測)の3つの辺との間の角度Ar1〜Ar3である。このときの相対角(計測)は、直線3700から辺への右回り方向の角度である。
【0139】
ステップSG502では、CPU34cが投影点(3D)を算出し、算出した投影点(3D)をRAM34aに記録する。ステップSG503では、CPU34cが相対角(3D)を算出し、算出した相対角(3D)をRAM34aに記録する。相対角(3D)とは、図37(b)のように、スクリーン平面において上下方向に伸びる直線3701と参照図形(3D)の3つの辺との間の角度Ar1’〜Ar3’である。スクリーン平面は、計測画像が表示される[計測画像]ボックス611に相当するため、直線3700と直線3701の方向は一致する。また、このときの相対角(3D)は、直線3701から辺への右回り方向の角度である。
【0140】
ステップSG504では、CPU34cが相対角(計測)と相対角(3D)との差を算出する。具体的には、CPU34cは、(4)式〜(6)式のように、相対角(計測)Ar1〜Ar3と相対角(3D)Ar1’〜Ar3’とのそれぞれの差Dr1〜Dr3を算出する。
Dr1=Ar1−Ar1’ ・・・(4)
Dr2=Ar2−Ar2’ ・・・(5)
Dr3=Ar3−Ar3’ ・・・(6)
【0141】
ステップSG505では、CPU34cが差Dr1〜Dr3の平均値を算出し、算出した平均値をRAM34aに記録する。ステップSG506では、CPU34cがカメラポーズをロール方向に、ステップSG505で算出した平均値だけ回転させる。このカメラポーズで3Dオブジェクトを表示した場合、図37(c),(d)のように、回転後の相対角(計測)と相対角(3D)とが良く一致していることがわかる。
【0142】
ステップSG507では、CPU34cが、このときのカメラポーズをカレントカメラポーズとしてRAM34aに上書き記録する。ここでは、カレントカメラポーズに基づく3Dオブジェクトの再表示は行わない。ステップSG507の処理が終了すると、ロール方向のマッチング処理が終了する。
【0143】
次に、図38を用いて、ステップSG6のズーム方向のマッチング処理の流れを説明する。ズーム方向のマッチング処理の目的は、参照図形(計測)と参照図形(3D)のサイズが最も一致するカメラポーズを見つける、ということである。それぞれの参照図形のサイズが近い場合、計測画像に写った被検体を観察する視線のズーム方向の位置と、3Dオブジェクトを観察する視線のズーム方向の位置とが、ほぼ一致しているということができる。
【0144】
ステップSG601では、CPU34cが辺長(計測)を算出し、算出した辺長(計測)をRAM34aに記録する。辺長(計測)とは、図39(a)のように、参照点(計測)R1〜R3によって構成される3角形の3つの辺の長さL1〜L3である。
【0145】
ステップSG602では、CPU34cが投影点(3D)を算出し、算出した投影点(3D)をRAM34aに記録する。ステップSG603では、CPU34cが辺長1(3D)を算出し、算出した辺長1(3D)をRAM34aに記録する。辺長1(3D)とは、図39(b)のように、参照図形(3D)の3つの辺の長さL1’〜L3’である。
【0146】
ステップSG604では、CPU34cが、このときのカメラポーズをカメラポーズ1としてRAM34aに上書き記録する。ステップSG605では、CPU34cが、図39(b)のように、カメラポーズをズーム方向に所定値だけ移動させる。
【0147】
ステップSG606では、CPU34cが投影点(3D)を算出し、算出した投影点(3D)をRAM34aに記録する。ステップSG607では、CPU34cが辺長2(3D)を算出し、算出した辺長2(3D)をRAM34aに記録する。辺長2(3D)とは、図39(b)のように、カメラポーズをズーム方向に所定値だけ移動させた後の、参照図形(3D)の3つの辺の長さLz1’〜Lz3’である。ステップSG608では、CPU34cが、このときのカメラポーズをカメラポーズ2としてRAM34aに上書き記録する。
【0148】
ステップSG609では、CPU34cがズーム量を算出し、算出したズーム量をRAM34aに記録する。ズーム量は、辺長(3D)と辺長(計測)とが一致するようなカメラポーズのズーム方向の移動量であり、辺長1,2(3D)と、カメラポーズ1,2との関係から算出される。辺は3つであるので、ズーム量も3つ算出される。
【0149】
図40は、辺長(3D)とカメラポーズのズーム方向位置との関係を示している。図40のグラフ4000が示すように、両者は線形的な比例関係にある。グラフ4000を用いることで、辺長(3D)と辺長(計測)とを一致させる場合にカメラポーズをズーム方向に移動させる際の移動量を算出することができる。
【0150】
ステップSG610では、CPU34cが3つのズーム量の平均値を算出し、算出した平均値をRAM34aに記録する。ステップSG611では、CPU34cが、カメラポーズをズーム方向に、ステップSG611で算出した平均値だけ移動させる。このカメラポーズで3Dオブジェクトを表示した場合、図39(c),(d)のように、移動後の辺長(計測)と辺長(3D)とが、良く一致していることがわかる。
【0151】
ステップSG612では、CPU34cが、このときのカメラポーズをカレントカメラポーズとしてRAM34aに上書き記録する。ここでは、カレントカメラポーズに基づく3Dオブジェクトの再表示は行わない。ステップSG612の処理が終了すると、ズーム方向のマッチング処理が終了する。
【0152】
次に、図41を用いて、ステップSG7のシフト方向のマッチング処理の流れを説明する。シフト方向のマッチング処理の目的は、[計測画像]ボックス611における、計測画像に写った被検体と3Dオブジェクトとが一致するように、シフト方向に3Dオブジェクトを移動させる、ということである。本処理は、3Dオブジェクトのシフト位置を決定するものであるため、カメラポーズの算出は行わない。
【0153】
ステップSG701では、CPU34cが重心点(計測)を算出し、算出した重心点(計測)をRAM34aに記録する。重心点(計測)とは、図42(a)のように、参照点(計測)R1〜R3によって構成される3角形の重心点Gである。
【0154】
ステップSG702では、CPU34cが投影点(3D)を算出し、算出した投影点(3D)をRAM34aに記録する。ステップSG703では、CPU34cが重心点(3D)を算出し、算出した重心点(3D)をRAM34aに記録する。重心点(3D)とは、図42(a)のように、投影点(3D)Rp1’〜Rp3’によって構成される3角形の重心点G’である。
【0155】
ステップSG704では、CPU34cがシフト量を算出し、算出したシフト量をRAM34aに記録する。シフト量とは、重心点(計測)の、重心点(3D)との相対位置(平面座標系、pixel単位)である。ステップSG705では、CPU34cが、3Dオブジェクトをシフト方向に、ステップSG704で算出したシフト量だけ移動させる。このカメラポーズで3Dオブジェクトを表示した場合、図42(b)のように、重心点(計測)と重心点(3D)とが、良く一致していることがわかる。ステップSG705の処理が終了すると、シフト方向のマッチング処理が終了する。
【0156】
従来例では、2次元画像と3Dオブジェクトの投影図(2Dモデル)の画像データに基づくマッチング処理を行っていたため、3Dオブジェクトの再表示や、膨大なデータ量をもつ画像データの統計計算に、多くの処理時間がかかっていた。しかし、本実施形態では、3Dマッチング処理を実行する際、ユーザが指定する平易な形状の参照図形に基づく簡単な幾何学計算のみを実行すれば良く、処理時間を大幅に短縮することができる。さらに、3Dオブジェクトの再表示は、3Dマッチング処理終了後の1度のみで良い。
【0157】
次に、本実施形態の変形例を説明する。上記の説明では、CPU34cは、3点の参照点に基づいて、3Dマッチング処理を実行しているが、本変形例では、CPU34cは、4点の参照点に基づいて、3Dマッチング処理を実行する。ステップSG4のパン・チルト方向のマッチング処理において、CPU34cは、参照図形(計測)と参照図形(3D)とが最も相似に近くなるカメラポーズのパン・チルト方向の回転角度を算出するが、1対の参照図形(3角形)だけが相似に近くなる回転角度を算出しても、マッチング精度は必ずしも高いわけではなく、明らかに誤った回転角度を算出してしまうことがあった。また、ステップSG5〜SG7の各マッチング処理においても、同様に誤った回転角度・移動量を算出してしまうことがあった。
【0158】
上記に鑑み、本変形例では、3Dマッチング処理のマッチング精度を向上させることを目的とする。本変形例では、ステップSEの参照点(計測)の指定処理において、図43(a)のように、ユーザは4点の参照点(計測)R1〜R4を指定し、ステップSFの参照点(3D)の指定処理において、図43(b)のように、ユーザは4点の参照点(3D)R1’〜R4’を指定する。また、本変形例では、ステップSGの3Dマッチング処理において、CPU34cは、4点の参照点に基づいて参照図形を算出する。
【0159】
図44は、ステップSGで算出された参照図形(計測)を示している。4点の参照点(計測)R1〜R4のうちの3点で構成される4つの3角形4400,4401,4402,4403が参照図形(計測)となる。また、図45は、ステップSGで算出された参照図形(3D)を示している。4点の参照点(3D)Rp1’〜Rp4’のうちの3点で構成される4つの3角形4500,4501,4502,4503が参照図形(3D)となる。
【0160】
本変形例では、ステップSGの3Dマッチング処理において、CPU34cは、これら4つの3角形に基づいて、3Dマッチング処理を実行する。例えば、ステップSG4のパン・チルト方向のマッチング処理において、CPU34cは、カメラポーズのパン・チルト方向の回転角度を算出するが、この際、4つの3角形のそれぞれに基づいて算出した回転角度の平均値を最終的な回転角度として用いる。ステップSG5〜SG7の各マッチング処理においても、CPU34cは、4つの3角形のそれぞれに基づいて算出した回転角度・移動量の平均値を最終的な回転角度・移動量として用いる。
【0161】
本変形例では、ユーザが4点の参照点を指定することで、CPU34cは、参照点によって構成される4つの参照図形に基づいて、3Dマッチング処理を行う。そのため、CPU34cは、3Dマッチング処理を実行する際に多くのパラメータを用いることができ、その結果、マッチング精度を向上させることができる。
【0162】
本実施形態では、計測に係る一連の処理の手順および内容を規定したソフトウェア(プログラム)である3D計測ソフトに従ってCPU34cが上記の処理を行うことによって計測が行われる。図46は、CPU34cに必要な機能構成を示している。図46では、本実施形態の計測に関係する機能構成のみが示されており、他の機能構成については省略されている。CPU34cの機能構成には、撮像制御部340、指定部341、マッチング処理部342、表示制御部343、および計測部344が含まれる。
【0163】
撮像制御部340は、光源32および湾曲制御ユニット33の制御や撮像素子30bの制御を行う。指定部341は、リモコン23を介してユーザによって入力される指示に基づいて、計測画像上や3Dオブジェクトの画像上の指定された位置に対応する参照点(計測)、参照点(3D)、計測点を指定(設定)する。マッチング処理部342は、指定部341によって指定された参照点(計測)および参照点(3D)に基づいて、参照図形(計測)および参照図形(3D)を算出し、参照図形(計測)と参照図形(3D)との幾何学計算により、マッチングに必要なカメラポーズの変更量を算出する。
【0164】
表示制御部343は、モニタ22に表示される画像の内容や表示状態等を制御する。特に、表示制御部343は、マッチング処理部342によって算出されたカメラポーズの変更量に基づいて3Dオブジェクトの姿勢および位置を調整することによって、計測画像と3Dオブジェクトを互いにマッチングさせた状態で表示させる。上記の説明では3Dオブジェクトのみの姿勢および位置を調整しているが、これに限らず、計測画像のみの姿勢および位置を調整したり、計測画像および3Dオブジェクトの姿勢および位置を調整したりしてもよい。計測部344は、指定部341によって指定された計測点に基づいて、計測処理を行う。図46に示す機能構成の一部または全部を、計測に必要な機能を実現するためのアナログ回路やデジタル回路を配置して構成した特定のハードウェアに置き換えることも可能である。
【0165】
上述したように、本実施形態によれば、参照図形(計測)と参照図形(3D)との幾何学計算を行い、幾何学計算の結果に基づいて、計測画像と3Dオブジェクトとの少なくとも一方の姿勢または位置を調整することによって、マッチングに必要な処理時間を低減することができる。
【0166】
また、参照点(計測)と参照点(3D)のそれぞれの点の指定された順番に基づいて参照点(計測)と参照点(3D)とを対応付けることによって、簡易な方法で両者の対応付けが可能となり、マッチングに必要な処理時間を低減することができる。
【0167】
また、計測画像上の参照図形(計測)と、3Dオブジェクト上の参照点(計測)によって構成される3角形をスクリーン平面に投影した参照図形(3D)との幾何学計算によるマッチングを行うことによって、マッチングの精度を維持しつつ、マッチングに必要な処理時間を低減することができる。
【0168】
また、ユーザが参照点(計測)を指定する際に3Dオブジェクトの透過率が大きく設定されることによって、ユーザが計測画像を見やすくすることができ、かつ、ユーザが参照点(計測)を指定しやすくすることができる。
【0169】
また、3Dマッチング処理中は処理負荷の高い3Dオブジェクトの再表示を行わず、3Dマッチング処理の終了時に3Dオブジェクトの再表示を行うことによって、マッチングに必要な処理時間を低減することができる。
【0170】
以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成は上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【符号の説明】
【0171】
1・・・ジェットエンジン、2・・・ターニングツール、3・・・内視鏡装置、4・・・ビデオ端子ケーブル、5・・・ビデオキャプチャカード、6・・・PC、7・・・LANケーブル、10・・・タービンブレード、20・・・内視鏡挿入部、21・・・内視鏡装置本体、22,25・・・モニタ(表示部)、23・・・リモコン(入力装置)、24・・・PC本体、30a・・・撮像光学系、30b・・・撮像素子、31・・・画像信号処理装置、32・・・光源、33・・・湾曲制御ユニット、34,35・・・制御用コンピュータ、34a,35a・・・RAM、34b・・・ROM、34c,35c・・・CPU(指定部、計算部、調整部、計測部)、34d,35d・・・ネットワークI/F、34e・・・RS232C・・・I/F、34f・・・カードI/F、35b・・・HDD、35e・・・USB・・・I/F、340・・・撮像制御部、341・・・指定部、342・・・マッチング処理部、343・・・表示制御部、344・・・計測部
【技術分野】
【0001】
本発明は、計測対象物の画像を処理して計測対象物のサイズを計測する画像処理装置、画像処理方法、およびプログラムに関する。
【背景技術】
【0002】
従来、内視鏡等の観察用治具を使用して、ジェットエンジン内のブレード等の計測が行われている。特許文献1には、ブレード等の計測に適した技術が記載されている。この特許文献1に記載された技術では、被写体を撮像した被写体画像と、コンピュータグラフィックス(CG)により生成したCG画像とをモニタに表示し、CG画像における物体の状態と被写体画像における被写体の状態とが一致するように、ユーザの指示に基づいてCG画像を変更し、計測を行いたい部分に対してCG画像上で計測を行うことが可能である。
【0003】
しかし、特許文献1に記載された技術では、被写体の見え方が異なる複数の被写体画像を切り替えながら各被写体画像に対して計測を行う場合、被写体画像を切り替えるたびに、CG画像における物体の状態を被写体画像における被写体の状態に一致させる操作が必要となる。このため、ジェットエンジン内に周期的に配置された複数のブレードの計測を行う場合、上記の操作が頻繁に発生し、手間がかかるという問題がある。
【0004】
これに対して、特許文献2には、被写体を撮像して得られた2次元画像と、CAD(Computer Aided Design)を利用して得られたデータに基づく3Dオブジェクトとを自動的にマッチング(パターンマッチング)させることで、上記の手間の問題を解決した技術が記載されている。特許文献2に記載された技術では、まず、3Dオブジェクトを仮想的な複数の視点から観察した場合に、それぞれの視点において観察される3Dオブジェクトの投影図を生成し、複数の投影図をまとめて2Dモデルとして保存しておく。そして、2次元画像と、生成した2Dモデルとの間でマッチングを行い、2Dモデルとの類似度が 最も高い投影図を検索し、その投影図が生成されたときの視点の位置をもとに、2次元画像に写っている被写体と、2次元画像を撮像したカメラとの相対位置を算出する。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平3−102202号公報
【特許文献2】米国特許出願公開第2009/0096790号明細書
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献2に記載された技術では、2次元画像と3Dオブジェクトの投影図(2Dモデル)とを用いて、画像から検出されるエッジをベースとした画像処理によるマッチングを行うことで、類似度を算出していた。この方法によると、エッジをベースとした画像処理を行うため、マッチングに必要な処理時間が長かった。また、大量の投影図のそれぞれに対して画像処理を行うことになるので、マッチングに必要な処理時間が膨大となっていた。
【0007】
本発明は、上述した課題に鑑みてなされたものであって、処理時間を低減することができる画像処理装置、画像処理方法、およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明は、上記の課題を解決するためになされたもので、計測対象物の画像と、前記計測対象物に対応する物体であって予め算出された3次元形状を有する前記物体の画像とを表示する表示部と、入力装置を介して入力される指示に基づいて、前記計測対象物の画像上の第1の点と前記物体の画像上の第2の点とを指定する指定部と、前記第1の点を基準とする第1の図形と、前記第2の点を基準とする第2の図形との幾何学計算を行う計算部と、前記幾何学計算の結果に基づいて、前記計測対象物の画像と前記物体の画像との少なくとも一方の姿勢または位置を調整する調整部と、前記姿勢または前記位置が調整された後、入力装置を介して入力される指示に基づいて指定された計測位置に対応する前記物体上の空間座標を算出し、算出した空間座標に基づいて、前記物体のサイズを算出する計測部と、を備えたことを特徴とする画像処理装置である。
【0009】
また、本発明は、計測対象物の画像と、前記計測対象物に対応する物体であって予め算出された3次元形状を有する前記物体の画像とを表示する表示部と、入力装置を介して入力される指示に基づいて、前記計測対象物の画像上の第1の点を指定する指定部と、前記第1の点を基準とする第1の図形と、前記物体の画像と関連付けて記録されている第2の点を基準とする第2の図形との幾何学計算を行う計算部と、前記幾何学計算の結果に基づいて、前記計測対象物の画像と前記物体の画像との少なくとも一方の姿勢または位置を調整する調整部と、前記姿勢または前記位置が調整された後、入力装置を介して入力される指示に基づいて指定された計測位置に対応する前記物体上の空間座標を算出し、算出した空間座標に基づいて、前記物体のサイズを算出する計測部と、を備えたことを特徴とする画像処理装置である。
【0010】
また、本発明の画像処理装置において、前記第1の点および前記第2の点は、入力装置を介して入力される指示に基づいて指定された3点以上の点を含むことを特徴とする。
【0011】
また、本発明の画像処理装置において、前記計算部は、前記第1の点の指定された順番と、前記第2の点の指定された順番とに基づいて、前記第1の点と前記第2の点とを対応付けて前記幾何学計算を行うことを特徴とする。
【0012】
また、本発明の画像処理装置において、前記計算部は、前記第1の点を基準とする平面上の第1の図形と、前記第2の点に対応する前記物体の空間上の点を基準とする空間上の第2の図形との幾何学計算を行うことを特徴とする。
【0013】
また、本発明の画像処理装置において、前記計算部は、前記平面上の第1の図形と、前記空間上の第2の図形を前記平面に投影した第3の図形との幾何学計算を行うことを特徴とする。
【0014】
また、本発明の画像処理装置において、前記指定部はさらに、前記第1の点を指定する場合に、前記物体の画像の透過率を、前記第2の点を指定する場合の前記物体の画像の透過率よりも大きな透過率に設定することを特徴とする。
【0015】
また、本発明の画像処理装置において、前記表示部は、前記計測対象物の画像と前記物体の画像とを表示した後、前記幾何学計算が終了するまで、前記計測対象物の画像と前記物体の画像の姿勢および位置を維持し、前記幾何学計算が終了した後、前記姿勢または前記位置が調整された前記計測対象物の画像と前記物体の画像を再表示することを特徴とする。
【0016】
また、本発明は、計測対象物の画像と、前記計測対象物に対応する物体であって予め算出された3次元形状を有する前記物体の画像とを表示部が表示するステップと、入力装置を介して入力される指示に基づいて、指定部が前記計測対象物の画像上の第1の点と前記物体の画像上の第2の点とを指定するステップと、前記第1の点を基準とする第1の図形と、前記第2の点を基準とする第2の図形との幾何学計算を計算部が行うステップと、前記幾何学計算の結果に基づいて、調整部が前記計測対象物の画像と前記物体の画像との少なくとも一方の姿勢または位置を調整するステップと、前記姿勢または前記位置が調整された後、計測部が、入力装置を介して入力される指示に基づいて指定された計測位置に対応する前記物体上の空間座標を算出し、算出した空間座標に基づいて、前記物体のサイズを算出するステップと、を備えたことを特徴とする画像処理方法である。
【0017】
また、本発明の画像処理方法において、前記第1の点および前記第2の点は、入力装置を介して入力される指示に基づいて指定された3点以上の点を含み、前記計算部は、前記第1の点の指定された順番と、前記第2の点の指定された順番とに基づいて、前記第1の点と前記第2の点とを対応付けて前記幾何学計算を行うことを特徴とする。
【0018】
また、本発明は、計測対象物の画像と、前記計測対象物に対応する物体であって予め算出された3次元形状を有する前記物体の画像とを表示する表示部と、入力装置を介して入力される指示に基づいて、前記計測対象物の画像上の第1の点と前記物体の画像上の第2の点とを指定する指定部と、前記第1の点を基準とする第1の図形と、前記第2の点を基準とする第2の図形との幾何学計算を行う計算部と、前記幾何学計算の結果に基づいて、前記計測対象物の画像と前記物体の画像との少なくとも一方の姿勢または位置を調整する調整部と、前記姿勢または前記位置が調整された後、入力装置を介して入力される指示に基づいて指定された計測位置に対応する前記物体上の空間座標を算出し、算出した空間座標に基づいて、前記物体のサイズを算出する計測部と、としてコンピュータを機能させるためのプログラムである。
【発明の効果】
【0019】
本発明によれば、第1の図形と第2の図形との幾何学計算を行い、幾何学計算の結果に基づいて、計測対象物の画像と物体の画像との少なくとも一方の姿勢または位置を調整することによって、処理時間を低減することができる。
【図面の簡単な説明】
【0020】
【図1】本発明の一実施形態によるブレード検査システムの構成を示すブロック図である。
【図2】本発明の一実施形態によるブレード検査システムが備える内視鏡装置の構成を示すブロック図である。
【図3】本発明の一実施形態によるブレード検査システム(変形例)の構成を示すブロック図である。
【図4】本発明の一実施形態によるブレード検査システム(変形例)の構成を示すブロック図である。
【図5】本発明の一実施形態によるブレード検査システム(変形例)が備えるPCの構成を示すブロック図である。
【図6】本発明の一実施形態における3D計測ソフトの画面を示す参考図である。
【図7】本発明の一実施形態における3Dオブジェクトとカメラポーズの関係を示す参考図である。
【図8】本発明の一実施形態における3Dオブジェクトとカメラポーズの関係を示す参考図である。
【図9】本発明の一実施形態における3Dオブジェクトとカメラポーズの関係を示す参考図である。
【図10】本発明の一実施形態における3Dオブジェクトとカメラポーズの関係を示す参考図である。
【図11】本発明の一実施形態における3D計測ソフトによる動作の手順を示すフローチャートである。
【図12】本発明の一実施形態における3D計測ソフトによる動作の手順を示すフローチャートである。
【図13】本発明の一実施形態におけるカメラポーズの初期値を説明するための参考図である。
【図14】本発明の一実施形態におけるカメラポーズの初期値を説明するための参考図である。
【図15】本発明の一実施形態における3D計測ソフトによる動作の手順を示すフローチャートである。
【図16】本発明の一実施形態におけるカメラポーズ設定処理の内容を説明するための参考図である。
【図17】本発明の一実施形態における3D計測ソフトによる動作の手順を示すフローチャートである。
【図18】本発明の一実施形態における参照点(計測)指定処理の内容を説明するための参考図である。
【図19】本発明の一実施形態における3D計測ソフトによる動作の手順を示すフローチャートである。
【図20】本発明の一実施形態における参照点(3D)指定処理の内容を説明するための参考図である。
【図21】本発明の一実施形態における3D計測ソフトによる動作の手順を示すフローチャートである。
【図22】本発明の一実施形態におけるマッチング処理の内容を説明するための参考図である。
【図23】本発明の一実施形態における3D計測ソフトによる動作の手順を示すフローチャートである。
【図24】本発明の一実施形態における計測処理の内容を説明するための参考図である。
【図25】本発明の一実施形態における計測処理の内容を説明するための参考図である。
【図26】本発明の一実施形態における空間座標の算出方法を説明するための参考図である。
【図27】本発明の一実施形態における空間座標の算出方法を説明するための参考図である。
【図28】本発明の一実施形態における空間座標の算出方法を説明するための参考図である。
【図29】本発明の一実施形態における空間座標の算出方法を説明するための参考図である。
【図30】本発明の一実施形態における3D計測ソフトによる動作の手順を示すフローチャートである。
【図31】本発明の一実施形態における参照点と参照図形を示す参考図である。
【図32】本発明の一実施形態におけるパン・チルト方向のマッチング処理の内容を説明するための参考図である。
【図33】本発明の一実施形態におけるデータリストを示す参考図である。
【図34】本発明の一実施形態におけるデータリストを示す参考図である。
【図35】本発明の一実施形態におけるデータリストを示す参考図である。
【図36】本発明の一実施形態における3D計測ソフトによる動作の手順を示すフローチャートである。
【図37】本発明の一実施形態におけるロール方向のマッチング処理の内容を説明するための参考図である。
【図38】本発明の一実施形態における3D計測ソフトによる動作の手順を示すフローチャートである。
【図39】本発明の一実施形態におけるズーム方向のマッチング処理の内容を説明するための参考図である。
【図40】本発明の一実施形態における辺長(3D)とカメラポーズのズーム方向位置との関係を示すグラフである。
【図41】本発明の一実施形態における3D計測ソフトによる動作の手順を示すフローチャートである。
【図42】本発明の一実施形態におけるシフト方向のマッチング処理の内容を説明するための参考図である。
【図43】本発明の一実施形態の変形例を説明するための参考図である。
【図44】本発明の一実施形態の変形例を説明するための参考図である。
【図45】本発明の一実施形態の変形例を説明するための参考図である。
【図46】本発明の一実施形態によるブレード検査システムが備える制御用コンピュータのCPUの機能構成を示すブロック図である。
【発明を実施するための形態】
【0021】
以下、図面を参照し、本発明の実施形態を説明する。図1は、本実施形態によるブレード検査システムの構成を示している。ジェットエンジン1内には、検査対象物である複数のタービンブレード10(もしくはコンプレッサーブレード)が所定の間隔で周期的に配置されている。また、ジェットエンジン1には、タービンブレード10を回転方向Aに所定の速度で回転させるターニングツール2が接続されている。本実施形態では、タービンブレード10の画像を取り込んでいる間は常にタービンブレード10を回転させた状態にしている。
【0022】
本実施形態では、タービンブレード10の画像を取得するため、内視鏡装置3(本発明の画像処理装置に対応)が用いられる。ジェットエンジン1の内部には、内視鏡装置3の内視鏡挿入部20が挿入されており、この内視鏡挿入部20により、回転しているタービンブレード10の映像が取り込まれる。また、内視鏡装置3には、タービンブレード10の3次元計測を行うための3D計測ソフトが記憶されている。
【0023】
図2は内視鏡装置3の構成を示している。内視鏡装置3は、内視鏡挿入部20、内視鏡装置本体21、モニタ22、およびリモコン(リモートコントローラ)23から構成されている。内視鏡挿入部20の先端には、撮像光学系30aおよび撮像素子30bが内蔵されている。また、内視鏡装置本体21には、画像信号処理装置(CCU)31、光源32、湾曲制御ユニット33、および制御用コンピュータ34が内蔵されている。
【0024】
内視鏡挿入部20において、撮像光学系30aは被写体(被検体)からの光を集光し、撮像素子30bの撮像面上に被写体像を結像する。撮像素子30bは、被写体像を光電変換して撮像信号を生成する。撮像素子30bから出力された撮像信号は画像信号処理装置31に入力される。
【0025】
内視鏡装置本体21において、画像信号処理装置31は、撮像素子30bからの撮像信号をNTSC信号等の映像信号に変換して制御用コンピュータ34に供給し、さらに必要に応じてアナログビデオ出力として、外部に出力する。
【0026】
光源32は、光ファイバ等を通じて内視鏡挿入部20の先端に接続されており、光を外部に照射することができる。湾曲制御ユニット33は内視鏡挿入部20の先端と接続されており、先端を上下左右に湾曲させることができる。光源32および湾曲制御ユニット33の制御は、制御用コンピュータ34によって行われる。
【0027】
制御用コンピュータ34は、RAM34a、ROM34b、CPU34c、外部インターフェースとしてネットワークI/F34d、RS232C I/F34e、カード I/F34fから構成されている。RAM34aは、ソフトウェア動作に必要な画像情報等のデータを一時記憶するために使用される。ROM34bには、内視鏡装置3を制御するための一連のソフトウェア(プログラム)が記憶されており、後述する3D計測ソフトもROM34b内に記憶される。CPU34cは、ROM34bに記憶されているソフトウェアの命令コードに従って、RAM34aに記憶されたデータを用いて各種制御のための演算等を実行する。
【0028】
ネットワークI/F34dは、外部PCとLANケーブルによって接続するためのインターフェースであり、外部PCに対して、画像信号処理装置31から出力された映像情報を展開することができる。RS232C I/F34eは、リモコン23と接続するためのインターフェースであり、このリモコン23をユーザが操作することによって、内視鏡装置3の各種動作を制御することができる。カード I/F34fは、記録媒体である各種メモリカード50を自由に着脱できるようになっている。メモリカード50を装着することにより、CPU34cの制御によって、メモリカード50に記憶されている画像情報等のデータを取り込み、あるいは画像情報等のデータをメモリカード50に記録することができる。
【0029】
本実施形態によるブレード検査システムの構成の変形例として、図3に示す構成を用いてもよい。本変形例では、内視鏡装置3にビデオ端子ケーブル4およびビデオキャプチャカード5が接続されており、これによって、内視鏡装置3が取り込んだ映像をPC6(本発明の画像処理装置に対応)にも取り込ませることが可能となっている。PC6は、図3ではノート型PCとして描かれているが、デスクトップ型のPC等でもよい。PC6には、タービンブレード10の3次元計測を行うための3D計測ソフトが記憶されている。
【0030】
さらに、図3では、PC6への映像の取り込みにビデオ端子ケーブル4およびビデオキャプチャカード5を用いているが、図4に示すようにLANケーブル7を用いてもよい。内視鏡装置3は、取り込まれた映像をLANネットワーク上に展開することのできるネットワークI/F34dを備えている。そして、LANケーブル7を通じて、PC6に映像を取りませることができる。
【0031】
図5はPC6の構成を示している。PC6はPC本体24およびモニタ25から構成されている。PC本体24には、制御用コンピュータ35が内蔵されている。制御用コンピュータ35は、RAM35a、HDD(ハードディスクドライブ)35b、CPU35c、外部インターフェースとして、ネットワークI/F35d、USB I/F35eから構成されている。制御用コンピュータ35はモニタ25に接続されており、映像情報およびソフトウェアの画面等がモニタ25に表示される。
【0032】
RAM35aは、ソフトウェア動作に必要な画像情報等のデータを一時記憶するために使用される。HDD35bには、内視鏡装置を制御するために一連のソフトウェアが記憶されており、3D計測ソフトもHDD35b内に記憶される。また、本実施形態では、タービンブレード10の画像を保存する保存用フォルダはHDD35b内に設定される。CPU35cは、HDD35bに記憶されているソフトウェアの命令コードに従って、RAM35aに記憶されたデータを用いて各種制御のための演算等を実行する。
【0033】
ネットワークI/F35dは、内視鏡装置3とPC6をLANケーブル7によって接続するためのインターフェースであり、内視鏡装置3からLAN出力された映像情報をPC6に入力することができる。USB I/F35eは、内視鏡装置3とPC6をビデオキャプチャカード5によって接続するためのインターフェースであり、内視鏡装置3からアナログビデオ出力された映像情報をPC6に入力することができる。
【0034】
図3および図4に示すブレード検査システムでは、図1に示すブレード検査システムと同様の効果を得ることができる。特に、内視鏡装置の性能がPCよりも劣っており、内視鏡装置の動作速度等が十分でない場合等に、図3および図4に示すブレード検査システムは有効である。
【0035】
次に、3D計測ソフトの画面を説明する。図6は、3D計測ソフトのメインウィンドウを示している。図6に示すメインウィンドウ600は、ユーザが3D計測ソフトを起動した際にモニタ22に表示される。CPU34cは、3D計測ソフトに従って、メインウィンドウ600内の各種CUIの操作に基づく処理を行う。
【0036】
メインウィンドウ600の表示は、CPU34cによる制御に従って行われる。CPU34cは、メインウィンドウ600を表示するためのグラフィック画像信号(表示信号)を生成し、モニタ22へ出力する。また、内視鏡装置3に取り込まれた映像(以下、計測画像と記載)をメインウィンドウ600上に重畳表示する場合には、CPU34cは、画像信号処理装置31から取り込んだ画像データをグラフィック画像信号に重畳する処理を行い、処理後の信号(表示信号)をモニタ22へ出力する。
【0037】
また、メインウィンドウ600上のGUIの表示状態を更新する場合、CPU34cは、更新後のメインウィンドウ600に対応したグラフィック画像信号を生成し、上記と同様の処理を行う。メインウィンドウ600以外のウィンドウの表示に係る処理も上記と同様である。以下、メインウィンドウ600等を表示(更新も含む)するためにCPU34cがグラフィック画像信号を生成する処理のことを、メインウィンドウ600等を表示するための処理と記載する。
【0038】
ユーザは、GUI(グラフィカルユーザインタフェース)機能を利用して、リモコン23を介してメインウィンドウ600を操作し、メインウィンドウ600に重畳表示されるカーソルCを移動させ、クリック等の指示を入力することにより、メインウィンドウ600の各種GUIの操作を行うことができる。以下、各種GUIの機能を説明する。
【0039】
メインウィンドウ600の右上部には、[ファイル選択]ボックス610が配置されている。また、メインウィンドウ600の左上部には[計測画像]ボックス611が配置されている。[ファイル選択]ボックス610は、[計測画像]ボックス611に表示される計測画像の選択、および[計測画像]ボックス611に表示される3Dオブジェクトに対応したCADデータの選択を行うためのボックスである。
【0040】
CADデータは、CADを利用して予め算出されたタービンブレード10の3次元形状を表すデータである。CADデータの形式には、STL(Standard Triangulated Language)形式等を用いる。3Dオブジェクトは、CADデータの内容をもとに構築されたCG物体である。[ファイル選択]ボックス610内のGUIおよび操作の詳細については、記載しない。
【0041】
[計測画像]ボックス611は、計測対象物であるタービンブレード10を撮像して得られた計測画像IMGを表示し、計測画像IMG上に3DオブジェクトOBを重畳表示するためのボックスである。後述するように、ユーザは[計測画像]ボックス611の操作を行うことにより、カメラポーズの変更、参照点の指定、計測点の指定等を行う。
【0042】
メインウィンドウ600の左下部には、[表示設定]ボックス620が配置されている。[表示設定]ボックス620内には、[計測画像]ボックス611に表示された3DオブジェクトOBの表示設定に関するGUIが配置されている。[表示設定]ボックス620内の各GUIの機能は以下の通りである。
【0043】
[透過率]バー621は、3Dオブジェクトの表示透過率を設定するためのバーである。[透過率]バー621は水平方向(横方向)に移動(スライド)可能になっており、ユーザが[透過率]バー621を移動させることで、3Dオブジェクトの表示透過率が変化する。
【0044】
例えば、透過率が大きく設定された場合、3DオブジェクトOBは透明に近い透過率で表示され、透過率が小さく設定された場合、3DオブジェクトOBは透過されずに表示される。後述するように、[計測画像]ボックス611において、ユーザが計測画像IMGに参照点を指定する際には、3DオブジェクトOBの透過率を大きく設定することで、計測画像IMGを見やすくすると良い。また、ユーザが3DオブジェクトOBに参照点を指定する際には、3DオブジェクトOBの透過率を小さく設定することで、3DオブジェクトOBを見やすくすると良い。
【0045】
[表示方法]ラジオボタン622は、3DオブジェクトOBの表示方法を設定するためのラジオボタンである。[表示方法]ラジオボタン622には、「シェーディング」と「ワイヤーフレーム」の2つの設定項目がある。「シェーディング」が選択された場合、3DオブジェクトOBは、ワイヤーフレームおよび表面が塗りつぶされた状態で表示され、「ワイヤーフレーム」が選択された場合、図6のように、3DオブジェクトOBはワイヤーフレームのみの状態で表示される。
【0046】
[表示方法]ラジオボタン623は、3DオブジェクトOBの表示色を設定するためのラジオボタンである。[表示方法]ラジオボタン623には、「水色」と「黄色」の2つの設定項目がある。[表示方法]ラジオボタン623の設定によって、3DオブジェクトOBの表示色を切り替えることができる。
【0047】
[移動方向]ラジオボタン624は、カメラポーズの移動方向を設定するためのラジオボタンである。カメラポーズは、3DオブジェクトOBの姿勢(ポーズ)、すなわち3DオブジェクトOBをどの方向、どの位置から見ているかを示すパラメータである。[移動方向]ラジオボタン624には、「パン/チルト」と「ロール/ズーム」の2つの設定項目がある。「パン/チルト」が選択された場合、[計測画像]ボックス611において、ユーザがカーソルCを上下左右に移動させることで、カメラポーズをパン・チルト方向に回転させることができる。また、「ロール/ズーム」が選択された場合、同様の操作で、カメラポーズをロール・ズーム方向に回転させることができる。
【0048】
[計測画像]ボックス611の下側には、[現在位置]ボックス630が配置されている。[現在位置]ボックス630は、カーソル位置における3DオブジェクトOBの表面座標をリアルタイムで表示するためのボックスである。3DオブジェクトOBの表面座標は空間座標系の座標としてmm単位で示される。[計測画像]ボックス611において、ユーザがカーソルCを移動させることで、[現在位置]ボックス630の値もリアルタイムに変更される。例えば、カーソルCが3DオブジェクトOB上に位置する場合、3DオブジェクトOBの表面座標が算出され、[現在位置]ボックス630に表示される。カーソルCが3DオブジェクトOB上に位置しない場合は、[現在位置]ボックス630に「null」と表示される。3DオブジェクトOBの表面座標の算出方法については、図26〜図29を用いて後述する。
【0049】
[現在位置]ボックス630の下側には、[カメラポーズ]ボックス640が配置されている。[カメラポーズ]ボックス640は、カメラポーズをリアルタイムで表示するためのボックスである。ユーザがカメラポーズを変更することで、[カメラポーズ]ボックス640の値がアルタイムに変更される。カメラポーズは、空間座標系の座標としてmm単位で示される。
【0050】
[カメラポーズ]ボックス640の右側には、[シフト位置]ボックス650が配置されている。[シフト位置]ボックス650は、[計測画像]ボックス611における3DオブジェクトOBのシフト位置を表示するためのボックスである。3DオブジェクトOBのシフト位置は、平面座標系の座標としてpixel単位で示される。
【0051】
3DオブジェクトOBは[計測画像]ボックス611の中央部に表示されており、カメラポーズが変更されても表示位置は変化しない。しかし、計測画像IMGに写った被検体は、必ずしも画像の中央部に位置しているわけではない。そのため、計測画像IMGと3Dオブジェクト3Dとをマッチングさせる処理である3Dマッチング処理の実行後、3DオブジェクトOBは[計測画像]ボックス611の中央部ではなく、計測画像に写った被検体の上に位置しているべきである。
【0052】
上記のシフト位置は、[計測画像]ボックス611の中央部からの3DオブジェクトOBの相対位置を示している。以下、平面座標系におけるシフト位置の移動方向をシフト方向と記載する。ユーザが手動で任意にシフト位置を変更することはできない。シフト位置は、3Dマッチング処理の実行後に、CPU34cが算出するものである。
【0053】
[ファイル選択]ボックス610の下側には、[マッチング/計測]ボックス660が配置されている。[マッチング/計測]ボックス660内には、3Dマッチング処理および計測に関するGUIが配置されている。[マッチング/計測]ボックス660内の各GUIの機能は以下の通りである。
【0054】
[カメラポーズ]ボタン661aは、カメラポーズを変更するためのボタンである。[カメラポーズ]ボタン661aが押下された後、[計測画像]ボックス611aにおいて、ユーザがカーソルCを上下左右に移動させることで、カメラポーズが変更可能となる。また、[カメラポーズ]ボタン661aの右側には、[リセット]ボタン661bが配置されており、[リセット]ボタン661bが押下されると、カメラポーズが初期値に設定される。
【0055】
[参照点(計測)]ボタン662aは、計測画像IMGの参照点(計測)を指定するためのボタンである。参照点(計測)とは、CPU34cが3Dマッチング処理を実行する際の基準となる計測画像IMG上の点のことである。[参照点(計測)]ボタン662aが押下された後、[計測画像]ボックス611において、ユーザがカーソルCを移動させて、指定したい位置でクリック等を行うことで、計測画像IMGに写った被検体に対して参照点(計測)を指定することができる。参照点(計測)は、平面座標系の座標としてpixel単位で示される。また、[参照点(計測)]ボタン662aが押下されると、3DオブジェクトOBの表示透過率が自動的に大きく設定され、計測画像IMGが見やすい状態となる。また、[参照点(計測)]ボタン662aの右側には、[クリア]ボタン662bが配置されており、[クリア]ボタン662bが押下されると、既に指定された参照点(計測)が全てクリアされ、指定前の状態となる。
【0056】
[参照点(3D)]ボタン663aは、3DオブジェクトOBの参照点(3D)を指定するためのボタンである。参照点(3D)とは、参照点(計測)と同様に、CPU34cが3Dマッチング処理を実行する際の基準となる3Dオブジェクト上の点である。[参照点(3D)]ボタン663aが押下された後、[計測画像]ボックス611において、ユーザがカーソルCを移動させて、参照点(3D)を指定したい位置でクリック等の操作を行うことで、3DオブジェクトOBに対して参照点(3D)を指定することができる。参照点(3D)は、空間座標系の座標としてmm単位で示される。また、[参照点(3D)]ボタン663aが押下された後、3DオブジェクトOBの表示透過率が自動的に小さく設定され、3DオブジェクトOBが見やすい状態となる。また、[参照点(3D)]ボタン663aの右側には、[クリア]ボタン663bが配置されており、[クリア]ボタン663bが押下されると、既に指定された参照点(3D)が全てクリアされ、指定前の状態となる。
【0057】
[3Dマッチング]ボタン664は、3Dマッチング処理を実行するためのボタンである。[3Dマッチング]ボタン664が押下された後、ユーザが指定した2組の参照点(参照点(計測)と参照点(3D))に基づいて、CPU34cは3Dマッチング処理を実行する。このとき、CPU34cは、2組の参照点の位置がそれぞれ一致するように、3Dマッチング処理を行うことになる。3Dマッチング処理の結果、計測画像IMG内の被検体と3DオブジェクトOBとがほぼ一致するように表示され、計測画像IMG内の被検体と3DオブジェクトOBが計測に適した状態となる。
【0058】
[計測]ボタン665aは、計測点を指定するためのボタンである。計測点とは、計測を行う際の基準となる点である。[計測]ボタン665aが押下された後、[計測画像]ボックス611において、ユーザがカーソルCを移動させて、計測点を指定したい位置でクリック等の操作を行うことで、3DオブジェクトOBに対して計測点を指定することができる。CPU34cは、指定された計測点に基づいて、計測処理を実行する。また、[計測]ボタン665aの右側には、[クリア]ボタン665bが配置されており、[クリア]ボタン665bが押下されると、既に指定された計測点が全てクリアされ、指定前の状態となる。
【0059】
[マッチング/計測]ボックス660の下側には、[計測結果]ボックス670が配置されている。[計測結果]ボックス670は、計測結果を表示するためのボックスである。[計測画像]ボックス611においてユーザが計測点を指定すると、指定された計測点に基づいて計測処理が実行され、[計測結果]ボックス670に計測結果が表示される。
【0060】
メインウィンドウ600の右下部には、[終了]ボタン680が配置されている。[終了]ボタン680は、3D計測ソフトを終了するためのボタンである。[終了]ボタン680が押下されると、全てのソフト動作が終了し、メインウィンドウ600が閉じる(非表示となる)。
【0061】
次に、図7を用いて、3Dオブジェクトとカメラポーズとの関係について説明する。図7に示すように、実空間に対応する仮想的な空間上に3DオブジェクトOB1および視点700がある。3DオブジェクトOB1の位置は固定されているが、視点700の位置はユーザによって自由に変更される。3DオブジェクトOB1の重心位置には視線中心701があり、視点700から視線方向702に伸びる直線は、常にこの視線中心701を向いている。視線中心701の位置は固定されている。
【0062】
3DオブジェクトOB1と視点700との間には、矩形状のスクリーン平面703がある。スクリーン平面703は[計測画像]ボックス611に相当するものである。スクリーン平面703の縦方向および横方向のサイズは固定値である。3DオブジェクトOB1をスクリーン平面703に投影した投影像が、[計測画像]ボックス611に表示される3DオブジェクトOBである。
【0063】
スクリーン平面703は、視線方向702と常に垂直であり、視点700から視線方向702に伸びる直線は、常にスクリーン平面703の中心704を通る。視点700からスクリーン平面703の中心704までの距離706は固定値であるが、視点700から視線中心701までの距離は、ユーザによって自由に変更される。
【0064】
スクリーン平面703の向いている方向は、上方向ベクトル705によって示される。この上方向ベクトル705は、スクリーン平面703と平行であり、スクリーン平面703の上方向がどの方向かを表す単位ベクトルである。
【0065】
図7に示した項目のうち、カメラポーズを構成するパラメータは、視点位置、視線中心位置、上方向ベクトルの3つである。以下では、図8〜図10を用いて、カメラポーズを変更したときの3Dオブジェクトとカメラポーズとの関係について説明する。
【0066】
図8(a)は、カメラポーズをパン・チルト方向に変更した場合の3Dオブジェクトとカメラポーズとの関係を示している。パン方向とは、視点800から視線中心801までの距離を固定したまま、視点800を上方向ベクトル802と垂直に移動させた場合の方向(パン方向803)である。チルト方向とは、視点800から視線中心801までの距離を固定したまま、視点800を上方向ベクトル802と平行に移動させた場合の方向(チルト方向804)である。図8(a)のように、カメラポーズをパン・チルト方向に変更すると、図8(b)のように、スクリーン平面805に投影される3DオブジェクトOBは、上下左右の各方向に回転することがわかる。
【0067】
図9(a)は、カメラポーズをロール方向に変更した場合の3Dオブジェクトとカメラポーズとの関係を示している。ロール方向とは、視点900の位置を固定したまま、視点900から視点中心901に向かう視点方向902の軸を中心に、スクリーン平面903を回転させた場合の方向(ロール方向904)である。図9(a)のように、カメラポーズをロール方向に変更すると、図9(b)のように、スクリーン平面903に投影される3DオブジェクトOBは、スクリーン平面903の中心を軸として回転することがわかる。
【0068】
図10(a)は、カメラポーズをズーム方向に変更した場合の3Dオブジェクトとカメラポーズとの関係を示している。ズーム方向とは、上方向ベクトル1000を固定したまま、視点1001を視線方向1002と平行に移動させた場合の方向(ズーム方向1003)である。図10(a)のように、カメラポーズをズーム方向に変更すると、図10(b)のように、スクリーン平面1004に投影される3DオブジェクトOBは、拡大・縮小することがわかる。
【0069】
上記の説明の通り、カメラポーズが変更されると、スクリーン平面の位置・方向が変化する。それに伴い、スクリーン平面に投影される3Dオブジェクトの表示も変化し、その結果、[計測画像]ボックス611に表示される3Dオブジェクトの表示も変化することになる。CPU34cは、ユーザによってリモコン23を介して入力されるカメラポーズの変更指示を検出し、その変更指示に応じて、3Dオブジェクトを[計測画像]ボックス611に表示するための処理を行う。
【0070】
次に、図11を用いて、3D計測ソフトの動作の流れを説明する。以下では、メインウィンドウ600における全てのGUIに関する動作ではなく、一部のGUIに関する動作のみ説明するものとする。具体的には、[計測画像]ボックス611、[カメラポーズ]ボタン661a、[参照点(計測)]ボタン662a、[参照点(3D)]ボタン663a、[3Dマッチング]ボタン664、[計測]ボタン665a、[計測結果]ボックス670、[終了]ボタン680に関する動作は説明するが、その他のGUIに関する動作の説明は行わない。
【0071】
ステップSAでは、CPU34cが3D計測ソフトを起動する。具体的には、ユーザがリモコン23を介して入力した起動指示に基づいて、CPU34cは、ROM34bに格納されている3D計測ソフトをRAM34aに読み込み、3D計測ソフトに従った動作を開始する。ステップSBでは、CPU34cが、メインウィンドウ600を表示するための処理を行う。
【0072】
ステップSCでは、CPU34cが初期化処理を行う。初期化処理とは、メインウィンドウ600内の各種GUIの初期状態を設定したり、RAM34aに記録された各種データの初期値を設定したりする処理である。初期化処理の詳細については、後述する。
【0073】
ステップSDでは、CPU34cがカメラポーズ設定処理を行う。カメラポーズ設定処理とは、ユーザが入力した、カメラポーズを変更する指示に基づいて、[計測画像]ボックス611の計測画像内の被検体と3Dオブジェクトとを大まかにマッチングさせる処理である。カメラポーズ設定処理の詳細については、後述する。
【0074】
ステップSEでは、CPU34cが参照点(計測)指定処理を行う。参照点(計測)指定処理とは、ユーザが入力した、[計測画像]ボックス611の計測画像に写った被検体上の位置を指定する指示に基づいて、参照点を指定(設定)する処理である。参照点(計測)指定処理の詳細については、後述する。
【0075】
ステップSFでは、CPU34cが参照点(3D)指定処理を行う。参照点(3D)指定処理とは、ユーザが入力した、[計測画像]ボックス611の3Dオブジェクト上の位置を指定する指示に基づいて、参照点を指定(設定)する処理である。参照点(3D)指定処理の詳細については、後述する。
【0076】
ステップSGでは、CPU34cが3Dマッチング処理を行う。3Dマッチング処理とは、ユーザが指定した2組の参照点(参照点(計測)・参照点(3D))に基づいて、[計測画像]ボックス611に表示された計測画像と3Dオブジェクトとをマッチングさせる処理である。3Dマッチング処理の詳細については、後述する。
【0077】
ステップSHでは、CPU34cが計測処理を行う。計測処理とは、ユーザが入力した、[計測画像]ボックス611の3Dオブジェクト上の位置を指定する指示に基づいて、計測点を指定(設定)し、指定した計測点に基づいて、被検体のサイズを算出する処理である。計測処理の詳細については、後述する。
【0078】
ステップSIでは、CPU34cが、ユーザによって[終了]ボタン680が押下されたかどうかを確認する。ユーザが[終了]ボタン680を押下した場合、処理はステップSJに移行する。また、ユーザが[終了]ボタン680を押下しなかった場合、処理はステップSDに移行する。ステップSJでは、CPU34cがメインウィンドウ600を非表示とし、3D計測ソフトの動作を終了する。
【0079】
次に、図12を用いて、ステップSCの初期化処理の動作の流れを説明する。ステップSC1では、CPU34cが、メモリカード50に記録された所定の計測画像ファイルおよびCADデータをRAM34aに読み込む。ステップSC2では、CPU34cが、読み込まれたCADデータに基づいて、カメラポーズ(初期値)を算出する。
【0080】
カメラポーズのうち、視点位置については、図13のように、CPU34cは空間座標系の原点の座標(x,y,z)=(0,0,0)を初期値(視点1300)とする。カメラポーズのうち、視線中心位置については、図13のように、CPU34cは、CADデータにおける全ての空間座標の重心位置を算出し、その座標を初期値(視点中心1301)とする。この視線中心位置は、CADデータごとに固有の値であり、この後、カメラポーズが変更されても、この値が変化することはない。カメラポーズのうち、上方向ベクトルについては、図13のように、CPU34cは、視点1300と視線中心1301を結ぶ直線と直交する単位ベクトルのうち、Z方向成分の最も大きいものを初期値(上方向ベクトル1302)とする。ここでは、Z方向成分の最も大きい単位ベクトルを上方向ベクトルの初期値としているが、Z方向成分の最も大きい単位ベクトルに限るわけではない。
【0081】
ステップSC3では、CPU34cが、ステップSC2で算出したカメラポーズ(初期値)をカレントカメラポーズとしてRAM34aに記録する。カレントカメラポーズとは、現在設定されているカメラポーズのことであり、3Dオブジェクトは、このカレントカメラポーズに基づいて表示されることになる。
【0082】
ステップSC4では、CPU34cが、図14のように[計測画像]ボックス611に計測画像IMGを表示し、さらにその上に3DオブジェクトOBを所定の透過率で重畳表示するための処理を実行する。このとき、3DオブジェクトOBは、算出されたカメラポーズ(初期値)に基づいて、スクリーン平面に投影された平面図として表示される。ステップSC4の処理が終了すると、初期化処理が終了する。
【0083】
次に、図15を用いて、ステップSDのカメラポーズ設定処理の流れを説明する。ステップSD1では、CPU34cが、[カメラポーズ]ボタン661aが既に押下された状態(ステップSD3の処理が既に行われた状態)であるかどうかを確認する。[カメラポーズ]ボタン661aが押下された状態である場合、処理はステップSD4に移行し、[カメラポーズ]ボタン661aが押下された状態でない場合、処理はステップSD2に移行する。
【0084】
ステップSD2では、CPU34cが、[カメラポーズ]ボタン661aがユーザによって押下されたかどうかを確認する。[カメラポーズ]ボタン661aが押下された場合、処理はステップSD3に移行し、[カメラポーズ]ボタン661aが押下されていない場合、カメラポーズ設定処理が終了する。
【0085】
ステップSD3では、CPU34cが、図16(a)のように[カメラポーズ]ボタン661aを強調表示するための処理を行う。[カメラポーズ]ボタン661aを強調表示するのは、現在、カメラポーズが変更可能であることをユーザに通知するためである。
【0086】
ステップSD4では、CPU34cが、図16(b)のように、[計測画像]ボックス611において、ユーザがリモコン23を操作してカーソルCによりクリック等を行いながらカーソルCを上下左右に移動させる操作(ドラッグ操作)を検出し、カーソルCの操作を検出した結果に基づいてカメラポーズを変更する。このとき、ユーザは、計測画像に写った被検体DUTと3DオブジェクトOBとが大まかにマッチングするように、カメラポーズを変更する。カメラポーズは、前述したパン・チルト・ロール・ズームの方向に変更可能である。また、このとき、CPU34cは、リモコン23を介して入力されるカーソルCの操作指示を検出し、その操作指示に基づいて、変更後のカメラポーズを算出する。
【0087】
ステップSD5では、CPU34cが変更後のカメラポーズをカレントカメラポーズとしてRAM34aに上書き記録する。ステップSD6では、CPU34cが、カレントカメラポーズに基づいて、3Dオブジェクトを再表示するための処理を行う。これによって、図16(c)のように、カメラポーズが変更された3DオブジェクトOBが[計測画像]ボックス611に表示される。ステップSD6の処理が終了すると、カメラポーズ設定処理が終了する。
【0088】
次に、図17を用いて、ステップSEの参照点(計測)指定処理の流れを説明する。ステップSE1では、CPU34cが、[参照点(計測)]ボタン662aが既に押下された状態(ステップSE3,SE4の処理が既に行われた状態)であるかどうかを確認する。[参照点(計測)]ボタン662aが押下された状態である場合、処理はステップSE5に移行し、[参照点(計測)]ボタン662aが押下された状態でない場合、処理はステップSE2に移行する。
【0089】
ステップSE2では、CPU34cが、[参照点(計測)]ボタン662aがユーザによって押下されたかどうかを確認する。[参照点(計測)]ボタン662aが押下された場合、処理はステップSE3に移行し、押下されていない場合、参照点(計測)指定処理が終了する。
【0090】
ステップSE3では、CPU34cが、図18(a)のように、[参照点(計測)]ボタン662aを強調表示するための処理を行う。[参照点(計測)]ボタン662aを強調表示するのは、現在、計測画像に対して参照点が指定可能であることをユーザに通知するためである。
【0091】
ステップSE4では、CPU34cが、図18(b)のように、3DオブジェクトOBの透過率を変更し、変更後の透過率で3DオブジェクトOBを再表示するための処理を行う。ここで設定される透過率は大きな値であり、3DオブジェクトOBは透明に近い状態となり、計測画像が見やすい状態となる。なお、特に図示していないが、既に指定した参照点(3D)が存在する場合は、3DオブジェクトOBが一旦非表示となる。これも、計測画像を見やすい状態とするためである。
【0092】
ステップSE5では、CPU34cが、[計測画像]ボックス611において、計測画像に写った被検体DUTに対して参照点(計測)を指定するためにユーザがリモコン23を操作してカーソルCによりクリック等を行う操作を検出し、カーソルCの操作を検出した結果に基づいて、指定された参照点の座標を算出する。このとき算出される参照点(計測)の座標は、計測画像における平面座標(pixel単位)である。
【0093】
ステップSE6では、CPU34cが、指定された参照点(計測)の座標をRAM34aに記録する。ステップSE7では、CPU34cが、指定された参照点(計測)を計測画像上に重畳表示するための処理を行う。これによって、図18(c)のように、参照点(計測)R1,R2,R3が計測画像上に重畳表示される。ステップSE7の処理が終了すると、参照点(計測)指定処理が終了する。
【0094】
次に、図19を用いて、ステップSFの参照点(3D)指定処理の流れを説明する。ステップSF1では、CPU34cが、[参照点(3D)]ボタン663aが既に押下された状態(ステップSF3,SF4が既に行われた状態)であるかどうかを確認する。[参照点(3D)]ボタン663aが押下された状態である場合、処理はステップSF5に移行し、[参照点(3D)]ボタン663aが押下されていない状態でない場合、処理はステップSF2に移行する。
【0095】
ステップSF2では、CPU34cが、[参照点(3D)]ボタン663aがユーザによって押下されたかどうかを確認する。[参照点(3D)]ボタン663aが押下された場合、処理はステップSF3に移行し、[参照点(3D)]ボタン663aが押下されていない場合、参照点(3D)指定処理が終了する。
【0096】
ステップSF3では、CPU34cが、図20(a)のように、[参照点(3D)]ボタン663aを強調表示するための処理を行う。[参照点(3D)]ボタン663aを強調表示するのは、現在、3Dオブジェクトに対して参照点が指定可能であることをユーザに通知するためである。
【0097】
ステップSF4では、CPU34cが、図20(b)のように、3DオブジェクトOBの透過率を変更し、変更後の透過率で3DオブジェクトOBを再表示するための処理を行う。ここで設定される透過率は小さな値であり、3DオブジェクトOBが見やすい状態となる。このとき、特に図示していないが、既に指定した参照点(計測)が存在する場合は、計測画像が一旦非表示となる。これも、3DオブジェクトOBを見やすい状態とするためである。
【0098】
ステップSF5では、CPU34cが、[計測画像]ボックス611において、計測画像に写った被検体DUTに対して参照点(3D)を指定するためにユーザがリモコン23を操作してカーソルCによりクリック等を行う操作を検出し、カーソルCの操作を検出した結果に基づいて、指定された参照点の座標を算出する。このとき算出される参照点(3D)の座標は、3Dオブジェクト表面における空間座標(mm単位)であり、CPU34cは、まず指定された参照点の平面座標(pixel単位)を算出し、続いて、算出した平面座標から空間座標(mm単位)を算出する。
【0099】
ユーザが指定する参照点(3D)と、既に指定された参照点(計測)とが、それぞれ対応付けられていなくてはならない。本実施形態では、CPU34cは、ユーザが参照点(計測)を指定した順番と、参照点(3D)を指定した順番とに基づいて、参照点(3D)と参照点(計測)とを対応付けるものとする。より具体的には、CPU34cは、参照点(計測)のうち最初に指定された点と参照点(3D)のうち最初に指定された点とを対応付け、参照点(計測)のうち2番目に指定された点と参照点(3D)のうち2番目に指定された点とを対応付け、・・・、参照点(計測)のうちn番目に指定された点と参照点(3D)のうちn番目に指定された点とを対応付ける。上記の方法は一例であり、これに限るわけではない。
【0100】
図18(c)に示すように、被検体DUTの左上の参照点(計測)R1、右上の参照点(計測)R2、右下の参照点(計測)R3が指定されている。参照点(計測)の指定が終了した後、ユーザは、被検体DUT上の参照点(計測)に対応する3DオブジェクトOB上の参照点(3D)を、参照点(計測)を指定したときと同じ順番で指定する。図20(c)に示すように、被検体DUT上の参照点(計測)R1,R2,R3に対応する3Dオブジェクト上の位置に参照点(計測)R1’,R2’,R3’が指定されている。
【0101】
ステップSF6では、CPU34cが、指定された参照点(3D)の座標をRAM34aに記録する。ステップSF7では、CPU34cが、指定された参照点(3D)を3Dオブジェクト上に重畳表示するための処理を行う。これによって、図20(c)のように、参照点(3D)R1’,R2’,R3’が3DオブジェクトOB上に重畳表示される。ステップSF7の処理が終了すると、参照点(3D)指定処理が終了する。
【0102】
なお、CPU34cが、指定された参照点(3D)の座標をCADデータに記録してもよいし、CADデータと紐付けされた(関連付けられた)別のファイルに記録してもよい。これによって、再度ステップSC1にて同じCADデータを読み出した場合、ステップSF1〜ステップSF5の処理を省略することができる。また、参照点(3D)は必ずしもステップSFにおいて指定されるべきものではなく、予め内視鏡装置3またはPC6等によって、CADデータに記録されていてもよいし、CADデータと紐付けされた(関連付けられた)別のファイルに記録されていてもよい。
【0103】
次に、図21を用いて、ステップSGの3Dマッチング処理の流れを説明する。ステップSG1では、CPU34cが、[3Dマッチング]ボタン664がユーザによって押下されたかどうかを確認する。[3Dマッチング]ボタン664が押下された場合、処理はステップSG2に移行し、[3Dマッチング]ボタン664が押下されていない場合、3Dマッチング処理が終了する。
【0104】
ステップSG2では、CPU34cが、全ての参照点が既に指定済みであるどうかを確認する。具体的には、CPU34cは、参照点(計測)および参照点(3D)が、それぞれ3点ずつ、既に指定済みであるかどうかを確認する。全ての参照点が指定済みの場合、処理はステップSG3に移行し、参照点が指定済みでない場合、3Dマッチング処理が終了する。ステップSG3では、CPU34cが、RAM34aに記録された全ての参照点の座標を読み込む。
【0105】
ステップSG4では、CPU34cが、指定された参照点の座標に基づいて、パン・チルト方向のマッチング処理を行う。パン・チルト方向のマッチング処理の詳細については、後述する。ステップSG5では、CPU34cが、指定された参照点の座標に基づいて、ロール方向のマッチング処理を行う。ロール方向のマッチング処理の詳細については、後述する。
【0106】
ステップSG6では、CPU34cが、指定された参照点の座標に基づいて、ズーム方向のマッチング処理を行う。ズーム方向のマッチング処理の詳細については、後述する。ステップSG7では、CPU34cが、指定された参照点の座標に基づいて、シフト方向のマッチング処理を行う。シフト方向のマッチング処理の詳細については、後述する。
【0107】
ステップSG8では、CPU34cが、[計測画像]ボックス611において、3Dオブジェクトを再表示するための処理を行う。このとき、3Dオブジェクトは、ステップSG4〜SG7において最終的に算出されたカメラポーズおよびシフト位置に基づいて、姿勢および位置が調整されて表示される。図22は、マッチング処理後の計測画像に写った被検体と3Dオブジェクトを示している。図22のように、計測画像に写った被検体と3Dオブジェクトとが、ほぼ一致していること、すなわち、両者がうまくマッチングしていることがわかる。ステップSG8の処理が終了すると、3Dマッチング処理が終了する。
【0108】
次に、図23を用いて、ステップSHの計測処理の流れを説明する。ステップSH1では、CPU34cが、[計測]ボタン664が既に押下された状態(ステップSH3が既に行われた状態)であるかどうかを確認する。[計測]ボタン664が押下された状態である場合、処理はステップSH4に移行し、[計測]ボタン664が押下された状態でない場合、処理はステップSH2に移行する。
【0109】
ステップSH2では、CPU34cが、[計測]ボタン664がユーザによって押下されたかどうかを確認する。[計測]ボタン664が押下された場合、処理はステップSH3に移行し、[計測]ボタン664が押下されていない場合、計測処理が終了する。
【0110】
ステップSH3では、CPU34cが、図24(a)のように、[計測]ボタン664を強調表示するための処理を行う。[計測]ボタン664を強調表示するのは、現在、3Dオブジェクトに対して計測点が指定可能であることをユーザに通知するためである。
【0111】
ステップSH4では、CPU34cが、[計測画像]ボックス611において、3Dオブジェクトに対して計測点を指定するためにユーザがリモコン23を操作してカーソルCによりクリック等を行う操作を検出し、カーソルCの操作を検出した結果に基づいて、指定された計測点の座標を算出する。CPU34cは、算出した計測点の座標をRAM34aに記録する。このとき記録される計測点の座標は、3Dオブジェクト表面における空間座標(mm単位)である。
【0112】
ステップSH5では、CPU34cが、指定された計測点の座標に基づいて、計測結果を算出し、算出した計測結果をRAM34aに記録する。本実施形態では、2つの計測点の空間距離(2点間距離)を計測するものとする。ステップSH5で算出される計測結果は、既に指定された2つの計測点の空間距離である。指定された計測点が1点のみである場合、計測結果は算出されず、処理がステップSH6に移行する。
【0113】
ステップSH6では、CPU34cが、図24(b),(c)のように、指定された計測点を3Dオブジェクト上に重畳表示するための処理を行う。図24(b)は1点目の計測点P1が指定されたときの[計測画像]ボックス611であり、図24(c)は2点目の計測点P2が指定されたときの[計測画像]ボックス611である。さらに、CPU34cは、図25のように、算出した計測結果を[計測結果]ボックス670に表示するための処理を行う。指定された計測点が1点のみである場合、計測結果は表示されず、ステップSH6の処理が終了する。
【0114】
ステップSH6の処理が終了すると、計測処理が終了する。上記の説明では、2点間距離を計測する場合を例としているが、3点以上の計測点が指定される面積等の計測を行う場合も同様である。
【0115】
次に、図26〜図29を用いて、指定された計測点の、3Dオブジェクト表面における空間座標(3次元座標)の算出方法について説明する。図26は、3次元空間における3Dオブジェクトの一部と視点Eとの関係を示している。
【0116】
3Dオブジェクトは、複数の三角形の空間平面から構成されている。視点Eから3Dオブジェクトの重心点Gへ向かう方向を視線方向とする。視点Eと3Dオブジェクトとの間には、視線方向と垂直に交わるスクリーン平面SCが設定されている。
【0117】
ユーザが[計測画像]ボックス611における3Dオブジェクト上の計測点を指定すると、CPU34cは、図27のように、スクリーン平面SC上に計測点Sを設定する。計測点Sと視点Eとを通る空間直線を直線Lとする。そして、CPU34cは、3Dオブジェクトを構成する複数の三角形の中から、直線Lと交差する全ての三角形を検索する。直線と空間三角形とが交差するかどうかを判定する方法として、例えばTomas Mollerの交差判定法を用いることが可能である。この例では、図28のように、三角形T1,T2が、直線Lと交差する三角形であると判定される。
【0118】
そして、図29のように、CPU34cは、直線Lと三角形T1,T2との交点を算出し、算出したそれぞれの交点を交点F1,F2とする。ここでは、3Dオブジェクト表面における空間座標を算出したいので、CPU34cは、交点F1,F2のうち、より視点Eに近い方を選択する。この場合、CPU34cは、交点F1の空間座標を、3Dオブジェクト表面における空間座標として算出する。上記では、直線Lと交差すると判定された三角形を2つのみとしたが、3Dオブジェクトの形状や視線方向によっては、より多くの三角形が交差すると判定される場合もある。その場合も、直線Lと三角形との交点をそれぞれ求め、求めた交点の中で、最も視点Eに近い交点を選択することになる。
【0119】
上記のようにして、計測点の空間座標を算出することができる。ステップSF5における参照点(3D)の空間座標も上記と同様にして算出することができる。
【0120】
次に、図30を用いて、ステップSG4のパン・チルト方向のマッチング処理の流れを説明する。パン・チルト方向のマッチング処理の目的は、参照点(計測)によって構成される3角形と、参照点(3D)をスクリーン平面に降ろした投影点によって構成される3角形とが最も相似に近くなるカメラポーズを見つける、ということである。これらの3角形が相似に近い場合、計測画像に写った被検体が撮像されたときの視線のパン・チルト方向と、3Dオブジェクトを観察する視線のパン・チルト方向とが、ほぼ一致しているということができる。
【0121】
以下、図31(a)のように、参照点(3D)R1’〜R3’をスクリーン平面3100に降ろした投影点Rp1’〜Rp3’を投影点(3D)と記載する。さらに、図31(b)のように、参照点(計測)R1〜R3によって構成される3角形3102を参照図形(計測)と記載し、図31(a)のように、投影点(3D)Rp1’〜Rp3’によって構成される3角形3101を参照図形(3D)と記載する。
【0122】
ステップSG401では、CPU34cが頂点角(計測)を算出し、算出した頂点角(計測)をRAM34aに記録する。頂点角(計測)とは、図32(a)のように、参照図形(計測)3200の3つの頂点R1〜R3の角度A1〜A3である。
【0123】
ステップSG402では、CPU34cが、カメラポーズをパン・チルト方向にそれぞれ−31deg回転させる。ステップSG403〜SG407において繰り返し処理が行われるが、これは、図32(b)のように、カメラポーズをパン・チルト方向に回転させながら、頂点角(3D)を順次算出するためである。頂点角(3D)とは、図32(b)のように、参照図形(3D)3201の3つの投影点(3D)Rp1’〜Rp3’の角度A1’〜A3’である。
【0124】
前述したように、参照点(計測)と参照点(3D)は、各参照点が指定された順番によって対応付けられており、角度A1〜A3と角度A1’〜A3も、この順番によって対応付けられている。図32では、角度A1と角度A1’が対応付けられ、角度A2と角度A2’が対応付けられ、角度A3と角度A3’が対応付けられている。
【0125】
ステップSG403では、CPU34cが、カメラポーズをパン方向に+1deg回転させる。そして、ステップSG403〜SG407では、カメラポーズのパン方向の回転角度が+30degとなるまでCPU34cが繰り返し処理を行う。CPU34cは、カメラポーズをパン方向に−30degから+30degとなるまで+1degずつ回転させるので、結果としてステップSG403〜SG407の一連の処理を61回繰り返すことになる。
【0126】
ステップSG404では、CPU34cが、カメラポーズをチルト方向に+1deg回転させる。そして、ステップSG404〜SG407では、カメラポーズのチルト方向の回転角度が+30degとなるまでCPU34cが繰り返し処理を行う。CPU34cは、カメラポーズをチルト方向に−30degから+30degとなるまで+1degずつ回転させるので、結果としてステップSG404〜SG407の処理を61回繰り返すことになる。なお、ステップSG403〜SG407の繰り返し処理において、カメラポーズを−30degから+30degとなるまで回転させているが、カメラポーズを回転させる範囲は必ずしもこの範囲である必要はない。
【0127】
ステップSDのカメラポーズ設定処理において、ユーザがカメラポーズを変更する際、計測画像に写った被検体と3Dオブジェクトとをどの程度までマッチングさせるかによって、ステップSG403〜SG407の繰り返し処理において、カメラポーズを回転させるのに必要な範囲が変わることになる。範囲が広い場合、ユーザは大まかなマッチングさえ行えば良いが、その代わり、3Dマッチングの処理時間が長くなる。範囲が狭い場合、3Dマッチングの処理時間が短くて済むが、その代わり、ユーザはある程度詳細にマッチングを行う必要がある。
【0128】
ステップSG405では、CPU34cが、現在のパン・チルト方向の回転角度をRAM34aに記録する。図33は、RAM34aに記録される回転角度を示している。ステップSG405では、CPU34cは、回転角度をRAM34aに上書き記録するのではなく、カメラポーズをパン・チルト方向に回転するたびに、図33(a)のように、RAM34aに用意されたデータリストに現在のパン・チルト方向の回転角度を1行ずつ追加記録していく。このデータリストには、後述するように、パン・チルト方向の回転角度と関連付けて、頂点角(3D)等の様々なデータを記録することができる。
【0129】
ステップSG406では、CPU34cが投影点(3D)を算出し、算出した投影点(3D)をRAM34aに記録する。ステップSG407では、CPU34cが頂点角(3D)を算出し、算出した頂点角(3D)をRAM34aに記録する。このとき、CPU34cは、図33(b)のように、頂点角(3D)をパン・チルト方向の回転角度と関連付けて、データリストに1行ずつ追加記録していく。
【0130】
ステップSG403〜SG407の繰り返し処理が終了すると、処理はステップSG408に移行する。この時点でのデータリストは、図33(c)のようになり、61×61行分のデータで構成されている。ステップSG408では、CPU34cがカメラポーズをパン・チルト方向にそれぞれ−30deg回転させる。ステップSG403〜SG407の繰り返し処理が終了した時点で、パン・チルト方向の回転角度はそれぞれ+30degであるので、ここでは、−30deg回転させることによって、カメラポーズを元の状態に戻すことになる。
【0131】
ステップSG409では、CPU34cが、頂点角(計測)と頂点角(3D)との差を算出する。具体的には、CPU34cは、(1)式〜(3)式のように、頂点角(計測)A1〜A3と頂点角(3D)A1’〜A3’との差の絶対値D1〜D3を算出する。
D1=|A1−A1’| ・・・(1)
D2=|A2−A2’| ・・・(2)
D3=|A3−A3’| ・・・(3)
さらに、CPU34cは、図34(a)のように、頂点角の差をパン・チルト方向の回転角度と関連付けて、データリストに追加記録する。
【0132】
ステップSG410では、CPU34cが差D1〜D3の平均値を算出する。さらに、CPU34cは、図34(b)のように、平均値をパン・チルト方向の回転角度と関連付けて、データリストに追加記録する。
【0133】
ステップSG411では、CPU34cが平均値の最小値をデータリストから検索する。図35は、データリストにおいて、0.5が最小値として検索された様子を示している。
【0134】
ステップSG412では、CPU34cが、平均値が最小となる場合のパン・チルト方向の回転角度をデータリストから読み込む。具体的には、CPU34cは、図35のように、データリストから、最小の平均値に関連付けられたパン・チルト方向の回転角度を読み込む。
【0135】
ステップSG413では、CPU34cが、カメラポーズをパン・チルト方向に、ステップSG412で読み込まれた回転角度だけ回転させる。このカメラポーズで3Dオブジェクトを表示した場合、図32(c),(d)のように、回転後の頂点角(計測)と頂点角(3D)とが、良く一致しており、参照図形(計測)と参照図形(3D)とが相似に近いことがわかる。
【0136】
ステップSG414では、CPU34cが、このときのカメラポーズをカレントカメラポーズとしてRAM34aに上書き記録する。ここでは、カレントカメラポーズに基づく3Dオブジェクトの再表示は行わない。ステップSG414の処理が終了すると、パン・チルト方向のマッチング処理が終了する。
【0137】
次に、図36を用いて、ステップSG5のロール方向のマッチング処理の流れを説明する。ロール方向のマッチング処理の目的は、参照図形(計測)と参照図形(3D)の回転方向のアングルが最も一致するカメラポーズを見つける、ということである。それぞれの参照図形の回転方向のアングルが近い場合、計測画像に写った被検体を観察する視線のロール方向の回転角度と、3Dオブジェクトを観察する視線のロール方向の回転角度とが、ほぼ一致しているということができる。
【0138】
ステップSG501では、CPU34cが相対角(計測)を算出し、算出した相対角(計測)をRAM34aに記録する。相対角(計測)とは、図37(a)のように、計測画像において上下方向に伸びる直線3700と、参照図形(計測)の3つの辺との間の角度Ar1〜Ar3である。このときの相対角(計測)は、直線3700から辺への右回り方向の角度である。
【0139】
ステップSG502では、CPU34cが投影点(3D)を算出し、算出した投影点(3D)をRAM34aに記録する。ステップSG503では、CPU34cが相対角(3D)を算出し、算出した相対角(3D)をRAM34aに記録する。相対角(3D)とは、図37(b)のように、スクリーン平面において上下方向に伸びる直線3701と参照図形(3D)の3つの辺との間の角度Ar1’〜Ar3’である。スクリーン平面は、計測画像が表示される[計測画像]ボックス611に相当するため、直線3700と直線3701の方向は一致する。また、このときの相対角(3D)は、直線3701から辺への右回り方向の角度である。
【0140】
ステップSG504では、CPU34cが相対角(計測)と相対角(3D)との差を算出する。具体的には、CPU34cは、(4)式〜(6)式のように、相対角(計測)Ar1〜Ar3と相対角(3D)Ar1’〜Ar3’とのそれぞれの差Dr1〜Dr3を算出する。
Dr1=Ar1−Ar1’ ・・・(4)
Dr2=Ar2−Ar2’ ・・・(5)
Dr3=Ar3−Ar3’ ・・・(6)
【0141】
ステップSG505では、CPU34cが差Dr1〜Dr3の平均値を算出し、算出した平均値をRAM34aに記録する。ステップSG506では、CPU34cがカメラポーズをロール方向に、ステップSG505で算出した平均値だけ回転させる。このカメラポーズで3Dオブジェクトを表示した場合、図37(c),(d)のように、回転後の相対角(計測)と相対角(3D)とが良く一致していることがわかる。
【0142】
ステップSG507では、CPU34cが、このときのカメラポーズをカレントカメラポーズとしてRAM34aに上書き記録する。ここでは、カレントカメラポーズに基づく3Dオブジェクトの再表示は行わない。ステップSG507の処理が終了すると、ロール方向のマッチング処理が終了する。
【0143】
次に、図38を用いて、ステップSG6のズーム方向のマッチング処理の流れを説明する。ズーム方向のマッチング処理の目的は、参照図形(計測)と参照図形(3D)のサイズが最も一致するカメラポーズを見つける、ということである。それぞれの参照図形のサイズが近い場合、計測画像に写った被検体を観察する視線のズーム方向の位置と、3Dオブジェクトを観察する視線のズーム方向の位置とが、ほぼ一致しているということができる。
【0144】
ステップSG601では、CPU34cが辺長(計測)を算出し、算出した辺長(計測)をRAM34aに記録する。辺長(計測)とは、図39(a)のように、参照点(計測)R1〜R3によって構成される3角形の3つの辺の長さL1〜L3である。
【0145】
ステップSG602では、CPU34cが投影点(3D)を算出し、算出した投影点(3D)をRAM34aに記録する。ステップSG603では、CPU34cが辺長1(3D)を算出し、算出した辺長1(3D)をRAM34aに記録する。辺長1(3D)とは、図39(b)のように、参照図形(3D)の3つの辺の長さL1’〜L3’である。
【0146】
ステップSG604では、CPU34cが、このときのカメラポーズをカメラポーズ1としてRAM34aに上書き記録する。ステップSG605では、CPU34cが、図39(b)のように、カメラポーズをズーム方向に所定値だけ移動させる。
【0147】
ステップSG606では、CPU34cが投影点(3D)を算出し、算出した投影点(3D)をRAM34aに記録する。ステップSG607では、CPU34cが辺長2(3D)を算出し、算出した辺長2(3D)をRAM34aに記録する。辺長2(3D)とは、図39(b)のように、カメラポーズをズーム方向に所定値だけ移動させた後の、参照図形(3D)の3つの辺の長さLz1’〜Lz3’である。ステップSG608では、CPU34cが、このときのカメラポーズをカメラポーズ2としてRAM34aに上書き記録する。
【0148】
ステップSG609では、CPU34cがズーム量を算出し、算出したズーム量をRAM34aに記録する。ズーム量は、辺長(3D)と辺長(計測)とが一致するようなカメラポーズのズーム方向の移動量であり、辺長1,2(3D)と、カメラポーズ1,2との関係から算出される。辺は3つであるので、ズーム量も3つ算出される。
【0149】
図40は、辺長(3D)とカメラポーズのズーム方向位置との関係を示している。図40のグラフ4000が示すように、両者は線形的な比例関係にある。グラフ4000を用いることで、辺長(3D)と辺長(計測)とを一致させる場合にカメラポーズをズーム方向に移動させる際の移動量を算出することができる。
【0150】
ステップSG610では、CPU34cが3つのズーム量の平均値を算出し、算出した平均値をRAM34aに記録する。ステップSG611では、CPU34cが、カメラポーズをズーム方向に、ステップSG611で算出した平均値だけ移動させる。このカメラポーズで3Dオブジェクトを表示した場合、図39(c),(d)のように、移動後の辺長(計測)と辺長(3D)とが、良く一致していることがわかる。
【0151】
ステップSG612では、CPU34cが、このときのカメラポーズをカレントカメラポーズとしてRAM34aに上書き記録する。ここでは、カレントカメラポーズに基づく3Dオブジェクトの再表示は行わない。ステップSG612の処理が終了すると、ズーム方向のマッチング処理が終了する。
【0152】
次に、図41を用いて、ステップSG7のシフト方向のマッチング処理の流れを説明する。シフト方向のマッチング処理の目的は、[計測画像]ボックス611における、計測画像に写った被検体と3Dオブジェクトとが一致するように、シフト方向に3Dオブジェクトを移動させる、ということである。本処理は、3Dオブジェクトのシフト位置を決定するものであるため、カメラポーズの算出は行わない。
【0153】
ステップSG701では、CPU34cが重心点(計測)を算出し、算出した重心点(計測)をRAM34aに記録する。重心点(計測)とは、図42(a)のように、参照点(計測)R1〜R3によって構成される3角形の重心点Gである。
【0154】
ステップSG702では、CPU34cが投影点(3D)を算出し、算出した投影点(3D)をRAM34aに記録する。ステップSG703では、CPU34cが重心点(3D)を算出し、算出した重心点(3D)をRAM34aに記録する。重心点(3D)とは、図42(a)のように、投影点(3D)Rp1’〜Rp3’によって構成される3角形の重心点G’である。
【0155】
ステップSG704では、CPU34cがシフト量を算出し、算出したシフト量をRAM34aに記録する。シフト量とは、重心点(計測)の、重心点(3D)との相対位置(平面座標系、pixel単位)である。ステップSG705では、CPU34cが、3Dオブジェクトをシフト方向に、ステップSG704で算出したシフト量だけ移動させる。このカメラポーズで3Dオブジェクトを表示した場合、図42(b)のように、重心点(計測)と重心点(3D)とが、良く一致していることがわかる。ステップSG705の処理が終了すると、シフト方向のマッチング処理が終了する。
【0156】
従来例では、2次元画像と3Dオブジェクトの投影図(2Dモデル)の画像データに基づくマッチング処理を行っていたため、3Dオブジェクトの再表示や、膨大なデータ量をもつ画像データの統計計算に、多くの処理時間がかかっていた。しかし、本実施形態では、3Dマッチング処理を実行する際、ユーザが指定する平易な形状の参照図形に基づく簡単な幾何学計算のみを実行すれば良く、処理時間を大幅に短縮することができる。さらに、3Dオブジェクトの再表示は、3Dマッチング処理終了後の1度のみで良い。
【0157】
次に、本実施形態の変形例を説明する。上記の説明では、CPU34cは、3点の参照点に基づいて、3Dマッチング処理を実行しているが、本変形例では、CPU34cは、4点の参照点に基づいて、3Dマッチング処理を実行する。ステップSG4のパン・チルト方向のマッチング処理において、CPU34cは、参照図形(計測)と参照図形(3D)とが最も相似に近くなるカメラポーズのパン・チルト方向の回転角度を算出するが、1対の参照図形(3角形)だけが相似に近くなる回転角度を算出しても、マッチング精度は必ずしも高いわけではなく、明らかに誤った回転角度を算出してしまうことがあった。また、ステップSG5〜SG7の各マッチング処理においても、同様に誤った回転角度・移動量を算出してしまうことがあった。
【0158】
上記に鑑み、本変形例では、3Dマッチング処理のマッチング精度を向上させることを目的とする。本変形例では、ステップSEの参照点(計測)の指定処理において、図43(a)のように、ユーザは4点の参照点(計測)R1〜R4を指定し、ステップSFの参照点(3D)の指定処理において、図43(b)のように、ユーザは4点の参照点(3D)R1’〜R4’を指定する。また、本変形例では、ステップSGの3Dマッチング処理において、CPU34cは、4点の参照点に基づいて参照図形を算出する。
【0159】
図44は、ステップSGで算出された参照図形(計測)を示している。4点の参照点(計測)R1〜R4のうちの3点で構成される4つの3角形4400,4401,4402,4403が参照図形(計測)となる。また、図45は、ステップSGで算出された参照図形(3D)を示している。4点の参照点(3D)Rp1’〜Rp4’のうちの3点で構成される4つの3角形4500,4501,4502,4503が参照図形(3D)となる。
【0160】
本変形例では、ステップSGの3Dマッチング処理において、CPU34cは、これら4つの3角形に基づいて、3Dマッチング処理を実行する。例えば、ステップSG4のパン・チルト方向のマッチング処理において、CPU34cは、カメラポーズのパン・チルト方向の回転角度を算出するが、この際、4つの3角形のそれぞれに基づいて算出した回転角度の平均値を最終的な回転角度として用いる。ステップSG5〜SG7の各マッチング処理においても、CPU34cは、4つの3角形のそれぞれに基づいて算出した回転角度・移動量の平均値を最終的な回転角度・移動量として用いる。
【0161】
本変形例では、ユーザが4点の参照点を指定することで、CPU34cは、参照点によって構成される4つの参照図形に基づいて、3Dマッチング処理を行う。そのため、CPU34cは、3Dマッチング処理を実行する際に多くのパラメータを用いることができ、その結果、マッチング精度を向上させることができる。
【0162】
本実施形態では、計測に係る一連の処理の手順および内容を規定したソフトウェア(プログラム)である3D計測ソフトに従ってCPU34cが上記の処理を行うことによって計測が行われる。図46は、CPU34cに必要な機能構成を示している。図46では、本実施形態の計測に関係する機能構成のみが示されており、他の機能構成については省略されている。CPU34cの機能構成には、撮像制御部340、指定部341、マッチング処理部342、表示制御部343、および計測部344が含まれる。
【0163】
撮像制御部340は、光源32および湾曲制御ユニット33の制御や撮像素子30bの制御を行う。指定部341は、リモコン23を介してユーザによって入力される指示に基づいて、計測画像上や3Dオブジェクトの画像上の指定された位置に対応する参照点(計測)、参照点(3D)、計測点を指定(設定)する。マッチング処理部342は、指定部341によって指定された参照点(計測)および参照点(3D)に基づいて、参照図形(計測)および参照図形(3D)を算出し、参照図形(計測)と参照図形(3D)との幾何学計算により、マッチングに必要なカメラポーズの変更量を算出する。
【0164】
表示制御部343は、モニタ22に表示される画像の内容や表示状態等を制御する。特に、表示制御部343は、マッチング処理部342によって算出されたカメラポーズの変更量に基づいて3Dオブジェクトの姿勢および位置を調整することによって、計測画像と3Dオブジェクトを互いにマッチングさせた状態で表示させる。上記の説明では3Dオブジェクトのみの姿勢および位置を調整しているが、これに限らず、計測画像のみの姿勢および位置を調整したり、計測画像および3Dオブジェクトの姿勢および位置を調整したりしてもよい。計測部344は、指定部341によって指定された計測点に基づいて、計測処理を行う。図46に示す機能構成の一部または全部を、計測に必要な機能を実現するためのアナログ回路やデジタル回路を配置して構成した特定のハードウェアに置き換えることも可能である。
【0165】
上述したように、本実施形態によれば、参照図形(計測)と参照図形(3D)との幾何学計算を行い、幾何学計算の結果に基づいて、計測画像と3Dオブジェクトとの少なくとも一方の姿勢または位置を調整することによって、マッチングに必要な処理時間を低減することができる。
【0166】
また、参照点(計測)と参照点(3D)のそれぞれの点の指定された順番に基づいて参照点(計測)と参照点(3D)とを対応付けることによって、簡易な方法で両者の対応付けが可能となり、マッチングに必要な処理時間を低減することができる。
【0167】
また、計測画像上の参照図形(計測)と、3Dオブジェクト上の参照点(計測)によって構成される3角形をスクリーン平面に投影した参照図形(3D)との幾何学計算によるマッチングを行うことによって、マッチングの精度を維持しつつ、マッチングに必要な処理時間を低減することができる。
【0168】
また、ユーザが参照点(計測)を指定する際に3Dオブジェクトの透過率が大きく設定されることによって、ユーザが計測画像を見やすくすることができ、かつ、ユーザが参照点(計測)を指定しやすくすることができる。
【0169】
また、3Dマッチング処理中は処理負荷の高い3Dオブジェクトの再表示を行わず、3Dマッチング処理の終了時に3Dオブジェクトの再表示を行うことによって、マッチングに必要な処理時間を低減することができる。
【0170】
以上、図面を参照して本発明の実施形態について詳述してきたが、具体的な構成は上記の実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
【符号の説明】
【0171】
1・・・ジェットエンジン、2・・・ターニングツール、3・・・内視鏡装置、4・・・ビデオ端子ケーブル、5・・・ビデオキャプチャカード、6・・・PC、7・・・LANケーブル、10・・・タービンブレード、20・・・内視鏡挿入部、21・・・内視鏡装置本体、22,25・・・モニタ(表示部)、23・・・リモコン(入力装置)、24・・・PC本体、30a・・・撮像光学系、30b・・・撮像素子、31・・・画像信号処理装置、32・・・光源、33・・・湾曲制御ユニット、34,35・・・制御用コンピュータ、34a,35a・・・RAM、34b・・・ROM、34c,35c・・・CPU(指定部、計算部、調整部、計測部)、34d,35d・・・ネットワークI/F、34e・・・RS232C・・・I/F、34f・・・カードI/F、35b・・・HDD、35e・・・USB・・・I/F、340・・・撮像制御部、341・・・指定部、342・・・マッチング処理部、343・・・表示制御部、344・・・計測部
【特許請求の範囲】
【請求項1】
計測対象物の画像と、前記計測対象物に対応する物体であって予め算出された3次元形状を有する前記物体の画像とを表示する表示部と、
入力装置を介して入力される指示に基づいて、前記計測対象物の画像上の第1の点と前記物体の画像上の第2の点とを指定する指定部と、
前記第1の点を基準とする第1の図形と、前記第2の点を基準とする第2の図形との幾何学計算を行う計算部と、
前記幾何学計算の結果に基づいて、前記計測対象物の画像と前記物体の画像との少なくとも一方の姿勢または位置を調整する調整部と、
前記姿勢または前記位置が調整された後、入力装置を介して入力される指示に基づいて指定された計測位置に対応する前記物体上の空間座標を算出し、算出した空間座標に基づいて、前記物体のサイズを算出する計測部と、
を備えたことを特徴とする画像処理装置。
【請求項2】
計測対象物の画像と、前記計測対象物に対応する物体であって予め算出された3次元形状を有する前記物体の画像とを表示する表示部と、
入力装置を介して入力される指示に基づいて、前記計測対象物の画像上の第1の点を指定する指定部と、
前記第1の点を基準とする第1の図形と、前記物体の画像と関連付けて記録されている第2の点を基準とする第2の図形との幾何学計算を行う計算部と、
前記幾何学計算の結果に基づいて、前記計測対象物の画像と前記物体の画像との少なくとも一方の姿勢または位置を調整する調整部と、
前記姿勢または前記位置が調整された後、入力装置を介して入力される指示に基づいて指定された計測位置に対応する前記物体上の空間座標を算出し、算出した空間座標に基づいて、前記物体のサイズを算出する計測部と、
を備えたことを特徴とする画像処理装置。
【請求項3】
前記第1の点および前記第2の点は、入力装置を介して入力される指示に基づいて指定された3点以上の点を含むことを特徴とする請求項1に記載の画像処理装置。
【請求項4】
前記計算部は、前記第1の点の指定された順番と、前記第2の点の指定された順番とに基づいて、前記第1の点と前記第2の点とを対応付けて前記幾何学計算を行うことを特徴とする請求項3に記載の画像処理装置。
【請求項5】
前記計算部は、前記第1の点を基準とする平面上の第1の図形と、前記第2の点に対応する前記物体の空間上の点を基準とする空間上の第2の図形との幾何学計算を行うことを特徴とする請求項1〜請求項4のいずれか一項に記載の画像処理装置。
【請求項6】
前記計算部は、前記平面上の第1の図形と、前記空間上の第2の図形を前記平面に投影した第3の図形との幾何学計算を行うことを特徴とする請求項5に記載の画像処理装置。
【請求項7】
前記指定部はさらに、前記第1の点を指定する場合に、前記物体の画像の透過率を、前記第2の点を指定する場合の前記物体の画像の透過率よりも大きな透過率に設定することを特徴とする請求項1〜請求項6のいずれか一項に記載の画像処理装置。
【請求項8】
前記表示部は、前記計測対象物の画像と前記物体の画像とを表示した後、前記幾何学計算が終了するまで、前記計測対象物の画像と前記物体の画像の姿勢および位置を維持し、前記幾何学計算が終了した後、前記姿勢または前記位置が調整された前記計測対象物の画像と前記物体の画像を再表示することを特徴とする請求項1〜請求項7のいずれか一項に記載の画像処理装置。
【請求項9】
計測対象物の画像と、前記計測対象物に対応する物体であって予め算出された3次元形状を有する前記物体の画像とを表示部が表示するステップと、
入力装置を介して入力される指示に基づいて、指定部が前記計測対象物の画像上の第1の点と前記物体の画像上の第2の点とを指定するステップと、
前記第1の点を基準とする第1の図形と、前記第2の点を基準とする第2の図形との幾何学計算を計算部が行うステップと、
前記幾何学計算の結果に基づいて、調整部が前記計測対象物の画像と前記物体の画像との少なくとも一方の姿勢または位置を調整するステップと、
前記姿勢または前記位置が調整された後、計測部が、入力装置を介して入力される指示に基づいて指定された計測位置に対応する前記物体上の空間座標を算出し、算出した空間座標に基づいて、前記物体のサイズを算出するステップと、
を備えたことを特徴とする画像処理方法。
【請求項10】
前記第1の点および前記第2の点は、入力装置を介して入力される指示に基づいて指定された3点以上の点を含み、
前記計算部は、前記第1の点の指定された順番と、前記第2の点の指定された順番とに基づいて、前記第1の点と前記第2の点とを対応付けて前記幾何学計算を行う
ことを特徴とする請求項9に記載の画像処理方法。
【請求項11】
計測対象物の画像と、前記計測対象物に対応する物体であって予め算出された3次元形状を有する前記物体の画像とを表示する表示部と、
入力装置を介して入力される指示に基づいて、前記計測対象物の画像上の第1の点と前記物体の画像上の第2の点とを指定する指定部と、
前記第1の点を基準とする第1の図形と、前記第2の点を基準とする第2の図形との幾何学計算を行う計算部と、
前記幾何学計算の結果に基づいて、前記計測対象物の画像と前記物体の画像との少なくとも一方の姿勢または位置を調整する調整部と、
前記姿勢または前記位置が調整された後、入力装置を介して入力される指示に基づいて指定された計測位置に対応する前記物体上の空間座標を算出し、算出した空間座標に基づいて、前記物体のサイズを算出する計測部と、
としてコンピュータを機能させるためのプログラム。
【請求項1】
計測対象物の画像と、前記計測対象物に対応する物体であって予め算出された3次元形状を有する前記物体の画像とを表示する表示部と、
入力装置を介して入力される指示に基づいて、前記計測対象物の画像上の第1の点と前記物体の画像上の第2の点とを指定する指定部と、
前記第1の点を基準とする第1の図形と、前記第2の点を基準とする第2の図形との幾何学計算を行う計算部と、
前記幾何学計算の結果に基づいて、前記計測対象物の画像と前記物体の画像との少なくとも一方の姿勢または位置を調整する調整部と、
前記姿勢または前記位置が調整された後、入力装置を介して入力される指示に基づいて指定された計測位置に対応する前記物体上の空間座標を算出し、算出した空間座標に基づいて、前記物体のサイズを算出する計測部と、
を備えたことを特徴とする画像処理装置。
【請求項2】
計測対象物の画像と、前記計測対象物に対応する物体であって予め算出された3次元形状を有する前記物体の画像とを表示する表示部と、
入力装置を介して入力される指示に基づいて、前記計測対象物の画像上の第1の点を指定する指定部と、
前記第1の点を基準とする第1の図形と、前記物体の画像と関連付けて記録されている第2の点を基準とする第2の図形との幾何学計算を行う計算部と、
前記幾何学計算の結果に基づいて、前記計測対象物の画像と前記物体の画像との少なくとも一方の姿勢または位置を調整する調整部と、
前記姿勢または前記位置が調整された後、入力装置を介して入力される指示に基づいて指定された計測位置に対応する前記物体上の空間座標を算出し、算出した空間座標に基づいて、前記物体のサイズを算出する計測部と、
を備えたことを特徴とする画像処理装置。
【請求項3】
前記第1の点および前記第2の点は、入力装置を介して入力される指示に基づいて指定された3点以上の点を含むことを特徴とする請求項1に記載の画像処理装置。
【請求項4】
前記計算部は、前記第1の点の指定された順番と、前記第2の点の指定された順番とに基づいて、前記第1の点と前記第2の点とを対応付けて前記幾何学計算を行うことを特徴とする請求項3に記載の画像処理装置。
【請求項5】
前記計算部は、前記第1の点を基準とする平面上の第1の図形と、前記第2の点に対応する前記物体の空間上の点を基準とする空間上の第2の図形との幾何学計算を行うことを特徴とする請求項1〜請求項4のいずれか一項に記載の画像処理装置。
【請求項6】
前記計算部は、前記平面上の第1の図形と、前記空間上の第2の図形を前記平面に投影した第3の図形との幾何学計算を行うことを特徴とする請求項5に記載の画像処理装置。
【請求項7】
前記指定部はさらに、前記第1の点を指定する場合に、前記物体の画像の透過率を、前記第2の点を指定する場合の前記物体の画像の透過率よりも大きな透過率に設定することを特徴とする請求項1〜請求項6のいずれか一項に記載の画像処理装置。
【請求項8】
前記表示部は、前記計測対象物の画像と前記物体の画像とを表示した後、前記幾何学計算が終了するまで、前記計測対象物の画像と前記物体の画像の姿勢および位置を維持し、前記幾何学計算が終了した後、前記姿勢または前記位置が調整された前記計測対象物の画像と前記物体の画像を再表示することを特徴とする請求項1〜請求項7のいずれか一項に記載の画像処理装置。
【請求項9】
計測対象物の画像と、前記計測対象物に対応する物体であって予め算出された3次元形状を有する前記物体の画像とを表示部が表示するステップと、
入力装置を介して入力される指示に基づいて、指定部が前記計測対象物の画像上の第1の点と前記物体の画像上の第2の点とを指定するステップと、
前記第1の点を基準とする第1の図形と、前記第2の点を基準とする第2の図形との幾何学計算を計算部が行うステップと、
前記幾何学計算の結果に基づいて、調整部が前記計測対象物の画像と前記物体の画像との少なくとも一方の姿勢または位置を調整するステップと、
前記姿勢または前記位置が調整された後、計測部が、入力装置を介して入力される指示に基づいて指定された計測位置に対応する前記物体上の空間座標を算出し、算出した空間座標に基づいて、前記物体のサイズを算出するステップと、
を備えたことを特徴とする画像処理方法。
【請求項10】
前記第1の点および前記第2の点は、入力装置を介して入力される指示に基づいて指定された3点以上の点を含み、
前記計算部は、前記第1の点の指定された順番と、前記第2の点の指定された順番とに基づいて、前記第1の点と前記第2の点とを対応付けて前記幾何学計算を行う
ことを特徴とする請求項9に記載の画像処理方法。
【請求項11】
計測対象物の画像と、前記計測対象物に対応する物体であって予め算出された3次元形状を有する前記物体の画像とを表示する表示部と、
入力装置を介して入力される指示に基づいて、前記計測対象物の画像上の第1の点と前記物体の画像上の第2の点とを指定する指定部と、
前記第1の点を基準とする第1の図形と、前記第2の点を基準とする第2の図形との幾何学計算を行う計算部と、
前記幾何学計算の結果に基づいて、前記計測対象物の画像と前記物体の画像との少なくとも一方の姿勢または位置を調整する調整部と、
前記姿勢または前記位置が調整された後、入力装置を介して入力される指示に基づいて指定された計測位置に対応する前記物体上の空間座標を算出し、算出した空間座標に基づいて、前記物体のサイズを算出する計測部と、
としてコンピュータを機能させるためのプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図34】
【図35】
【図36】
【図37】
【図38】
【図39】
【図40】
【図41】
【図42】
【図43】
【図44】
【図45】
【図46】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図32】
【図33】
【図34】
【図35】
【図36】
【図37】
【図38】
【図39】
【図40】
【図41】
【図42】
【図43】
【図44】
【図45】
【図46】
【公開番号】特開2013−2956(P2013−2956A)
【公開日】平成25年1月7日(2013.1.7)
【国際特許分類】
【出願番号】特願2011−134341(P2011−134341)
【出願日】平成23年6月16日(2011.6.16)
【出願人】(000000376)オリンパス株式会社 (11,466)
【Fターム(参考)】
【公開日】平成25年1月7日(2013.1.7)
【国際特許分類】
【出願日】平成23年6月16日(2011.6.16)
【出願人】(000000376)オリンパス株式会社 (11,466)
【Fターム(参考)】
[ Back to top ]