基于FPGA的帧差法仿真实现 | 您所在的位置:网站首页 › 苹果手机如何监控安卓手机微信 › 基于FPGA的帧差法仿真实现 |
基于FPGA的帧差法仿真实现 一、帧差法的原理及应用 帧差法就是帧间差分法,帧差法是最为常用的行动目标检测措施之一,原理即是在图像序列邻接两帧或三帧间基于像素做差分运算来获取。率先,将邻接帧图像对应像素值相减获得差分图像,然后对差分图像二值化,在环境亮度改变不大的情形下,对应像素值改变小于预先确定的阈值时,能够感受这里为背景像素。假如图像区域的像素值改变很大,能够感受这是由于图像中行动物体引起的,将这些区域符号为前景像素,利用符号的像素区域能够确定行动目标在图像中的位置。由于邻接两帧间的工夫间隔极其短,用前一帧图像作为目前帧的背景模型具有较好的实时性,其背景不聚集,且更新速度快、算法容易、计算量小。算法的不足在于对环境噪声较为敏感,阈值的抉择相当关键,抉择过低不足以压抑图像中的噪声,过高则疏忽了图像中有用的改变。对于比拟大的、颜色统一的行动目标,有可能在目标内部发生抽象,无法全面地提取行动目标。多数应用于选择十字路口监控录像作为实验材料,检测过往车辆动态,也能为后期机器识别打下基础。 帧差法主要通过下面式子实现,其中 x1 和 x2 分别为当前帧和上一帧同一位置坐标的像素点灰度值,T 为预设的参考分割阈值,y 为最终输出的二值结果 ![]() 二、帧差分法实现步骤 1、实验框图 ![]() 2、模块介绍 a、 imread_framel :此模块用于读取事先准备好需要进行帧差法的两帧或多帧图片。 b、 Vga_crt:此模块用于产生后续模块所需时序。 c、 Hvcount :此模块用于对后续模块进行时序同步。 d、 Framel_diff :此模块用于帧差法的实现。 e、 Imwrite_fra :此模块用于读取帧差之后的结果。 三、帧差法的FPGA仿真实现 帧差法的原理比较简单,就是实时图像的相邻两帧或者三帧做差,FPGA的实现的难点在于大部分FPGA的内部存储(BRAM)不足以存取一幅完整图像的数据,这时就需要借助外部的SDRAM或者DDR等存储。 帧差法仿真源码展示: 1. /****************************************************** 2. // Project Name:Frame_Difference 3. // 4. // Author:Lee 5. // 微信公众号:FPGA开源工作室 6. *******************************************************/ 7. `timescale 1ns / 1ps 8. 9. module Frame_Difference #( 10. parameter IW = 800, 11. parameter IH = 600, 12. parameter DW = 24 13. )( 14. input PixelClk, 15. input reset_n, 16. input [DW-1:0] i_rgb, 17. input i_hs, 18. input i_vs, 19. input i_de, 20. output [DW-1:0] o_rgb, 21. output o_hs, 22. output o_vs, 23. output o_de 24. ); 25. 26. 27. reg we; 28. reg rd; 29. reg [20:0] waddr;//800*600 30. reg [20:0] raddr; 31. wire [DW-1:0] dout; 32. reg [DW-1:0] rgb_r; 33. reg [DW-1:0] dout_r; 34. reg hs_r0; 35. reg vs_r0; 36. reg de_r0; 37. 38. reg hs_r1; 39. reg vs_r1; 40. reg de_r1; 41. 42. reg hs_r2; 43. reg vs_r2; 44. reg de_r2; 45. 46. assign o_hs = hs_r2; 47. assign o_vs = vs_r2; 48. assign o_de = de_r2; 49. assign o_rgb = dout_r; 50. always @(posedge PixelClk )begin 51. rgb_r |
CopyRight 2018-2019 实验室设备网 版权所有 |