opencv shape函数_无人驾驶小课堂 - OpenCV 中的图像校正

1. 常见的图片畸变

无人驾驶摄像头/照相机镜头往往会有两种形式的图像变形,径向畸变(Radial Distortion)和切向变形(Tangetial Distortion)。前者是由于镜头成像的过程中,边缘造成的损耗。后者是因为镜头本身存在角度造成的倾角误差。

opencv shape函数_无人驾驶小课堂 - OpenCV 中的图像校正_第1张图片


径向畸变

opencv shape函数_无人驾驶小课堂 - OpenCV 中的图像校正_第2张图片


切向畸变

2. 畸变矫正

由于镜头畸变不可避免,因此需要矫正。在矫正之时,我们需要建立原图与矫正图像之间的关系,并找到这组关系的系数,通过一组标准系数,我们就获得了镜头的矫正方法。

通常来说,我们可以通过测量一组黑白格(如下图左)来获得这个矫正系数。当获得镜头拍摄的黑白格,只要找出其中的同等位置的格子交界处,并计算两者间变化的关系,就可以计算得到变形的系数。

opencv shape函数_无人驾驶小课堂 - OpenCV 中的图像校正_第3张图片


左:标准黑白格;右:畸变

如果使用 OpenCV 就可以简易获取其中的黑白交界处,如cv2.findChessboardCorners() 和 cv2.drawChessboardCorners() 函数。

代码如下:

opencv shape函数_无人驾驶小课堂 - OpenCV 中的图像校正_第4张图片
Tips:gray.shape[::-1] 是返回灰度图的长宽,代表 反置全部数组;
color.shape[1::-1] 是返回彩色图的长款,代表 反置前两个元素;

3. 图像矫正

在矫正了畸变之后,我们就可以把图像变形回我们需要的图像了。在这里,我们使用图像点来帮助把点矫正回原来的位置,来拉平图像,使用的函数为 cv2.getPerspectiveTransform() 和 cv2.warpPerspective() 。

修正结果如下:

opencv shape函数_无人驾驶小课堂 - OpenCV 中的图像校正_第5张图片


左:修正前;右:修正后;

代码如下:

opencv shape函数_无人驾驶小课堂 - OpenCV 中的图像校正_第6张图片

你可能感兴趣的:(opencv,shape函数)