Python实现图像信息隐藏

之前学习密码学的时候老师有提到过『信息隐藏』,现在用图像的方法尝试一下。思想是:把信息藏到RGB通道中的B通道,然后利用奇偶性可以恢复过来

原理

  • 从源图中提取文字图像信息,记录这个文字图像信息像素点在图像矩阵中的位置
  • 载体图片进行预处理,将B通道的像素值全部设置成偶数
  • 载体图片中,把第一步已经记录的位置的像素B通道设置为奇数
  • 信息解码的过程就是逆过程,只要找出载体图片中B通道是奇数的像素位置,然后统一着色就可以恢复

实现

一、写入要隐藏的信息

source = cv2.imread('img/source.png')
h, w = source.shape[:2]
message = 'Hello World!'
x, y = (180, 250)
color = [88, 26, 16]
cv2.putText(source, message, (x, y), cv2.QT_FONT_BLACK, 3, color, thickness=5)
cv2.imwrite('img/s.png', source)

原图source.png

加入信息后的图片s.png

二、预处理载体图片

carrier = cv2.imread('img/carrier.png')
for i in xrange(h):for j in xrange(w):# 把整幅图的B通道全设置为偶数if carrier[i, j, 0] % 2 == 1:carrier[i, j, 0] -= 1

三、把隐藏信息的位置设置成奇数

for i in xrange(h):for j in xrange(w):# 找出有文字的位置if list(source[i, j]) == color:carrier[i, j, 0] += 1
cv2.imwrite('img/hide.png', carrier)

加入信息之后的载体图片与原来几乎不变

原载体图片carrier.png

隐藏信息后的图片hide.png

四、信息恢复

img = cv2.imread('img/hide.png')
h, w = img.shape[:2]
# 新建一张图用来放解出来的信息
info = np.zeros((h, w, 3), np.uint8)
for i in xrange(h):for j in xrange(w):# 发现B通道为奇数则为信息的内容if img[i, j, 0] % 2 == 1:info[i, j, 0] = 255info[i, j, 1] = 255info[i, j, 2] = 255
cv2.imwrite('img/info.png', info)

恢复结果info.png

小结

这种信息隐藏的方法,主要是用『修改像素奇偶性后,图片变化不明显』来实现的,感觉非常巧妙。

不过值得注意的是,\(隐写术\neq 加密\),这种信息隐藏的安全性也依赖于算法本身,而不是密码学里的『密钥』。

转载于:https://www.cnblogs.com/fanghao/p/8489222.html

