原文地址:https://blog.csdn.net/leixiaohua1020/article/details/50534150
在 YUV 色彩空间中,Y 分量代表亮度,而 U 和 V 分量则代表色度。
从代码可以看出,如果想把YUV格式像素数据变成灰度图像,只需要将U、V分量设置成128即可。
这是因为U、V是图像中的经过偏置处理的色度分量。色度分量在偏置处理前的取值范围是-128至127,这时候的无色对应的是“0”值。经过偏置后色度分量取值变成了0至255,因而此时的无色对应的就是128了。
备注:
如果打算将图像的亮度减半,只要将图像的每个像素的Y值取出来分别进行除以2的工作就可以了。
图像的每个Y值占用1 Byte,取值范围是0至255,对应C语言中的unsigned char数据类型。
处理前后图像对比:
给图像添加一个“边框”的效果: 从代码可以看出,图像的边框的宽度为border,本程序将距离图像边缘border范围内的像素的亮度分量Y的取值设置成了亮度最大值255。
前后对比:
生成YUV420P格式的灰阶测试图
本程序中的函数可以对比两张YUV图片中亮度分量Y的PSNR
打包/平面 两种方式:
类似于YUV420P的存储方式称为Planar方式,而类似于RGB24的存储方式称为Packed方式。
一个笔误:
BMP采用的是小端(Little Endian)存储方式。
BMP采用的是小端(Little Endian)存储方式。这种存储方式中“RGB24”格式的像素的分量存储的先后顺序为B、G、R。由于RGB24格式存储的顺序是R、G、B,所以需要将“R”和“B”顺序作一个调换再进行存储。
一个笔误:
此处容易产生误解:
一个无关紧要的笔误:
生成RGB24格式的彩条测试图