創用 CC 授權條款
除非另有註明,本網站的著作Fygul Hether製作,以創用CC 姓名標示-非商業性-禁止改作 4.0 國際 授權條款釋出。

2019年6月16日 星期日

Linux捲動視窗擷圖與接圖-續

 本文承〈Linux捲動視窗擷圖與接圖〉,接續未完的部分。

 2. Hugin

Hugin是做接合環景照片的軟體[7]。在某種程度上雖然會比上述方法方便,但相較下有其他方面的不足,如產生出來的圖片會放大(或說伸展),可能因投影方式(多少會產生變形)影響之故,畫質難免稍有影響。再來就是使用上有許多專業術語對於一般使用者而言可能過於深奧,也就是使用時,除非本身具有這方面的專業知識,或有人可以指導,否則不易了解如何使用。雖然官網上有教學,但有些內容歷史太悠久,與現行版本的畫面有不少差異。

Hugin是開放源碼軟體,有多種平台的版本供下載使用。

Ubuntu上的安裝


$ sudo apt-get install hugin

如果需要較新版本,請見上述下載頁的說明。

裝好後在選單的“美工繪圖”中會出現3支程式:
  1. Hugin Batch Processor
  2. Hugin Calibrate Lens
  3. Hugin Panorama Creator
這裡只會直接動用到3,請啟動它。

以Hugin接圖

以Hugin開啟前述待接合的兩張圖:“接圖分析”頁 -> “1. 載入圖片...”,點選前述兩張圖,出現“照相機和鏡頭數據”對話盒時請按“取消”。

“檢視” -> “環景編輯器”,出現環景編輯器視窗。

在“照片”頁把這兩個檔案的“鏡頭類型:”都改為“等距長方圖柱”,如下圖所示:

下方的“特徵點偵測” -> “設定:Hugin's CPFind” -> “建立新的控制點”可用來自動建立控制點,某些設定需要額外安裝才能用。為了方便說明,這裡不用這功能,後面會以人工建立控制點。如果使用自動建立,最好也如後述般人工檢視一番,若發現錯誤的控制點,將其刪除(我用本文的兩張圖做自動建立就真的發現對應錯誤的點)。

“控制點”頁,要建立接合用的控制點,也就是在左邊圖選一點,該點可以對應到右邊圖相對應同一位置的點。這裡要先調整好兩邊出現的圖,順序別亂了。

為方便作業,可把圖放大點,然後用在左圖找個合適的點,用滑鼠點選,點選時注意一下它會做局部放大顯示。接著在右圖找出相同對應的位置點一下,如果差異過大會提醒要你重點。選好合適點位後按“增加”,這樣完成一組控制點的標示。這裡我只做了兩組控制點,另一組在較上端偏右之處,若有必要時可多做幾組。當第一組標好後,在標示第二組左圖時,它就可以自動幫你決定好右圖的位置,有必要時才自行調整。參看下圖:

設定好控制點後必須執行最佳化,回“照片”頁,“最佳化” -> “位置(增量,從鎖定位置開始)” -> “計算”,出現“最佳化結果”對話盒,按“是”執行修改。

此時可以開啟“全景圖片預覽”視窗預覽一下結果如何,“檢視” -> “預覽視窗”,必要時把視窗拉大些,如圖:


若對結果滿意,就可以做真正的接合工作了,回“環景編輯器”。

“接合工具”頁,“投影法”選“等距長方圓柱”(或者也可試試“Lambert圓柱形等面積”)。輸出“格式:”可依需要自行選擇,這裡採預設。

完成上述動作後,按“接合!”。若尚未儲存專案,它會提醒要先儲存專案,先儲存好專案。接著在“指定輸出檔名”對話盒指定好輸出的資料夾位置與檔案名稱後按“儲存”。此時會出現處理畫面並輸出檔案。產生的圖片若有多出的邊可用GIMP裁掉。

步驟五:圖片轉回直向

步驟四產出的圖是橫向的,最後可用GIMP轉成直向後匯出成品圖。這裡展示一下上述兩種接圖方法完成後再轉回直向圖的成品。
  • GIMP + Pandora方法的圖。故意沒裁邊,左下側邊還留有透明痕跡,是二圖接合後的結果:
  • Hugin方法的圖。同樣故意不裁邊:

若有興趣可自行比較一下二者的畫質與尺寸大小,只是上傳上來的圖又被壓縮了一次,品質多少受影響。

其他想法

  • 本文的做法都是在Linux上完成,若想在macOS或Windows上做接圖工作,你也許會想用AutoStitch,或是其他這方面的商業軟體可能方便些。
  • 如果以關鍵詞image stitching來尋找開放源碼的相關專案,從中可以看到些不錯的東西[8],雖然對於一般使用者而言,並不是拿來就可以用那麼簡單,但對於有心做這方面的開發者而言,某些資料是相當值得參考的[9],[10],[11]。
  • 網路上也可以找到接圖的編程教學,如Python + OpenCV [12],[13],[14]。若想做較專業功能,就會涉及到一些較專業的知識領域,譬如成功拼接了兩張環景照片,但兩張照片的色調或是明暗度的差異過於明顯,就要適當調和處理一下。
  • 如果Linux上的擷圖軟體可以提供擷取捲動視窗的功能,那就再好不過了。
  • 下回再來談談Linux console的擷圖方法,如〈在Linux tty以fbterm與小小輸入法來輸入中文〉一文中的那張圖。

參考與資源連結

  1. https://www.tecmint.com/take-or-capture-desktop-screenshots-in-ubuntu-linux/
  2. https://itsfoss.com/take-screenshot-linux/
  3. https://en.wikipedia.org/wiki/Image_stitching
  4. https://blog.gtwang.org/linux/linux-screenshot-program-shutter/
  5. https://www.cyberciti.biz/open-source/linux-screenshot-program-tool/
  6. https://www.shallowsky.com/software/pandora/
  7. https://en.wikipedia.org/wiki/Hugin_(software)
  8. https://github.com/topics/image-stitching
  9. https://github.com/amusi/awesome-image-stitching
  10. https://github.com/kushalvyas/Python-Multiple-Image-Stitching
  11. https://github.com/MATony/ImageStitch
  12. https://www.pyimagesearch.com/2018/12/17/image-stitching-with-opencv-and-python/
  13. https://medium.com/pylessons/image-stitching-with-opencv-and-python-1ebd9e0a6d78
  14. https://towardsdatascience.com/image-stitching-using-opencv-817779c86a83

沒有留言:

張貼留言