2

我正在研究图像隐写术问题,我必须在 png 图像文件中隐藏一些文本信息。隐写操作成功后,生成的图像比原始文件大。当我使用 LSB 隐写术(1 位、2 位、3 位)时,它不应该增加文件大小,因为正在存储的数据位于图像的现有位内。没有额外的字节被添加到原始图像中。所以我无法理解为什么会发生这种情况。从概念上讲,它不应该增加生成的文件大小。

例如

原始文件大小:88 KB 文本文件大小:382 KB 结果 PNG 文件大小:487 KB

我读到PNG采用“无损数据压缩”。所以我假设P​​NG可能以压缩格式存储图像,所以当我从图像中读取图像字节时,它们会被扩展,因此我的图像大小会增加。如果我错了,请纠正我。任何形式的帮助将不胜感激。

4

2 回答 2

4

从概念上讲,它应该增加或至少改变结果文件的大小。压缩取决于图像中的相关性,特别是像素值的相关性。您正在更改像素值,因此您正在消除压缩所依赖的一些相关性。压缩时说“正在存储的数据位于图像的现有位内”是没有意义的。不仅存在现有位,而且您正在更改现有的相关性。

实际上,您在低位添加噪声,这将始终增加无损压缩数据的大小。

简单示例:如果您从图像中的线性渐变开始,相邻像素值为 200、201、202、203、204、205、206 和 207。PNG 应用的过滤器将采用差异,这将导致 (假设你在一行的开头)200、1、1、1、1、1、1、1。1的序列压缩得很好。然后在低位添加噪声并将其更改为 207、202、205、206、204、209、210 和 210。现在的差异是:207、-5、3、1、2、5、4、0 . 这样的序列不会像一堆序列那样压缩。

于 2012-12-01T15:33:54.070 回答
-1

这是一个格式问题,因为您打开图像文件,例如 JPG 格式文件并打开原始图像,对于此原始图像应用 LSB,然后将此原始图像保存为 PNG 格式,原始图像的数据更多大于 JPG 文件字节。

于 2014-10-16T12:07:02.633 回答