Android : 保存 jpeg 图像而不压缩

问题描述

我正在尝试构建一个 image steganography android 应用程序来隐藏 jpeg 图像中的信息。 我正在对图像 DCT Coefficients 中的信息进行编码。

我正在使用 OpenCv 执行以下步骤:

  1. 加载图像位图并从中获取图像 mat
  2. 将图像从 RGB 转换为 YCrCb
  3. 将图像分成 8 x 8 块。
  4. 中心像素值大约为 0 [0-255 => -128-127]
  5. 应用 DCT 变换以获得块的 DCT 系数。
  6. 量化 [用量化矩阵划分 DCT 系数]
  7. 现在用我们的秘密消息替换非 0/1/DC 系数的 LSB。
  8. 逆量化
  9. 逆 DCT
  10. [0-255
  11. YCbCr 转 RGB
  12. 从图像 mat 中获取位图
  13. 将位图另存为 jpeg。

这个想法是因为我只是使用 jpeg 压缩算法提取和重新打包 jpeg 图像,jpeg 压缩算法不应该破坏 DCT 系数中的数据(很多的 jpeg :P)

问题:

我刚刚保存在 DCT 系数 LSB 中的数据在第 12 步中被破坏了。 我想要一种方法来保存图像而不破坏其数据(理论上应该是可能的,因为我只遵循了 jpeg 压缩算法。

我尝试过的东西:

  • this 是正常方法,会导致数据丢失。
  • 我使用了 this 方法。它不会破坏数据,但会增加大约 6 倍的文件大小,并且最终接收到的文件不是 jpeg,而是纯字节(如果扩展名设置为 jpeg 或 png,则可以在图像查看器中查看)立>
  • 我认为我使用的 jpeg 图像的压缩级别可能与 android 保存 jpeg 图像时的压缩级别不同。所以我使用应用程序保存的图像来隐藏数据。即使丢失了大量数据(与以前相比更少)。
  • 将图像保存为 png。这有效,没有数据丢失,并且可以应用 dct 算法来提取隐藏信息。但重点是获得 jpeg 图像作为输出,bcz jpeg 是最常见的图像扩展。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...