(本系列只需要modelsim即可完成数字图像的处理,每个工程都搭建了全自动化的仿真环境,只需要双击top_tb.bat文件就可以完成整个的仿真,大大降低了初学者的门槛!!!!如需要该系列的工程文件请关注知识星球:成工fpga,https://t.zsxq.com/DMeqH,关注即送200GB学习资料,链接已置顶!)
和RGB类似,YCbCr也是色彩空间的一种,通常会用于影片中的影像连续处理,或是数字摄影系统中。Y为颜色的亮度(luma)成分、而CB和CR则为蓝色和红色的浓度偏移量成份。YCbCr与RGB颜色空间不同的是,它通过分离亮度与色度,能够更加有效地处理图像数据,尤其在压缩图像时能更好地去除冗余信息。YCbCr最常见于视频和图像压缩标准,如JPEG、MPEG等。YCbCr 颜色空间是YUV的国际标准化变种,至于什么是YUV,请大家自行查找了解。
之所以将RGB转换成YUV或者YCbCr的图像,是因为U/Cb和V/Cr的色彩空间是可以采样压缩的,常见的采样格式有YUV444,YUV422和YUV420等等,这也是jpg格式的图片比bmp格式的图片要小的原因。
RGB和YcbCr间是可以互相转换的,但是转换的公式有很多,而且各不相同,我们选择一个公式来进行验证。
如下所示,我们在img_process_pkt包的image_process类中新建一个rgb2ycbcr的task,由于是测试平台,不是可综合的RTL代码,所以可以直接使用小数进行计算,而对于可综合的RTL代码,实现要复杂的多,我们在下个系列进行讲解。
仿真文件tb_image_sim如下,直接对RGB图像数据进行YCbCr的转换,然后将Y,Cb,Cr三个通道图像生成图片。
打开img文件夹就可以看到生成相关的图片,如下是Y通道的图像。
如下是Cb通道的图像。
如下是Cr通道的图像。