Just My Life & My Work

喜歡影像處理的朋友一定不能錯過OpenCV函式庫,哈~如果是喜愛攝影的朋友就去使用影像處理軟體吧!若既喜歡影像處理又熱愛攝影的朋友如我者,兩者都可以嘗試唷!剛剛寫了Ulead COOL 360 影像拼接,這次來研究OpenCV所提供的影像拼接 (Image Stitching)能力如何吧!

首先介紹環境架設,可以參考Visual Studio 2010 安裝 OpenCV 2.4 beta,需要再新增的路徑與檔案如下:

Step5:

Include目錄

  • C:\OpenCV2.4beta\modules\stitching\include\opencv2
  • C:\OpenCV2.4beta\modules\stitching\include
Step6:

其他相依性

  • opencv_stitching240d.lib

編譯發生錯誤時:

  • #include “opencv2/opencv_modules.hpp"

改為:

  • #include “opencv2/opencv.hpp"

即可成功通過編譯。

範例程式來源:C:\OpenCV2.4beta\samples\cpp\stitching.cpp

接著我都會Win + R開啟命令提示字元,然後到專案執行檔的資料夾路徑,再把要處理的圖都進去,接著以指令如:

  • StitchTest.exe a.jpg b.jpg c.jpg

a.jpg b.jpg c.jpg三張圖就會兩兩特徵比對,也就是說順序無關,若有更多影像要拼接也可繼續接在其後。

需等待一段時間才有結果,過程陸續會有訊息出現:

Finding features…
Features in image #1: 1250
Features in image #2: 1744
Features in image #3: 1441
Finding features, time: 11.8387 sec
Pairwise matching
1->2 matches: 9

1->2 matches: 80

1->2 matches: 118
1->2 & 2->1 matches: 162
.1->2 & 2->1 matches: 51
1->2 & 2->1 matches: 136
..Pairwise matching, time: 145.144 sec
Estimating rotations…
Estimating rotations, time: 0.0145659 sec
Initial intrinsic parameters #1:
[466.2391772970087, 0, 400;
0, 466.2391772970087, 267;
0, 0, 1]
Initial intrinsic parameters #2:
[466.2391772970087, 0, 400;
0, 466.2391772970087, 267;
0, 0, 1]
Initial intrinsic parameters #3:
[466.2391772970087, 0, 400;
0, 466.2391772970087, 267;
0, 0, 1]
Camera #1:
[737.0802894092269, 0, 400;
0, 737.0802894092269, 267;
0, 0, 1]
Camera #2:
[735.834675960764, 0, 400;
0, 735.834675960764, 267;
0, 0, 1]
Camera #3:
[742.896895252395, 0, 400;
0, 742.896895252395, 267;
0, 0, 1]
Wave correcting…
Wave correcting, time: 0.0184775 sec
Warping images (auxiliary)…
Warping images, time: 0.259227 sec
Exposure compensation…
Exposure compensation, time: 0.317293 sec
Finding seams…
Finding seams, time: 0.561857 sec
Compositing…
Compositing image #1
Compositing image #2
Compositing image #3
Compositing, time: 1.65429 sec

可見拼接的步驟相當多,而且所花的時間總和也有點久,這時候我們會好奇,OpenCV的Stitching有哪些步驟,這可以看官方網站的Stitching Pipeline:(可點圖放大)

以上步驟可視需求調整,來加快拼接速度。pairwise matching花比較多的時間,因為兩兩比對特徵:

接下來看實驗結果如何,請看:影像拼接實驗 (Image Stitching Experiment)

參考:OpenCV v2.4.0-beta documentation – Stitching Pipeline

Comments on: "[OpenCV] 影像拼接 (Image Stitching)" (25)

  1. gökhan 的大頭貼

    hi ca you share your project folder my mail address is gkhansky@hotmail.com thanks for helps

  2. kai 的大頭貼

    抱歉再請問一下,我有嘗試將不同的圖片做拼接,有些成功就返回0,有些無法拼接就返回-1,但還有一種情況是直接出現"錯誤訊息視窗",上面寫著
    “於 0x7c812fd3 (kernel32.dll) 的 opencv2.4.4_vc2010_stiching.exe 中發生未處理的例外狀況: Microsoft C++ 在記憶體位置 0x0011e8e8,發生例外狀況: cv::Exception"
    請問您知道是什麼原因嗎?
    或是方便我傳兩張圖給您,可否請您用stitching.cpp幫我測試看看。感謝~

    • HappyMan 的大頭貼

      不知道你是否方便寄成功拼接的相片嗎?
      我在猜可能是因為這兩張圖太過相似,
      所以程式可能會忽略處理~
      這是我之前遇過的問題,
      不過你錯誤訊息上是關於記憶體存取,
      應該是另一種問題吧~
      可以嘗試多拍些相片來測試,
      有以上錯誤訊息應該有類似的徵兆。

  3. kai 的大頭貼

    您好,請問為何我的程式執行後,都無法顯示程式內LOGLN(“xxx");這些指令的訊息呢,還是並不是顯示在命令提示字元視窗?感謝回覆~~

  4. kai 的大頭貼

    請問我的版本是vc 2005 是不是就不能用了?

    • HappyMan 的大頭貼

      可能要試試看才知道能不能~基本上建議你使用最新的版本來裝OpenCV,不然新的OpenCV可能不能在舊的IDE上work~你可以參考VC 2010或VC 2012我安裝教學文喔! 😀

  5. 小翔 的大頭貼

    我想請問一下,在Ubuntu下安裝OpenCV2.4,Stitching source code在/OpenCV-2.4.0/modules/stitching/src 下,那這部分的code可以自行修改再用makefile編譯嗎?
    之前測試stitching的時候只include他的hpp檔就能使用,如果要修改內部是這樣修改再make嗎?

  6. Brian 的大頭貼

    可以提供 StitchTest.exe 來試玩一下嘛?

    • HappyMan 的大頭貼

      可以提供給你,但是若你沒有安裝OpenCV的話,也無法順利執行,因為我產生出來的.exe檔是有相依性的喔!還是建議你可以按照我的環境設定來跑程式,可以最紮實得到學習效果,未來還可以玩出各式各樣的創意。

  7. Echo 的大頭貼

    your blog is very useful to me. Thank you so much!

  8. 未知 的大頭貼
  9. 未知 的大頭貼

    […] 環境設定可直接參考:影像拼接 (Image Stitching)。 […]

  10. 未知 的大頭貼

    […] 經過影像拼接 (Image Stitching)的介紹與過程,這裡我們還要來做影像拼接實驗 (Image Stitching Experiment)。 […]

回覆給[OpenCV] 影像拼接2 (Image Stitching) « 逍遙文工作室 取消回覆

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料

標籤雲