实现流程

  • 第一步:使用matlab自带的图片转码指令进行RGB到YCbCr转码(1)
  • 第二步:使用matlab自带的图片转码指令进行RGB到YCbCr转码(2)
  • 第三步:在Vivado中编写SystemVerilog程序实现转码及初步仿真
  • 第四步:在ncverilog中仿真对比
  • 第五步:在综合及布局布线后后仿真
  • 第五步,生成时序文件
  • 第六步,后仿真
  • 第七步,将仿真结果得到的YCbCr带入matlab中生成bmp文件

所涉及文件:
链接: https://pan.baidu.com/s/1cbBHe2N6A1IIlp9fNB8jKw
提取码:obq1

第一步:使用matlab自带的图片转码指令进行RGB到YCbCr转码(1)

使用matlab将图片转成YCrCb格式并观察其效果,文件名为rgb_to_ycrcb.m,imread中路径名为bmp文件所处路径,得到如下输出结果

其中,figure1为原图片,figure2为转成YCrCb格数输出的文件。为更好的理解过程,在下一步中采用更加基本的程序来展示。

第二步:使用matlab自带的图片转码指令进行RGB到YCbCr转码(2)

新建txt空白文本文件,并分别命名为
matlab_result_Y.txt
matlab_result_Cb.txt
matlab_result_Cr.txt
使用matlab文件读取方法对bmp文件进行读取,文件名为rgb_to_ycrcb2.m(其中路径自行根据文件位置进行修改)。在本次实验中,本人将提取出来的信息绘制出YCbCr的RGB图像及灰度图,以对所提取的数据的准确性做了初步的验证。结果如下:

通过figure2,figure3可以看出,所提取出的信息应该是基本正确的。

第三步:在Vivado中编写SystemVerilog程序实现转码及初步仿真

