Just My Life & My Work

玩過魚眼相機的人都知道,光線穿透過魚眼鏡頭後在感光元件上的成像會扭曲。我們的目的是想讓更多的場景容納進影像中,於是選擇接觸光源面積較廣的魚眼鏡頭,然而問題出現了~這將會產生扭曲的影像,距離中心越遠的場景資料被壓縮得越多!而且原本該是筆直的線段都變成曲線。那麼該如何使扭曲的影像回復正常?這就是相機校準 (Camera Calibration)的工作了。

相機校準 (Camera Calibration)有幾種方法,之前使用單一鏡頭的方法失敗了,接著我使用兩顆鏡頭來試驗,沒想到效果相當不錯呢!

話說我只有一顆魚眼鏡頭,我必須事先做好間隔控制,以方便交換魚眼鏡頭位置來拍攝同一場景。還要準備一張棋盤狀的紙張,邊長最好是奇數x偶數,效果比較好!

測試時的環境為Dev C++加上OpenCV 2.0,我直接拿LearningOpenCV的Code來修改:

  • ch12_ex12_3.cpp
  • ch12_list.txt
  • stereoData資料夾,裡頭放有八對左右魚眼影像。

接著,程式會對這八對影像做辨識,從影像中找出6×9的棋盤,並針對Stereo Data作角標記,順序從紅色開始,接著橙色、黃色、綠色、藍色。

再來,程式會根據八對影像找出平均曲率差,並以兩個角度對原影像做重新映射,以完成相機校準 (Camera Calibration)的工作。

以上結果看起來是不是矯正得相當好呢?

黑灰色影像表示兩張影像的距離差異,這是根據所找到的棋盤位置進而計算而得到的。

註:這篇相機校準 (Camera Calibration)其實比鏡頭校正 (Camera Calibration)那篇還要早寫,兩篇使用同一魚眼鏡頭做一樣的實驗,然而使用不同的演算法(前者:兩顆鏡頭;後者:一顆鏡頭),就效果而言表面上是這篇比較出色,畢竟它已把校正完然而不理想的區域給截除掉。

Comments on: "[OpenCV] 相機校準 (Camera Calibration)" (7)

  1. Wape 的大頭貼

    你好 最近在研究魚眼的相機率定
    是否可以不要使用棋盤格進行魚眼校正阿??
    有點類似用SFM座相機率定這樣

  2. rray2000 的大頭貼

    請問如果我用單一webcam去追蹤人臉 把追蹤到人臉的資訊傳給XZ軸線性滑軌上 讓線性滑軌與人臉做同步運動 那我需要使用camera calibration嗎

  3. 胖輔 的大頭貼

    順便問一下從不同角度的拍攝用意是? ..我認為是需要涵蓋到整個相機視野,來得知整體變形的狀況…你覺得呢?

  4. 胖輔 的大頭貼

    其實我最近也有做這個研究,請問他的適用性如何呢?
    比如說你遠拍近拍,校正的結果都通用?
    還是說必須在有效的焦距內使用?

隨意留個言吧:)~

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

標籤雲