我正在尝试使用手机上的实时相机检测LSB隐写术。到目前为止,无论是在印刷材料上还是在PC屏幕上,我都没有幸运地检测到LSB隐写术。
我尝试使用OpenCV并将每个帧转换为RBG,然后从每个像素读取位,但从未检测到隐写。
我也尝试使用Camera功能,并检查onFrame是否识别起始字符串是否逐像素,因此我可以读取剩余像素中的实际隐藏数据。
这提供了几次正面结果,但随后无法读取数据。
有任何建议如何解决这个问题?
有关隐藏数据的更多信息: 1.它遍布整个图像,我知道算法有效,因为如果我只是通过应用程序中的Bitmap读取精确图像,则检测并解码隐写术,但是当我尝试使用相机时没有这样的运气。 2.它位于整个图像的8x5像素的网格中,因此不仅仅是图像的1个特定区域,而且在摄像机视图中无法检测到它。
如果需要,我也可以发布一些代码。
感谢。
答案 0 :(得分:0)
你仍然没有澄清你如何做到这一点的具体细节,但我认为你会做一些以下的事情:
出于所有实际目的,这不起作用。 LSB像素嵌入隐写术是一种非常脆弱的技术。你需要一个完美的隐秘像素图像副本,以便提取工作。即使是简单的数字操作也足以摧毁你的秘密。缩放,裁剪和旋转等等。然后你必须担心拍摄照片的角度和环境光。我们甚至没有触及电脑显示器或打印照片上显示的颜色。
你对起始序列获得肯定的唯一原因是因为你使用了一个短序,你必然会很幸运。假设拍摄的隐秘图像导致每个像素的真实值随机偏差,您有时仍会感到幸运。想象一下,第一个像素的值为250,然后拍摄了它的248.好吧,两种情况下的LSB都是0。
最重要的是,一些序列更有可能出现。在大多数照片中,相邻像素是相关的,因为颜色梯度是平滑的。这意味着如果照片的左上角较暗而右上角较亮,则颜色会缓慢变化。例如,前4个像素的值为10,接下来的几个像素的值为11,依此类推。就LSB而言,你有00001111
模式,正如我刚刚解释过的那样,无论你拍摄的图像是什么,它都可能相当频繁地出现。