7月26日にIL勉強会として、photoscanの検証を行いました。今回は、撮影するオブジェクトの形状について、まとめたいと思います。

 

 まず、その前に今回使用したAgisoft photoscanについて、簡単に説明をしたいと思います。なお、ソフトのチュートリアルはソフト販売代理店オークのサイトに詳しく載っております(自分もこのサイトを参考にしました)

http://www.oakcorp.net/photoscan/

 

 Agisoft photoscanは撮影した各写真のピクセルのマッチング情報から深度を判別し、3Dモデルを生成します。オブジェクトを撮影する場合、実際に撮影者が移動しながら、オブジェクトを各方向から撮影する必要があります*1。なぜなら、オブジェクトをその場で回転させて撮影した場合、同じ方向から撮影したと判別され、写真から深度を判別できず解析がうまくいきません*2。ただ、方法がないわけではなく、カメラを固定し、オブジェクトを回転させて撮影する場合には、撮影した写真のオブジェクトのマスクを抜くことで解析を行うことができます。(上記サイトに記載があります)その場合には、グリーン等を用意して対象オブジェクトが抜きやすい画像にするとよいとのことです。また、Agisoftphotoscanの機能として、作成したオブジェクトを元に画像のマスクを生成することで精度を上げることができます。そして、photoscanで生成されるデータはpointcloud、ポリゴンデータ、テクスチャで、各種データ形式を選ぶことが出来ます*3。

skull

1.スキャンするオブジェクトを撮影


skull

2.ソフトで写真を解析


skull_3d

3.objで書き出したファイル

 

 

 

 

 

 

 

 

 

 それでは今回は、曲面の再現性について、球体を撮影し、曲面がどこまで再現できるかを調べてみました。

 

SONY DSC


検証に使用したゴムボール

 

 

 

 まず、撮影した写真素材から球体部分のマスクを生成して解析を行いましたが、十分なpointを生成できませんでした。(写真1参照) 実際には50枚以上の写真を撮影し、検証しましたが、マスクを抜いてしまうと画像は円形しかのこらず、その写真からでは画像解析で深度を検出できないようで、画像を一方方向から撮影したと解析されてしまったからだと考えられます。

 

ball_2

写真1 マスクを生成した画像を用いたスキャン結果

 次に、マスクを事前に切らずにスキャンをして見ました。(写真2参照)作業工程として、写真のスキャン、オブジェクトを生成し、その生成した画像を元にマスクを生成し再度解析し精度を上げていきました。

 

ball_1

写真2 オリジナル写真を用いたphotoscan結果

  上記の画像を見てもらうと、まず背景を含んだ画像からだと1のように写真が分布されて配置され、十分な深度を検出できたようで、3Dオブジェクトを生成できました。ただ、生成された3Dオブジェクトおよびポイントクラウドは上部の一部がかけた状態で、きれいな曲面は生成できませんでした。そこでオブジェクトからマスクを生成し、再度解析を行ったところ、5のように画像が1方向に固まってしまい、解析がうまくいきませんでした。これは画像のマスクを作成して背景が省かれてしまったことで、写真1と同じように画像から深度がとれず、一方方向から撮影したと解析されたのだと考えられます。

 

 

 1つのボールではなかなかうまくスキャンできませんでした、では複数のボールではどうでしょう?その結果が次の写真3になります。

 

ball_4

写真3 複数のボールを用いたphotoscan結果

  球体の材質に違いがありますが、複数の球体をオブジェクト化することができました。さきほどのボール1つを解析した結果より、曲面がきれいにでています。これは、ボール1つ1つをオブジェクトとして認識しているのではなく、ボールが並んでいる全体を形状として解析したと思われます。

 

 photoscanのヘルプに、スキャンが不得意なものとして、表面に変化のない、模様のないものと記載がありました。ボール1つ、特に検証のために凹凸のできるだけ少ないものを選びスキャンを行いましたが、凹凸がないことで深度が判別できず、うまくオブジェクトの形がとれないようで、曲面のみで形成されたオブジェクトをスキャンするのはうまくいかないようです。 そういった場合には複数のオブジェクトの1つとしてスキャンすることで形状を取得することができるようです。

 

 実際にボールをスキャンして生成した3Dオブジェクトを見ると、ボールの形状は下半分がうまく生成しきれなませんでしたが、上面を見てみると球体の曲面はきれいに再現されているといって良いでしょう。

 

 

 今回、形状についてまとめてみました。実際には球体をスキャンするということはないと思います。ただ、この結果から導き出される結果として、

・曲面を持つオブジェクトでもスキャンして曲面を再現することができる

・オブジェクトの形状として、複数方向から見た場合に形状の変化がないものはスキャンできない、できたとしても精度をあげるためにマスクを生成できない

・単体では単純な形になってしまっていても、それを複数まとめて撮影し、1つのオブジェクトとしてみなすことでスキャンすることができる

と言えるのではないかと思います。

 実際には、表面の材質、模様もスキャン結果に関係していると考えられますが、まずは形に焦点をあげてまとめてみました。

IMG_20140609_113736

某所のオブジェ、表面が曲面で構成されており、うまくスキャンできなかった


sphere

スキャンしたオブジェクトをblenderにインポート、表面に凹凸があるが、球の形状はきれいに出ていると思われる