MATLAB数字水印系统

news2024/12/29 8:40:36
  • 课题介绍

本课题为基于MATLAB的小波变换dwt和离散余弦dct的多方法对比数字水印系统。带GUI交互界面。有一个主界面GUI,可以调用dwt方法的子界面和dct方法的子界面。流程包括,读取宿主图像和水印图像,嵌入,多种方法的攻击(剪切,加噪,旋转等),提取,最后利用psnr峰值信噪比进行评价不同攻击下,鲁棒性的好坏。

  • GUI界面
  • 源码
  1. 读取宿主图像

[name,path]=uigetfile({'*.bmp';'gif'},'载入图像');

    

        X=imread([path,name]);  %获取位置

        axes(handles.axes1);%axes表示获取位置,这里选取的位置为axes1;

                imshow(X); %显示图像

        save('X');  %保存变量

       guidata(hObject,handles) %更新结构体;

  1. 读取水印图像

[name,path]=uigetfile({'*.bmp';'gif'},'载入图像');

    

        W=imread([path,name]);  %获取位置

        axes(handles.axes2);%axes表示获取位置,这里选取的位置为axes1;

        W=rgb2gray(W)

        W=imresize(W,[64 64])

        imshow(W); %显示图像

        save('W');  %保存变量

       guidata(hObject,handles) %更新结构体;

  1. 嵌入

for i = 1:64    

    ref1(i)=mean(lowarray(:,i)); %对矩阵每列求均值

    ref2(i)=mean(lowarray(i,:)); %对矩阵每行求均值

    for j=1:64

        w(i,j,:)=int8(dec2bin(W(i,j),8))-48; %dec2bin将矩阵W的每个元素转换成二进制值,每个二进制长度为8

        result(i,j,1)=xor(w(i,j,1),(lowarray(i,j)>ref1(i)));

        result(i,j,2)=xor(w(i,j,2),(lowarray(i,j)>ref2(i)));        

    end

end

for i=1:4096

    ref3tmp=[XCsource(16381+4*i:16384+4*i)];%128*128=16384

    ref3(i)=mean(ref3tmp);

    ref4tmp=[XCsource(32765+4*i:32768+4*i)];%128*256=32768

    ref4(i)=mean(ref3tmp);

    ref5tmp=[XCsource(49149+4*i:49152+4*i)];%(128+64)*256=49152  or (128+256)*128=49152

    ref5(i)=mean(ref5tmp);

        ref6(i)=mean(ref6tmp);

    ref7tmp=[XCsource(131057+16*i:131072+16*i)];%256*512=131072

    ref7(i)=mean(ref7tmp);

    ref8tmp=[XCsource(196593+16*i:196608+16*i)];%(128+256)*512=196608

    ref8(i)=mean(ref8tmp);

end

  1. 攻击

if get(handles.radiobutton1,'value')

    option=1;

   q=num2str(get(handles.edit3,'string'))

       Z = imrotate(Z,q,'crop');%旋转 角度可以控制

elseif get(handles.radiobutton2,'value')

    option=2;

    q1=str2num(get(handles.edit4,'string'))

    q2=str2num(get(handles.edit6,'string'))

    q3=str2num(get(handles.edit7,'string'))

    q4=str2num(get(handles.edit8,'string'))  

        

    Z(q1:q2,q3:q4)=255;%剪切 区间和嵌入值可以控制

   

       

    

elseif get(handles.radiobutton3,'value')

    option=3;

    q=str2num(get(handles.edit5,'string'))

       Z=imnoise(Z,'gaussian',q);%加噪声 选择参数 help imnoise

   

    

elseif get(handles.radiobutton4,'value')

    option=4;

    Z=Z

end

axes(handles.axes4)

imshow(Z,[]);

  1. 提取

for i =1:64

    for j=1:64

        pick(i,j,3)=xor(std(i,j,3),(lowarray(i,j)>(alaph3*reref3(i,j))));

        pick(i,j,4)=xor(std(i,j,4),(lowarray(i,j)>(alaph4*reref4(i,j))));

        pick(i,j,5)=xor(std(i,j,5),(lowarray(i,j)>(alaph5*reref5(i,j))));

        pick(i,j,6)=xor(std(i,j,6),(lowarray(i,j)>(alaph6*reref6(i,j))));

        pick(i,j,7)=xor(std(i,j,7),(lowarray(i,j)>(alaph7*reref7(i,j))));

        pick(i,j,8)=xor(std(i,j,8),(lowarray(i,j)>(alaph8*reref8(i,j))));

    end

