FPGA图像仿真平台

1 引言

在使用modelsim进行图像算法的功能仿真时,无法得到图像的实时预览,因此直观性有所欠缺。因此可配合matlab使用,通过modelsim读出txt格式的图像,利用matlab进行转换与显示,从而既可验证时序关系,又可直观看到算法的效果。

2 matlab代码

2.1 图片读取及通道转换

注意事项:图片与程序需放到同一文件夹内

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% ProjectName : ycbcrcode.m
% Author : Huhao
% Description : image to txt
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all
close all
clc img = imread('card.jpg');
ycbcr = rgb2ycbcr(img); y=ycbcr(:,:,1);
cb=ycbcr(:,:,2);
cr=ycbcr(:,:,3);

2.2 图片转化为txt格式

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% ProjectName : rgb2txt.m
% Author : Huhao
% Description : rgb to text
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all
close all
clc img = imread('card.jpg'); r=img(:,:,1);
g=img(:,:,2);
b=img(:,:,3); figure,
subplot(221),imshow(r),title('R');
subplot(222),imshow(g),title('G');
subplot(223),imshow(b),title('B');
subplot(224),imshow(img),title('RGB img'); r1=r';
g1=g';
b1=b'; fid1=fopen('img_r.txt','wt');
% fprintf(fid1,'%x\n',r1);%hexadecimal
fprintf(fid1,'%g\n',r1);%Binary
fclose(fid1); fid2=fopen('img_g.txt','wt');
% fprintf(fid2,'%x\n',g1);
fprintf(fid2,'%g\n',g1);
fclose(fid2); fid3=fopen('img_b.txt','wt');
% fprintf(fid3,'%x\n',b1);
fprintf(fid3,'%g\n',b1);
fclose(fid3);

