数字水印 | 量化相关论文:Embedding color watermark image to color host image based on 2D-DCT


🥳原文: Embedding color watermark image to color host image based on 2D-DCT

🥳前言: 这是一篇 2023 年的 SCI 物理 3 区,采用量化机制实现的盲水印嵌入。



1 Watermark Embedding Procedure

本文所提出的水印嵌入过程如下图所示:

在这里插入图片描述



步骤一

针对一个大小为 M × M M × M M×M 的原始图像 H H H

  • ① 将其分离成 R , G , B \mathsf{R,G,B} R,G,B 三层,并把它们视作载体图像 H i ( i = 1 , 2 , 3 ) H_i(i=1,2,3) Hi(i=1,2,3)
  • ② 将 H i H_i Hi 分割成大小为 4 × 4 4 × 4 4×4 的非重叠图像块。

针对一个大小为 N × N N × N N×N 的水印 W W W

  • ① 将其分离成 R , G , B \mathsf{R,G,B} R,G,B 三层;
  • ② 为了提高算法的安全性,将基于密钥 K a i Ka_i Kai 的仿射变换和基于密钥 K b i Kb_i Kbi A r n o l d \mathsf{Arnold} Arnold 变换依次分别应用于 3 3 3 个水印层,从而得到 3 3 3 个混沌的水印层 W i W_i Wi
  • ③ 将 W i W_i Wi 的像素由十进制值转换为二进制值,并将所有结果拼接起来,得到一个长度为 8 N 2 8N^2 8N2 的序列 S W i SW_i SWi,其中 i = 1 , 2 , 3 i=1,2,3 i=1,2,3 代表 R G B \mathsf{RGB} RGB 颜色模型中的 3 3 3 层。

说明:本文处理的水印是彩色水印,因此像素值不是 0 0 0 1 1 1。而在后面使用量化机制进行水印嵌入时,我们希望水印信息是以 01 01 01 的二进制形式出现的,因此这里将水印转换为二进制序列。



步骤二

为了提高抵抗裁剪攻击的鲁棒性,利用 randperm() 函数生成随机数矩阵,并基于密钥 K c i Kc_i Kci K d i Kd_i Kdi H i H_i Hi 中选择一个图像块 A A A,其中 i = 1 , 2 , 3 i=1,2,3 i=1,2,3 代表 R G B \mathsf{RGB} RGB 颜色模型中的 3 3 3 层。

说明:randperm() 是 Matlab 提供的一个函数,用于生成随机数矩阵。但我感觉原文对各个密钥的使用都没有进行具体介绍,不过大家应该都知道如何对水印进行置乱预处理,因此也没必要细究本文的方法😇



步骤三

对图像块 A A A 进行 2 D - D C T \mathsf{2D\text{-}DCT} 2D-DCT 变换,得到系数矩阵 d c t A \mathsf{dct}A dctA,如下所示:

d c t A = d c t 2 ( A ) \mathsf{dct}A=\mathsf{dct2}(A) dctA=dct2(A)

说明: d c t A \mathsf{dct}A dctA 是一个变量名,dct2() 是一个 Matlab 提供的函数,用于做 2D - DCT 变换。请勿混淆!

根据 z i g - z a g \mathsf{zig \text{-} zag} zig-zag 形状,从 d c t A \mathsf{dct}A dctA 中选取两个中频系数对 ( c p 1 , c p 2 ) (c_{p1},c_{p2}) (cp1,cp2)

在这里插入图片描述

其中 p = 1 , 2 p=1,2 p=1,2 表示从矩阵 d c t A \mathsf{dct}A dctA 中选取的第 p p p 个中频系数对, c p 1 c_{p1} cp1 表示第 p p p 个中频系数对中的一个中频系数。本文共选取 2 2 2 对中频系数,第一对中频系数的坐标分别为 ( 3 , 1 ) (3,1) (3,1) ( 2 , 2 ) (2,2) (2,2),第二对中频系数的坐标分别为 ( 1 , 3 ) (1,3) (1,3) ( 2 , 3 ) (2,3) (2,3)

说明:貌似 z i g - z a g \mathsf{zig \text{-} zag} zig-zag 一词只是为了形容形状,中文翻译过来是 “之字形”。



步骤四(核心步骤)

说明:已知 S W i SW_i SWi 是一个二进制序列,其中的一个比特被称为水印位 w p w_p wp

依次从 S W i SW_i SWi 中获取水印位 w p w_p wp,然后使用如下公式调整 d c t A \mathsf{dct}A dctA 中的系数 ( c p 1 , c p 2 ) (c_{p1},c_{p2}) (cp1,cp2)

c p 1 ′ = { s i g n c ( c p 1 ) × ( a v g − Δ × T i ) ,   i f   w p = 1   a n d   D i f f ≤ T i s i g n c ( c p 1 ) × ( a v g + Δ × T i ) ,   i f   w p = 0   a n d   D i f f > − T i c'_{p1}= \left\{\begin{matrix} \mathrm{signc}(c_{p1})\times (avg-\Delta\times T_i),\ \mathrm{if}\ w_p=1\ \mathrm{and}\ \mathrm{Diff} \le T_i \\ \\ \mathrm{signc}(c_{p1})\times (avg+\Delta\times T_i),\ \mathrm{if}\ w_p=0\ \mathrm{and}\ \mathrm{Diff} > -T_i \end{matrix}\right. cp1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值