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. 别再折腾开发环境了,一劳永逸的搭建方法
  2. 无盘中用户数据的保存
  3. oracle 同义词_Oracle迁移到MySQL,必须要搞明白这几个问题
  4. Spring Aware接口注入
  5. VisualBox 安装 CentOS 7.6 操作记录
  6. location匹配
  7. cd linux给u盘安装程序,CDLINUX U盘安装教程
  8. java格林威治时间转换_JAVA 格式化格林威治时间(Wed Aug 01 00:00:00 CST 2012)格式转换...
  9. HTML2CANVAS 合成图片
  10. TCP快速重传触发条件的一个细节
  11. xcpc近年铜牌题补题路
  12. python 抽奖器_python编写实现抽奖器
  13. 广告冷启动_创业公司“品牌冷启动”是战略级的工作
  14. html5论文答辩,论文答辩5分钟自述
  15. 在HTML中制作贪吃蛇游戏
  16. 为何NB-LOT 覆盖比较广
  17. 【中移芯昇】5. spi接口测试tf卡
  18. 函数的右导数与导函数的右极限的关系
  19. Linux分区大师,linux分区管理
  20. SVN图标消失解决方案

热门文章

  1. 分布式MySQL集群方案,看看京东是怎么做的
  2. 来几个 9 块 9 好吃零食
  3. 聊聊职场中的学历问题
  4. windows如何把exe注册服务器,Win7将SVN注册为系统服务的方法(图文)
  5. python基础之字符串类型
  6. SqlZoo.net习题答案:Using the SELECT statement.【nobel】
  7. SDOI2017 树点涂色
  8. 【iOS】打印方法名
  9. BZOJ-1069 [SCOI2007]最大土地面积
  10. win7下处理桌面文件丢失及黑屏的有效方法