YCbCr到RGB转换MATLAB使用ycbr2rgb得到粉红色图片

时间:2015-03-06 14:13:46

标签: matlab rgb

我正在尝试将YCbCr图像转换为RGB ysing MATLAB的函数ycbcr2rgb。我的结果图片最终变成了粉红色,然后再转换回来(应该给我原始图片?)创建另一个图像,主要是灰色。

作为参考,我尝试按公式单独转换每个通道,结果相同。

由于文件大小,我使用的是bigtiff格式,如果有任何帮助,imfinfo会显示使用JPEG的压缩。

这是我的代码:

x=imread('picture.tiff','Index',9); %(9 subresolutions)
rgb=ycbcr2rgb(x);
imshow(rgb);

是否因为MATLABs函数使用YCbCr的原始定义,范围为16-235,而我的图像范围为0-255?如果是这样,有任何方法可以使用inbuild函数来纠正这个问题吗?

我添加了图片here,第一张图片显示为imshow(rgb),而第二张图片是原始ycbcr。我注意到在Windows图像查看器中它实际上显示它是正确的,它只是MATLAB的imshow在转换后显示为粉红色。

你有没有机会指出我正确的方向? 谢谢 桑尼

4 个答案:

答案 0 :(得分:1)

显然imread在加载时读取YCbCr图像为RGB,这就是出现问题的原因。

感谢大家的帮助。

imread documentation

答案 1 :(得分:0)

此链接提供所有转换公式: http://www.easyrgb.com/index.php?X=MATH&H=11

答案 2 :(得分:0)

以下代码将图像从RGB空间转换为YCbCr空间并返回。

rgb = imread('board.tif');
imshow(rgb);
figure;
ycbcr = rgb2ycbcr(rgb);
imshow(ycbcr);
figure;
rgb2 = ycbcr2rgb(ycbcr);
imshow(rgb2);

仅使用内置函数的MATLAB。此外,如果您在从ycbcr转换为rgb时遇到问题,您应该尝试将图像转换为其他形式,然后将该表单转换为RGB。 (一个肮脏的黑客)

答案 3 :(得分:0)

在将图像转换回RGB之前,将图像除以256。

y = ycbcr2rgb(z/256); % z holds the YCbCr image.

为我工作。 希望有所帮助:)