いぬおさんのおもしろ数学実験室

おいしい紅茶でも飲みながら数学、物理、工学、プログラミング、そして読書を楽しみましょう

2枚の写真から立体を再現(勾配降下法を使う)(1)

 去年、2枚の写真から立体を復元、というテーマでいろいろやっていました。 

www.omoshiro-suugaku.comこの記事では「写真に頂点の(相対的な)位置が分かっている立体が写っている」という条件付きで立体を再現しました(ちゃんとできたのでかえってビックリしました……)。しかし現実的なことを考えると、これはかなりきつい制限です。写真を撮るときに自分で作った立体を一緒に撮ればいいわけですが、そんなものを持ち歩くのもイヤですし、他の方法があれば楽ならそっちがよろしい。実は確か、3枚撮ればあとは計算で求める方法があって、理屈の面は一応整理して準備してあります。タイミングを見て試してみたいとは思いますが、少し大変そうです。それとは別に、自分で立体を持ち歩かない方法として、次のようなものも試しました。

www.omoshiro-suugaku.com

記事を見ていただいてもいいですが、写真と再現の結果だけ、再掲しておきます。写真のティッシュBOXに打った点の位置が、再現した結果でどうなっているか見てください。

f:id:Inuosann:20210113232337p:plain 

f:id:Inuosann:20210113203742p:plain
土台、(校正用の立体の写っていない)2枚の写真からでは立体の再現に必要な情報は全ては得られそうもなく、実際この方法でも正確には再現されていません。それでもこんな簡単な方法でここまでできるのだから、価値はあるでしょう。もしこの方法を改善できれば……いいかも!!

 パッと見て目立つのは角度の不正確さです。ティッシュBOXの上面と側面は直交していますが、再現された図ではそうなっていません。2ヶ所、直角になって欲しい角があるのですから、そうなるように計算用の行列の成分を調整すればよいのです。具体的にどうするかというと……。

 行列のサイズは4×10です。左上の成分を少し変え、2つの角が直角に近づくようにします。そうなるように、成分を大きくするか小さくするか決めるのです。右隣の成分でも同じことをします。その右隣でも同じことをします……と、40回繰り返します。2つの角は少し直角に近づいたでしょう。もっと近づけるためにまた左上の成分から始め、同じことを繰り返すのです。……と、この40回の調整を角が望みの精度で90°に近づくまで繰り返します。

 知っている人は分かるでしょう。このブログでも何回か取り上げている勾配降下法を用います。 

www.omoshiro-suugaku.com

www.omoshiro-suugaku.com

多分実験はその気になればすぐできます。ひょっとしてまるっきりトンチンカンで、知識のある人なら「こんなやり方じゃあ、うまくいくわけない」とか分かることなのかも知れません。が、試すことにはそれだけで価値があるでしょう。もう少し経って余裕ができたらやってみてブログで報告します。

 勉強したいこと、やってみたいことはたくさんあって、だけれどなかなか一気に全部、というのは難しい。しかしそういう状態も楽しいものです。