Steganography链接显示了隐写术的演示。我的问题是当要替换的位数n = 1时,该方法是不可逆的,即Cover不等于Stego(在理想和完美的情况下,Cover使用的应该与Steganography结果相同)。当要更换的位数为n = 4,5,6时,它才能正常工作!当n = 7时,Stego图像变得嘈杂并且与使用的Cover不同,结果不会变得不明显。因此,显然存在隐写术的操作。有人可以解释为什么会这样,需要做些什么才能使这个过程变得可逆和无损。
答案 0 :(得分:1)
让我们看看代码的作用。从隐藏图像中提取n个最高有效位(MSB)并将它们隐藏在封面图像中的n个最低有效位(LSB)中。有两点需要注意,这可以回答你的问题。
如果要直观地检查封面和隐秘图像之间的差异,可以使用峰值信噪比(PSNR)公式。据说人眼无法区分PSNR的差异> 30分贝。就个人而言,我不会选择任何低于40的东西,但这取决于你的目标是什么。请注意,这不是最终的,所有类型的测量。算法的质量取决于很多因素。
没有封面和隐秘图像应该是相同的。我们的想法是尽量减少差异,以抵制检测,并且实现这一点有许多妥协,例如您愿意隐藏的信息的大小。
完美检索秘密图像需要隐藏所有像素的所有位,这意味着您只能隐藏封面图像大小的1/8。请注意,这是最糟糕的情况,不考虑加密,压缩或其他技术。这是想法,但我不会提供基于上述的代码片段,因为它非常不灵活。
现在,在某些情况下,您希望检索无损,无论是因为数据是加密的还是敏感的。在其他情况下,近似检索将完成这项工作。例如,如果您只编码图像的4 MSB,那么提取秘密的人仍然可以很好地了解它最初的样子。如果你仍然想要一个无损方法而不是刚建议的方法,你需要使用不同的算法。算法的选择取决于您希望它具有的各种特征,包括但不限于: