基于有序抖动块截断编码的水印嵌入和提取算法matlab仿真

简介: 这是一个关于数字图像水印嵌入的算法介绍。使用MATLAB2022a,该算法基于DOTC,结合抖动和量化误差隐藏,确保水印的鲁棒性和隐蔽性。图像被分为N*N块,根据水印信号进行二值化处理,通过调整重建电平的奇偶性嵌入水印。水印提取是嵌入过程的逆操作,通过重建电平恢复隐藏的水印比特。提供的代码片段展示了从块处理、水印嵌入到噪声攻击模拟及水印提取的过程,还包括PSNR和NC的计算,用于评估水印在不同噪声水平下的性能。

1.算法运行效果图预览

1.jpeg
2.jpeg

噪声测试

3.jpeg
4.jpeg

旋转测试

5.jpeg
6.jpeg

压缩测试

7.jpeg
8.jpeg

2.算法运行软件版本
matlab2022a

3.算法理论概述
有序抖动块截断编码(Dithered Ordered Dithering with Truncation Coding, 简称DOTC)是一种在数字图像中嵌入水印信息的方法,该方法结合了抖动技术和量化误差隐藏原理,在保持视觉质量的同时,增强了水印的鲁棒性和隐蔽性。

步骤1,为增强系统鲁棒性和安全性,在水印嵌入前,先由秘钥key利用伪随机数发生器生成伪随机序列与水印图像进行异或计算以得到,调制水印序列Wd并嵌入宿主图像中。

Wd={Wd(ij)|Wd(i,j)=0或1,0<= i <=I1-1, 0<= j<=I2-1 }

步骤2,将原图像分为为N*N大小的无重叠块,对各子块采用ODBTC编码以实现分块区域内图像的二值化,并对重建电平做出如下处理。

1,若连续两个比特的嵌入水印信号为00,则将两重建电平u1,u2均量化为偶数。

2,若是连续两个比特的水印信号为01,则将重建电平u1量化为偶数,而将u2量化为奇数。

3,若连续两个比特的水印信号为为10,则将重建电平u1量化为奇数,而将u2量化为偶数。

4,若连续两个比特的水印信号为11,则将重建电平u1,u2均量化为奇数。

步骤3,用经步骤二处理后得到的重建电平,对原图像进行译码。

步骤4,不断重复步骤2和步骤3,直到原图像所有子块都已经被处理完或者水印信号嵌入完毕,即可得到含水印图像Lw。

(2),水印的提取。

水印的提取过程是水印嵌入的逆过程,具体描述如下。

输入:大小为大小为I1I2的含水印图像Lw,水印大小为w1w2,密钥key(伪随机数发生器种子)

输出:大小为w1*w2的水印图像。

步骤1,将待验证图像分为N*N大小的无重叠块,对各子块进行ODBTC编码,于是,根据重建电平的奇偶性即可恢复出各子块中隐藏的水印比特。

1,若重建电平的u1,u2为偶数,则提取出的水印信号00;

2,若重建电平的u1为偶数,u2为奇数,则提取出的水印信号为01;

3,若重建电平的u1为奇数,u2为偶数则提取出的水印信号为10;

4,若重建电平的u1,u2均为奇数,则提取出的水印信号为11。

步骤2,不断重复步骤1,直到图像中所有子块都处理完,或者水印信号已经提取完毕。恢复出对置乱水印序列Wd’。

步骤3,由密钥匙key对利用伪随机数发生器生成伪随机序列,对水印序列Wd’进行解调制,进而将原水印序列W’={W’(i,j)|W’(i,j)=0,1,0<= i<=m-1,0<= j<=m-1}

完成水印提取。

4.部分核心程序

for i=1:block_size:n
    for j=1:block_size:m
        temp=X1(i:i+block_size-1,j:j+block_size-1);
        Bmax=max(max(temp));   
        Bmin=min(min(temp));
        k=Bmax-Bmin;
        DAk=DA{block_size}.*(k/(block_size^2-1));
        Th=DAk+Bmin;
        Xbinary=(temp>=Th);        
        n1=ceil(i/block_size); 
        m1=ceil(j/block_size);
        low_high((n1-1)*(m/block_size)+m1,1)=Bmin;   
        low_high((n1-1)*(m/block_size)+m1,2)=Bmax;  
        binary(i:i+block_size-1,j:j+block_size-1)=Xbinary;
    end
