我该如何imwrite
这个值[12 13.5; 15 107.75]
没有改变imread
?imwrite在MATLAB中的双重矩阵
我想保存我的信息。但如果我这个值,当我imread
这个矩阵,我有这个[12 13; 15 108]
。
我该如何imwrite
这个值[12 13.5; 15 107.75]
没有改变imread
?imwrite在MATLAB中的双重矩阵
我想保存我的信息。但如果我这个值,当我imread
这个矩阵,我有这个[12 13; 15 108]
。
这不能通过imwrite来完成,你可以尝试功能fprintf。 http://cn.mathworks.com/help/matlab/ref/fprintf.html
(让[12 13.5;15 107.75]
是A
。)
从imwrite
文档:
imwrite(A,文件名)写入图像数据A由文件名指定的文件。 如果A的数据类型为uint16,并且输出文件格式支持16位数据(JPEG,PNG和TIFF),则将输出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
,因此没有问题。只要注意输入值是否有不同的范围或精度。
不过,我想你应该使用fprintf
将数据写入文件中,正如T. Huang所建议的那样。
非常感谢你......它非常有用 – shiva
@shiva如果这对你有帮助,请选择此答案作为接受的答案(通过点击答案分数计数器下面的标记)。它会帮助其他来这里的人。 – Nishant