opencv-16 图像去水印示例

文章介绍了多种去水印方法,包括使用图像处理软件如Photoshop的克隆修复,模糊处理,反相处理,频域处理等。同时,展示了使用OpenCV进行水印嵌入和提取的代码示例,强调了简单方法的安全性问题以及在实际应用中可能需要依赖深度学习技术来应对复杂水印的挑战。
摘要由CSDN通过智能技术生成

常用的去水印方法:

克隆修复工具:使用图像处理软件(如Photoshop)中的克隆修复工具可以选择一个样本区域,然后将其复制到水印区域,以覆盖水印。这种方法在简单的水印上可能效果不错,但复杂的水印可能需要更多的手动调整。

模糊或马赛克处理:可以使用模糊或马赛克工具对水印进行处理,以使其模糊不清或完全不可识别。但这可能会导致图像细节损失,对图像质量有一定影响。

反相处理:对图像进行反相处理可能会削弱水印的效果,但这对于所有类型的水印并不总是有效。

频域处理:利用图像的频域特性,例如使用傅里叶变换等技术来检测并去除水印。这需要一定的图像处理知识和工具。

混合模式调整:通过调整图像的混合模式(如减淡、变暗等),有时可以减轻水印的可见程度。

图像修复算法:一些先进的图像修复算法可以帮助填补或去除水印,这些算法通常基于深度学习和人工智能技术

opencv 去除水印更多层面是原理性的展示操作,实际应用中更多的是通过机器学习或者利用工具来应用

编写程序,模拟数字水印的嵌入和提取过程。

import cv2
import numpy as np

def zh_ch(string):
    return string.encode('gbk').decode(errors='ignore')
#读取原始载体图像
lena=cv2.imread("lena.png",0)
#读取水印图像
watermark=cv2.imread("watermark.bmp",0)
#将水印图像内的值 255 处理为 1,以方便嵌入
#后续章节会介绍使用 threshold 处理
w=watermark[:,:]>0
watermark[w]=1
#读取原始载体图像的 shape 值
r,c=lena.shape
#============嵌入过程============
#生成元素值都是 254 的数组
t254=np.ones((r,c),dtype=np.uint8)*254
#获取 lena 图像的高七位
lenaH7=cv2.bitwise_and(lena,t254)
#将 watermark 嵌入 lenaH7 内
e=cv2.bitwise_or(lenaH7,watermark)
#============提取过程============
#生成元素值都是 1 的数组
t1=np.ones((r,c),dtype=np.uint8)
#从载体图像内提取水印图像
wm=cv2.bitwise_and(e,t1)
print(wm)
#将水印图像内的值 1 处理为 255,以方便显示
#后续章节会介绍使用 threshold 实现
w=wm[:,:]>0
wm[w]=255
#============显示============


cv2.imshow(zh_ch('原图'),lena,)
cv2.imshow(zh_ch("水印"),watermark*255) #当前 watermark 内最大值为 1
cv2.imshow(zh_ch("加水印图"),e)
cv2.imshow(zh_ch("提取水印图像"),wm)
cv2.waitKey()
cv2.destroyAllWindows()

运行结果:
运行

图(a)是原始图像 lena。
 图(b)是水印图像 watermark。在程序中,该图像首先会被处理为二值图像,在显示时将
其元素值乘以 255,以方便显示。
 图©是在图像 lena 内嵌入水印图像 watermark 后得到的含水印载体图像 e。
 图(d)是从含水印载体图像 e 内提取到的水印图像 wm。

通过肉眼无法观察出含水印载体图像和原始图像的不同,水印的隐
蔽性较高。但是,由于该方法过于简单,其安全性并不高,在实际处理中会通过更复杂的方式实现水印的嵌入。

这是简单的水印处理,从水印原理来看这是一个不可逆转的操作,如果想要开发这种系统,要么就针对性的某一个水印去除,要么 针对不可预知的水印 就要深度学习来操作了。这块后面实验讲解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小海聊智造

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值