【问题标题】:PNG file size increase in LSB steganographyLSB 隐写术中的 PNG 文件大小增加
【发布时间】:2012-11-19 13:49:23
【问题描述】:

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

例如

原始文件大小:88 KB 文本文件大小:382KB 生成的 PNG 文件大小:487 KB

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

【问题讨论】:

  • 您要么需要一种不同形式的隐写术(请注意,LSB 是一种非常弱的隐写术,无论是在图像转换后的隐藏还是持久性方面),要么使用其他文件格式进行试验,例如未压缩的 BMP .你的问题已经在下面得到解答,如果有不明白的地方,那么你需要更好地理解PNG compression method

标签: image compression png pixel steganography


【解决方案1】:

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

实际上是在低位添加噪声,这总是会增加无损压缩数据的大小。

简单示例:如果您从图像中的线性渐变开始,相邻像素值为 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 . 这样的序列不会像一堆序列那样压缩。

【讨论】:

  • 对不起,我没听清楚。您是否想说压缩数据在这里丢失,这就是图像大小增加的原因?你能详细说明一下吗?
  • 那么我是否必须编写一个算法来压缩这些字节以获得可能的最小大小?
  • +1 表示概念上正确的答案。但在您的示例中,差异应该是200, 1, 1, 1, 1, 1, 1,1
  • @ankur.trapasiya:你不必编写任何算法,你必须接受它。
【解决方案2】:

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

【讨论】:

  • 不是 JPG 输入特有的。这是一个PNG文件被压缩。为了添加到每个像素的 LSB,您必须提取 PNG 文件的原始位图。然后您修改该数据并创建一个新的 PNG 文件来尝试压缩该修改后的数据。修改后的位图数据可能不像旧的原始位图那样容易压缩。
猜你喜欢
  • 2018-08-01
  • 2010-12-02
  • 2010-12-13
  • 2016-05-25
  • 2018-07-29
  • 2013-08-18
  • 2011-05-23
  • 2016-08-18
相关资源
最近更新 更多