FPGA图像处理入门 ZYNQ7020 均值滤波


前言

介绍在fpga中实现3×3矩阵均值滤波

一、均值滤波是什么?

均值滤波主要为了去除椒盐噪声
5×5矩阵实例
在这里插入图片描述
对矩阵内像素进行相加求均值 放在矩阵中心作为新矩阵

二、实现流程

使用两个fifo进行流水线处理 缓存两行数据 fifo先进先出 第一行先缓存 进入第一个fifo 缓存完之后 进入第二个fifo
等到第三行数据进来之后 进入矩阵寄存器进行缓存求和操作
在这里插入图片描述
矩阵部分实现代码

always@(posedge clk)
	if(!rst_n)
		begin
			{matrix11, matrix12, matrix13} <= 24'd0;
			{matrix21, matrix22, matrix23} <= 24'd0;
			{matrix31, matrix32, matrix33} <= 24'd0;
		end
	else if(data_de==1'b1)
		begin
			{matrix11, matrix12, matrix13} <= {matrix12, matrix13, row1_data};
			{matrix21, matrix22, matrix23} <= {matrix22, matrix23, row2_data};
			{matrix31, matrix32, matrix33} <= {matrix32, matrix33, row3_data};
		end
	else
		begin
			{matrix11, matrix12, matrix13} <= 24'd0;
			{matrix21, matrix22, matrix23} <= 24'd0;
			{matrix31, matrix32, matrix33} <= 24'd0;
		end		


fifo部分实现代码

fifo_matrix_buf u1_fifo_matrix_buf (
  .rst			(~rst_n			),
  .wr_clk		(clk			), 
  .rd_clk		(clk			), 
  .din			(row3_data		),    
  .wr_en		(wr_en			),  
  .rd_en		(row2_rd		),  
  .dout			(row2_data		),   
  .full			(				),   
  .empty		(u1_empty		)	   
);

fifo_matrix_buf u2_fifo_matrix_buf (
  .rst			(~rst_n			),
  .wr_clk		(clk			), 
  .rd_clk		(clk			), 
  .din			(row2_data		),    
  .wr_en		(wr_en			),  
  .rd_en		(row2_rd		),  
  .dout			(row1_data		),   
  .full			(				),   
  .empty		(u2_empty		)	   
);

不用shift ram是因为ip相对而言是黑盒子 而且能修改的部分较少

3×3矩阵需要进行除法 除9操作 消耗资源过大 先对1/9扩大 再截位操作 完成除法
部分实现代码

always@(posedge clk or negedge rst_n)
	if(!rst_n)
		pre_ave_data0 <= 'd0;
	else  if(matrix_de_r[1]==1'b1)
		pre_ave_data0 <= add_line*7282;
	else
		pre_ave_data0 <= 'd0;	
	
assign pre_ave_data = pre_ave_data0[23:16];

整个流程用img_gen读取灰度txt 然后进行矩阵缓存 均值操作 仿真输出均值后的txt

三、仿真验证

在这里插入图片描述
可以看到先缓存两行数据 等到第三行数据进来进行处理

在这里插入图片描述
从这个周期开始完成第一个矩阵的构建 随后滑动窗口

matlab验证

在这里插入图片描述

总结

使用截位操作完成除法 使用fifo完成矩阵流水线构建

基于FPGA的中值滤波算法的设计与实现 摘 要 在图像的采集、传输和记录等过程中,由于受到多方面因素的影响,图像信号会不可避免地受到椒盐噪声的污染,这将会严重影响图像的后期分析和识别等处理,因此有必要用中值滤波器对图像的椒盐噪声进行滤波预处理。 实际应用中,对滤波器件不仅要求能够将图像中的椒盐噪声滤除,满足图像处理的实时性要求,而且还要求能够很好地保护图像细节,避免滤波后图像变得模糊。针对传统的快速中值滤波算法在滤除图像椒盐噪声时存在图像细节模糊的缺陷,本文提出了一种基于FPGA的改进的快速中值滤波算法。该算法在中值滤波过程中,首先根据设定的阈值判断滤波窗口的中心像素点的是否为噪声点,若是噪声点,就利用快速中值滤波算法求出中值并替换中心点的原像素值,若不是噪声点,就不进行中值滤波处理。利用MATLAB软件对该算法进行仿真的结果表明,该算法具有良好的去噪和图像细节保持的能力。 在该算法FPGA实现过程中,充分利用FPGA硬件的并行性,并且采用流水线技术,提高了图像滤波的处理速度。FPGA硬件实现的结果表明,该算法与传统的快速滤波算法相比,不仅能够满足图像处理的实时性要求,而且还能在滤除图像椒盐噪声的同时,避免滤波后图像变得模糊的缺陷,达到了保护原始图像细节的目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值