原文于2023.10.23发布于本人CSDN账号,现同步至博客园
1 选择合适的镜头与摄像头安装方式
镜头焦距:
上图为16mm等效焦距镜头(110°视场角)画面,下图为25mm等效焦距镜头(75°视场角)画面。
镜头的视场角越大,可看见的道路范围越大,但画面中也会产生更多的干扰。
镜头的视场角越小,画面干扰越少,道路边界也更为明显,易于识别。但前瞻不足,在弯道处难以提前控制,在长直道处难以加速冲刺。
镜头角度:
使用同一镜头,在同一高度下,上图为斜向下30°拍摄画面,下图为斜向下50°拍摄画面。
摄像头角度越高,前瞻越长,画面信息越多,易提前控制,但无法兼顾车前方较近距离的情况,易造成过弯内切出界。摄像头较低低则反之。
同时,摄像头角度越低,俯视视野越接近平面坐标系,在后续的识别中数学计算的精度越高。
镜头高度:
使用同一镜头,上图为25cm处(斜向下50°)拍摄画面,下图为15cm(斜向下15°)处拍摄画面。
摄像头高度高,效果类似于摄像头低角度俯视的效果,视野接近平面坐标系。
摄像头高度低时,只能通过提高摄像头角度、选用超广角镜头等方式获得前瞻与画面信息。会受到地面反光、镜头畸变、处于地平线以上物体等因素的极大干扰,图像必须经过透视原理变换后才可使用。
综合:
在赛事规则无限制的情况下,选用90°至140°的无畸变镜头;安装角度-30°至-45°;安装高度20cm较为合适。
理想视野应具有下列特点:
2 调整摄像头配置
逐飞科技库函数配置路径:
TC212/TC264/TC364/TC377/TC387(2022年后的库函数):
\libraries\zf_device\zf_device_mt9v03x
TC212/TC264/TC364/TC377/TC387(2022年前的库函数):
\Libraries\seekfree_peripheral\SEEKFREE_MT9V03X
CH32V103:
Libraries/seekfree_peripheral/SEEKFREE_MT9V03X
CH32V307:
libraries/zf_device/zf_device_mt9v03x_dvp
RT1064:
/libraries/zf_device/zf_device_mt9v03x_flexio与
/libraries/zf_device/zf_device_mt9v03x
RT1021:
/Libraries/seekfree_peripheral/SEEKFREE_MT9V032与/Libraries/seekfree_peripheral/SEEKFREE_MT9V03X
MM32F527XE9P/ MM32F327XG9P/ MM32F327XG8P:
/libraries/zf_device/zf_device_mt9v03x
以TC264库函数为例,配置各参数:
MT9V03X_W、MT9V03X_H、MT9V03X_IMAGE_SIZE:图像分辨率。
增大分辨率使图像清晰,但会占用更多的算力,降低帧率,减小分辨率则反之。对于TC264、RT1064或性能更强的MCU,推荐使用默认的188*120分辨率,对于RT1021、TC212等性能较弱的MCU,可适当降低分辨率。
MT9V03X_AUTO_EXP_DEF、MT9V03X_GAIN_DEF:自动曝光增益、图像增益。
自动曝光增益默认是关闭的,开启后可以在场地光线不均时防止画面过曝导致无法识别道路。
图像增益默认为32,调整其大小即调整白点值、进而控制灰度图像的亮度。
使用不同的循迹算法(大津法、差比和、边缘跟踪等)需要调整不同的自动曝光增益以配合。调试时可在赛道场地的一处开启灯光、另一处关闭灯光,当自动曝光增益合适时,两处均可获得较可靠的寻迹效果。
确定合适的自动曝光增益后,根据不同场地亮度调整合适的图像增益数值,在画面深色部分轮廓清晰的前提下,提高白色部分灰度值,提高画面对比度,便于识别。
MT9V03X_FPS_DEF:图像帧率。
默认为50,建议设置为100以上。因为CPU0的main函数主循环运行一次才会采集一帧图像,所以摄像头的实际帧率由其他代码的效率决定,此参数只代表帧率上限。
MT9V03X_EXP_TIME_DEF:曝光时间。
默认为512,一般毋需调整。
MT9V03X_LR_OFFSET_DEF、MT9V03X_UD_OFFSET_DEF:画面偏移量。
一般毋需调整当设置的图像分辨率比例和摄像头CMOS画幅比例不同时,摄像头无法使用CMOS的整个像场,可通过调整画面偏移选择合适的视场。
MT9V03X_PCLK_MODE_DEF:时钟模式。
默认为0,如果使用CH32V307的DVP接口或STM32的DCMI接口采集需要设置为1,使用其他单片机时毋需调整。