首页 > 其他分享 >MATLAB数字水印系统

MATLAB数字水印系统

时间:2024-10-01 09:19:14浏览次数:8  
标签:end get lowarray 系统 handles 64 MATLAB 数字水印 mean

  • 课题介绍

本课题为基于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

标签:end,get,lowarray,系统,handles,64,MATLAB,数字水印,mean
From: https://blog.csdn.net/2401_86539719/article/details/142667818

相关文章

  • 【独家首发】鲸鱼算法WOA优化Transformer-LSTM负荷数据回归预测【含Matlab源码 6386期
    ......
  • 未系安全带识别系统
    未系安全带识别监测系统通过智能视频分析技术,未系安全带识别系统对工地/工厂监控画面中高空作业人员未系安全带行为进行监测,不需人为干预未系安全带识别系统监测到作业人员未穿戴安全带时,立即通知后台人员及时处理触发报警,避免发生其他意外情况。未系安全带识别系统除了识别高空作......
  • 人员聚众监控视频分析检测系统
    人员聚众监控视频分析检测系统通过深度视觉智能分析技术,人员聚众监控视频分析检测系统对现场监控画面中选定区域实时监测,人员聚众监控视频分析检测系统检测到现场画面中人员异常聚众时,不需人为干预提醒后台值班人员及时去处理、避免发生更大的不可控的局面。人员聚众监控视频分析......
  • 占道经营监测识别系统 出店摆摊识别预警系统
    占道经营监测识别系统出店摆摊识别预警系统对城市道路进行实时监测,当占道经营监测识别系统出店摆摊识别预警系统监测到流动商贩占道经营或者出店摆摊行为时,无需人为干预占道经营监测识别系统出店摆摊识别预警系统立即告警并推送给后台管理人员通知值班人员及时制止。占道经营监......
  • 河道采砂实时监测系统
    河道采砂实时监测系统通过opencv网络模型技术,河道采砂实时监测系统能够对河道两岸非法采砂船进行7*24小时自动检测识别,河道采砂实时监测系统发现违规采砂行为(采砂船),不需人为干预自动告警同步回传给后台通知后台值班人员及时制止。河道采砂实时监测系统通过AI技术手段,帮助水利部门......
  • 学校食堂互联网明厨亮灶智能监控系统
    学校食堂互联网明厨亮灶智能监控系统通过AI识别分析技术,学校食堂互联网明厨亮灶智能监控系统对学校食堂餐厅监控画面开展实时检测,学校食堂互联网明厨亮灶智能监控系统对后厨厨师没有按照餐厅要求佩戴厨师帽厨师服口罩,更有甚者在厨房违规抽烟以及玩手机等行为,学校食堂互联网明厨亮......
  • 垃圾桶溢出识别监测系统
    垃圾桶溢出识别监测系统通过计算机视觉技术,垃圾桶溢出识别监测系统对社区街道垃圾桶里面垃圾溢出满载现象进行自动识别,垃圾桶溢出识别监测系统监测到社区或者街道垃圾桶里面垃圾溢出时,不需人为干预可以立即告警提醒后台值班人员及时清理。垃圾桶溢出识别监测系统通过AI视频分析技......
  • 河道水位识别系统
    河道水位识别系统采用视频智能分析功能,河道水位识别系统利用前端摄像头实时获取前端视频视频后,自动识别水尺位置,并在水尺区域将水尺进行数字分割,河道水位识别系统然后再通过水位线的位置,通过AI图像识别技术将数字与水位线位置结合对别,即可识别出水尺读数。河道水位识别系统这种河......
  • Java中的推荐系统算法:协同过滤与基于内容的比较
    Java中的推荐系统算法:协同过滤与基于内容的比较大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们来讨论Java中的推荐系统算法,特别是协同过滤与基于内容的推荐算法之间的比较。这两类推荐系统算法在实际应用中都非常常见,理解它们的工作原理和......
  • 掌握RocketMQ消息中间件——基本概念和系统架构篇
    简述RcoketMQ概念:RocketMQ是一个开源的分布式消息中间件,由阿里巴巴开发并贡献给Apache软件基金会。它用于处理高吞吐量、低延迟的消息传递,并广泛应用于现代分布式系统中。1 基本概念1.1消息 (Message)    概念:消息是信息传递的物理载体,生产和消费数据的最小单位,......