我如何imwrite
这个值[12 13.5; 15 107.75]
而不更改imread
?
我想保存我的信息。但是,当我uint8
这个矩阵时我imread
这个值,我有[12 13; 15 108]
。
答案 0 :(得分:2)
(让[12 13.5;15 107.75]
成为A
。)
来自imwrite
文档:
imwrite(A,filename)将图像数据A写入filename指定的文件。 如果A的数据类型为uint16且输出文件格式支持16位数据(JPEG,PNG和TIFF),则imwrite输出16位值。
因此,您可以将A
乘以100
,然后将其转换为uint16
。你会得到[1200 1350;1500 10775]
。将其写入(JPEG, PNG, or TIFF)
,例如imwrite(A,'image.jpeg')
。
现在imread('image.jpeg')
将返回16-bit
个整数。将它们转换为double,然后除以100
以获取原始数据。 (例如out = double(imread('image.jpeg'))/100
)
注意: 16位代表的最高值为65536
。因此,这意味着您在扩展后输入的数字必须小于65536
,否则您将丢失信息。如果您使用的是双精度less that 255 with precision 2 or less
(小数点后两位),那么放大后的最高值将是25599
,小于65536
所以它很好。如果您的输入值具有不同的范围或精度,请注意。
尽管如此,我认为您应该按照T. Huang的建议使用fprintf
将数据写入文件中。
答案 1 :(得分:1)
imwrite无法做到这一点。你可以试试fprintf。 http://cn.mathworks.com/help/matlab/ref/fprintf.html