我正在尝试将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在转换后显示为粉红色。
你有没有机会指出我正确的方向? 谢谢 桑尼
答案 0 :(得分:1)
答案 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.
为我工作。 希望有所帮助:)