スマート冷蔵庫開発3:パノラマ写真作成(2)

 前回の記事の続きでスマート冷蔵庫のパノラマ写真のプログラムの解説をします.

以下のプログラムが元々のプログラムであるstitch.pyを変更し,作成したプログラムになります.

作成プログラム

gist46b35104c1f4f2dc3d5db73da1f56590

 そして今回このプログラムのテスト動作として以下の3つの写真をつなげて一つの写真にしました.

f:id:raspberry765:20170726155017p:plain

この3枚の写真を使ってパノラマ写真を作成するプログラムの動作を説明します.今回テストに使用した画像もgithubにアップロードしました.

テスト用写真↓

https://github.com/Raspberry765/Smart_Frige_Raspi/tree/master/test_picture

 

まず,imageAとimageBにtest2.jpgとtest1.jpgを読み込ませます.

 imageA = cv2.imread("test2.jpg") #test2.jpgを読み込む
imageB = cv2.imread("test1.jpg") #test1.jpgを読み込む

 そしてstitcher()という関数を呼び出してimageAとimageBをくっつけます.

 stitcher = Stitcher()
(preresult, vis) = stitcher.stitch([imageA, imageB], showMatches=True)

 ここでの動作は以下の形で動いています.

f:id:raspberry765:20170726155259p:plain

左側の画像(imageA)に対して右側の画像(imageB)がくっつきます.パノラマ写真の1段階目の結果がpre_result.jpgになります.

 次にpre_result.jpgとtest3.jpgの画像を左右反転させて以下のような形で同様に画像をくっつけます.

imageC = cv2.imread("pre_result.jpg") #pre_result.jpgを読み込む
imageD = cv2.imread("test3.jpg") #test3.jpgを読み込む
imageC = cv2.flip(imageC,1) #左右反転
imageD = cv2.flip(imageD,1) #左右反転

 

f:id:raspberry765:20170726155402p:plain

  •  test3.jpgの写真を右側から順番にくっつければいいのでは?

 test3.jpgから順番に右側に接続していけばパノラマ写真はできるのですが,panorama写真の作る上でどうしても「ズレ」が生じてしまいます.

f:id:raspberry765:20170726155714p:plain

そのため,「ズレ」が生じた写真に対して写真をくっつけるとさらにズレてしまうため,中央の写真の両側から写真をくっつける処理を行いました.

 

以上がパノラマ写真を作成するプログラムの解説になります.最後まで読んでいただきありがとうございました!