前回の記事では相対的算出をテストしました。
結果として算出精度が低かったため、今回はチェスボードを基準とした簡易体積算出アルゴリズムの実現可能性を検討します。
幾何学的算出の実現可能性
前回の結果と考察
幾何学的体積算出について、どのようにしたらうまくいくかを詳しく考察します。
前回のテストにて、RetinaNetで生成された基準物体のバウンディングボックスを用いた体積算出は誤差が大きく、不安定でした。
その原因は、3次元的空間を無理矢理2次元で理解しようとしているためと考えられます。
撮影する角度と位置を変えても変化しない物体(例: 球)では有効な手法かもしれませんし、様々な角度で撮影することで精度を高めることができますが、家電は撮影する角度を変えると写る形が変化しやすいため、今回の目的には向いていないと考えれます。撮影回数も一回が理想です。
3次元把握の方法
上記の内容から1枚の写真からどのようにして3次元的把握を試みるかが重要な要素になりますが、
1つの考えられる方法としては「物体を囲う」または「頂点を使用者が写真上をタップして1つの立方体を描き、立体認識を行うこと」です。
これにより任意の3次元の立体を検出することができます。
ただし、任意座標と実際の座標を対応づける必要があります。
対応づけにあたって、OpenCVによるカメラキャリブレーションでよく用いられるチェスボードが使用できます。
Gerhard GellingerによるPixabayからの画像
チェスボードの1マスは決まっているため事前情報として取り入れられますし、
容易にプリントできるため特別なものを用いなくても問題ありません。
このチェスボードはOpenCVのデフォルト機能として、各頂点の座標と傾き、大きさを求めることができます。
今後の方針
家電製品にチェスボードを載せるか貼るかして、チェスボード各頂点間の座標から家電の位置の任意座標と実際の大きさの対応づけをします。まずはこれで実験し、精度評価を行います。
(実際のところ距離による2次元座標の歪みがあるため、これもチェスボードで補正できれば良いのですが、まずは考えないこととします。)
また、この先に考えられることですが、前回のBBからの体積推定は様々な家電などの物体と基準物体を撮影してCNNで学習を行うことで、頂点を物体認識させることも可能と考えれます。
なぜなら、私たちは片目でも物体の大小関係をある程度把握することができるためです。
次回からは、チェスボードを基準とした簡易体積算出アルゴリズムの実装を行っていきます。