这是NERV选修《信息隐藏技术》的一点体会,下面使用Python进行一点研究。 我们首先使用这幅图像作为实例:

原始灰度图像

这幅图像是Lena图红色(R)通道中的灰度图。每个像素使用一个0-255的数表示其灰度,255为白,0为黑。这个数可以用8位二进制数表示。因此,每个像素上的二进制灰度值合在一起构成了本图像的8个层次。如果我们把这些层次分离,用黑白二色图表示出来,会怎样呢?

NERV使用Python,将上面的思路实现,得到了如下的结果。0为第0位,7为最高位。

第0位上的二值图

第0位上的二值图


第1位上的二值图

第1位上的二值图


第2位上的二值图

第2位上的二值图


第3位上的二值图

第3位上的二值图


第4位上的二值图

第4位上的二值图


第5位上的二值图

第5位上的二值图


第6位上的二值图

第6位上的二值图


第7位上的二值图

第7位上的二值图


0位上的图看上去如同黑白电视机中的雪花。可以猜想这个位上信息几乎是随机的。那么我们如果用加密的信息替换0位上的数据,就可以将数据藏进图中,而不改变图片的大小。加密的作用是让我们的信息看上去更加随机。显然,对于彩色图像,有RGB三个通道,我们可以藏3倍的信息进来。

当然,这样做还有一个缺点,即,图片经过一点点压缩就会显著影响我们的数据的完整性。如何解决这个问题,以后再议。