MATLAB数字水印系统

  • 课题介绍

本课题为基于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.mzph.cn/web/54125.shtml

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

相关文章

sysbench 命令:跨平台的基准测试工具

一、命令简介 sysbench 是一个跨平台的基准测试工具,用于评估系统性能,包括 CPU、内存、文件 I/O、数据库等性能。 ‍ 比较同类测试工具 bench.sh 在上文 bench.sh:Linux 服务器基准测试中介绍了 bench.sh 一键测试脚本,它对…

GAMES101(17~18节,物理材质模型)

材质 BRDF 材质:决定了光线与物体不同的作用方式 BRDF定义了物体材质,包含漫反射和镜面部分 BSDF (scattering散射) BRDF(reflect反射) BTDF 光线打击到物体上会向四面八方散射 反射 光线打击到物体上反射出去…

IIS开启后https访问出错net::ERR_CERT_INVALID

安装ArcGIS server和portal等,按照说明上,先开启iis,在安装server、datastore、portal、webadapter等,遇到一些问题: 问题1 访问http正常,访问https出错: 解决方案 从这里找到解决方案&…

【Android 源码分析】Activity生命周期之onPause

忽然有一天,我想要做一件事:去代码中去验证那些曾经被“灌输”的理论。                                                                                  – 服装…

通信工程学习:什么是CSMA/CA载波监听多路访问/冲突避免

CSMA/CA:载波监听多路访问/冲突避免 CSMA/CA(Carrier Sense Multiple Access/Collision Avoidance),即载波监听多路访问/冲突避免,是一种用于数据传输时避免各站点之间冲突的算法,尤其适用于无线局域网&…

2022年6月 Frontier 获得性能第一的论文翻译

为百万兆级加速架构做高性能 Linpack 优化 摘要 我们详细叙述了在 rocHPL 中做的性能优化,rocHPL 是 AMD 对 HPL 基准的开源实现,主要是针对节点进行优化的架构,是为百万兆级系统而设计的,比如:Frontier suppercomput…

深蕾半导体Astra™ SL1620详细介绍,嵌入式物联网处理器

一,SL1620是什么 Astra™ SL系列是深蕾半导体推出的高度集成的嵌入式物联网处理器SoC(System on Chip)系列产品,专为多模式消费者、企业和工业物联网工作负载而设计。SL1620是Astra™ SL系列中的一款成本和功耗优化的安全嵌入式So…

Windows 11 安装配置 Git 教程

目录 Git Windows 11 环境安装配置 Git Git Git是一个开源的分布式版本控制系统,由Linus Torvalds创建,用于有效、高速地处理从小到大的项目版本管理。Git是目前世界上最流行的版本控制系统,广泛应用于软件开发中。 以下是Git的一些关键特…

【C#】CacheManager:高效的 .NET 缓存管理库

在现代应用开发中,缓存是提升性能和降低数据库负载的重要技术手段。无论是 Web 应用、桌面应用还是移动应用,缓存都能够帮助减少重复的数据查询和处理,从而提高系统的响应速度。然而,管理缓存并不简单,尤其是当你需要处…

使用RestTemplate调用EMQX API查询MQTT客户端列表信息

项目中集成mqtt客户端查询功能,使用到了EMQX api-v5,具体步骤: 一、准备工作 首先在EMQX dashboard中添加API 密钥 填写密钥名称,点击确定,会生成API Key和Secret Key,保存起来备用。 二、配置文件 在…

AWS Network Firewall - IGW方式配置只应许白名单域名出入站

参考链接 https://repost.aws/zh-Hans/knowledge-center/network-firewall-configure-domain-ruleshttps://aws.amazon.com/cn/blogs/networking-and-content-delivery/deployment-models-for-aws-network-firewall/ 1. 创建防火墙 选择防火墙的归属子网(选择公有…

基于Hive和Hadoop的共享单车分析系统

本项目是一个基于大数据技术的共享单车分析系统,旨在为用户提供全面的单车使用信息和深入的出行行为分析。系统采用 Hadoop 平台进行大规模数据存储和处理,利用 MapReduce 进行数据分析和处理,通过 Sqoop 实现数据的导入导出,以 S…

【JavaEE】http/https 超级详解

🔥个人主页: 中草药 🔥专栏:【Java】登神长阶 史诗般的Java成神之路 🦊一.定义 HTTP(HyperText Transfer Protocol)即超文本传输协议,他是应用非常广泛的应用层协议,是…

C语言、Eazy_X——五子棋

//五子棋#include<graphics.h>#define board_size 20 #define pixel 600 int pr pixel / board_size; char board_data[board_size][board_size]; char current_piece o; int count 0;//检测指定玩家是否获胜 bool CheckWin(char c) {int i, j;//检查行for (i 0; i &…

线程池:线程池的实现 | 日志

&#x1f308;个人主页&#xff1a; 南桥几晴秋 &#x1f308;C专栏&#xff1a; 南桥谈C &#x1f308;C语言专栏&#xff1a; C语言学习系列 &#x1f308;Linux学习专栏&#xff1a; 南桥谈Linux &#x1f308;数据结构学习专栏&#xff1a; 数据结构杂谈 &#x1f308;数据…

数值计算的程序设计问题举例

### 数值计算的程序设计问题 #### 1. 结构静力分析计算 **涉及领域**&#xff1a;工程力学、建筑工程 **主要问题**&#xff1a;线性代数方程组&#xff08;Linear Algebraic Equations&#xff09; **解释说明**&#xff1a; 在结构静力分析中&#xff0c;我们需要解决复杂的…

C++:类中的特殊关键字,运算重载符

1.My_string类中重载以下的运算符&#xff1a; 、[] 、>、<、、>、<、&#xff01;、、输入输出(>>、<<) 主函数&#xff1a; #include <iostream> #include "my_string.h"using namespace std;int main() {My_string s1("cat…

基于SpringBoot+Vue的个人健康管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

【STM32-HAL库】自发电型风速传感器(使用STM32F407ZGT6)(附带工程下载链接)

一、自发电型风速传感器介绍 自发电型风速传感器&#xff0c;也称为风力发电型风速传感器或无源风速传感器&#xff0c;是一种不需要外部电源即可工作的风速测量设备。这种传感器通常利用风力来驱动内部的发电机构&#xff0c;从而产生电能来供电测量风速的传感器部分。以下是自…

GS-SLAM论文阅读笔记--GEVO

前言 这篇文章看着就让人好奇。众所周知&#xff0c;高斯是一个很不错的建图方法&#xff0c;但是本文的题目居然是只用高斯进行单目VO&#xff0c;咱也不知道这是怎么个流程&#xff0c;看了一下作者来自于MIT&#xff0c;说不定是个不错的工作&#xff0c;那就具体看看吧&am…