2.3 modelsim输出的txt文档重新转化为图片并显示

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% ProjectName : txt2rgb.m
% Author : Huhao
% Description : text to rgb
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all
close all
clc r_load = load('img_r.txt');
g_load = load('img_g.txt');
b_load = load('img_b.txt'); length = 760;%image length
width = 397;%image width r2 = reshape(r_load,[length, width]);
r2 = uint8(r2');
g2 = reshape(g_load,[length, width]);
g2 = uint8(g2');
b2 = reshape(b_load,[length, width]);
b2 = uint8(b2'); rgb_img(:,:,1)=r2;
rgb_img(:,:,2)=g2;
rgb_img(:,:,3)=b2; figure,
subplot(221),imshow(r2),title('R');
subplot(222),imshow(g2),title('G');
subplot(223),imshow(b2),title('B');
subplot(224),imshow(rgb_img),title('RGB img');

3 结果显示

3.1 图片转化为txt结果

图1 rgb to txt三通道图片

图2 rgb to txt得到的三通道txt数据

3.2 txt重新转化为图片结果

图3 txt to rgb三通道图片

Matlab/Modelsim图像联合仿真平台的更多相关文章

  1. 通过文件读写方式实现Matlab和Modelsim的联合仿真

    虽然Modelsim的功能非常强大,仿真的波形可以以多种形式进行显示,但是当涉及到数字信号处理的算法的仿真验证的时候,则显得有点不足.而进行数字信号处理是Matlab的强项,不但有大量的关于数字信号处 ...

  2. vivado与modelsim的联合仿真(二)

     最近在做Zynq的项目,曾经尝试使用ISE+PlanAhead+XPS+SDK组合和Vivado+SDK来搭建工程,使用中发现前者及其不方便后者有诸多不稳定.近期得闻Xilinx退出Vivado20 ...

  3. Xilinx ISE如何调用Modelsim进行联合仿真

    图: 在对设计的芯片进行测试时,经常要用到FPGA,可是里面的仿真工具却不如Modelsim那么好用,且在规模比较大时,ISE在仿真时,软件经常会报告内存限制的问题,此时一般会切换到Modelsim软 ...

  4. MATLAB与Carsim联合仿真时提示matlab not found的解决方法(CarSim在联合仿真时提示找不到MATLAB的解决方法)

    CarSim8.02并没有提供选择联合仿真的MATLAB/Simulink的版本的功能,CarSim总是与最后安装的MATLAB/Simulink进行联合仿真,如果安装有多个matlab版本则只打开最 ...

  5. (转)Quartus II和Modelsim的联合仿真(详细)

    这篇文章不需要在modelsim中建库.映射.建工程等一些繁琐的步骤,直接使用modelsim中的默认work库.使用quartus+modelsim联合仿真. 首先推荐一篇文章 http://www ...

  6. Vivado关联Modelsim进行联合仿真

    Vivado自带仿真工具,但是有点慢,关联Modelsim联合仿真是最好的,注意Modelsim必须是10.7以上版本. 1.安装并成功破解Modelsim 10.7. 2.打开Vivado,点击 T ...

  7. vivado与modelsim的联合仿真

    转载: 一.在vivado中设置modelsim(即第三方仿真工具)的安装路径.在vivado菜单中选择“Tools”——>“Options...”,选择“General”选项卡,将滚动条拉倒最 ...

  8. vivado与modelsim的联合仿真(一)

    vivado软件中也自带仿真工具,但用了几天之后感觉仿真速度有点慢,至少比modelsim慢挺多的.而modelsim是我比较熟悉的一款仿真软件,固然选它作为设计功能的验证.为了将vivado和mod ...

  9. Modelsim, Debussy联合仿真Xilinx

    http://wenku.baidu.com/view/8363d40003d8ce2f006623e9.html  另外一个博客 生成Xilinx库 先调用ISE的simulation librar ...

随机推荐

  1. Java HashMap工作原理:不仅仅是HashMap

    前言: 几乎所有java程序员都用过hashMap,但会用不一定会说. 近年来hashMap是非常常见的面试题,如何为自己的回答加分?需要从理解开始. "你用过hashMap吗?" ...

  2. 你的 JVM 基础“大厦”稳健吗?

    [从 1 开始学 JVM 系列] JVM 对于每位 Java 语言编程者来说无疑是"重中之重",尽管我们每天都在与它打交道,却很少来审视它.了解它,慢慢地,它成为了我们" ...

  3. Mysql常用sql语句(3)- select 查询语句基础使用

    测试必备的Mysql常用sql语句系列 https://www.cnblogs.com/poloyy/category/1683347.html 前言 针对数据表里面的每条记录,select查询语句叫 ...

  4. mac、ip、udp头解析

    一.MAC帧头定义 /*数据帧定义,头14个字节,尾4个字节*/ typedef struct _MAC_FRAME_HEADER {  char m_cDstMacAddress[6];    // ...

  5. abp element 显示分页

    App.vue添加组件 <template> <div id="app"> <dataTable></dataTable> < ...

  6. Playfield 类方法的注释

    前言 本篇随笔的底包采用的是百度炉石兄弟吧20200109折腾版中自带的 routines 文件. 本次仅为绝大多数方法添加 xml 注释和简单解析,没有具体解析与重构. Playfield 类方法众 ...

  7. %v的使用

    不同的类型,他们的默认的%v     一个变动的格式化字符串,相当于一个变量,遇到不同类型,就变形成不同的格式. 类型 %v bool %t int/int8/... %d uint/uint8/.. ...

  8. Linux内核中断顶半部和底半部的理解

    文章目录 中断上半部.下半部的概念 实现中断下半部的三种方法 软中断 软中断模版 tasklet tasklet函数模版 工作队列 工作队列函数模版 进程上下文和中断上下文 软中断和硬中断的区别 硬中 ...

  9. 论文解读(DGI)《DEEP GRAPH INFOMAX》

    论文标题:DEEP GRAPH INFOMAX 论文方向:图像领域 论文来源:2019 ICLR 论文链接:https://arxiv.org/abs/1809.10341 论文代码:https:// ...

  10. TP5多条件搜索,同时有必要条件

    $model = $this->model; // 查询是否有搜索参数 $search = input('?get.search') ? trim(input('get.search')) : ...