任何人都可以帮助我使用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
答案 0 :(得分:2)
您的代码存在的问题是您将图片投射到uint32
。如果您尝试将图像保存为TIF
文件,则只能将其保存为8位或16位。咨询MATLAB文档,您只能保存这两个位深度。 <32>深度不支持。
有关详细信息,请参阅MATLAB文档:http://www.mathworks.com/help/matlab/ref/imwrite.html
因此,要么将图像转换为8位或16位(通过im2uint8
或im2uint16
),要么将图像标准化,使其从[0,1]
(通过{ {1}})。
我对你的代码有一些评论需要修复以便于阅读:
im2double
的单元格阵列中。 MATLAB有一个名为image
的内置命令,它接收一个矩阵并将其作为图像显示在屏幕上。请记住,这与image
不同。通过执行此分配,您将隐藏实际的imshow
命令,因此任何依赖此函数的脚本都将导致错误。image
似乎是一个未使用的变量。我不确定它的用途是什么,但我也说安全删除此声明也是安全的。im_number
类型:image{i} = double(image{i});
您似乎在这里提出了类似的问题:save tif 32 bit images by using imwrite
此问题已经解决,因为您无法使用double
保存32位图像。但是,此线程中的某个人已经发布了一个解决方法供您在MATLAB中使用。尝试使用它而不是imwrite
。