✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
研究数字图像版权保护问题,由于数字媒体在网上易被复制篡改.针对单纯奇异值分解或小波变换水印算法均存在抵抗攻击差的难题,为了更好的保护数字图像版权,提了一种奇异值分解与小波变换相结合的数字水印算法.首先对水印图像进行置乱处理并对原始图像进行分块,从中找到符合要求的最佳水印嵌入子块,然后对所选择的最佳子块进行小波变换,对子块的低频系数进行奇异值分解,最后将水印嵌入各子块的奇异值中进行仿真.结果表明,水印算法能够很好的抵抗多种攻击,水印具有很好的鲁棒性和不可见性,克服了奇异值分解和小波变换水印算法缺陷,为设计提供了依据.
随着互联网普及,信息通讯技术的飞速发展,多媒体技术得到了充分的应用。但是开放的互联网使这些多媒体信息的传输变得不安全,而数字水印技术恰恰能保护这些多媒体信息的传输。数字水印技术通过一定的嵌入算法将一些可以用来标识多媒体数据的来源、版本、作者等标志性信息嵌入到多媒体数据中来保护多媒体数据的版权,但是不影响原始数据的使用和价值,并且不易被人察觉 。根据嵌入位置的不同,数字水印算法分为空域和变换域水印算法。一般而言,变换域水印算法稳健性较好,主要的变换域有离散余弦变换 ( discrete cosine transform DCT)、离散小波变换 ( discrete wavelet transform DWT)和离散傅立叶变换 ( discrete fourier transform DFT)。在变换域中奇异值分解(singular value decomposition SVD) 是一种将矩阵对角化的方法。图像的奇异值有较好的稳定性,利用这个原理可将水印信息嵌入到图像经过奇异值变换后的系数。 1 离散余弦变换和奇异值分解 1.1 离散余弦变换 离散余弦变换(Discrete Cosine Transform, DCT)是 一组不同 频率和幅值的余弦函数和来近似衣服图像,实际上是傅里叶变换的实数部分。由于离散余弦变量对于衣服图像,其大部分可视化信息都集中在少数的变换系数上。因此,离散余弦变量是数据压缩常用的一个变换编码方法,它能将高相关数据能量集中,使得它非常适用于图像压缩。一维离散信号f(x) 的离散余弦正变换为: 二维离散信号 f(x) 的离散余弦正变换为: 1.2 奇异值分解( SVD)
矩阵经过SVD 分解得到 1个奇异值矩阵 2个正交矩阵。图像的奇异值有很强的稳定性,图像受到轻微的扰动时不会有显著改变。利用奇异值的这种特性,如果将水印嵌入在载体图像 SVD 分解后的奇异值上,当攻击者对含水印图像进行攻击扰乱时,我们仍能从分解的奇异值中提取出水印信息。并且,奇异值对应于图像的亮度特性,而非视觉特性,因此,在奇异值上嵌入水印能保证水印的透明性,保障了水印算法的隐蔽性与安全性。奇异值表征图像矩阵元素的相互关系,在轻微扰动时不会发生变化,因此,在奇异值上嵌入水印不会损害图像的几何特性。SVD 分解是线性代数中一种非常重要的分解方式其定义如 下。设矩阵 A RRm×n,R表示实数域, m×n表示矩阵大小, A进行 SVD 处理的公式为 A = USVT (3) 式中: U V 都是正交矩阵,S是对角矩阵,奇异值就是矩阵 S 的对角线元素 且这些对角线元素满足 : σ1≥σ2≥σ3≥…σr≥σr+1 =…= σm =0 (其中 ,r表示 A的秩 )。 2 打印和扫描的应用分析 图像水印应用这种应用的挑战包括建立一种鲁棒的水印技术,以从印刷媒体中提取水印。该技术应该能够抵抗由于打印过程而发生的数字到模拟转应该能够抵抗由于打印过程而发生的数字到模拟转换,然后是扫描打印的水印图像时发生的模拟换,然后是扫描打印的水印图像时发生的模拟 - 数数字转换。字转换。在打印过程中,带水印的图像是模拟格式。在打印过程中,带水印的图像是模拟格式。为了提取水印,应使用打印扫描过程中的扫描仪或为了提取水印,应使用打印扫描过程中的扫描仪或打印凸轮过程中的相机(移动相机或数码相机)通打印凸轮过程中的相机(移动相机或数码相机)通过捕获过程将模拟数据数字化过捕获过程将模拟数据数字化。。由于引入的攻击,由于引入的攻击,包括几何攻击(例如旋转,缩放,切割和剪切)以包括几何攻击(例如旋转,缩放,切割和剪切)以及由设备引起的扭曲,打印和捕获过程可能具有挑及由设备引起的扭曲,打印和捕获过程可能具有挑战性。战性。这些失真通常是由在移动电话中存储图像时这些失真通常是由在移动电话中存储图像时的打印和压缩过的打印和压缩过程引起的。一些研究已经研究了这程引起的。一些研究已经研究了这些仍处于初期阶段的应用些仍处于初期阶段的应用。
⛄ 部分代码
%% Signature generation algorithm for authenticating matrices U and V
function signature = signature_generation(U, V, key)
% Proposed algorithm
% 1. Sum the column of orthogonal matrices and create 1-D array
Usum = sum(U);
Vsum = sum(V);
% 2.Based on the threshold, map the array values into corresponding binary digits
Usum_threshold = median(Usum); % threshold based on median value of each Uw & Vw matrix
Vsum_threshold = median(Vsum);
% transform Usum martix to binary using above threshold
Usum(find(Usum > Usum_threshold)) = 1;
Usum(find(Usum < Usum_threshold)) = 0;
% transform Vsum martix to binary using above threshold
Vsum(find(Vsum > Vsum_threshold)) = 1;
Vsum(find(Vsum < Vsum_threshold)) = 0;
clear('Usum_threshold', 'Vsum_threshold');
% XOR the 2 matrices to obtain 1-D array
UV_XOR = bitxor(uint8(Usum), uint8(Vsum));
% 3. Generate a PSRNG sequence using the key of dim. 1x512 and XOR it with
% the UV_XOR 1-D array above
rand('seed', key);
% produce binary sequence to perform XOR with UVsum
binary_seq = randi([0 1], 1, length(UV_XOR));
signature = double( bitxor(uint8(UV_XOR), uint8(binary_seq)) );
clear('Usum', 'Vsum', 'UV_XOR', 'binary_seq');
end
⛄ 运行结果
⛄ 参考文献
[1] 梁欣. 基于DWT和SVD的彩色图像数字水印算法研究[J]. 计算机与数字工程, 2019, 47(8):4.
[2] 张秀娟. 基于DWT-SVD的图像数字水印算法研究[D]. 山东科技大学, 2017.
[3] 汤震浩, 雍士华, 马小虎. 基于DWT和SVD的数字水印算法[J]. 电脑知识与技术, 2009.
[4] 赵睿琦. 基于DWT-SVD的数字水印算法研究[D]. 西安理工大学.