试验说明
本试验是想模拟自动驾驶识别车道线拟合函数时,可能会用到的一种图像处理手段,即将相机拍摄到的透视图像转换成为逆透视图像(鸟瞰图),便于对车道线的后续处理,同时对基于单目视觉进行测距也有一定的帮助;
生成透视变换矩阵;进行透视变换
cv2.getPerspectiveTransform(src, dst) → retval
获取逆透视变换矩阵函数各参数含义 ;
src:源图像中待测矩形的四点坐标;
sdt:目标图像中矩形的四点坐标
逆透视变换函数各参数含义
cv2.warpPerspective(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]]) → dst
src:输入图像;
M:变换矩阵;
dsize:目标图像shape;
flags:插值方式,interpolation方法INTER_LINEAR或INTER_NEAREST;
borderMode:边界补偿方式,BORDER_CONSTANT or BORDER_REPLICATE;
borderValue:边界补偿大小,常值,默认为0
如果只是简单地将图像进行变换可以直接选取原图中呈现透视效果的4个点坐标,然后再按照自己的目的将这4个点构成的梯形转换成矩形形式,不过,这样的操作由于选取点坐标具有随机性,带来的误差较大。
例如,我们直接选取棋盘格的四个角点作为透视效果中的4个点,左上:(414,471),右上:(920,471),右下:(1015,756),左下:(330,756);计算出梯形上下边的像素长度为:506 和 685,高为 285;
因此我们可以设计一个矩形作为逆透视变换后的图像大小尺寸,即 cv2.warpPerspective中的dsize,取685*285,效果如下:
进一步,为了尽可能的包含整个图像,我们可以通过相机标定的方式,提前计算出整个图像