Matlab如何imwrite,Uint16的灰度图像????

如题所述

1. 在Matlab命令窗口输入命令:

help imwrite

会有如下解释:

    If the input array is of class uint16 and the format supports 16-bit data (JPEG, PNG, and TIFF), imwrite outputs the data as 16-bit values. If the format does not support 16-bit values, imwrite issues an error. Several formats, such as JPEG and PNG, support a parameter that lets you specify the bitdepth of the output data.

    If the input array is of class double, and the image is a grayscale or RGB color image, imwrite assumes the dynamic range is [0,1] and automatically scales the data by 255 before writing it to the file as 8-bit values.

2. 如果你要保存成uint16的灰度图像的矩阵数据是非uint16的类型:

则必须先将double类型转换为uint16的类型,执行命令:

data11=uint16(data1);

结果如下:

3. 然后执行命令:

imwrite(data11,'image.png','png','bitdepth',16);

最终得到uint16的灰度图像image.png。如下图所示:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-11-29
clc;clear;
L2=rand(128,256);
str1='E\';
imwrite(L2,[str1,num2str(007),'.PNG'],'PNG','bitdepth',16);
imageName=[str1,num2str(007),'.PNG'];
II(:,:)=imread(imageName);%读图,把图像转化成数据
L1(:,:)=im2double(II(:,:));%读到的数据类型再转化成double型

a=abs(L1-L2);max(a(:))
max(a(:))>=(2^(-8))%如果结果是0,表示图片精度为8位或者8位以下
max(a(:))>=(2^(-16))%如果结果是0,表示图片精度为16位或者16位以下本回答被网友采纳
第2个回答  2013-04-23
直接保存成tif文件
相似回答