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

这篇具有很好参考价值的文章主要介绍了基于FPGA:运动目标检测(VGA显示,原理图+源码+硬件选择)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、先看效果

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

基于FPGA:运动目标检测

二、硬件选择

开发板Altera:EP4CE10F17C8
摄像头:OV5640
缓存数据:SDRAM
板子是自己制作的
基于FPGA:运动目标检测(VGA显示,原理图+源码+硬件选择)

三、目标追踪帧差法原理

    根据帧差法的实现流程,设计的双端口SDRAM控制器,一侧读写端口用做帧缓存,另一个端口用来缓存视频流,如图所示。
基于FPGA:运动目标检测(VGA显示,原理图+源码+硬件选择)
    在使用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的时延仿真波形如下图所示:
基于FPGA:运动目标检测(VGA显示,原理图+源码+硬件选择)

五、差分处理模块

    差分处理模块主要含有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 <-#ck2q o;
	else if(~ivsync & ivsync_do)
		rd _en <-#ck2q l'bl;
	end
assign sdr_rd = rd_en & clken;
assign sdr_nwr -rd_en ;

    然后可完成两帧图像数据data_next - data_cur 差分。大于设定阈值threshold为 15 则认为时目标区域,设置为255;注意阈值可以根据需要调节控制。

//差分处理
reg[7:0]data_diff;
wire [7:0]data;
assign data=(data_next>data_cur) ?((data_next-data_cur > threshold)? 8'd255 :8'd0):( (data_next==data_our)? 8'd0:((data_cur-data_next 5 threshold) ? 8'd255 :8 'd0));

    如下图所示,可以看到 data_next - data_cur = 8’d130时,大于设定阈值15则输出数据post_img_Bit为255。

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

六、腐蚀和膨胀形态学滤波

    由于侦查法受环境影响,处理之后会有噪声,由于是二值图像,这里采用形态学滤波,先进行腐蚀处理就是去除小边界和孤立点﹔再进行膨胀处理,填充空洞。
    本次采用33窗口实现腐蚀和膨胀操作,如图1.6及1.7所示:
基于FPGA:运动目标检测(VGA显示,原理图+源码+硬件选择)
    如下图所示,得到的是matrix_p11~matrix_p339个像素数据组成3x3图像模板,这里通过行缓存设计(缓存了2行图像数据),延时时两行数据后,在如下黄线后第3行,得到完整的3x3图像模板。部分代码如下所示。

always@(posedge clk or negedge rst_n)
begin
	if(!rst_n)
		begin
		{matrix_p11, matrix_p12, matrix_p13} <= 3'b0;
		{matrix_p21, matrix_p22, matrix_p23} <= 3'b0;
		{matrix_p31, matrix_p32, matrix_p33} <= 3'b0;
		end
	else if(read_frame_href)
		begin
		if(read_frame_clken)	//Shift_RAM data read clock enable
			begin
			{matrix_p11, matrix_p12, matrix_p13} <= {matrix_p12, matrix_p13, row1_data};	//1th shift input
			{matrix_p21, matrix_p22, matrix_p23} <= {matrix_p22, matrix_p23, row2_data};	//2th shift input
			{matrix_p31, matrix_p32, matrix_p33} <= {matrix_p32, matrix_p33, row3_data};	//3th shift input
			end
		else
			begin
			{matrix_p11, matrix_p12, matrix_p13} <= {matrix_p11, matrix_p12, matrix_p13};
			{matrix_p21, matrix_p22, matrix_p23} <= {matrix_p21, matrix_p22, matrix_p23};
			{matrix_p31, matrix_p32, matrix_p33} <= {matrix_p31, matrix_p32, matrix_p33};
			end	
		end

腐蚀膨胀仿真波形图:基于FPGA:运动目标检测(VGA显示,原理图+源码+硬件选择)

七、包围盒处理

    包围盒处理如上图的 boundary 灰度帧差法的得到二值图像,然后设计包围盒得到上下左右4点像素坐标,框出目标区域。
    通过行场信号,设计行列计数器,从而可以获取图像每个像素点的坐标信息,然后设计4个寄存器分别是edg_up 、 edg_down、edg_left、edg_right目标的上下左右四个点,实时与行列计数器比较,也就是求最大值( edg_down和edg_right)和最小值(edg_up和edg_left),代码如下所示:

always@(posedge clk or negedge rst_n)
begin
    if(!rst_n) begin
      edg_up    <=  10'd479;
      edg_down  <=  10'd0;
      edg_left  <=  10'd639;
      edg_right <=  10'd0;
	 end
	else if(vsync_rising) begin
	   edg_up    <=  10'd479;
      edg_down  <=  10'd0;
      edg_left  <=  10'd639;
      edg_right <=  10'd0;
	end
   else if(per_frame_clken & per_frame_href)begin
	  if(per_img_Y == 1'b1) begin
	     if(edg_up > v_cnt)
	       edg_up  <=v_cnt ;
	     else 
          edg_up  <=edg_up ;	
	
	     if(edg_down < v_cnt)
	       edg_down  <=v_cnt ;
	     else 
          edg_down  <=edg_down ;	
			 
		  if(edg_left > h_cnt)
	       edg_left  <= h_cnt ;
	     else 
          edg_left  <=edg_left ;	
	
	     if(edg_right < h_cnt)
	       edg_right  <=h_cnt ;
	     else 
          edg_right  <=edg_right ;			 
	  end
	end
end 

八、板子原理图及源码工程获取

①:直接点链接获取:基于FPGA的运动目标检测(硬件+原理图+源码+仿真+设计文档)
②:私信我或者添加微信获取(完整原理图、硬件、源码工程、技术指导)文章来源地址https://www.toymoban.com/news/detail-443542.html

到了这里,关于基于FPGA:运动目标检测(VGA显示,原理图+源码+硬件选择)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于FPGA的运动目标检测跟踪系统项目:从顶层架构设计到RTL编写与仿真,完整实现FPGA图像处理算法实现的项目流程。

    基于FPGA的运动目标检测跟踪系统项目 ,FPGA项目,FPGA图像处理 FPGA项目 采用帧间差分法作为核心算法,该项目涉及图像采集,颜色空间转换,帧间差分核心算法,腐蚀等形态学处理,目标定位,目标标识,图像显示等模块。 通过该项目可以学习到以下两方面内容 1.FPGA顶层架

    2024年04月16日
    浏览(64)
  • 【老生谈算法】基于matlab的运动目标识别与跟踪系统设计与算法原理及程序源码——目标识别算法

    大家好,今天给大家介绍基于matlab的运动目标的监测与跟踪系统设计与原理。 视频图像分析主要是对运动图像序列进行分析处理,它通常涉及到运动检测、目标分类、目标跟踪及行为理解与描述几个过程。其中,运动目标检测与跟踪处于整个视觉监视系统的最底层,是视频图

    2024年02月13日
    浏览(49)
  • 基于FPGA的VGA图像显示

    引言:本文我们介绍利用FPGA实现VGA图像显示,主要介绍VGA硬件接口、VGA接口时序原理以及FPGA代码实现VGA接口时序、仿真等内容。 VGA(Video Graphics Array)视频图形阵列是IBM于1987年提出的一个使用模拟信号的电脑显示标准。VGA接口即电脑采用VGA标准输出数据的专用接口。VGA接口

    2024年02月06日
    浏览(33)
  • FPGA——基于VGA协议显示彩条、图片、字符

    本篇博客主要是深入了解VGA协议,理解不同显示模式下的VGA控制时序参数(行频、场频、水平/垂直同步时钟周期、显示后沿/前沿等概念和计算方式)。并通过Verilog编程,实现以下VGA显示:1、屏幕上显示彩色条纹;2、显示自定义的汉字字符;3、输出一幅彩色图像。 VGA(Vi

    2024年02月04日
    浏览(53)
  • FPGA_工程_基于Rom的VGA图像显示

    一 工程框图 框图中,CLK_in,Vga_ctrl,Vga_pic模块已有,只需要对顶层模块进行修改,并将rom ip例化添加到Vga_pic模块的.v文件中,对Vga_pic的.v文件进行一定修改。 二 理论补充 显示图像的方法:                           使用matlab将图像格式转化为,.mif数据文件,再使用.m

    2024年02月20日
    浏览(36)
  • 【FPGA实验】基于DE2-115平台的VGA显示

    VGA(Video Graphics Array)视频图形阵列是IBM于1987年提出的一个使用模拟信号的电脑显示标准。VGA接口即电脑采用VGA标准输出数据的专用接口。VGA接口共有15针,分成3排,每排5个孔,显卡上应用最为广泛的接口类型,绝大多数显卡都带有此种接口。它传输红、绿、蓝模拟信号以及

    2024年02月03日
    浏览(36)
  • 【FPGA】VGA显示文字、彩条、图片——基于DE2-115

    **VGA(Video Graphics Array)**视频图形阵列是IBM于1987年提出的一个使用模拟信号的电脑显示标准。VGA接口即电脑采用VGA标准输出数据的专用接口。VGA接口共有15针,分成3排,每排5个孔,显卡上应用最为广泛的接口类型,绝大多数显卡都带有此种接口。它传输红、绿、蓝模拟信号

    2024年02月02日
    浏览(43)
  • OpenCV实例(九)基于深度学习的运动目标检测(一)YOLO运动目标检测算法

    2012年,随着深度学习技术的不断突破,开始兴起基于深度学习的目标检测算法的研究浪潮。 2014年,Girshick等人首次采用深度神经网络实现目标检测,设计出R-CNN网络结构,实验结果表明,在检测任务中性能比DPM算法优越。同时,何恺明等人针对卷积神经网络(Convolutional Neura

    2024年02月13日
    浏览(56)
  • 基于Quartus Prime平台FPGA关于VGA显示的模块化设计:VGA八种单色屏1s切换显示、横条纹、竖条纹、棋盘格显示、显示模式按键可调、数码管显示单色屏序号

    VGA(Video Graphics Array)是一种显示接口标准,它最初由IBM于1987年推出。VGA协议定义了计算机视频输出信号的格式和特性。它主要用于连接计算机和显示器之间的传输,实现图像和视频的显示。 VGA协议支持最高分辨率为640x480像素,色彩深度为16位色(即65,536种颜色)。它使用模

    2024年02月03日
    浏览(51)
  • 基于帧间差进行运动目标检测

    相邻帧差检测:优点是运算快速,实时性高,缺点是无法应对光照的突变,物体间一般具有空洞。 三帧差检测:在一定程度上优化了运动物体双边,粗轮廓的现象,相比之下,三帧差法比相邻帧差法更适用于物体移动速度较快的情况。

    2024年01月17日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包