Matlab imwrite函数改变像素值

时间:2013-01-27 19:26:33

标签: image matlab image-processing

我尝试更改灰度图像的某些像素值,并使用matlab中的imwrite保存它。 保存没问题。 问题是,当我读回它时,一些像素值已经改变。与保存之前我分配给像素的值不完全相同。 我正在尝试哈希图像,因此1单位差异将影响哈希值。

1 个答案:

答案 0 :(得分:1)

如mmgp所述,JPG可以是lossy。这意味着图像中的某些信息将丢失,有利于存储效率。

JPG背后的基本原理有点像MP3后面 - 色调等的变化,人眼不能特别适应区分,将被简化或完全删除,从而减少图像中的信息量。 JPG中的信息代表了一个看起来相似但实际上非常不同的图像。这可能就是你所经历的。

在Matlab中,查看help imwrite的输出。您可以为名为jpg的{​​{1}}写入一个参数,该值为0到100之间的数字,100表示​​(接近)无损压​​缩。

虽然JPEG标准 允许(接近)无损压​​缩,但实际上并不经常使用(至少在我的领域)。更流行的无损图像格式是PNG,JPEG2000和TIFF。阅读更多相关信息here

所有这些都可以在Matlab的'Quality'函数中找到。