2014-09-10 71 views
0

我正在閱讀Tiff使用下面的函數,它工作正常,但是當我嘗試使用我的寫函數將同一個Tiff寫回不同的文件時,它全部255的。有誰知道如何解決這一問題?謝謝,亞歷克斯。多頁Tiff寫在MATLAB中不起作用

function Y = tiff_read(name) 
% tiff reader that works 

info = imfinfo(name); 
T = numel(info); 

d1 = info(1).Height; 
d2 = info(1).Width; 

Y = zeros(d1,d2,T); 
for t = 1:T 
    temp = imread(name, t, 'Info',info); 
    Y(:,:,t) = temp(1:end,1:end); 
end 

% Tiff writer that doesn't work 
function tiff_write(Y,name) 
% Y should be 3D, name should end in .tif 
T = size(Y,3); 
imwrite(Y(:,:,1),name); 
for t = 2:T 
    imwrite(Y(:,:,t),name,'WriteMode','append'); 
end 

回答

0

嘗試使用這一行:

Y = zeros(d1,d2,T,'uint16'); 

,而不是這一個:

Y = zeros(d1,d2,T); 

你的數據有可能在UINT16格式,當您導出您剪輯中的最大值爲255( uint8),它使得像素值大於255(如果數據在uint16,則其中很多)顯示爲白色。

否則,你可能要使用這條線:

function tiff_write(Y,name) 
    % Y should be 3D, name should end in .tif 
    for t = 2:T 
    imwrite(Y(:,:,t)/255,name,'WriteMode','append'); 
    end 
+0

@ user3692990所以沒有它的工作? – 2014-09-15 13:31:19