隐写术

大家先来看看这两张图片,看看有什么区别。顺便提一句,我说的是这两张。
现在再看的话,相信大家都看到了区别。但可能不是我说的区别。
对于一些眼尖的同学,可能已经看出来了。我们调整一下图片的对比度。
画面逐渐出现了一句称赞你们的话。这就是一种简单的隐写术。
我们再来看另外两张图片。这次我真的指的是两张爱丽丝的图片。
大家可以尝试看一下左右两张图片的区别。反正我是看不出。
那到底有什么区别呢?
其中左边的爱丽丝是由右边爱丽丝加上一张二维码合成的。
在说什么怎么合成之前,我们来简单介绍一下隐写术。
隐写术是一门关于信息隐藏的技巧与科学,所谓信息隐藏指的是不让除预期的接收者之外的任何人知晓信息的传递事件或者信息的内容。
我们来看一个例子。
小明是一位计算机专业的学生,他喜欢同班同学小红,经常给小红写情书。小丽是一个女舔狗,她喜欢偷看小明写的情书。
于是小明想了个办法,他把原本的情书改成了右边这样。我们把图片放大看看。
图片里面咋一看是一句英文,其实里面隐藏了一些信息。
我们可以仔细观察每个字母的底部,有些和格子线接触,有些则留有间隙。这很难不让我们想到二进制。
我们规定接触为0,间隙为1,那么上面的句子可以解析成二进制00011、01100、01101、1111
对照字母表我们可以解析出隐藏的信息是CLM,翻译一下就是吃了吗。
这样即使小红看到了小明发的内容,即使小红英语很厉害,也不知道小明的真正意思。
隐写的手段有很多种,除了在暗背景中写入暗字、在间隙里隐藏信息外,我们还可以在图片中隐藏信息。
在详细说怎么在图片中隐藏二维码前,我们先来看一点图像相关的知识。
通常我们会用一个数字矩阵来表示图像,我们截取图片的一部分查看它的数字矩阵,这些数字就是我们说的像素值(这里数字是随机选取的,不是真实的像素值)。
一般我们会用8位二进制来表示像素值,因此像素取值范围位0到255。但是对于彩色图像,我们会用三个不形状相同,数值不同的矩阵表示它们红、绿、蓝三种颜色占的比例。
我们暂时考虑只有一个图层的情况,也就是只有一个数字矩阵,并且这个图层只有四个像素。我们把像素用八位二进制表示。
然后收集最高位的值,我们可以得到一个同样形状的数字矩阵。这里需要注意,我们这里省略了许多0。
然后我们搜集次高位、依次类推。我们就可以得到八个形状相同的数字矩阵,我们把它们称作位平面。其中第0个位平面叫做最低位平面。
现在我们把最低位平面删除,将其余七个平面相加,可以得到新的二进制数字矩阵。
我们将矩阵转换成十进制,再对比原图,发现删除位平面的信息后对图像影响很微小。因此我们可以在最低位平面隐藏我们的信息。
对于彩色图像,就是有三个图层的情况。我们可以分解出24个位平面。因此可以隐藏更多信息。
我们来看一个真实的例子,这里用只有一个图层的灰度图。
我们对图片进行位平面分解,然后进行简单的处理,可以得到右边的结果。
我们删除最低位平面,用其它七个平面合成新的图像。发现和原图没有太大区别。
现在我们把最低位平面替换成二维码图片,再用全部图片合成新的图片。合成的图片依旧很难和原图区别开。
我们用彩色图片进行实验,将图片分成红、绿、蓝三个图层。我们选取其中一个图层,进行位平面分解,然后将最低位平面替换成二维码,再进行合成。然后将合成的图层和另外两个图层进行合成,就可以得到左边的图像。也就是我们视频开头的效果。
另外,我们还可以在三个图层分别隐藏一张二维码,然后合并三个图层,得到彩色图像。
最后,感谢各位的观看!我是新建文件夹。