因为在作品图像相关的东西,过程中,不可避免会涉及到RGB与YUV的相互转化,同时在模型训练的过程中,有时候,只是训练的Y channel,所以还涉及到提取出channel 最后再合并成 RGB图像的一个问题。
但是呢,在模型训练的时候,用的都是tensor,所以还涉及到从image
到tensor 的过程。
这里只介绍两种方法,一种是 基于BT.601
另一种是使用PIL transforms的那个Image.open().convert(‘YCbCr’)
- 先看第一种方法:BT601
def rgb2ycbcr_norm(self, img):
ycbcr = img.copy()
ycbcr[:,:,0] = ((0.257 * img[:,:,0] + 0.504 * img[:,:,1] + 0.098 * img[:,:,2] + 16) - 16)/(235-16)
ycbcr[:,:,1] = ((-0.148 * img[:,:,0] - 0.291 * img[:,:,1] + 0.439 * img[:,:,2] + 128) - 16)/(240-16)
ycbcr[:,:,2] = ((0.439