我尝试更改灰度图像的某些像素值,并使用matlab中的imwrite保存它。 保存没问题。 问题是,当我读回它时,一些像素值已经改变。与保存之前我分配给像素的值不完全相同。 我正在尝试哈希图像,因此1单位差异将影响哈希值。
答案 0 :(得分:1)
如mmgp所述,JPG可以是lossy。这意味着图像中的某些信息将丢失,有利于存储效率。
JPG背后的基本原理有点像MP3后面 - 色调等的变化,人眼不能特别适应区分,将被简化或完全删除,从而减少图像中的信息量。 JPG中的信息代表了一个看起来相似但实际上非常不同的图像。这可能就是你所经历的。
在Matlab中,查看help imwrite
的输出。您可以为名为jpg
的{{1}}写入一个参数,该值为0到100之间的数字,100表示(接近)无损压缩。
虽然JPEG标准 允许(接近)无损压缩,但实际上并不经常使用(至少在我的领域)。更流行的无损图像格式是PNG,JPEG2000和TIFF。阅读更多相关信息here。
所有这些都可以在Matlab的'Quality'
函数中找到。