使用Python在计算机视觉中为图像添加水印

2025 年 1 月 5 日 | 阅读 9 分钟

概述

水印是为图像添加独特图案的过程。它对于保护文档免遭不当使用或侵犯版权至关重要。数字资产的权利或信誉授予作者和企业主,以防止未经授权复制或抄袭他们的作品。水印可以产生独特且唯一的印章、签名或商标。

引言

强大的 Python 库 OpenCV 允许我们执行许多重要操作。该库可用于跟踪相机运动、创建图像滤镜、提取任何对象的 3D 模型以及应用水印。一个名为 cv2.addWeighted() 的 OpenCV 方法可用于在图像上添加水印。

语法

参数

src1:输入的原始图像。alpha:输入的原始图像的权重。src2:用作输入的图像。beta:输入的第二个图像的权重。gamma:混合后,将标量值应用于每个像素。

让我们继续开发此函数,以使用不同的实现策略在照片上创建各种水印。

水印的类型

然而,在开始为照片添加水印之前,您必须了解不同类型的水印及其应用。

可见水印

顾名思义,查看者很可能会立即注意到水印。基本上,半透明的 ID 被放置在原始照片上。这些标识符可以是文本、地址、URL、徽标、二维码或任何显示照片所有权的物品。尽管它们是半透明的,但这些允许您查看原始图像。

用于图像的广告和版权保护的最佳水印是可见的。在识别图像侵权方面,它们几乎无效。但是,使用合适的工具可以轻松地删除、裁剪或用另一个水印覆盖它们。但每个优势都有代价。

不可见水印

不可见水印也可以称为隐蔽或隐藏水印。顾名思义,它们是不可见的,肉眼无法察觉。要查看它们,您需要特定的隐写术软件或硬件。

有几种类型的水印是不可检测的。

  • 尽管许多水印看起来像可见水印,但它们是半透明的,人眼无法看到。
  • 某些特定像素的最低有效位被反转;然而,这仅在图像不改变时有效。但使用起来太容易了。
  • 空间水印是不可见水印的另一种技术。它利用特定的颜色带,在颜色被分离时(如在印刷中)变得可见。

基于文本的水印

让我们创建一个包含将成为图像水印的文本的字符串。下一步是自定义字体样式。OpenCV 带有多种预装字体样式。(255, 255, 255) 将导致水印文本显示为白色。最后,我们可以使用 putText() 函数将水印文本添加到图像中。

说明

提供的代码首先使用 OpenCV 读取并显示图像。接下来,它会创建一个名为 watermark_text 的空白图像,该图像的尺寸与原始图像相同,但像素值为黑色(零)。代码使用给定的字体、大小和位置在空白图像上书写文本“CLICKS”。然后,为了产生水印效果,使用 cv2.addWeighted 函数将此水印文本与原始图像混合,该函数以定义的权重(alpha 和 beta)混合两个图像。结果显示水印文本以略微半透明的方式叠加在原始图像之上。此方法可确保水印可见,而不会完全隐藏底层图像。

输出

Adding Watermark to Images in Computer Vision using Python
Adding Watermark to Images in Computer Vision using Python
Adding Watermark to Images in Computer Vision using Python

基于图像的水印

以下是有关使用 OpenCV 在图像上应用基于图像的水印的一些重要详细信息

  • 基于图像的水印经常用于防止未经授权使用或分发数字图像。
  • 可以使用 OpenCV 强大的图像处理功能将基于图像的水印应用于图像。
  • 设计水印图像时应格外小心,以尽量减少对底层图像的干扰,同时仍保持可见性。
  • 在向图像添加水印时,采用能够保留原始图像视觉完整性同时又能使水印可见的方法至关重要。
  • 创建指定水印位置的二进制掩码,加载原始图像和水印图像,将水印和原始图像的大小调整为适合原始图像,使用二进制掩码将水印图像与原始图像混合,然后保存水印图像。

添加水印的技术

数字水印技术

水印是将信息所有者明确指定的附加信息添加到源(封面)数据中的技术。数字水印将所有者的视觉信息隐藏在原始视觉数据中。它通常用于涉及照片和视频的应用。

相反,数字水印将标记合并到数据中,以至于源的消费者几乎注意不到变化。即使水印材料经过严重修改,秘密信息仍然可见,无法被擦除。

水印有多种类型,包括可见、不可见和双重。水印算法可以基于修改或地理领域。空间域水印涉及修改照片的一个或多个随机选定部分的像素值。图像像素立即接收原始数据。它可以基于使用不同的块或最低有效位平面。变换域水印基于变换系数的修改。DCT 和 DWT 是两种常用的变换域方法。

空间域技术

数字水印,通常称为空间域水印,是将所有者指定的附加水印数据添加到原始(封面)图像或视频的过程。像素用于在空间区域定义图像。空间域水印过程会改变少量选定像素的颜色和亮度,以合并水印。与变换域相比,空间域水印更快、更容易使用,但它更容易受到攻击。空间域技术可以轻松应用于任何图像。对于空间域,最常用的水印算法是最低有效位修改。此方法会修改图像选定像素的最低有效位(LSB)。可以使用类似的方法来处理容器图像的其他 LSB 位。

