1. 常见的图片畸变
无人驾驶摄像头/照相机镜头往往会有两种形式的图像变形,径向畸变(Radial Distortion)和切向变形(Tangetial Distortion)。前者是由于镜头成像的过程中,边缘造成的损耗。后者是因为镜头本身存在角度造成的倾角误差。
径向畸变 切向畸变2. 畸变矫正
由于镜头畸变不可避免,因此需要矫正。在矫正之时,我们需要建立原图与矫正图像之间的关系,并找到这组关系的系数,通过一组标准系数,我们就获得了镜头的矫正方法。
通常来说,我们可以通过测量一组黑白格(如下图左)来获得这个矫正系数。当获得镜头拍摄的黑白格,只要找出其中的同等位置的格子交界处,并计算两者间变化的关系,就可以计算得到变形的系数。
左:标准黑白格;右:畸变如果使用 OpenCV 就可以简易获取其中的黑白交界处,如cv2.findChessboardCorners() 和 cv2.drawChessboardCorners() 函数。
代码如下:
Tips:gray.shape[::-1] 是返回灰度图的长宽,代表 反置全部数组;
color.shape[1::-1] 是返回彩色图的长款,代表 反置前两个元素;
3. 图像矫正
在矫正了畸变之后,我们就可以把图像变形回我们需要的图像了。在这里,我们使用图像点来帮助把点矫正回原来的位置,来拉平图像,使用的函数为 cv2.getPerspectiveTransform() 和 cv2.warpPerspective() 。
修正结果如下:
左:修正前;右:修正后;代码如下:
网友评论