一般问题说明
我有33个TIFF16图像,我想用MATLAB对它们进行一些处理。所以阅读它们是第一步。从网上下载图像后,尝试使用MATLAB的imread
(以及Tiff
和read
)进行阅读。我使用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,[]);
或
t = Tiff('imgFilename.tif','r');
imageData = read(t);
imshow(imageData);
现在,我显示 Windows文件查看器的快照:
接下来, MATLAB 的快照向我展示:
现在,我有充分的理由相信 Windows文件查看器是正确的。转到same link as previous。向下滚动到img0008
。将鼠标悬停在最左边的img0008
上。 Expert B
的缩略图视图将与Windows显示的内容相同。
有人知道如何读取MATLAB并正确显示tiff16
图像吗?
答案 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');
然后使用sRGB
和makecform
将图片转换为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文件查看器完全相同。