end

for i=1:64

    for j=1:64

        od=double(reshape(pick(i,j,:),1,8));

        dec(i,j)=bin2dec(char(od+48));

    end

end

  1. psnr计算

origImg = double(origImg);

distImg = double(distImg);

[M N] = size(origImg);

error = origImg - distImg;

MSE = sum(sum(error .* error)) / (M * N);

if(MSE > 0)

    PSNR = 10*log(255*255/MSE) / log(10);

else

    PSNR = 99;

end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2197629.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

九、4 串口接收(代码)

(1)在发送的基础上加上接收的部分 RX对应PA10,需要初始化PA10 (2)串口配置 如果使用查询,到这里就结束了,如果使用中断还需要在串口配置下面开启中断,配置NVIC (3&…

《深度学习》神经语言模型 Word2vec CBOW项目解析、npy/npz文件解析

目录 一、关于word2vec 1、什么是word2vec 2、常用训练算法 1)CBOW 2)SkipGram 二、关于npy、npz文件 1、npy文件 1)定义 2)特性 3)用途 4)保存及读取 运行结果: 运行结果&#xf…

使用.mdf及.ldf恢复SQL SERVER数据库

文章目录 [toc]1.使用.mdf和对应的.ldf文件恢复数据库1.1 将对应的.mdf和.ldf复制到SQL SERVER路径下1.2 打开SSMS 1.使用.mdf和对应的.ldf文件恢复数据库 1.1 将对应的.mdf和.ldf复制到SQL SERVER路径下 一般默认路径是:C:\Program Files\Microsoft SQL Server\MS…

【源码+文档】基于Java的新能源停车场管理系统的设计与实现

🚩如何选题? 如何选题、让题目的难度在可控范围,以及如何在选题过程以及整个毕设过程中如何与老师沟通,这些问题是需要大家在选题前需要考虑的,具体的方法我会在文末详细为你解答。 🚭如何快速熟悉一个项…

Pywinauto,一款 Win 自动化利器!

1.安装 pywinauto是一个用于自动化Python模块,适合Windows系统的软件(GUI),可以通过Pywinauto遍历窗口(对话框)和窗口里的控件,也可以控制鼠标和键盘输入,所以它能做的事情比之前介…

Python酷库之旅-第三方库Pandas(137)

目录 一、用法精讲 616、pandas.plotting.andrews_curves方法 616-1、语法 616-2、参数 616-3、功能 616-4、返回值 616-5、说明 616-6、用法 616-6-1、数据准备 616-6-2、代码示例 616-6-3、结果输出 617、pandas.plotting.autocorrelation_plot方法 617-1、语法…

机器学习篇-day03-线性回归-正规方程与梯度下降-模型评估-正则化解决模型拟合问题

一. 线性回归简介 定义 线性回归(Linear regression)是利用 回归方程(函数) 对 一个或多个自变量(特征值)和因变量(目标值)之间 关系进行建模的一种分析方式。 回归方程(函数) 一元线性回归: y kx b > wx b k: 斜率, 在机器学习中叫 权重(weight), 简称: w b: 截距, 在机…

Linux驱动学习——内核编译

1、从官网下载适合板子的Linux内核版本 选择什么版本的内核需要根据所使用的硬件平台而定,最好使用硬件厂商推荐使用的版本 https://www.kernel.org/pub/linux/kernel/ 2、将压缩包复制到Ubuntu内进行解压 sudo tar -xvf linux-2.6.32.2-mini2440-20150709.tgz 然…

【C++ 11】nullptr 空指针

文章目录 【 0. 问题背景 】0.1 野指针和悬空指针0.2 传统空指针 NULL0.3 传统空指针的局限性 【 1. 基本用法 】【 2. nullptr 的应用 】2.1 nullptr 解决 NULL 的遗留BUG2.2 简单实例 【 0. 问题背景 】 0.1 野指针和悬空指针 总结 野指针悬空指针产生原因指针变量未被初始…

绕过中间商,不用 input 标签也能搞定文件选择

