Removing Camera Lens Distortion: Square pattern -- Removing Camera Lens Distortion: Square pattern --
§ 目的
教導如何校正影像變形。 採用非標準校正圖案影像除去鏡頭失真
§ 過程
單張鏡頭失真的文件。 輸入影像包含製作正方形的校正圖案,部份圖案僅是可見的
§ 結果
採用重新對應的空間圖
§ 提示
範例中提出一種方法來使用非標準的校正圖案做校正。包含兩個步驟 : 第一個步驟 是從影像中提取點
第二個步驟 是執行相機的校正
將影像分成很多的小方塊,刪除不完整的方塊,留下完整的方塊。
利用 "ThresholdToRegion_Dynamic" filter,從背景影像擷取正方形,此算法不易受背景的變化影響,最好的方式
利用 "RegionMassCenter" filter,取得正方形中心位置
利用 "AccessImage" filter,取得影像的範圍。因相機校正過程需實際影像的大小
如果有以下變化,相機必須重覆校正 :
- 相機鏡頭更換 (不同的鏡頭失真)
- 不同的影像解析度 (比例改變,相機矩陣是不同的)
- 相機的位置相對於觀察面的變化。
§ 解決方案
1. "LoadImage" filter 呼叫影像
2. 建立一個名為 GetCalibrationPoints 的 macrofilter 並將 LoadImage 和 inImage 做輸入連結
3. "SmoothImage_Gauss" filter 清除雜訊
4. "ThresholdToRegion_Dynamic" filter,inRadiusX 設 15,inMaxRelative 值設 -10,0,從背景中提取校正的正方形,如下圖顯示所得到的方形區塊
5. "RegionArea" filter 計算每個 Blob 的面積
6. "RealArrayHistogram" filter 為了得到相機校正效果分析。如下圖顯示了 Blob 面積的直方圖。"AverageIntegers_OfArray" filter 計算出平均面積,此範例計算出平均面積為 77
7. 區域分類應依據計算的平均值區域面積。在此解決方案我們假設一個有效的區域具有的平均區域面積的至少70%的面積。"MultiplyReals" filter 連結 Blob 面積和面積平均值,第二個連結中輸入 0.7.,下圖顯示了選擇的值其中紅色柱狀圖表示無效的方形和有效的綠色柱狀圖
8. "ClassifyByRange" filter 設定 inMin 來計算限制值
9. "RegionMassCenter" filter 計算各個區域的中心點。透過 "RegionMassCenter" filter 和 outPoints 做輸出區塊連結。如圖顯示了計算每個區塊的中心點
10. "AnnotateGridPoints" filter. 計算點的坐標位置
11. "AccessImage" filter 將計算出的實際影像尺寸連結 "CalibrateCamera" filter 輸出
12. "CreateUndistortionMap" filter 和 "RemapImage" filter 建立一個 SpatialMap,重新映射輸入影像,如下圖所示,紅色是之前,綠色是重新映射後的顯示點
§ Main Macrofilter performs calibration of the camera and remapping of the input image.
§ GetCalibrationPoints Macrofilter finds centers of pattern squares using Blob Analysis technique.