水印项可以在容器图像中出现多次。即使攻击删除了大部分水印,只要留下一个水印就足够了。这是一个相当简单的方法。它能抵抗裁剪和噪声添加等简单操作。但是,有损压缩会使水印失效。此外,可以通过将所有 LSB 位更改为“1”的直接攻击来擦除封面对象中的水印,而不会造成明显损坏。

从水印图像中删除 LSB 平面后,使用异或运算和水印模板检索水印。

可以对封面图像进行预处理,以防止隐藏信息被直接从预处理中提取。预处理封面图像的一种方法是将其分解为块。接下来,会改变相邻块的关系来编码嵌入的水印。

频域技术

频域水印的基本目标是将水印包含在图像的频谱系数中。最常用的三种变换是离散小波变换 (DWT)、离散傅里叶变换 (DFT) 和离散余弦变换 (DCT)。离散余弦变换 (DCT) 域水印可以抵抗锐化、滤波、噪声和压缩等攻击。标准的 JPEG 压缩方法是其基础,而水印是一个可选功能。DCT 变换数字水印会改变频率系数,而空间域水印会改变图像位平面的像素 LSB。

由于 DCT 允许将图像分解为多个频带,因此它简化了将水印数据插入图像频带的过程。嵌入在中频范围是合适的。它增强了对通常会放大高频的攻击的防御能力。通过采用中频,还可以避免图像中最具美感的区域(集中在低频)。原始图像被分解为 8x8 像素块,并且 DCT 变换独立地应用于每个块。可以通过使用中频 2D 掩码从中频范围提取 DCT 系数。现代小波变换方法广泛应用于水印、压缩、数字图像处理和其他相关任务。变换基于小波,小波是具有有限周期和可变频率的小波。

小波变换将图像分解为三个空间方向:对角线、水平和垂直。在每个分解级别,DWT 系数的幅度在最低频带 (LL) 中较大,而在其他频带 (HH, LH, 和 HL) 中较小。因此,小波能更好地表示 HVS 的各向异性特性。

许多信号处理应用,包括音频和视频压缩、音频背景噪声消除以及无线天线布局建模,都普遍使用 **离散小波变换 (DWT)**。

**离散傅里叶变换 (DFT)** 可以将连续函数分解为其频率分量。它对平移、缩放、旋转和裁剪等几何攻击免疫。

DFT 显示了平移不变性。图像的空间变化不会影响傅里叶变换的幅度,而是会改变图像的表征方式,即改变其相位而不是幅度。

变换域技术

在变换域中,图像以频率表示。许多可逆变换,如离散余弦变换 (DCT)、离散小波变换 (DWT)、离散傅里叶变换 (DFT)、轮廓波变换 (CT) 和奇异值分解 (SVD),可用于将图像转换为其频率表示。每种变形都有独特的特性,并以不同的方式呈现图像。

DCT 水印:此方法包括修改 DCT 系数,以便将水印嵌入图像的 DCT 域中。

小波变换水印:此方法通过使用小波变换将图像分解为不同的频率子带,将水印嵌入高频子带中。

奇异值分解 (SVD) 水印:此方法使用 SVD 将图像分解为其奇异值矩阵,并将水印嵌入奇异值中。

水印在计算机视觉中的应用

  1. 知识产权保护:水印可以通过为图像提供独特的身份来保护知识产权。通过这样做,可以阻止未经授权使用或复制照片。
  2. 数字图像安全:可以将水印作为预防措施应用于数字照片,以阻止未经授权的访问或使用。例如,水印可以表明图像受到保护,从而使未经许可使用照片变得更加困难。
  3. 水印数字图像:水印可以确认数字图像的来源。例如,水印可能表明图像是由某位特定摄影师或公司拍摄的,从而更容易验证其有效性。

水印的挑战和局限性

尽管它可能是内容身份验证和版权保护的有用工具,但也有一些需要考虑的事项。

  1. 易受攻击
    水印可能会受到移除、修改和克隆等攻击的影响。攻击者可能会使用各种技术,包括过滤、裁剪或缩放,来移除或修改水印,这可能会导致内容的可信度或版权保护丢失。
  2. 保持图像质量的难度
    嵌入原始图像中的水印有时可能会损害其质量。虽然插入数字水印可能会导致噪声或失真,从而降低图像的整体质量,但添加可见水印(例如)可能会模糊图像的重要区域。
  3. 与不同图像格式的兼容性
    照片格式兼容性问题可能会阻碍水印。某些图像格式(如 JPEG)可能不支持特定的水印方法,而其他格式在编辑或转换为不同格式后可能会丢失水印。

因此,虽然水印可以使内容保护和身份验证受益,但在设计水印系统之前需要考虑这些缺点和挑战。

结论

  • 在计算机视觉中,水印是一种用于保证数字图像的合法性和所有权的方法。
  • 水印的方法有很多种,例如可见水印和不可见水印,每种都有其优点和缺点。
  • 水印可用于多种目的,例如数字取证、版权保护和身份验证。它可以应用于各种材料,包括照片、电影和文档。
  • 另一方面,水印存在缺点和挑战,包括易受攻击、保持图像质量的困难以及跨不同图像格式的兼容性问题。
  • 水印是计算机视觉中用于保护数字照片的有用方法,该领域的进一步研究和探索可以帮助克服与之相关的挑战和限制。