YCbCr 到 RGB 转换 MATLAB 使用 ycbr2rgb 结果是粉红色的图片
YCbCr to RGB conversion MATLAB using ycbr2rgb results in pink picture
我正在尝试使用 MATLAB 的函数 ycbcr2rgb 将 YCbCr 图像转换为 RGB。我生成的图片最终变成了粉红色,然后再转换回来(应该给我原始图片吗?)创建另一个主要是灰色的图像。
作为参考,我尝试通过公式单独转换每个通道,结果相同。
我正在使用 bigtiff 格式,因为文件很大,如果有任何帮助,imfinfo 会显示使用 JPEG 进行压缩。
这是我的代码:
x=imread('picture.tiff','Index',9); %(9 subresolutions)
rgb=ycbcr2rgb(x);
imshow(rgb);
会不会是因为 MATLAB 函数使用 YCbCr 的原始定义,使用的范围是 16-235 而我的图像是 0-255?如果是这样,是否有任何方法可以使用 inbuild 函数更正此问题?
我添加了图片here,第一张图片显示的是imshow(rgb),而第二张图片是原始的ycbcr。我注意到,在 Windows 图片查看器中它实际上显示正确,只是 MATLAB 的 imshow 在转换后显示为粉红色。
您是否有机会为我指明正确的方向?
谢谢
桑尼
这个link给出了所有的换算公式:
http://www.easyrgb.com/index.php?X=MATH&H=11
下面的代码将图像从 RGB space 转换为 YCbCr space 并返回。
rgb = imread('board.tif');
imshow(rgb);
figure;
ycbcr = rgb2ycbcr(rgb);
imshow(ycbcr);
figure;
rgb2 = ycbcr2rgb(ycbcr);
imshow(rgb2);
仅使用 MATLAB 内置函数。此外,如果您在从 ycbcr 转换为 rgb 时遇到问题,您应该尝试将图像转换为其他形式,然后将该形式转换为 RGB。 (肮脏的技巧)
显然 imread 在加载时将 YCbCr 图像读取为 RGB,这就是问题发生的原因。
感谢大家的帮助。
只需将图像除以 256,然后再将其转换回 RGB。
y = ycbcr2rgb(z/256); % z holds the YCbCr image.
对我有用。
希望有所帮助:)
我正在尝试使用 MATLAB 的函数 ycbcr2rgb 将 YCbCr 图像转换为 RGB。我生成的图片最终变成了粉红色,然后再转换回来(应该给我原始图片吗?)创建另一个主要是灰色的图像。
作为参考,我尝试通过公式单独转换每个通道,结果相同。
我正在使用 bigtiff 格式,因为文件很大,如果有任何帮助,imfinfo 会显示使用 JPEG 进行压缩。
这是我的代码:
x=imread('picture.tiff','Index',9); %(9 subresolutions)
rgb=ycbcr2rgb(x);
imshow(rgb);
会不会是因为 MATLAB 函数使用 YCbCr 的原始定义,使用的范围是 16-235 而我的图像是 0-255?如果是这样,是否有任何方法可以使用 inbuild 函数更正此问题?
我添加了图片here,第一张图片显示的是imshow(rgb),而第二张图片是原始的ycbcr。我注意到,在 Windows 图片查看器中它实际上显示正确,只是 MATLAB 的 imshow 在转换后显示为粉红色。
您是否有机会为我指明正确的方向? 谢谢 桑尼
这个link给出了所有的换算公式: http://www.easyrgb.com/index.php?X=MATH&H=11
下面的代码将图像从 RGB space 转换为 YCbCr space 并返回。
rgb = imread('board.tif');
imshow(rgb);
figure;
ycbcr = rgb2ycbcr(rgb);
imshow(ycbcr);
figure;
rgb2 = ycbcr2rgb(ycbcr);
imshow(rgb2);
仅使用 MATLAB 内置函数。此外,如果您在从 ycbcr 转换为 rgb 时遇到问题,您应该尝试将图像转换为其他形式,然后将该形式转换为 RGB。 (肮脏的技巧)
显然 imread 在加载时将 YCbCr 图像读取为 RGB,这就是问题发生的原因。
感谢大家的帮助。
只需将图像除以 256,然后再将其转换回 RGB。
y = ycbcr2rgb(z/256); % z holds the YCbCr image.
对我有用。 希望有所帮助:)