FPGA图像处理系统仿真平台的搭建

FPGA图像处理系统仿真平台的搭建

1概述

在FPGA实现图像处理算法之前我们需要验证我们的verilog代码的算法是否正确,或者是哪里出了问题,这时搭建一个图像处理的仿真平台就非常必要。我们很容易在仿真过程中找到算法的计算错误,但是下板之后就不那么容易了。所以搭建FPGA图像处理仿真平台非常必要。

整体思路:我们利用matlab将图像转换为txt文档,然后在使用verilog仿真平台读入txt文档的图像数据,经过我们的verilog图像处理算法后再将它转换为txt文档,最后由matlab读入显示图片。Matlab具有很强的数字图像处理和分析能力,这样我们可以对照我们的算法结果是否正确。

2仿真平台搭建

图1 FPGA图像仿真平台

如图1所示,首先将一幅图像由Matlab转换为txt文档,然后由FPGA的仿真平台IMread.v读入图像数据,VGA_CTL为VGA时序发生模块,数据进入VGA_CTL模块后转成VGA时序。再由图像处理法处理数据,将处理好的数据发送给Imwrite模块,Imwrite模块将数据转换为txt文档,最后由Matlab显示,达到图像的验证目的。

3实验程序设计

Matlab程序的设计:

1>img_txt.m完成图像转txt.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% ProjectName :img_txt.m

% FPGAOpen Source Studio

%Author:Lipu

%Description: image to txt

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

clear all

close all

clc

img =imread('800_600.jpg');

R=img(:,:,1);

G=img(:,:,2);

B=img(:,:,3);

%**************************

[a,b,c]=size(img);

fidR=fopen('testR.txt','w');

fidG=fopen('testG.txt','w');

fidB=fopen('testB.txt','w');

for i=1:a

for j= 1:b

fprintf(fidR,'%d\n',R(i,j));

fprintf(fidG,'%d\n',G(i,j));

fprintf(fidB,'%d\n',B(i,j));

end

end

fclose(fidR);

fclose(fidG);

fclose(fidB);

figure,

subplot(221),imshow(img),title('img');

subplot(222),imshow(R),title('R');

subplot(223),imshow(G),title('G');

subplot(224),imshow(B),title('B');

2> Txt_img.m完成txt转图像

FPGA代码设计:

1> Imread.v完成图像读入

2> Imwrite.v完成图像转txt

3>vga_ctl.v和vga_parameter.vh完成VGA时序的发生。

4>tb_image.v完成各个模块连接与控制的顶层仿真模块。

4实验结果

图2实验原图

图3转换txt的R,G,B及原图显示

图4 txt转换图像Ycbcr算法后图像显示

总结:

本实验为了FPGA在图像处理算法仿真搭建平台,方便以后的时序以及算法查错。Matlab自身也很方便图像的分析,利用好matlab将使我们事半功倍。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181114G176XU00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券