我们如何使用imwrite保存多个图像

时间:2014-05-15 16:46:04

标签: image matlab image-processing

任何人都可以帮助我使用imwrite保存我的结果图像

source = 'C:\Y\';
im_number=5; 
for i=1:5 
 image{i}=im2double(imread([source,'Carbon_', num2str(i)],'tif'));  
 image{i}=double(image{i});
 B{i}= Sftfun(image{i});
 B{i}=uint32(B{i});
 imwrite(B{i},[source,'face_', num2str(i)],'tif');
end

1 个答案:

答案 0 :(得分:2)

您的代码存在的问题是您将图片投射到uint32。如果您尝试将图像保存为TIF文件,则只能将其保存为8位或16位。咨询MATLAB文档,您只能保存这两个位深度。 <32>深度支持。

有关详细信息,请参阅MATLAB文档:http://www.mathworks.com/help/matlab/ref/imwrite.html

因此,要么将图像转换为8位或16位(通过im2uint8im2uint16),要么将图像标准化,使其从[0,1](通过{ {1}})。

我对你的代码有一些评论需要修复以便于阅读:

  1. 请勿将图像保存到名为im2double的单元格阵列中。 MATLAB有一个名为image的内置命令,它接收一个矩阵并将其作为图像显示在屏幕上。请记住,这与image不同。通过执行此分配,您将隐藏实际的imshow命令,因此任何依赖此函数的脚本都将导致错误。
  2. image似乎是一个未使用的变量。我不确定它的用途是什么,但我也说安全删除此声明也是安全的。
  3. 删除以下声明,因为您已将图片转换为上一行中的im_number类型:
  4.     image{i} = double(image{i});
    

    除了

    您似乎在这里提出了类似的问题:save tif 32 bit images by using imwrite

    此问题已经解决,因为您无法使用double保存32位图像。但是,此线程中的某个人已经发布了一个解决方法供您在MATLAB中使用。尝试使用它而不是imwrite