基于FPGA的图像中值滤波算法实现

软件版本:VIVADO2018.3

操作系统:WIN10 64bit

硬件平台:ZYNQ7020

1 概述

      本工程以3*3领域范围为例,构建矩阵为3*3的图像处理算子,对分辨率为500*500的图像进行中值滤波(分辨率设置采用参数化设置,可根据需要任意修改)。

工程包含matlab代码、FPGA实现代码以及仿真文件。

关于中值滤波算法的介绍网上有很多,这里就不介绍了,不了解的可以自己百度。这里主要介绍图像处理算子的实现。

2 图像处理算子

因为数字图像数据是逐行逐列、逐个像素读取,一个3×3区域内的数据,需要借助缓存实现。可以利用两级FIFO流水线结构,存储当前读取像素位置前两行的数据,如下图所示。

此时,在读取像素的同时可以按照坐标关系,从FIFO中读出3×3区域内的其他所有像素值。需要注意的是,这里采用了边界用相邻的像素点填充的方法,这种方法所读取到的区域以当前读取像素为中心的矩阵。

图像处理算子仿真波形

将得到的3x3矩阵中的每行分别排序,求出最大值、最小值和中值,再将每一行的最大值、每一行的最小值、每一行的中值分别排序;最后将最大值的最小值、最小值的最大值、中值的中值进行排序,得到的中值即为3x3矩阵窗口的中值。程序整体结构如下图:

  1. 3 matlab仿真

%% 此代码实现将jpg图像转换成灰度图,写入到txt文件,目的以供应modelsim仿真使用

clc;

clear all;

close all;

%% 读取待写入图像

pic_data    = imread('G:\mid_filter_prj\matlab\lenna.jpg');

pic_data_noise = imnoise(pic_data,'salt & pepper',0.05); %椒盐密度0.05

gdata=rgb2gray(pic_data_noise)

[ROW COL]   = size(gdata);

 

% 对原图进行处理,将处理完的图像数据写入read.txt文件

fid = fopen('G:\mid_filter_prj\matlab\read.txt','w+');

for i = 1: ROW

    for j = 1:COL

        fprintf(fid,'%01x\n',gdata(i,j));

    end

end

fclose(fid);



Median_Img = medfilt2(gdata);



%读取FPGA仿真数据

medfilt_v_load = load('G:\mid_filter_prj\matlab\image_out.txt');

medfilt_v = reshape(medfilt_v_load, COL, ROW);

medfilt_v = uint8(medfilt_v');

figure(1);

imshow(medfilt_v);

title('FPGA中值滤波.jpg');

%--------------------------------------------------------------------------

%                           Show Image

%--------------------------------------------------------------------------

figure(2);

subplot(2,2,1); imshow(pic_data);   title('原图');

subplot(2,2,2); imshow(gdata);       title('椒盐噪声');

subplot(2,2,3); imshow(medfilt_v);       title('FPGA中值滤波');

subplot(2,2,4); imshow(Median_Img); title('matlab中值滤波');

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值