我尝试更改灰度图像的一些像素值并在 matlab 中使用 imwrite 将其保存。保存没问题。问题是当我读回来时,一些像素值已经改变。与我在保存之前分配给像素的值不完全相同。我正在尝试散列图像,因此 1unit 差异会影响散列数。
问问题
1420 次
1 回答
1
正如 mmgp 所述,JPG 可能是有损的。这意味着图像中的某些信息将丢失,以提高存储效率。
JPG 背后的原理有点像 MP3 背后的原理——人眼不太适应分辨的色调等变化将被简化或完全删除,从而减少图像中的信息量。JPG 中的信息代表了一个外观相似但实际上非常不同的图像。这可能就是你正在经历的。
在 Matlab 中,查看help imwrite
. 你可以给jpg
写入参数一个叫做的参数'Quality'
,它是一个介于 0 和 100 之间的数字,100 表示(接近)无损压缩。
尽管 JPEG 标准确实允许(近乎)无损压缩,但它在实践中并不经常使用(至少在我的领域中)。更流行的无损图像格式是 PNG、JPEG2000 和 TIFF。在此处阅读更多相关信息。
imwrite
所有这些在 Matlab 的函数中也可用。
于 2013-01-28T13:09:58.360 回答