声明:主要程序及架构思想均来自徐文波、田耘《Xilinx FPGA开发实用教程(第二版)》,本人在学习过程中按照书上指导将其实现,将其拿出与初学者交流分享。所有步骤均经过验证(并修正了书上若干细节小错误)。O(∩_∩)O~
前面两篇我们分别单独在MAtlab和ISE上实现了中值滤波,其中在ISE上的实现还只是对少量的测试数据。那么,为了对较大规模的实际数据进行滤波。我们采取这样的方案:
1.首先由Matlab读取图片数据并经过适当的处理以适合硬件输入,然后保存为数据文件
2.然后ISE中读取上述数据文件,进行中值滤波后将结果也写入新的数据文件
3.Matlab在读取ISE中所写的数据文件,经过适当排列处理后进行结果验证(这里就是以图片格式输出进行对比)。
下面分别来实现
1.matlab预处理数据
%用于产生FPGA中值滤波所需的输入信号
clear;
clc
s=load('demo.mat');
demo=s.image;%载入RGB图像文件(三维矩阵)
demo=rgb2gray(demo);%转化为灰度图像(二维矩阵)
[a,b]=size(demo);
len=(a-2)*(b-2);%分割成len个3*3九宫格
duut=zeros(9,len);%测试向量,9个一列
for i=2:a-1
for j=2:b-1
%************读入九宫格****************
tmp=demo(i-1:i+1,j-1:j+1);
tmpv&#