2016-08-01 165 views
0

我有一个由双精度nRow矩阵构成的nCol,我想通过像素的nRow灰度图像转换为nCol。我不想将这个缩减到一个缩放到256个通道的图像。我会很高兴使用单打而不是双打。我已经浏览了Mathworks的Tiff类文档,但找不到一个简单的例子。将双精度矩阵转换为灰度.tif图像

+0

矩阵的值是多少?因为二维矩阵已经是灰度。彩色图像有很多尺寸。 只要试试'imshow(yourmatrix)' –

+0

这不是我所追求的。 – Trojanian

+0

然后显示一些例子。 –

回答

1

我试着阅读关于Tiff类,并且它是非常差的记录。但我发现这个经历试错:

可以说,我们有矩阵

data = rand(100,200); 

让我们将它保存为TIFF:

t = Tiff('new.tif','w')         %create object of Tiff class 
setTag(t,Tiff.TagID.ImageLength,size(data,1))    %define image dimentions 
setTag(t,Tiff.TagID.ImageWidth,size(data,2)) 

setTag(t,'Photometric', Tiff.Photometric.MinIsBlack)  %define the color type of image 

%specifies how image data components are stored on disk 
setTag(t,'PlanarConfiguration',Tiff.PlanarConfiguration.Chunky); 

setTag(t,'BitsPerSample',64);        %because 1 double = 8byte = 64bits 

%Specify how to interpret each pixel sample (IEEEFP works with input doubles) 
setTag(t,'SampleFormat',Tiff.SampleFormat.IEEEFP);   
t.write(data) 
t.close 

让测试这个现在:

datac = imread('new.tif') 
whos datac 
Name   Size    Bytes Class  Attributes 
datac  100x200   160000 double 

和:

datac(:,1) 

ans = 

0.4921 
0.6908 
0.1544 
0.4433 
... 
+0

感谢您 - 实际上我做了类似的事情,但是当试图在Windows中打开'.tif'时,我收到一个错误,指出文件已损坏。但是,我可以在Matlab中打开图像。任何想法为什么Windows看到一个损坏的文件? – Trojanian

+0

首先,我在考虑'RowsPerStrip'属性,因为它的值不正确。但修复这个值并没有帮助! 我认为问题在于Windows无法识别tiff与双打!另外,由于TIFF总是3D矩阵,所以创建2D TIFF可能是不正确的... –