【问题标题】:Creating Image stacks and writing GDF file创建图像堆栈并写入 GDF 文件
【发布时间】:2014-09-16 11:50:41
【问题描述】:

我正在尝试编写一个函数,将一系列图像堆叠到图像堆栈中并将其转换为 gdf ​​文件。我对 GDF 文件了解不多,所以请帮帮我。

X=[];

for i=1:10

    if numel(num2str(i))==1
    X{i}=imread(strcat('0000',num2str(i),'.tif'));
    elseif numel(num2str(i))==2
    X{i}=imread(strcat('000',num2str(i),'.tif'));
    end
end

myImage=cat(3,X{1:10});
s=write_gdf('stack.gdf',myImage);

以上是读取我标记为 00001 到 00010 的图像,全部为灰度。除了最后一行,一切都很好

s=write_gdf('stack.gdf',myImage);

当我运行它时,我收到一个错误:

Data type uint8 not supported

对这意味着什么有任何帮助吗?我应该将其转换为其他颜色格式吗? 提前谢谢!

【问题讨论】:

    标签: image matlab image-processing colors


    【解决方案1】:

    我会这样写代码(我没有write_gdf 函数,所以我无法正确测试代码):

    NumberOfFiles = 10;
    X={};                 % preallocate CELL array
    for n=1:NumberOfFiles % do not use "i" as your varable because it is imaginary unit in MatLab
        FileName = sprintf('%05d.tif',n);
        img      = imread(FileName); % load image
        X{i}     = double(img);      % and convert to desired format
    end
    myImage = cat(3,X{1:NumberOfFiles});
    s = write_gdf('stack.gdf',myImage);
    

    请记住

    double(img);      % and convert to desired format
    

    不会改变数据范围。如果它在磁盘上是uint8 格式,那么即使是double 格式的图像,其数据范围也将从0 到255。如果您需要将数据标准化为 0..1 范围,您应该这样做

    X{i} = double(img)/255;
    

    或更通用的形式

    X{i} = double(img) / intmax(class(img));
    

    【讨论】:

      猜你喜欢
      • 2020-11-17
      • 2012-06-15
      • 2013-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-22
      相关资源
      最近更新 更多