💰 点进来就是赚到知识点!本文带你用 JS 实现文件选择功能,点赞、收藏、评论更能促进消化吸收! 🚀 想解锁更多 Web 文件系统技能吗?快来订阅专栏「Web 玩转文件操作」! 📣 我是 Jax,…

【机器学习】线性回归算法简介 及 数学实现方法

线性回归 简介 利用 回归方程(函数) 对 一个或多个自变量(特征值)和因变量(目标值)之间 关系进行建模的一种分析方式。 数学公式: ℎ_(w) w_1x_1 w_2x_2 w_3x_3 … b w^Txb 概念 ​ 利用回归方程(函数) 对 一个或多个自变量(特征值)和因变量(目标值)之间 关…

易基因: cfMeDIP-seq揭示cfDNA甲基化高效区分原发性和转移性前列腺|Nat Commun

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 前列腺癌(Prostate cancer,PCa)是男性中第二常见的恶性肿瘤,也是全球癌症相关死亡的第三大原因。虽然大多数原发性前列腺癌可以治愈&#…

交易所开发:构建安全、高效、可靠的数字资产交易平台

数字资产交易平台是加密市场中连接用户与数字货币的重要枢纽。开发一个安全、高效、可靠的交易所,不仅需要综合考虑技术架构、安全策略、用户体验等方面,还需严格遵循法规要求以确保合规性。本文总结了交易所开发的关键要素,包括其类型、核心…

振弦式土体沉降计有哪些功能特点

振弦式土体沉降计是一种广泛应用于土木工程领域的测量仪器,用于监测土石坝、边坡、地基等构筑物的沉降变形。以下是南京峟思给大家介绍的振弦式土体沉降计的主要优点: 高精度测量: 振弦式土体沉降计采用先-进的感应技术,能够精确地…

一个月学会Java 第5天 控制结构

Day5 控制结构 这么叫可能有些就算有基础的人也看不懂,其实就是if-else、switch-case、for、while、do-while这几个,没基础的听到了这个也不要慌张,这几个是程序的基础,多多训练就好 第一章 顺序结构 这章其实没有什么好讲的&…

Python 工具库每日推荐【openpyxl 】

文章目录 引言Python Excel 处理库的重要性今日推荐:openpyxl 工具库主要功能:使用场景:安装与配置快速上手示例代码代码解释实际应用案例案例:自动生成月度销售报告案例分析高级特性条件格式数据验证扩展阅读与资源优缺点分析优点:缺点:总结【 已更新完 TypeScript 设计…

2024 Mysql基础与进阶操作系列之MySQL触发器详解(20)作者——LJS[你个小黑子这都还学不会嘛?你是真爱粉嘛?真是的 ~;以后请别侮辱我家鸽鸽]

欢迎各位彦祖与热巴畅游本人专栏与博客 你的三连是我最大的动力 以下图片仅代表专栏特色 [点击箭头指向的专栏名即可闪现] 专栏跑道一 ➡️ MYSQL REDIS Advance operation 专栏跑道二➡️ 24 Network Security -LJS ​ ​ ​ 专栏跑道三 ➡️HCIP;H3C-SE;CCIP——…

不容错过的10款文件加密软件,2024顶尖办公文件加密软件分享

随着数据隐私和信息安全越来越受到重视,文件加密已经成为保护个人和企业机密信息的必备工具。无论是敏感的个人文件、财务报表、商业机密,还是政府机密信息,都需要高效的加密工具来确保信息安全不被未经授权的人访问。在2024年,我…

盘点2024年4款打工人都在用的PDF软件。

PDF 软件在现代的办公或者是学习当中的应用非常广泛,已经成了很多人的必备工具。因为PDF 文件具有跨设备、跨系统的优势,所以在很多设备上都可以打开浏览。如果有了PDF 编辑软件,查看,编辑,分享也会变得更加方便简单&a…

web自动化测试基础(从配置环境到自动化实现登录测试用例的执行,vscode如何导入自己的python包)

接下来的一段时间里我会和大家分享自动化测试相关的一些知识希望大家可以多多支持,一起进步。 一、环境的配置 前提安装好了python解释器并配好了环境,并安装好了VScode 下载的浏览器和浏览器驱动需要一样的版本号(只看大版本)。 1、安装浏览器 Chro…