2016-05-30 74 views
1

我该如何imwrite这个值[12 13.5; 15 107.75]没有改变imreadimwrite在MATLAB中的双重矩阵

我想保存我的信息。但如果我这个值,当我imread这个矩阵,我有这个[12 13; 15 108]

回答

2

(让[12 13.5;15 107.75]A。)

imwrite文档:

imwrite(A,文件名)写入图像数据A由文件名指定的文件。 如果A的数据类型为uint16,并且输出文件格式支持16位数据(JPEG,PNG和TIFF),则将输出16位值。

因此,您可以乘以A100然后将其转换为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,因此没有问题。只要注意输入值是否有不同的范围或精度。

不过,我想你应该使用fprintf将数据写入文件中,正如T. Huang所建议的那样。

+0

非常感谢你......它非常有用 – shiva

+0

@shiva如果这对你有帮助,请选择此答案作为接受的答案(通过点击答案分数计数器下面的标记)。它会帮助其他来这里的人。 – Nishant