end
%在编码后的位平面中嵌入水印信息
%设置嵌入强度
Power     = 80;  
%设置块的大小

RR        = 45;
CC        = 45;
Mwk_binary= func_insert(binary,Imark,Power,RR,CC);


%噪声攻击
Mwk_binary= uint8(awgn(double(Mwk_binary),NOISE(jj),'measured'));


[Imark,Mwk_binarys] = func_desert(Mwk_binary,RR,CC,4);

figure(1);
subplot(122);
imshow(Imark,[]);
title('提取水印');

binary = Mwk_binarys;
[n,m]  = size(binary);
[l,h]  = size(low_high);
gray   = zeros(n,m);
block_size =(n*m/l)^0.5;

Imark0=imresize(Imark0,[45,45]);
PSNR(jj) = func_psnr((Imark0),(Imark));
NC(jj)   = func_nc((Imark0),(Imark)) ;
end

figure;
plot(NOISE,PSNR,'b-o');
grid on
xlabel('noise');
ylabel('PSNR');

figure;
plot(NOISE,NC,'b-o');
grid on
xlabel('noise');
ylabel('NC');
相关文章
|
25天前
|
人工智能 算法 数据安全/隐私保护
基于遗传优化的SVD水印嵌入提取算法matlab仿真
该算法基于遗传优化的SVD水印嵌入与提取技术,通过遗传算法优化水印嵌入参数,提高水印的鲁棒性和隐蔽性。在MATLAB2022a环境下测试,展示了优化前后的性能对比及不同干扰下的水印提取效果。核心程序实现了SVD分解、遗传算法流程及其参数优化,有效提升了水印技术的应用价值。
|
3月前
|
算法 5G vr&ar
基于1bitDAC的MU-MIMO的非线性预编码算法matlab性能仿真
在现代无线通信中,1-bit DAC的非线性预编码技术应用于MU-MIMO系统,旨在降低成本与能耗。本文采用MATLAB 2022a版本,深入探讨此技术,并通过算法运行效果图展示性能。核心代码支持中文注释与操作指导。理论部分包括信号量化、符号最大化准则,并对比ZF、WF、MRT及ADMM等算法,揭示了在1-bit量化条件下如何优化预编码以提升系统性能。
|
3月前
|
算法
【Azure Developer】完成算法第4版书中,第一节基础编码中的数组函数 histogrm()
【Azure Developer】完成算法第4版书中,第一节基础编码中的数组函数 histogrm()
|
4月前
|
机器学习/深度学习 存储 算法
编码之舞:从算法到应用的探索之旅
在数字化时代的浪潮中,编程技术如同一种语言,连接着人类与机器。本文将带领读者踏上一场自数据结构基础至高级算法应用的探索旅程,通过实际案例分析,揭示算法在现代软件开发中的重要作用,并分享作者在编程实践中的心得体会,旨在为初学者和资深开发者提供有价值的参考与启示。
|
4月前
|
机器学习/深度学习 算法 计算机视觉
通过MATLAB分别对比二进制编码遗传优化算法和实数编码遗传优化算法
摘要: 使用MATLAB2022a对比了二进制编码与实数编码的遗传优化算法,关注最优适应度、平均适应度及运算效率。二进制编码适用于离散问题,解表示为二进制串;实数编码适用于连续问题,直接搜索连续空间。两种编码在初始化、适应度评估、选择、交叉和变异步骤类似,但实数编码可能需更复杂策略避免局部最优。选择编码方式取决于问题特性。
|
5月前
|
算法 数据可视化 网络安全
清华等高校推出首个开源大模型水印工具包MarkLLM,支持近10种最新水印算法
【6月更文挑战第27天】清华大学等高校发布了开源工具MarkLLM,这是首个专注于大语言模型水印的工具包,支持近10种先进算法。该工具统一了水印实现,便于比较和使用,旨在促进水印技术在保障信息真实性和网络安全上的应用。MarkLLM提供直观界面、可视化及自动化评估,推动了大模型水印研究的进步。[论文链接:](https://arxiv.org/abs/2405.10051)**
155 5
|
3月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
200 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
3月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
129 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
3月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
90 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
下一篇
无影云桌面