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

1. 常见的图片畸变

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

0ceb7895a9038df1d4687d6bf3ea8b04.png


径向畸变

4c1d0786ec3b8d0c4aaf78fd454a9237.png


切向畸变

2. 畸变矫正

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

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

fc1cdfbc0bedfc00f77332c360221f89.png


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

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

代码如下:

304ef86f03307bd2b89b41e2ac578f31.png
Tips:gray.shape[::-1] 是返回灰度图的长宽,代表 反置全部数组;
color.shape[1::-1] 是返回彩色图的长款,代表 反置前两个元素;

3. 图像矫正

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

修正结果如下:

75f24905f1aefd729928646ca925aefd.png


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

代码如下:

eae6de09d93b1f16fb3cfb954ab87950.png
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值