20200403.图像运算(end)

图像加密和解密

通过按位异或可以实现图像的加密和解密。
加密:原始图像和密钥按位异或
解密:加密图像和密钥按位异或
这里的密钥可以是一幅图像也可以是随机生成的像素图

import cv2
import numpy as np
# 读取图像,因为我使用的是RGB图像,参数0将其转为灰度图
jimin = cv2.imread("C:\\Users\\NNoisy\\Desktop\\Jimin.jpg",0)
r,c = jimin.shape
# 设置和原始图像大小一致的随机密钥
key = np.random.randint(0,256,size=[r,c],dtype=np.uint8)
# encryption:加密 decryption:解密
encryption = cv2.bitwise_xor(jimin,key)
decryption = cv2.bitwise_xor(encryption,key)
cv2.imshow("jimin",jimin)
cv2.imshow("key",key)
cv2.imshow("encryption",encryption)
cv2.imshow("decryption",decryption)
cv2.waitKey()
cv2.destroyAllWindows()

在这里插入图片描述

数字水印

最低有效位(LSB):指一个二进制数的第0位。也就是我们的位平面分解的最低位,其对于载体图像的影响非常小,具有较高的隐蔽性。所以利用这一点,可以为图像添加非常隐蔽的数字水印(二值图像)。

数字水印处理过程

水印嵌入过程
Created with Raphaël 2.2.0 初始化 载体图像预处理:读取图像 建立提取矩阵:提取载体图像的高七位。提取矩阵元素值均为254。 载体图像最低有效位置0:将提取矩阵与载体图像按位与即可 水印图像处理:将二值图像的255转换为1,方便计算 嵌入水印:将新图像与水印图像按位或即可实现嵌入 显示原始图像、水印、含水印图像 结束
水印提取过程
Created with Raphaël 2.2.0 初始化 含水印载体图像预处理:读取图像 建立提取矩阵:提取矩阵元素值均为1。 提取水印信息:将提取矩阵与含水印载体图像按位与即可 计算去除水印后的载体图像:将其最低有效位置0即可 显示水印图像、删除水印后的载体图像 结束
import cv2
import numpy as np
# 读取图像,因为我使用的是RGB图像,参数0将其转为灰度图
jimin = cv2.imread("C:\\Users\\NNoisy\\Desktop\\Jimin.jpg",0)
watermark = cv2.imread("C:\\Users\\NNoisy\\Desktop\\Jimin04.jpg",0)
# 因为手边没有现成的水印图像,所以选用了一幅彩色图处理一下作为水印使用
w = watermark[:,:] <= 150
watermark[w] = 0
w = watermark[:,:] > 150
watermark[w] = 1
# 读取原始图像的shape值
r,c = jimin.shape
# 生成提取矩阵
extract = np.ones((r,c),dtype=np.uint8)*254
# 获取载体图像的高七位
high7 = cv2.bitwise_and(jimin,extract)
# 将水印嵌入到新载体图像中去
new = cv2.bitwise_or(high7,watermark)

# 生成元素值均为1的提取矩阵
extract1 = np.ones((r,c),dtype=np.uint8)
# 从载体图像提取水印
fi = cv2.bitwise_and(new,extract1)
# 将水印的1替换为原来的值,方便显示
w = fi[:,:] > 0
fi[w] = 255

cv2.imshow("jimin",jimin)
cv2.imshow("watermark",watermark*255)
cv2.imshow("new",new)
cv2.imshow("fi",fi)
cv2.waitKey()
cv2.destroyAllWindows()

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值