2013-05-06 59 views
0

Steganography链接显示隐写术的演示。我的问题是何时需要替换的位数n = 1,那么该方法是不可逆的,即Cover不等于Stego(在理想和完美的情况下Cover使用应该与Steganography结果相同)。只有在需要替换的位数是n = 4,5,6时,它才能正常工作!当n = 7时,Stego图像变得嘈杂,与使用的Cover不同,结果不会变得不明显。所以,很明显有一个隐写术的操作。有人可以解释为什么是这样,需要做什么以使过程可逆和无损。位操作员问题和图像处理中的隐写术

+1

JPEG的是一种有损格式不适合用于存储每个像素的单个位。尝试使用PNG。虽然在这种情况下,因为您还没有将输出写入文件,所以应该没有关系。 – 2013-05-06 22:52:53

+1

对不起,我不明白你的回复。根据我的理解,我只在位操作后才看到输出,而不依赖于文件格式类型。问题是否与操作中使用的位数n有关。 – Chaitali 2013-05-07 00:01:02

回答

1

让我们来看看代码的作用。从隐藏图像中提取n个最高有效位(MSB)并将其隐藏在封面图像的n个最低有效位(LSB)中。有两点需要注意,它回答了你的问题。

  • 您在封面图片中更改的位数越多,隐形图片的外观就会越扭曲。
  • 您从隐藏图像中使用的信息越多,重建图像越接近原始图像。以下linkreference)显示了图像从最高位到最低位的信息量。

如果您想直观地检查遮盖和隐秘图像之间的差异,可以使用峰值信噪比(PSNR)公式。据说人眼无法区分PSNR> 30 dB的差异。就个人而言,我不会少于40岁,但这取决于你的目标是什么。请注意,这不是一个最终所有类型的测量。算法的质量取决于许多因素。

没有盖和隐秘图像应该是相同的。我们的想法是尽量减少差异,以便抵制检测,并且有许多妥协方法可以实现这一目标,例如您愿意隐藏的消息大小。

完美检索秘密图像需要隐藏所有像素的所有位,这意味着您只能隐藏1/8的封面图像大小的秘密。请注意,这是最糟糕的情况,它不考虑加密,压缩或其他技术。这是想法,但我不会提供基于上述的代码片段,因为它非常不灵活。

现在,有些情况下您希望检索是无损的,无论是因为数据是加密的还是敏感的。在其他情况下,大概的检索将完成这项工作。例如,如果您只对图像的4个MSB进行编码,则提取该秘密的人仍然可以很好地了解它最初的样子。如果你仍然想要一个无损方法,但不是刚刚建议的方法,则需要使用不同的算法。该算法的选择取决于你希望它有不同的特性,包括但不限于:

  • 鲁棒性(隐藏的信息是如何抵抗是图像编辑)
  • 隐蔽性(这是一个多么难陌生人知道秘密的存在,但不一定是秘密本身,例如卡方攻击)
  • 覆盖媒体的类型(例如,特定图像文件类型)
  • 秘密消息的类型(例如,,图像,文本)
  • 大小秘密
+0

谢谢你的详细解释。正如你所说的,位数变化越多,封面图像会变得越扭曲。但是在这个代码中,如果改变的位数少于4,那么失真很高!为什么?是否只有当n = 4时,cover = stego image?是否有方法确定最佳位数? – Chaitali 2013-05-07 18:20:42

+0

另外,Hidden和Extracted之间的MSE不为零。 MSE应该为零,因为提取和隐藏必须相同。这是个很大的差异。 – Chaitali 2013-05-07 20:14:50

+0

对于低n,秘密图像与封面图像更为相似,但提取的是隐藏图像的粗略近似值,对于高值n则隐藏。隐秘从不相同的封面和提取到隐藏。只有n = 4,你才能从两个世界中得到最好的折中。 隐藏和提取之间的MSE不是零,因为您仅对隐藏图像的一部分进行编码(1 <= n <= 7),这是您可以检索的所有信息。 我建议用更多样化的算法,无论是学习还是项目。这和你能摆脱这个一样多。 – Reti43 2013-05-07 23:29:54