使用matlab及verilog完成RGB到YCbCr的图片转码及验证
实现流程
- 第一步:使用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的图片转码及验证相关推荐
- Modelsim联合Matlab进行FPGA图像处理仿真与测试的学习总结(以RGB转Ycbcr转Gray为例)
文章目录 一.Modelsim联合Matlab进行FPGA图像仿真的步骤 二.具体实现方法 2.1 新建一个Modelsim项目并编写测试代码 2.2 新建v文件来编写待测试代码 2.3 建成项目后, ...
- 【颜色空间转换大集合】RGB到YIQ,RGB到HSI和HSI到RGB,RGB到YcbCr,RGB到XYZ颜色转换matlab代码的Demo,含详细的解释
废话不说,先上图, 实现方式:matlab 实现功能: 实验目标 了解图像颜色空间的转换关系. 了解图像的文件结构. 实验内容 完成如下颜色空间的转换.(4 Points) RGB -> YIQ ...
- 基于matlab的RGB到YCbCr颜色空间的转换
在matlab中,图像处理工具箱会将彩色图像当做RGB图像或者索引图像来处理.除了这两种颜色空间外还有其他一些以RGB模型为基础的颜色空间,如常见的YCbCr.HSV.HSI颜色空间等.这里只讲图像从 ...
- RGB转YCbCr算法 之Matlab FPGA实现介绍
1.引言 虽然现在RGB是计算机视觉最基本的三原色组成结构,但是YCbCr也有非常重要的角色,甚至却之不可,理由如下: 1)很多机器视觉,图像处理/检测识别算法,不关注色彩,只需要在灰度域处理即可: ...
- RGB 与 (RGB转 YCbCr再转为 RGB)的图像
RGB 与 (RGB转 YCbCr再转为 RGB)的图像 不可逆,可以从 矩阵的逆运算看出来. 附上 matlab 代码: clc,clear; Source=imread('1.jpg');%读 ...
- RGB与YCbCr颜色空间的转换
YCbCr是YUV经过缩放和偏移的翻版,可以看做YUV的子集.主要用于优化彩色视频信号的传输,使其向后相容老式黑白电视.与RGB视频信号传输相比,它最大的优点在于只需占用极少的频宽(RGB要求三个独立 ...
- 色彩空间与色彩模型 RGB/CMYK/YCbCr/HSB/HSI/HSV
色彩空间与色彩模型都是一种用数值表示颜色的数学模型. 其中色彩空间侧重于色彩的标识,色彩模型侧重色彩的生成,但没有任何一种模型可以解释所有的色彩问题. 从面对对象主要分为两大类模型:面对硬件设备的色彩 ...
- RGB和YCbCr颜色空间的转换及优化算法
RGB和YCbCr颜色空间转换和优化 转载于颜色空间系列3: RGB和YCbCr颜色空间的转换及优化算法 在常用的几种颜色空间中,YCbCr颜色空间在学术论文中出现的频率是相当高的,常用于肤色检测等等 ...
- RGB与Ycbcr空间的互相转换
一.RGB与Ycbcr转换的公式 1.RGB表示三原色:红绿蓝 Y:表示明亮度,也就是灰阶值."亮度"是透过RGB输入信号来建立的,方法是将RGB信号的特定部分叠加到一起. Cb: ...
最新文章
- 【怎样写代码】确保对象的唯一性 -- 单例模式(六):扩展案例
- Keepalived+LVS+Nginx+DRBD+Heartbeat+Zabbix集群架构
- 天冷了,大家如果有往年的不穿的衣服别扔,寄给需要的人好吗?
- 黑马lavarel教程---6、简单验证
- Android开发者必备:推荐一款助力开发的开源APP
- mysql 亿级_mysql 亿级数据量 ( sum ,group by )的优化
- python小结_python简单小结
- python如何读取文件内容求和_使用python对文件中的数值进行累加的实例
- java导入导出有版本兼容问题_java导入excel时遇到的版本问题
- 原生js实现文字无缝向上滚动效果
- 什么是Semantic(语义)?从互联网爬虫、自动驾驶到对话机器人
- iOS 版本更新迭代
- Grid++Report报表开发工具介绍
- python3文本文件读取方法_Python3读取文件常用方法实例分析
- vmware启动sda assuming drive cache黑屏
- 【docker 安装-环境初始化】
- 推荐系统-协同过滤简单介绍
- 在Windows7和Ubuntu上编译安装MICO
- html设置横线中间的字,CSS伪元素before,after制作左右横线中间文字效果
- chisel格雷码二进制转换
热门文章
- Python:bytes、bytearray
- 如何利用微信红包来给公众号涨粉丝
- 什么是IO多路复用_IO多路复用同步异步阻塞和非阻塞
- 你知道怎么选择线上培训学校吗
- SqlCommand.ExecuteNonQuery 方法
- 鸿蒙os2.0应用分身,部分用户已收到鸿蒙OS 2.0更新,细节改动,可无缝衔接EMUI 11...
- 中山大学计算机专硕 学硕,2014年中山大学计算机学硕考研经验
- mac在启动时出现问号如何解决
- python随机生成八位数密码_五种方法实现python3-随机生成10位包含数字和字母的密码...
- K8S之PV的二次复用