时间:2024-05-04
姜晓雪,陈小菊,徐锐,屈子昂
(宜宾学院,四川宜宾,644000)
利用双目视觉技术实现测距,现在传统技术一般采用DSP、ASIC或者单片机完成[1]。一个完整的视觉模块仅采用DSP还不够需要结合其他东西来实现,采用ASIC设计开发视觉系统的主要缺点是灵活性较差,成本高,研制开发周期较长,增减功能和升级都很不方便[2]。单片机实现速度很慢,对一些复杂图像不能处理。而FPGA的并行处理在图像中既可以做到实时性又可以做到便携化,更可能提高机器人的集成度。本实用新型为了避开传统计算机、单片机的速度不够和体积庞大的缺点,采用FPGA的并行处理技术获取算法成功应用。
双目测距的基本原理是从两个视场观察同一物体,在获取不同视场下的两幅图像后,通过几何成像原理计算图像特征点之间的视场,进而获取景物的三维信息[3,4]。这一过程与人类眼睛的视觉感知过程尤为相似,具体的实施方法我们可以用两个性能参数相同且相隔某一固定距离的摄像头来模拟人类眼球获取事物在统一时间点的两幅图像,计算两幅图像中相同的两个特征点的视觉差异,进而获得相同的两个特征点的深度信息,这里以平行双目立体视觉成像为例加以说明,如图1所示。
图1 双目测距几何原理图
假定左摄像机和右摄像机的焦距及各参数都相等,光轴平行至两平面的X轴重合。我们所得到的两个平面会完全重合,是因为光轴与成像的平面相互垂直,Y轴也互相平行。我们所用到的空间任意一点P在左、右摄像机的成像面上的投影点是P1和P2,即可得视差。为了更直观的表示此原理,现将右摄像机成像面的坐标系平移至左摄像机成像面的坐标系。由于在理想状态下我们可假设两摄像机的位置完全一样,则可由相似三角形的原理求出P点的深度信息Z为:
其中b代表左右两个摄像机的基线距离,f代表相机的焦距,P1为P点在相机左成像面的坐标,P2为P点在右成像面的特征点在左成像面的等效坐标。因此,只要能够找到空间中某点在左右两个相机像面上的对应点,并且知道摄像机的主距、基距等参数,就可以求解这个点的深度信息[5]。
本设计硬件模块主要包括主控模块、 COMS摄像头采集数据模块以及VGA显示模块等;摄像头采用的是MT9V011, MT9V011 为 30 万像素,最高 30 帧,感光阵列面积为 1/3",内部结构如图2所示。
图2 MT9V011内部结构图
APS(Active Pixel Sensor)是最新的 CMOS 图像传感器的像素结构设计。APS 的工作过程:
(1)复位晶体管 Mrst 开通;
(2)PD 复位到 Vrst-Vth(Mrs的阈值电压);
(3)关闭 Mrst,PD 进入电气浮动状态;
(4)光线入射,PD 结电容聚集光生载流子;
(5)在一个积累时间后,选通晶体管 Msf;
(6)打开晶体管 Msel,像素中的输出信号在垂直输出线上被读出;
(7)关闭 Msel,Mrst 再次接通,重复上述过程。
VGA(Video Graphics Array)是IBM公司在1987年推出的一种具有高分辨率、高速显示速率、颜色丰富的视频传输,在彩色显示领域应用广泛。不支持热插拔,不支持音频传输。本设计采用的是ADV7123 芯片,ADV7123 是一款单芯片、三通道、高速数模转换器。ADV7123 内置三个高速、10 位、带互补输出的视频数模转换器、一个标准 TTL 输入接口以及一个高阻抗、模拟输出电流源。具体内部框图如图3所示。
图3 ADV7123内部结构
本设计使用的是 640×480@60Hz 的 VGA 时序接口,计算像素时钟 pclk = 800×525×60 =25200000,这里的 HSYNC(行同步信号)和 VSYNC(场同步信号)都是低电平有效,且 HSYNC在数据行无效区域也要提供。
本设计的主要流程分为图像获取、图片预处理、相机标定、目标检测、立体匹配。其中最关键的是目标检测和立体匹配。最后基于FPGA在Quartus Ⅱ上写了一个测距离的程序。该程序在背景比较单一的环境中能准确标定对象并测出相机到目标的距离。
步骤一:CMOS 驱动:负责 CMOS 图像采集与裁剪;步骤二:RAW2RGB:负责将原始的 RAW 数据转换成 RGB656 数据;步骤三:FIFO 写负责将 RAW2RGB 转换的的 RGB 数据发送给 SDRAM 控制器;步骤四:FIFO 读负责将 SDRAM 中的视频帧数据读出给 VGA 驱动模块;VGA 模块负责将视频信号发送给 ADV7123,最终 VGA 显示器显示。
图像分析中,图像质量的好坏直接影响识别算法的设计与效果的精度,因此在图像分析(特征提取、分割、匹配和识别等)前,需要进行预处理。图像预处理的主要目的是消除图像中无关的信息,恢复有用的真实信息,增强有关信息的可检测性、最大限度地简化数据,从而改进特征提取、图像分割、匹配和识别的可靠性。本设计采用的是Tophat形态学滤波算法。Tophat变换是原图像与开运算结果之差,突显出图像轮廓周围更亮的区域。具体的计算公式如下:
Tophat滤波只需要在开运算的基础上,将原始像素信号同步到开运算,最终结果输出,只要在开运算模块中的膨胀模块中添加一个shift_ ram,实现时钟延时的同步,实现程序如下:
wire [7:0] taps_1x_old;
shift_ram shift_ram_inst1
{
.clock(coms_pclk),
.clken(coms_href),
.shiftin(cmos_data_old_in),
.shiftout(),
.taps0x(),
.taps1x(taps_1x_old),
.taps2x()
};
reg [7:0] taps_1x_old_r;
always @(posedge cmos_pclk)
taps_1x_old_r<=taps_1x_old;
标定的目的是获得相机的内参(焦距,图像中心,畸变系数等)和外参(旋转矩阵和平移矩阵)。本设计采用的方法为张正友的棋盘格标定方法。步骤为:左摄像头标定,获取内外参数;右参数摄像头标定获取外参;双目标定,获取相机之间的平移旋转关系。
本设计介绍了一种基于FPGA的颜色识别经验算法,在RGB颜色通道提取的基础上对其他颜色通道进行腐蚀处理,再提取R-G、R-B两个特征值,再进行线性叠加,得到RR为所检测的目标。这样做减法既减少了计算量,又能够消除干扰背景,使识别更加精确、可靠。
图4 MATLAB标定工具箱使用
本设计颜色识别模块中写有红、蓝、绿三个颜色滤波器,当识别颜色时,滤波器分时工作,即选定一种颜色的滤波器之后,其他颜色的分量都不能够通过滤波器,而只有这种颜色能够通过滤波器,该分量通过滤波器之后,则得出要识别颜色中该分量的值。简单来说就是当红色滤波器处于工作状态时,只有蓝色光能通过滤波器,而蓝色、绿色不通过,这样就能够得出红色分量的值。当入射光通过三个颜色滤波器之后得出三个颜色分量值,这样,叠加在一起则得出被测物体颜色,识别红色物体。实现程序如下:
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
r_data<=8'd0;
else if(href_i) begin
if(r_data>=g_data)
r_data_r1<=r_data-g_data;
else
R_data_r1<=8'd0;
end
else
r_data_r1<=8'd0;
end
立体匹配是双目深度估计的核心部分,发展了很多年,也有非常多的算法,主要目的是计算参考图与目标图之间像素的相对匹配关系,主要分为局部和非局部的算法。本设计采用的匹配算法为SAD(Sum of absolute differences),基本思想:差的绝对值之和。此算法常用于图像块匹配,将每个像素对应数值之差的绝对值求和,据此评估两个图像块的相似度。具体步骤如下:
(1)输入:两幅图像,一幅Left-Image,一幅Right-Image,对左图,依次扫描,选定一个锚点。
(2)构造一个小窗口,类似于卷积核。
(3)用窗口覆盖左边的图像,选择出窗口覆盖区域内的所有像素点。
(4)同样用窗口覆盖右边的图像并选择出覆盖区域的像素点。
(5)左边覆盖区域减去右边覆盖区域,并求出所有像素点灰度差的绝对值之和。
(6)移动右边图像的窗口,重复(3)-(4)的处理(这里有个搜索范围,超过这个范围跳出)。
(7)找到这个范围内SAD值最小的窗口,即找到了左图锚点的最佳匹配的像素块。
如图5所示,一种基于FPGA的双目测距系统,包括主控模块、 COMS摄像头采集数据模块、VGA显示模块;主控模块分别连接红COMS摄像头采集数据模块、VGA显示模块。
本设计在实施时,通过摄像头模块采集信息,控制模块对采集的数据进行处理,如图5所示,图像采集使用MTV9V011摄像头完成对目标信息的采集,首先将目标的彩色RGB图像存入SDRAM中,然后用控制端去读取数据信息,再将获取的RGB图像依次进行灰度处理、阈值分割得到二值图像,对二值数字图像进行边界追踪的基础上进行颜色识别,将所标定区域显示在VGA上,再对所标定的对象进行测距,最终距离通过串口传到上位机上实时显示出测得的距离。
图5 系统框架
如图6所示,本设计的第一组测试标定对象为蓝色物体,从图中可以看出,蓝色物体易受周围环境干扰,标定了一部分其他颜色物体,精确度不高。
图6 蓝色标定
如图7所示,本设计的第二组测试标定对象为红色物体,从图中可以看出,红色物体受周围环境影响小。
图7 红色标定
如图8、10、12所示,对标定的红色物体进行测距,距离分别为为40.7cm、80.6cm、8.7cm,如图9、11、13所示通过串口助手将测到的距离传送给上位机便于实时观察,上位机显示测距为40cm、80cm、8cm,与实际所量距离基本一致。
图8 实际距离40.7cm图
图9 40.7cm上位机测试数据
图10 实际距离80.6cm图
图11 80.6cm上位机测试数据
图12 实际距离8.7cm图
图13 8.7cm上位机测试数据
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!