如何对 Lepton® 3.1R 和 Lepton UW 应用变形修正
1 简介
红外 (IR) Lepton 3.1R 和 Lepton UW 分别使用 95° 宽视场 (WFOV) 和 160° WFOV 镜头。WFOV 镜头会产生桶形失真,导致图像中心比边缘稍微放大。这使得直线在图像边缘看起来呈弯曲状。对于许多成像应用而言,桶形失真带来了不利影响。本应用说明描述了如何使用 OpenCV 内置功能对 Lepton 3.1R 和 Lepton UW 输出进行失真校正(变形修正)。
2 图像失真
2.1 概述
WFOV 镜头使得成像设备能够捕捉更多的场景内容,但也会导致失真,使物体看起来变形。一般来说,相机中可能存在两种类型的失真:径向失真和切向失真。径向失真是指直线朝中心向内或从中心向外弯曲,而切向畸变是指镜头相对于图像平面发生倾斜,导致图像整体出现偏斜。要解决镜头失真问题,应校准相机以计算转换矩阵,从而修正相机到图像平面的映射。

图 1. 径向失真(左)和切向失真(右)
Lepton 3.1R 和 Lepton UW 的校准程序在数学上略有不同。它们采用不同的镜头,因此产生的几何失真类型也不相同。虽然两者似乎都存在径向失真,但 Lepton 3.1R 的图像边界是线性的,而 Lepton UW 的图像边界呈圆形,这通常被称为鱼眼效应。由于 Lepton UW 的边界极度扭曲,将场景内容映射为直线就更为复杂。在校准时采用与镜头类型相对应的不同失真模型,以补偿这种差异:Lepton 3.1R 使用广角直线失真模型,Lepton UW 使用鱼眼失真模型。
2.2 应用变形修正转换
要使用 OpenCV 的方法纠正任何镜头失真,需要通过拍摄测试图案来校准相机,以建立失真模型。使用红外相机拍摄校准图案具有一定挑战性,因此建议使用以下描述了相机失真的默认矩阵。关于如何拍摄校准图案的简要指南,请参见第 2.3 节。

图 2. 相机矩阵
这些矩阵与输入图像一起作为参数图像传递到以下 OpenCV 内置函数中,以修正相机到图像平面的映射。第 2.4 节提供了 Python 示例代码以用于演示。
Lepton 3.1R:
Lepton UW:

请注意,这里有一个相机矩阵和一个新相机矩阵。两者都代表相机的内参;唯一的区别是相机矩阵定义了原始内参,而新相机矩阵则对原始相机矩阵进行了缩放和位移调整。如果不在 undistort 函数中指定新相机矩阵,它将默认使用相机矩阵,并输出与其输入具有相同 IFOV 的直线图像。获得直线的代价是输入图像角落中的一些像素将会丢失。如果使用上面所示的全像素版本新相机矩阵,则可以选择保留输入图像的所有像素,但图像边缘会出现黑色像素。图 3 和图 4 显示了输入图像和可能的输出图像的示例。
![]()
图 3. LEPTON 3.1R - 原始(左)、直线输出(中)和所有像素版本输出(右)
![]()
图 4. LEPTON UW - 原始(左)、直线输出(中)和所有像素版本输出(右)
2.3 相机校准
由于 OpenCV 网站提供了校准过程的详尽解释和示例应用代码,因此本应用说明不再详细论述。文档可参阅 https://docs.opencv.org/3.4/d4/d94/tutorial_camera_calibration.html。
如第 2.2 节所述,使用红外相机拍摄校准图案并不简单。请按照以下指南进行有效的拍摄,以用于红外相机的校准。
1. 设置
- 使用圆点网格校准图案,因为在热成像中显示棋盘图案并不理想。不对称或对称圆点网格均可。
- 建议使用 8x8 圆点网格。
- 将打印的纸质校准图案粘贴在纸板上,并用高能光源(灯或太阳)短暂照射,以产生热对比度效果。
2. 拍摄
- 对于 Lepton 3.1R,至少应拍摄 6x6 的圆点网格,对于 Lepton UW,至少拍摄 4x4 的圆点网格。
- 由于 WFOV 的影响,图像边界附近的一些圆点可能会模糊。
- 每次拍摄应仅让圆点网格占据 FOV 的一部分。
- 拍摄的集合应覆盖 FOV 的大部分区域,即一到两次拍摄中心附近的圆点网格,八到十次拍摄 FOV 边界附近。
- 总共拍摄十到十二张图像即可提供优化的校准效果,拍摄更多图像并不能获得额外收益。

图 5. 中心(左)、右下(中)和底部中心(右)示例 LEPTON 3.1R 校准图案拍摄

图 6. 中心(左)、右下(中)和底部中心(右)示例 LEPTON UW 校准图案拍摄
2.4 支持
可在此处下载示例脚本 Lepton_Dewarp_example.py1。
如需技术支持,请访问 FLIR 支持中心:http://support.flir.com。
