FPGA图像仿真平台

1 引言

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

2 matlab代码

2.1 图片读取及通道转换

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

  1. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  2. % ProjectName : ycbcrcode.m
  3. % Author : Huhao
  4. % Description : image to txt
  5. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  6. clear all
  7. close all
  8. clc
  9. img = imread('card.jpg');
  10. ycbcr = rgb2ycbcr(img);
  11. y=ycbcr(:,:,1);
  12. cb=ycbcr(:,:,2);
  13. cr=ycbcr(:,:,3);

2.2 图片转化为txt格式

  1. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  2. % ProjectName : rgb2txt.m
  3. % Author : Huhao
  4. % Description : rgb to text
  5. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  6. clear all
  7. close all
  8. clc
  9. img = imread('card.jpg');
  10. r=img(:,:,1);
  11. g=img(:,:,2);
  12. b=img(:,:,3);
  13. figure,
  14. subplot(221),imshow(r),title('R');
  15. subplot(222),imshow(g),title('G');
  16. subplot(223),imshow(b),title('B');
  17. subplot(224),imshow(img),title('RGB img');
  18. r1=r';
  19. g1=g';
  20. b1=b';
  21. fid1=fopen('img_r.txt','wt');
  22. % fprintf(fid1,'%x\n',r1);%hexadecimal
  23. fprintf(fid1,'%g\n',r1);%Binary
  24. fclose(fid1);
  25. fid2=fopen('img_g.txt','wt');
  26. % fprintf(fid2,'%x\n',g1);
  27. fprintf(fid2,'%g\n',g1);
  28. fclose(fid2);
  29. fid3=fopen('img_b.txt','wt');
  30. % fprintf(fid3,'%x\n',b1);
  31. fprintf(fid3,'%g\n',b1);
  32. fclose(fid3);

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

  1. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  2. % ProjectName : txt2rgb.m
  3. % Author : Huhao
  4. % Description : text to rgb
  5. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  6. clear all
  7. close all
  8. clc
  9. r_load = load('img_r.txt');
  10. g_load = load('img_g.txt');
  11. b_load = load('img_b.txt');
  12. length = 760;%image length
  13. width = 397;%image width
  14. r2 = reshape(r_load,[length, width]);
  15. r2 = uint8(r2');
  16. g2 = reshape(g_load,[length, width]);
  17. g2 = uint8(g2');
  18. b2 = reshape(b_load,[length, width]);
  19. b2 = uint8(b2');
  20. rgb_img(:,:,1)=r2;
  21. rgb_img(:,:,2)=g2;
  22. rgb_img(:,:,3)=b2;
  23. figure,
  24. subplot(221),imshow(r2),title('R');
  25. subplot(222),imshow(g2),title('G');
  26. subplot(223),imshow(b2),title('B');
  27. 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. RabbitMQ之消息模式1

    消息100%的投递 消息如何保障100%的投递成功? 什么是生产端的可靠性投递? 保障消息的成功发出 保障MQ节点的成功接收 发送端收到MQ节点(Broker)确认应答 完善的消息进行补偿机制 BAT ...

  2. Pycharm去除波浪线等相关操作

  3. MySQL——MySQL客户端命令

    1. mysql: (1)用于数据库连接 (2)用于管理数据库: a: 命令接口自带命令 b: SQL语句: DDL: 数据库定义语言 DCL: 数据库控制语言 DML: 数据库操作语言 2. mys ...

  4. 代码注释规范之Doxygen

    1.Doxygen简介 Doxygen是一个程序的文档产生工具,可以将程序中的注释转换成说明文档或者说是API参考手册,从而减少程序员整理文档的时间.当然这里程序中的注释需要遵循一定的规则书写,才能让 ...

  5. AOP快速入门

    一.概念 AOP面向切面编程,是函数式编程的延申,是对OOP的补充: 代理模式:拦截增强作用,增强功能: 1.java继承,纵向共性抽取, 2.横向切面AOP织入增强代码方式 二.原理是通过代理机制, ...

  6. Linux的基础指令(二)

    目录:   一.列表显示目录内容-ls    二.设置别名-alias      三.统计目录及文件空间占用情况-du       四.创建新目录 -mkdir          五.创建空文件-to ...

  7. find命令查找某一个时间点以后创建或者修改的文件

    touch -t 201711211615.47 starttouch -t 201711211617.47 end find ./* -newer start |xargs ls -al-rw-r- ...

  8. RabbitMQie消息列队整理

    使用方法过程,这儿只做了windows平台教程 先安装Erlang 编程软件,然后设置环境变量,在安装RabbimMQ ,这儿我下载了一个版本不行,后来换了最新版就好了,以后在使用过程 中如果有问题 ...

  9. CodeForce-812C Sagheer and Nubian Market(二分)

    Sagheer and Nubian Market CodeForces - 812C 题意:n个货物,每个货物基础价格是ai. 当你一共购买k个货物时,每个货物的价格为a[i]+k*i. 每个货物只 ...

  10. 【C++基础教程】第三课

    上次的课后练习答案 练习一 第一题a=8 第二题8 第三题(int)(a+0.2) 提示:把浮点数转换为整数,用强制类型转换的方式.(int)(...)表示把...的内容强制转换为int类型,同理,( ...