首页 > 编程语言 >基于DCT变换和位平面分解的数字水印嵌入提取算法matlab仿真

基于DCT变换和位平面分解的数字水印嵌入提取算法matlab仿真

时间:2024-05-30 21:33:33浏览次数:14  
标签:算法 matlab 数字水印 平面 DCT block size

1.算法运行效果图预览

 

 

 

 

2.算法运行软件版本

matlab2022a

 

3.算法理论概述

     基于离散余弦变换(Discrete Cosine Transform, DCT)和位平面分解(Bit-Plane Decomposition)的数字水印嵌入与提取算法,是一种结合了频域与空域特性的稳健数字水印技术。该方法利用DCT变换将图像信号转换到频域,以利于在视觉重要性较低的频率系数中嵌入水印信息;同时,通过位平面分解,可以精细地控制水印嵌入的强度和鲁棒性,保证水印在图像处理操作下的存活率。

 

3.1 离散余弦变换(DCT)

       DCT是将图像从空间域转换到频率域的一种变换方法,常用于图像压缩和数字水印领域。对于一个N×N的图像块X,其二维DCT可表示为:

 

 

 

3.2 位平面分解

        位平面分解是将图像的每个像素值按照二进制位分解成多个位平面,第i位平面包含了所有像素值的第i位。对于8位灰度图像,共有8个位平面,最低有效位(LSB)对应第0位平面,最高有效位(MSB)对应第7位平面。

 

3.3 数字水印嵌入算法

 

 

 

3.4 数字水印提取算法

 

 

 

 

4.部分核心程序

[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;
 
for i=1:block_size:n
    for j=1:block_size:m
        n1=ceil(i/block_size); 
        m1=ceil(j/block_size);
        a=low_high((n1-1)*(m/block_size)+m1,1);   
        b=low_high((n1-1)*(m/block_size)+m1,2);
        
        temp=binary(i:i+block_size-1,j:j+block_size-1);
        temp1=temp;        
               
        dix= temp==0;
        temp1(dix)=a;
        dix=find(temp==1);
        temp1(dix)=b;
        
        gray(i:i+block_size-1,j:j+block_size-1)=temp1;
    end
end
subplot(121);
imshow(uint8(gray));
 
 
%提取水印的性能分析
Imark0 = imread('1.bmp');
 
 
Imark0=imresize(Imark0,[64,64]);
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');

  

标签:算法,matlab,数字水印,平面,DCT,block,size
From: https://www.cnblogs.com/matlabworld/p/18223276

相关文章

  • 人工智能在脉搏分析中的matlab应用实例和代码
    当涉及到人工智能在脉搏分析中的MATLAB应用实例和代码时,我们可以考虑使用简单的机器学习算法(如支持向量机或随机森林)来分类脉搏信号,或者使用深度学习算法(如卷积神经网络或长短时记忆网络)来检测异常或预测未来的脉搏模式。以下是一个简化的MATLAB代码示例,展示了如何使用机器学......
  • 基于 MATLAB 的麻雀算法 (SSA) 优化注意力机制卷积神经网络结合门控循环单元 (SSA-Att
    鱼弦:公众号【红尘灯塔】,CSDN博客专家、内容合伙人、新星导师、全栈领域优质创作者、51CTO(Top红人+专家博主)、github开源爱好者(go-zero源码二次开发、游戏后端架构https://github.com/Peakchen)基于MATLAB的麻雀算法(SSA)优化注意力机制卷积神经网络结合门控循环单元......
  • 基于Matlab高斯滑动窗口滤波器
    欢迎大家点赞、收藏、关注、评论啦,由于篇幅有限,只展示了部分核心代码。文章目录一项目简介二、功能三、系统四.总结一项目简介  一、项目背景与意义在数字图像处理中,图像滤波是一项基本且重要的技术,用于去除图像中的噪声、增强图像的某些特征或改善图像的......
  • 基于Matlab OMP和KSVD算法的彩色图像修复
    欢迎大家点赞、收藏、关注、评论啦,由于篇幅有限,只展示了部分核心代码。文章目录一项目简介二、功能三、系统四.总结一项目简介  一、项目背景与意义在数字图像处理领域,图像修复技术一直是一个重要的研究方向。彩色图像修复旨在恢复图像中由于各种原因(如划......
  • m基于Qlearning强化学习工具箱的网格地图路径规划和避障matlab仿真
    1.算法仿真效果matlab2022a仿真结果如下:   2.算法涉及理论知识概要       Q-Learning是强化学习中的一种重要算法,它属于无模型(model-free)学习方法,能够使智能体在未知环境中学习最优策略,无需环境的具体模型。将Q-Learning应用于路线规划和避障策略中,智能体(如机......
  • 基于二维CS-SCHT变换和扩频方法的彩色图像水印嵌入和提取算法matlab仿真
    1.算法运行效果图预览   2.算法运行软件版本matlab2022a 3.算法理论概述水印嵌入原理   水印提取原理: 将嵌入水印的图像再次进行二维CS-SCHT变换。 提取变换后的低频系数,并按照嵌入时的规则去除宿主图像内容的影响,恢复出水印信息Wm′​。  ......
  • 多A*算法路径规划(附MATLAB代码)
     A*算法介绍A*算法是一种常用的寻路算法,被广泛应用于人工智能和游戏开发中。该算法通过评估每个节点的代价和启发式函数来找到最佳路径。在这篇博文中,我们将深入探讨A*算法的原理。A*算法的核心思想是在搜索过程中综合考虑两个因素:已经花费的代价和还需要花费的代价。具体而......
  • PSO算法路径规划(附MATLAB代码)
    粒子群优化(PSO)算法一种启发式优化算法,灵感来源于鸟群或鱼群等群体智能行为的模拟。PSO算法最早由Kennedy和Eberhart于1995年提出,通常用于解决搜索空间连续、高维的优化问题。PSO算法模拟了鸟群中鸟类搜索食物的行为。在PSO算法中,候选解称为粒子,每个粒子通过搜索空间中移动来......
  • 【KELM回归预测】基于麻雀算法优化核极限学习SSA-KELM-Adaboost实现风电回归预测附mat
    以下是使用麻雀算法优化核极限学习机(SSA-KELM)和Adaboost算法实现风电回归预测的MATLAB代码示例:matlab复制%导入风电数据load(‘wind_data.mat’);%假设数据存储在wind_data.mat文件中X=wind_data(:,1:end-1);%输入特征Y=wind_data(:,end);%输出标签%数......
  • 5.29 matlab
    %定义目标函数f=@(x)(x(1)+10*2)^2+5*(x(3)-x(4))^2+(x(2)-2*x(3))^4+10*(x(1)-x(4))^4;%初始值和终止准则x0_list=[-2,2,-3,3;-3,-1.5,0.5,-1.5];%确保每个初始点有四个元素tol=1e-5;%梯度和海森矩阵函数(这里仅为示例,需要您根据实际情......