2014-12-06 82 views
0

一般问题描述TIFF16图像看起来在Windows文件浏览器不同,MATLAB

我有33个TIFF16图像和我想用MATLAB做对他们进行一些处理。所以阅读它们是第一步。从网络下载图像后,尝试使用MATLAB的imread(以及Tiffread)读取图像。我使用imshow显示图像。 Windows File Viewer和MATLAB显示的图像完全不同。我不能处理它们,因为我不相信MATLAB已经正确读取它们。我现在给出更具体的问题。

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

更多细节:

我下载一个图像a0008-WP_CRW_3959.tif。目的地:去this链接 - >img0008 - >专家B(如果有人想尝试,否则我有截图下面)。

我用读MATLAB的形象:img=imread('imgFilename.tif','tiff'); imshow(img,[]);

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图片?

+0

该文件可能包含嵌入的颜色配置文件。 – 2014-12-06 02:25:35

+0

@MarkRansom是的,即使我这样认为,因为同一图像的所有5个版本看起来都是一样的(仅在MATLAB中),而他们不是。 – 2014-12-06 02:26:38

回答

3

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

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

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

然后将图像转换成使用makecformapplycformsRGB简介:

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文件浏览器完全相同。

+2

不客气。我很高兴你有主动想出来,一旦你有提示。 – 2014-12-06 03:07:39

相关问题