**注:**整张图片时序输入将导致波形文件过大,Vivado可能会产生错误。故将代码分为两部分。第一部分中,在t=0时刻输出仿真所得YCbCr码并写入txt文件;第二部分中,仿真信号与模块输出信号输出一定时长的波形信号,在有限的波形信号中,比对两个信号是否一致即可。后仿真同理。
新建空白,编写SystemVerilog程序。本次作业在参考他人csdn上关于bmp文件的格式描述后(https://blog.csdn.net/zhong_ethan/article/details/121310111)得到启发。具体步骤如下:
新建空白txt文本文件
sv_tb_sim_result_Y.txt
sv_tb_sim_result_Cb.txt
sv_tb_sim_result_Cr.txt
编写模型文件rgb_to_ycrcb.sv与测试文件tb_rgb_to_ycrcb.sv。
得到波形如图:




其中,R、G、B变量为读入的RGB数据,Y、Cb、Cr为经过模型文件的输出文件,Y_stimulation,Cb_stimulation,Cr_stimulation为仿真文件生成的数据,可以发现,大部分数据均一致,部分数据存在1的差异,本人认为此处属于系统误差,对于硬件而言,不能无限分配资源。在模块内部采用16bit寄存器进行运算,与double型变量位数存在差异,无法避免。
仿真得到的文件为
sv_tb_sim_result_Y.txt
sv_tb_sim_result_Cb.txt
sv_tb_sim_result_Cr.txt
对比matlab所得到的仿真文件
matlab_result_Y.txt
matlab_result_Cb.txt
matlab_result_Cr.txt
同样仅存在少许的系统误差,故认为这样的转换是有效的

第四步:在ncverilog中仿真对比

采用ncverilog进行波形生成比对。因老师留下的ncverilog文件不全,无法成功安装,而网络上的资源参差不齐,难以找到合适的,故此处跳过。此处分享一个CADENCE_LDV_V5.0的crack文件

第五步:在综合及布局布线后后仿真

将可综合的sv文件编译,生成网表文件与延时文件。鉴于Vivado优秀的整合能力,能够更好的实现各个功能的集成,本次仿真采用vivado所附属的相应功能来完成本次作业。此方法与原方法存在差异有:软件差异、FPGA型号差异(vivado仅支持xlinx)、生成网表文件与延时文件格式差异(均为主流格式)。可与原方法互为补充。

综合成功后,Open Synthesized Design
在控制台下输入以下命令:

write_edif D:/Vivado_verilog/task2/soc_homework/soc_homework.srcs/sources_1/new/rgb_to_ycrcb.edf


在指定路径下生成不含Xilinx IP 的rgb_to_ycrcb.edf网表文件
输入:

write_edif -security_mode all D:/Vivado_verilog/task2/soc_homework/soc_homework.srcs/sources_1/new/rgb_to_ycrcb.edf

则在相应位置生成包含Xilinx IP 的rgb_to_ycrcb.edf网表文件

第五步,生成时序文件

参考网站https://blog.csdn.net/qq_40531974/article/details/117412025后,本人认为sdo文件可大致对应vivado中的sdf文件。
运行布局布线后,点击Open Implementation,在控制台输入:

write_sdf D:/Vivado_verilog/task2/soc_homework/rgb_to_ycrcb.sdf

则在相应位置生成rgb_to_ycrcb.sdf时序文件

第六步,后仿真


右键点击run stimulation,点击图中所需后仿真类别,得到生成的后仿真文件。
为区别之前生成的仿真文件,本人将之前的输出文件提前保存,将后续的文件输出文件命名为:
sv_tb_sim_result_Y_after_implementation.txt
sv_tb_sim_result_Cb_after_implementation.txt
sv_tb_sim_result_Cr_after_implementation.txt
对比可得,前后仿真文件结果,仅在前面有所区别,分析认为应该是FPGA从上电至正常运行必须有一定的准备时间。

第七步,将仿真结果得到的YCbCr带入matlab中生成bmp文件

由于前期工作思考不完善,这里对上述的tb_rgb_to_ycrcb.sv文件进行简单改变,得到tb_rgb_to_ycrcb2.sv文件。在此文件中,将输出结果命名为Y.txt,Cb.txt,Cr.txt。
编写matlab图片读取与生成文件generate_bmp.m,得到输出如图:

可以看出,与原图完全相符,认为本次作业成功完成

使用matlab及verilog完成RGB到YCbCr的图片转码及验证相关推荐

  1. Modelsim联合Matlab进行FPGA图像处理仿真与测试的学习总结(以RGB转Ycbcr转Gray为例)

    文章目录 一.Modelsim联合Matlab进行FPGA图像仿真的步骤 二.具体实现方法 2.1 新建一个Modelsim项目并编写测试代码 2.2 新建v文件来编写待测试代码 2.3 建成项目后, ...

  2. 【颜色空间转换大集合】RGB到YIQ,RGB到HSI和HSI到RGB,RGB到YcbCr,RGB到XYZ颜色转换matlab代码的Demo,含详细的解释

    废话不说,先上图, 实现方式:matlab 实现功能: 实验目标 了解图像颜色空间的转换关系. 了解图像的文件结构. 实验内容 完成如下颜色空间的转换.(4 Points) RGB -> YIQ ...

  3. 基于matlab的RGB到YCbCr颜色空间的转换

    在matlab中,图像处理工具箱会将彩色图像当做RGB图像或者索引图像来处理.除了这两种颜色空间外还有其他一些以RGB模型为基础的颜色空间,如常见的YCbCr.HSV.HSI颜色空间等.这里只讲图像从 ...

  4. RGB转YCbCr算法 之Matlab FPGA实现介绍

    1.引言 虽然现在RGB是计算机视觉最基本的三原色组成结构,但是YCbCr也有非常重要的角色,甚至却之不可,理由如下: 1)很多机器视觉,图像处理/检测识别算法,不关注色彩,只需要在灰度域处理即可: ...

  5. RGB 与 (RGB转 YCbCr再转为 RGB)的图像

    RGB 与 (RGB转 YCbCr再转为 RGB)的图像   不可逆,可以从 矩阵的逆运算看出来. 附上 matlab 代码: clc,clear; Source=imread('1.jpg');%读 ...

  6. RGB与YCbCr颜色空间的转换

    YCbCr是YUV经过缩放和偏移的翻版,可以看做YUV的子集.主要用于优化彩色视频信号的传输,使其向后相容老式黑白电视.与RGB视频信号传输相比,它最大的优点在于只需占用极少的频宽(RGB要求三个独立 ...

  7. 色彩空间与色彩模型 RGB/CMYK/YCbCr/HSB/HSI/HSV

    色彩空间与色彩模型都是一种用数值表示颜色的数学模型. 其中色彩空间侧重于色彩的标识,色彩模型侧重色彩的生成,但没有任何一种模型可以解释所有的色彩问题. 从面对对象主要分为两大类模型:面对硬件设备的色彩 ...

  8. RGB和YCbCr颜色空间的转换及优化算法

    RGB和YCbCr颜色空间转换和优化 转载于颜色空间系列3: RGB和YCbCr颜色空间的转换及优化算法 在常用的几种颜色空间中,YCbCr颜色空间在学术论文中出现的频率是相当高的,常用于肤色检测等等 ...

  9. RGB与Ycbcr空间的互相转换

    一.RGB与Ycbcr转换的公式 1.RGB表示三原色:红绿蓝 Y:表示明亮度,也就是灰阶值."亮度"是透过RGB输入信号来建立的,方法是将RGB信号的特定部分叠加到一起. Cb: ...

最新文章

  1. 【怎样写代码】确保对象的唯一性 -- 单例模式(六):扩展案例
  2. Keepalived+LVS+Nginx+DRBD+Heartbeat+Zabbix集群架构
  3. 天冷了,大家如果有往年的不穿的衣服别扔,寄给需要的人好吗?
  4. 黑马lavarel教程---6、简单验证
  5. Android开发者必备:推荐一款助力开发的开源APP
  6. mysql 亿级_mysql 亿级数据量 ( sum ,group by )的优化
  7. python小结_python简单小结
  8. python如何读取文件内容求和_使用python对文件中的数值进行累加的实例
  9. java导入导出有版本兼容问题_java导入excel时遇到的版本问题
  10. 原生js实现文字无缝向上滚动效果
  11. 什么是Semantic(语义)?从互联网爬虫、自动驾驶到对话机器人
  12. iOS 版本更新迭代
  13. Grid++Report报表开发工具介绍
  14. python3文本文件读取方法_Python3读取文件常用方法实例分析
  15. vmware启动sda assuming drive cache黑屏
  16. 【docker 安装-环境初始化】
  17. 推荐系统-协同过滤简单介绍
  18. 在Windows7和Ubuntu上编译安装MICO
  19. html设置横线中间的字,CSS伪元素before,after制作左右横线中间文字效果
  20. chisel格雷码二进制转换

热门文章

  1. Python:bytes、bytearray
  2. 如何利用微信红包来给公众号涨粉丝
  3. 什么是IO多路复用_IO多路复用同步异步阻塞和非阻塞
  4. 你知道怎么选择线上培训学校吗
  5. SqlCommand.ExecuteNonQuery 方法
  6. 鸿蒙os2.0应用分身,部分用户已收到鸿蒙OS 2.0更新,细节改动,可无缝衔接EMUI 11...
  7. 中山大学计算机专硕 学硕,2014年中山大学计算机学硕考研经验
  8. mac在启动时出现问号如何解决
  9. python随机生成八位数密码_五种方法实现python3-随机生成10位包含数字和字母的密码...
  10. K8S之PV的二次复用