2010年2月19日 星期五

用 hugin 接合多張掃描圖檔(更新)

本文介紹如何用 hugin 接圖, 專為掃描器掃描的圖檔而寫, 而非全景圖.

這篇是前一篇的加強版. 根據 Hugin tutorial — Stitching flat scanned images 及 hugin 2009.4.0 而寫.



  1. 準備工作:

    • 先用其他軟體將 image 轉成相同方向, 同向就可以了(不一定要轉正). hugin 不認得 EXIF 旋轉 tag, 要真的轉 bitmap.
    • 若是 jpeg 檔, 我會用 jpegcrop 無失真旋轉. 並順便把多餘的部份切掉(不要切得剛剛好, 稍留幾個 pixel, 等最後完成時再切)



  2. File->Preferences 設定

    • Control Points Editor 裡, 把 "Enable rotation search" 勾起來. start/stop angle 設小一點, 譬如 5, step 設小一點, 譬如 6. 若要接全景圖時記得調回來比較好.


  3. 在 "Images" tab

    1. "Add individual images...", 載入全部的 image, HFOV 填 10.
    2. (hugin 2009.4.0 沒附 autopano-sift-c.exe, 要自己去抓或自己 compile) 按 "create control points", 讓程式自動產生 control point. 若是掃描文件, 自動產生的效果並不好, 可以略過這步

    3. 對比較中間, 或比較正的那張圖, 按 "Anchor this image for position". 對亮度比較對的圖按 "Anchor this image for exposure". (預設值是第一張).


  4. 在 "Camera and Lens" tab

    1. 在每張 image 上按 new lens, 確定 "Lens no." 都不一樣
    2. 確定每張的 Lens type 都是 "Normal (rectilinear)"
    3. 把每張圖的 view(v), horizontal shift(d), vertical shift(e) 的 link 都取消不要勾選



  5. 在 "Control Points" tab

    1. 可以自己增減 control points, 要幾個才夠我也不知道, 我的習慣是大約 10 個
    2. 我習慣 zoom 50%, 比較容易看
    3. 加 control point 時, 可以用滑鼠左鍵拖拉, 看好位置再放開左鍵
    4. "auto fine-tune" 有勾起來或自己按 "Fine-tune", 程式會自動找滑鼠點的附近最合的點, 因此也可不用點很準.
    5. 左右圖各選一點後, 確定沒問題可以按 "Add" 新增, (或是在圖上按滑鼠右鍵)
    6. 若圖都是斜的, 圖中又有水平或垂直線, 可以加 control point, mode 選 vertical line 或 horizontal line.


  6. 在 "Optimizer" tab

    1. 選 custom parameter
    2. 勾 reference image 以外的 r, v, d, e
    3. 若 reference image 也是歪的, 把 r 也勾起來
    4. 其他不要勾
    5. 按 "Optimize now!", "Apply". 注意一下數值, 若太大的話回到 Control points tab 增刪調整.



  7. 在 "Stitcher" tab

    1. projection(f) 選 "Rectilinear"
    2. 按 "calculate field of view", "calculate optimal size".
    3. output 選 jpeg, quality 90
    4. ctrl-shift-p fast preview

      • 若歪一邊, 選 "Drag" 調整. 可以按住 Shift, 再 drag, 比較容易水平或垂直調整
      • 調整完回到 Stitcher tab 按 "calculate field of view", "calculate optimal size". 然後重新 fast preview
      • 若 image 還是超出範圍, 只好自己手動填值
      • 若 image 比範圍小, 可以選 "Crop" 切掉超出去的部份

    5. "Stitch now"



  8. 存檔, 方便以後修改, (也許將來 hugin 新版重做效果更好?)



簡單解釋參數:
  1. yaw(y), pitch(p), roll(r): yaw 是左右偏角, pitch 是仰角, roll 是旋轉. 細節跟圖請參考Yaw, pitch, and roll. 由於掃描器都是垂直文件掃描, yaw 跟 pitch 都是 0.
  2. view(v): 相當於縮放比例
  3. x shift(d), y shift(e): 直跟橫方向的平移量


注意事項:

  • hugin 有些地方 (nona.exe, enblend.exe) 對中文檔名的處理有問題, 當 "Stitch now" 真的開始接圖時, 可能會出現檔案無法開啟的錯誤訊息. 為了避免剛辛苦工作要重來, 先存 project 檔, 用文字編輯器開 .pto 把裡頭的檔名改掉就好.