Python实现图像信息隐藏相关推荐

  1. python控制台图片_Python实现图像信息隐藏

    Python实现图像信息隐藏 之前学习密码学的时候老师有提到过『信息隐藏』,现在用图像的方法尝试一下.思想是:把信息藏到RGB通道中的B通道,然后利用奇偶性可以恢复过来 原理 从源图中提取文字图像信息 ...

  2. 利用Python实现图片信息隐藏

    最近上了一门信息隐藏的课,讲的关于技术层面的内容还是蛮多的,但是我也没记住几个.吭吭,言归正传,这两天要交大作业,自己手动实现一种图像信息隐藏,查了一番资料后,决定Python来做(主要是调用包方便) ...

  3. LSB图像信息隐藏(实现及分析)

    一.LSB图像信息隐藏(python实现) 1.实验目的 将信息图片存入载体图片,并从载体图片中提取出信息图片.具体操作为将信息图片的信息写入载体图片的最低位层(载体图片至少应为信息图片8倍). 2. ...

  4. java bmp信息隐藏_BMP图像信息隐藏及检测

    1.实验目的 (1)了解BMP图像文件格式 (2)了解利用BMP图像文件隐藏信息的原理 (3)掌握基于24位真彩色BMP图像的文件信息隐藏方法 2.实验内容 (1)在图像数据后隐藏信息 (2)文件头与 ...

  5. matlab信息隐藏图片,信息隐藏 实验二 BMP 图像信息隐藏

    实验二 BMP 图像信息隐藏 一,实验目的 1,了解BMP图像文件格式 2,了解利用BMP图像文件隐藏信息的原理 3,设计并实现一种基于24位真彩色BMP图像的文件信息隐藏方法. 二,实验环境 1, ...

  6. matlab信息隐藏和提取,使用matlab进行图像信息隐藏和提取

    基于格式的信息隐藏方法通常在文件头与图像数据之间,或图像数据末尾添加秘密信息,具有实现简单,透明性高,隐藏容量大等多个优点:LSB图像信息隐藏算法是将秘密信息隐藏在图像像素数据的低位上来隐藏信息的方法 ...

  7. 基于离散小波变换 (DWT)的图像信息隐藏算法

    离散小波变换 (DWT) 是一种常用于图像信息隐藏的算法.这种算法通过将图像进行小波变换来隐藏信息.在这个过程中,图像被分成不同的尺度和方向的部分,称为小波系数. 具体来说, 首先将图像进行小波分解, ...

  8. 基于计算全息的半色图像信息隐藏

    基于计算全息的半色图像信息隐藏 简介 光学信息隐藏算法大致可以分为两类. 第一类是基于双随机相位编码的信息隐藏算法,第二类是基于数字全息编码的信息隐藏算法.这两类算法分别利用了双随机编码和全息编码对水 ...

  9. 【图像隐藏】基于DCT、DWT、LHA、LSB的数字图像信息隐藏系统含各类攻击和性能参数附matlab代码

    1 内容介绍 1.1 课题研究的目的和意义 自二十世纪九十年代以来,网络在我们的生活中得到了快速的普及,网络几乎存 在于家家户户中,特别是一些用于交流的软件自诞生以来更是为我们的生活都带来了 极大的便 ...

  10. 图像信息隐藏与解密(OpenCV)

    目录 一.图像隐藏的意义: 二.图像隐藏的原理: 三.示例图片: 四.隐藏信息的过程: 1)读取源图像(将写上需隐藏文字的信息)和载体图像,构造图像矩阵. 2)在源图像中加上水印文字作为待隐藏文字. ...

最新文章

  1. 环形缓冲区: ringbuf.c
  2. linux 条件语句关键词,Linux中条件语句
  3. 十几万人同时在线的直播间聊天,如何设计服务端架构?
  4. poj3111 选取物品(二分+贪心)
  5. python如何选择命令_python 解析命令行选项
  6. 自动化脚本上传图片怎么办_一切都自动化后我们将怎么办?
  7. java程序包不存在_idea Error:(3, 32) java: 程序包***不存在的问题
  8. android+模拟器上gdb,使用gdb在Android Emulator中进行调试c程序
  9. python自动化看什么书_《Python编程快速上手:让繁琐工作自动化》(异步图书出品)...
  10. 彻底禁止Win10自动更新工具Windows Update Blocker v1.5 汉化版
  11. NES专题——一块带给无数人年少欢乐的CPU(6502)
  12. python与sap_在python中连接SAP HANA
  13. Solr Facet 统计查询
  14. 〖Python 数据库开发实战 - Python与MySQL交互篇⑭〗- 项目实战 - 实现新闻管理 - 审批新闻 功能
  15. 软件测试面试宝典(2022面试预测)——软件测试大厂试题
  16. 使用Eagle2进行单倍型分析
  17. [置顶] 你总能看到的脑残问题
  18. 人文素质与企业竞争力
  19. QT打包时系统提示 Cannot find Visual Studio redist directory
  20. 一、stm32开发环境搭建

热门文章

  1. 130 个相见恨晚的超实用网站,一次性分享出来,十倍提高工作效率
  2. 傻傻分不清之 Cookie、Session、Token、JWT这次让你彻底搞懂,还不懂你来找我
  3. 关于Spring,所有的都在这了,具有收藏价值
  4. Java会走向晦暗吗?Kotlin会取而代之吗
  5. Google开源的操作系统Fuchsia,专为大内存硬件设计
  6. 云服务售后服务调研,参与问卷送福利!
  7. history。go(-1)
  8. 组队开发第二周第五次会议
  9. linux yum 安装软件
  10. 没有资本怎么创业的思维:不是钱,是实现。