基于FPGA:运动目标检测(VGA显示,原理图+源码+硬件选择)

您所在的位置:网站首页 verilog图像识别 基于FPGA:运动目标检测(VGA显示,原理图+源码+硬件选择)

基于FPGA:运动目标检测(VGA显示,原理图+源码+硬件选择)

2023-09-15 03:03| 来源: 网络整理| 查看: 265

目录 一、先看效果二、硬件选择三、目标追踪帧差法原理四、rgb2yuv灰度化处理(可参考正点原子说明书)五、差分处理模块六、腐蚀和膨胀形态学滤波七、包围盒处理八、板子原理图及源码工程获取

一、先看效果

    话不多说,先上视频看效果。

基于FPGA:运动目标检测

二、硬件选择

开发板Altera:EP4CE10F17C8 摄像头:OV5640 缓存数据:SDRAM 板子是自己制作的 在这里插入图片描述

三、目标追踪帧差法原理

    根据帧差法的实现流程,设计的双端口SDRAM控制器,一侧读写端口用做帧缓存,另一个端口用来缓存视频流,如图所示。 在这里插入图片描述     在使用SDRAM双端口时,只要合理控制好读写地址,即可实现SDRAM两个读写端口独立运行。其中,SDRAM1端口用来作为帧缓存,SDRAM2端口用来测试算法的效果。     首先,摄像头的输出格式是RGB565格式,经过颜色空间的转换转化为灰度数据流,写入到SDRAM1端口侧,等到延时一帧时刻到来,从第二帧开始两帧图像做差分。     但此时得到的差分后的二值图像,由于光照背景的变化会有很大的噪声,因此还需要进行了形态学滤波。然后求得包围盒左上角和右下角像素坐标,与原始RGB图像叠加后重新写入到SDRAM2端口,此时VGA就可以显示处理后的图像的效果。

四、rgb2yuv灰度化处理(可参考正点原子说明书)

    从公式中(1)可以看到:由于FPGA不善于处理浮点数;这里完成了浮点数向定点数的转换;各个系数均扩大256倍,最后在计算完之后除以256,如公式(2)。

Y = 0.299 R + 0.587 G + 0.114 B U = - 0.1687 R - 0.3313 G + 0.5 B + 128 (1) V = 0.5 R - 0.4187 G - 0.0813 B + 128 Y=(77*R+150*G+29*B)»8; U =(-43R-85G+128B+128*256)»8 (2) V=(128R-107G-21B+128*256)»8

    在Verlog里面,使用组合逻辑不能直接按上述公式(2)在计算,不然组合逻辑延时太大,导致时序不收敛,这里就需要添加寄存器来切割流水线;利用FPGA 并行处理的特点加速计算。这里分三级流水线处理:第一级流水线计算所有乘法; 第二级流水线计算所有加法,把正的和负的分开进行加法;第三级流水线计算最终的和,若为负数取0。输入到输岀有三个clock的时延仿真波形如下图所示: 在这里插入图片描述

五、差分处理模块

    差分处理模块主要含有gary_shfit和 Diff_frame两个模块,对应图1的延时一帧和差分处理方框;摄像头数据一路数据写入sdram写口1侧,做为帧缓存,另一路是当前的图像数据,通过场信号控制延时从sdram 读口1侧读数据,这样,如下所示,sdr_rd为sdram读信号。

//延时读sdram控制 reg rd_en; always@ (posedge clk or negedge resetb) begin if ( !resetb) rd_en matrix_p21, matrix_p22, matrix_p23}


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3