2017-08-16 46 views
0

我正试图使用​​手机上的实时相机来检测LSB隐写。到目前为止,我还没有很好的检测LSB隐写术,无论是在印刷材料还是在PC屏幕上。Android隐写检测LSB

我尝试使用OpenCV并将每个帧转换为RBG,然后从每个像素中读取位,但从未检测到隐写。

我也尝试使用相机功能,并检查onFrame是否像素开始字符串被识别或不是,所以我可以读取其余像素中的实际隐藏数据。

这提供了几次积极的结果,但是然后读取数据是不可能的。

任何建议如何处理?

有关隐藏数据的更多信息: 1.它遍布整个图像,并且我知道该算法有效,因为如果我只是通过应用程序中的位图读取精确图像,则会检测并解码隐写图像,但是当我尝试使用相机没有这样的运气。 2.它是一个网格,整个图像的8x5像素,所以它不是它只在图像的一个特定区域,并且它不能在相机视图中检测到。

如果需要,我也可以发布一些代码。

谢谢。

+0

只是要清楚。您将数据嵌入数字图像中,然后通过相机查看数据,希望检测像素中的秘密?什么是起始字符串(如果只是一堆1和0,多少)以及您获得正面结果的频率如何? – Reti43

+0

它是连续8个像素内的1个和0个串。这是为了检测是否存在嵌入代码。我经常从检测结果中获得肯定的结果,但是实际数据是jibrish –

回答

0

你还没有明确关于你如何做到这一点的细节,但我认为你做了以下的一番风味:

  • 在数字图像中嵌入一个秘密,
  • 打印这个隐秘图像或将其显示在电脑上,然后拍摄该照片并检测嵌入的秘密。

对于所有的实际目的,这是行不通的。 LSB像素嵌入隐写术是一种非常脆弱的技术。你需要一个隐秘像素图像的完美副本来提取工作。即使是简单的数字操作也足以破坏你的秘密。缩放,裁剪和旋转等等。那么你不得不担心拍摄照片和环境光的角度。而且我们甚至不会触及电脑显示器或打印照片上显示的颜色。

你得到积极的起始序列的唯一原因是因为你使用一个短的,你一定是幸运的。假设拍摄到的隐秘图像会导致每个像素随机偏离其真实值,有时您仍然会很幸运。想象一下,第一个像素值为250,在拍摄后为248,两种情况下的最低有效位仍然为0.

最重要的是,一些序列更有可能出现。在大多数照片中,相邻像素是相关的,因为颜色梯度是平滑的。这意味着如果照片的左上角较暗,右上角较亮,则颜色会缓慢变化。例如,前4个像素的值为10,接下来的几个像素的值为11,依此类推。就LSB而言,你有00001111的模式,正如我刚才解释的那样,无论你在那里拍摄什么图像,这可能会相当频繁地出现。

+0

好吧,我认为是同样的事情,但我说让我试试看。 你有什么建议使用? DCT算法?用于编码和检测/解码的DWT算法 –

+0

我不知道它是否可能。请记住,拍摄隐形眼镜图片的照片对拍照条件非常敏感。你有多远,从照片,相机的分辨率等 – Reti43

+0

@BorceIvanovski在一些非常严格的条件下,它有效地要求您拍摄快照以尽可能**地重新创建原始隐形图像**, miiiiight可以。 [这是一个想法](https://stackoverflow.com/questions/30662050/image-based-steganography-that-survives-resizing)它是如何艰难的生存图像缩放。 – Reti43