TIFF16图像在Windows文件查看器和MATLAB中看起来不同

时间:2014-12-06 02:13:22

标签: image matlab image-processing tiff

一般问题说明

我有33个TIFF16图像,我想用MATLAB对它们进行一些处理。所以阅读它们是第一步。从网上下载图像后,尝试使用MATLAB的imread(以及Tiffread)进行阅读。我使用imshow显示图像。 Windows File Viewer和MATLAB显示的图像完全不同。我无法处理它们,因为我不相信MATLAB已正确读取它们。我现在详细介绍这个问题。

编辑:如果有帮助,TIFF16图像的细节是: TIFF(每通道16位,ProPhoto RGB色彩空间,无损压缩)

更多详情:

我下载了图片a0008-WP_CRW_3959.tif。目的地:转到this链接 - > img0008 - >专家B(如果有人想尝试,否则我有截图)。

我使用:img=imread('imgFilename.tif','tiff'); imshow(img,[]);

在MATLAB中读取该图像
t = Tiff('imgFilename.tif','r');
imageData = read(t);
imshow(imageData);

现在,我显示 Windows文件查看器的快照:

enter image description here

接下来, MATLAB 的快照向我展示:

enter image description here

现在,我有充分的理由相信 Windows文件查看器是正确的。转到same link as previous。向下滚动到img0008。将鼠标悬停在最左边的img0008上。 Expert B的缩略图视图将与Windows显示的内容相同。

有人知道如何读取MATLAB并正确显示tiff16图像吗?

1 个答案:

答案 0 :(得分:4)

感谢@MarkRansom向我指出嵌入式颜色配置文件的可能性。我相信以下解决方案是正确的,并产生与Windows File Viewer相同的输出。

首先使用iccread命令阅读 icc-color-profile

I_rgb = imread('a0008-WP_CRW_3959.tif');
outprof = iccread('sRGB.icm');
P = iccread('a0008-WP_CRW_3959.tif');

然后使用sRGBmakecform将图片转换为applycform个人资料:

C = makecform('icc',P,outprof);
I_cmyk = applycform(I_rgb,C);
imwrite(I_cmyk,'pep_cmyk.tif','tif')
info = imfinfo('pep_cmyk.tif');
imshow('pep_cmyk.tif');

保存在磁盘上的原始图像和新的pep_cmyk.tif - 与Windows文件查看器完全相同。