基于MATLAB的摄像头
图像失真校正
上学的时候玩智能车摄像头组,从发现图像失真、到下载研究各种文档、再到写程序测试、最后实际运用,整个过程很有意思,特别是逆透视变换值得研究。下面的内容是那时候写的MATLAB结课作业,实际运用到K60单片机程序中,是用MATLAB生成图像失真的校正表和反校正表:
//用图像像素定位物理坐标X
const int16 IMG_X[ROW][COL]
//用图像像素定位物理坐标Y
const int16 IMG_Y[ROW][COL]
//物理坐标X轴反校正表 X-列 用物理坐标定位列
const int16 XY_COL[YMAX_1][XMAX2_1]
目 录
摘要
1 引言
2 图像校正理论
3 图像桶形校正
4 图像梯形校正
结束语
摘要
在机器视觉检测中大视场短焦距摄像机镜头一般都存在一定程度的光学畸变,本文以飞思卡尔智能车大赛为背景,由于摄像头光轴与地面呈一定夹角,于是其成像存在梯形失真;为了扩大视野,广角镜头越来越为很多队伍所采用,于是又存在桶形失真。MATLAB中的数字图像是以矩阵形式表示的,这意味着MATLAB强大的矩阵运算能力用于图像处理非常有利,矩阵运算的语法对MATLAB中的数字图像同样适用。本文继承了图像几何校正法坐标变换的思想精髓,简要论述了MATLAB对摄像头图像畸变失真校正原理和方法。
关键词: MATLAB 摄像头图像 失真校正
1、引言
智能车利用摄像头传感器,通过识获取别路面黑色条带状引导线实现自主导航是现阶段智能车较常用的导航方法。由于摄像头镜头为不均匀的透镜,拍摄到的图像会出一定的光学畸变,广角镜头的失真通常会很严重。摄像头所产生的失真主要是桶形失真[1],如图一。还有摄像头在拍摄图像的时候, 最理想的位置是能垂直于拍摄平面, 这样才能保证图像能按原来的几何比例重现。然而在智能车的实际运用中, 受到智能车车体结构的限制和车体控制需摄像头有一定预瞄距离的要求, 摄像头一般与地平面成一定角度安装。这种角度的存在会造成一定的成像畸变—梯形失真[2], 图像的畸变会产生一系列问题: 垂直线被拍摄成斜线导致斜率计算错误, 远处的弯道被压缩导致曲率计算错误等等。在这种情况下, 直接利用目标引导线在图像中的相对位置制定控制策略, 会造成较大的误差, 甚至使小车严重偏离导航线。针对此问题, 下面将运用MATLAB分别对桶形失真和梯形失真做校正。