所以我有一个原始的图像:

然后是YDbDR转换:

它是由红色,蓝色和绿色的通道分开的,我知道这并不等同于YDbDr,但是应该给出一个很好的判断通道是否被正确转换的标准。正如你所看到的,Db和Dr在它们不应该被像素化的情况下,会被严重像素化。
下面是代码:
def RGB_to_YDbDr(obs_RGB):
r = obs_RGB[:, 0]
g = obs_RGB[:, 1]
b = obs_RGB[:, 2]
y = 0.299 * r + 0.587 * g + 0.114 * b
db = -0.450 * r + -0.883 * g + 1.333 * b
dr = -1.333 * r + 1.116 * g + 0.217 * b
return torch.stack([y, db, dr], -3)我遵循了科尼亚增强库的代码,即RGB到YCbCr来实现RGB到YDbDr。我做错什么了?为什么Db和Dr看起来这么像像素?输入图像为100 x 100。
注意:我尝试了kornia.color.rgb_to_ycbcr并得到了这样的结果:

而且看起来非常像像素
发布于 2022-06-21 12:58:48

仔细看。您的源图像已被压缩。你看到的是通过图像压缩完成的“色度次采样”。你会看到颜色失真的块。
这正是你在颜色(色度)平面上所看到的。
这和密谋什么的都没有关系。源图像被压缩。只有当你有一个未压缩的源映像,或者一个没有被严重压缩的映像时,你才能修复这个问题。
https://stackoverflow.com/questions/72693817
复制相似问题