ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

【图像隐写】基于matlab GUI DWT+DCT+PBFO改进图像水印隐藏提取(含PSNR、NCC、IF)【含Matlab源码 081期】

【图像隐写】基于matlab GUI DWT+DCT+PBFO改进图像水印隐藏提取(含PSNR、NCC、IF)【含Matlab源码 081期】 欢迎来到海神之光博客之家✅博主简介热爱科研的Matlab仿真开发者修心和技术同步精进个人主页海神之光代码获取方式海神之光Matlab王者学习之路—代码获取方式⛳️座右铭行百里者半于九十。更多Matlab图像处理仿真内容点击①Matlab图像处理进阶版②付费专栏Matlab图像处理初级版⛳️关注CSDN海神之光更多资源等你来⛄一、DCT数字水印嵌入与提取简介1 基本DCT变换目前基于DCT域的水印方法已经成为数字水印算法研究的热点它的核心思想就是通过离散傅立叶变换对图像块进行处理后再选择变换域中的一些系数值依据一定规则来嵌入水印。由于图像块中DCT系数频带分布由左上角的直流分量DC往下对应的系数频率由低频升至高频因此在不影响原图质量的前提下可将水印信息根据能量大小嵌入相应系数频带中。通过图像块量化与水印嵌入结合的处理方法将水印信息均匀分布在图像的整个空间域在图像裁剪和滤波方面变换域的水印比在空间域的更能表现出一定的鲁棒性。2 水印算法描述2.1 水印嵌入算法该算法采用加性嵌入的方式在经过DCT变换后的子图像块的中频域中选取隐秘位置嵌入水印信息具体的嵌入流程如下图1所示图1 分块水印嵌入流程(1分块处理设宿主图像为P将其分块处理为8*8的K个子块。(2水印预处理设水印图像为W对其进行互补变换变换后的水印图像和变换前的水印图像相互补。(3对水印图像进行Arnold置乱变换并依据混沌映射规则选取密钥混沌序列并与水印序列异或运算将置换次数和异或运算处理后的结果分别作为水印嵌入算法的密钥1和密钥2。(4)DCT变换对各子块内做DCT变换利用zig-zag对DCT系数进行扫描得到第k块子图像块的序列为Zk(i),i0,1,2…63.(5水印嵌入算法依据zig-zag排序在各子块的中、低频段选取特定系数x(m和x(n在系数坐标a,b和c,d处嵌入水印信息图像W并将其作为密钥3。同理嵌入互补水印图片W’并将嵌入的位置作为密钥4。水印嵌入的方法如下(6)IDCT变换将每一个子图像块作二维DCT逆变换。(7子块合并将每一个子块合并成嵌入水印的图像P’。2.2 水印提取算法将嵌入水印的图像P’分块处理并对各子块进行二维DCT变换由密钥3和4推断所选择的水印系数若x(m≤x(n则水印信息为0若x(m)x(n则水印信息为1再利用密钥1和2将初步水印的信息解密再进行Arnold逆变换最终提取出水印信息。2.3 水印检测算法本文通过计算峰值信噪比PSNR的值评价嵌入水印的宿主图像的质量一幅m和n的图像PSNR度量标准定义为归一化相关系数NC的值判断嵌入水印的图像与宿主图像的相似度其定义为⛄二、部分源代码close all;clear all;clc;I imread(‘pepper.bmp’);J rgb2gray(I);K_1 fft2(J);L_1 abs(K_1/256);K_2 fftshift(K_1);L_2 abs(K_2/256);figure;subplot(2,2,1);imshow(I); title(‘原始图像’);subplot(2,2,2);imshow(J); title(‘灰度图像’);subplot(2,2,3);imshow(uint8(L_1)); title(‘灰度图像傅里叶频谱’);subplot(2,2,4);imshow(uint8(L_2)); title(‘平移后的频谱’);其运行结果如下图 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210110091339422.png?x-oss-processimage/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1RJUUNtYXRsYWI,size_16,color_FFFFFF,t_70) 图1 图像傅里叶变换例 2.2 离散余弦变换DCT 离散余弦变换(DCT)是一组不同频率和幅值的余弦函数和来近似一副图像实际上是傅里叶变换的实数部分。由于离散余弦变量对于一副图像其大部分可视化信息都集中在少数的变换系数上。因此离散余弦变量是数据压缩常用的一个变换编码方法它能将高相关数据能量集中使得它非常适用于图像压缩例如国际压缩标准的JPEG格式中就采用了离散余弦变换。 在傅立叶变换过程中如果被展开的函数是实偶函数那么其傅立叶变换中只包含余弦项基于傅立叶变换的这一特点人们提出了离散余弦变换。DCT变换先将图像函数变换成偶函数形式再对其进行二维离散傅立叶变换因此DCT变换可以看成是一种简化的傅立叶变换。离散余弦变换叶分为一维离散余弦变换和二维离散余弦变换在图像处理中用到二维变化所以介绍下其二维定义其他定义可查阅《数字图像处理》——冈萨雷斯。其二维离散余弦变换定义如下式 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210110091409907.png?x-oss-processimage/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1RJUUNtYXRsYWI,size_16,color_FFFFFF,t_70) c close all; clear all; clc; I imread (boats.bmp); J dct2(I); figure(Name,离散余弦变换); subplot(1,2,1); imshow(I); title(原始图像); subplot(1,2,2); imshow(log(abs(J))); title(离散余弦变换系数图像);其运行结果如下图2图2 离散余弦变换例2.3 小波变换DWT 小波变化是对傅里叶变换和短时傅里叶变换的一个突破其改变就在于将无限长的三角函数基换成了有限长的会衰减的小波。小波变化的理论较多更多内容可查阅《数字图像处理》——冈萨雷斯相关章节内容以下从一个叫简单的角度来解释小波变换。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210110091453628.png?x-oss-processimage/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1RJUUNtYXRsYWI,size_16,color_FFFFFF,t_70)表1 小波变换母小波function varargout manit1(varargin)% MANIT1 M-file for manit1.fig% MANIT1, by itself, creates a new MANIT1 or raises the existing% singleton*.%% H MANIT1 returns the handle to a new MANIT1 or the handle to% the existing singleton*.%% MANIT1(‘CALLBACK’,hObject,eventData,handles,…) calls the local% function named CALLBACK in MANIT1.M with the given input arguments.%% MANIT1(‘Property’,‘Value’,…) creates a new MANIT1 or raises the% existing singleton*. Starting from the left, property value pairs are% applied to the GUI before manit1_OpeningFcn gets called. An% unrecognized property name or invalid value makes property application% stop. All inputs are passed to manit1_OpeningFcn via varargin.%% *See GUI Options on GUIDE’s Tools menu. Choose “GUI allows only one% instance to run (singleton)”.%% See also: GUIDE, GUIDATA, GUIHANDLES% Edit the above text to modify the response to help manit1% Last Modified by GUIDE v2.5 14-Jun-2015 10:32:30% Begin initialization code - DO NOT EDITgui_Singleton 1;gui_State struct(‘gui_Name’, mfilename, …‘gui_Singleton’, gui_Singleton, …‘gui_OpeningFcn’, manit1_OpeningFcn, …‘gui_OutputFcn’, manit1_OutputFcn, …‘gui_LayoutFcn’, [] , …‘gui_Callback’, []);if nargin ischar(varargin{1})gui_State.gui_Callback str2func(varargin{1});endif nargout[varargout{1:nargout}] gui_mainfcn(gui_State, varargin{:});elsegui_mainfcn(gui_State, varargin{:});end% End initialization code - DO NOT EDIT% — Executes just before manit1 is made visible.function manit1_OpeningFcn(hObject, eventdata, handles, varargin)% This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% varargin command line arguments to manit1 (see VARARGIN)% Choose default command line output for manit1handles.output hObject;% Update handles structureguidata(hObject, handles);% UIWAIT makes manit1 wait for user response (see UIRESUME)% uiwait(handles.figure1);% — Outputs from this function are returned to the command line.function varargout manit1_OutputFcn(hObject, eventdata, handles)% varargout cell array for returning output args (see VARARGOUT);% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Get default command line output from handles structurevarargout{1} handles.output;% — Executes on button press in browsecoverimg.function browsecoverimg_Callback(hObject, eventdata, handles)% hObject handle to browsecoverimg (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)[filename, pathname] uigetfile({‘.jpg’;.bmp’;‘.gif’;.*’}, ‘Pick an Image File’);S imread([pathname,filename]);Simresize(S,[512,512]);axes(handles.axes1)imshow(S)title(‘Cover Image’)set(handles.text3,‘string’,filename)handles.SS;guidata(hObject,handles)% — Executes on button press in browsemsg.function browsemsg_Callback(hObject, eventdata, handles)% hObject handle to browsemsg (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)[filename, pathname] uigetfile({‘.bmp’;.jpg’;‘.gif’;.*’}, ‘Pick an Image File’);msg imread([pathname,filename]);axes(handles.axes2)imshow(msg)title(‘Input Message’)set(handles.text4,‘string’,filename)handles.msgmsg;guidata(hObject,handles)% — Executes on button press in DWT.function DWT_Callback(hObject, eventdata, handles)% hObject handle to DWT (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)messagehandles.msg;cover_objecthandles.S;k10;[watermrkd_img,PSNR,IF,NCC,recmessage]dwt(cover_object,message,k);axes(handles.axes3)imshow(watermrkd_img)title(‘Watermarked Image’)axes(handles.axes4)imshow(recmessage)title(‘Recovered Message’)a[PSNR,NCC,IF]‘;thandles.uitable1;set(t,‘Data’,a)handles.aa;guidata(hObject,handles)% — Executes on button press in DWTDCT.function DWTDCT_Callback(hObject, eventdata, handles)% hObject handle to DWTDCT (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)ahandles.a;messagehandles.msg;cover_objecthandles.S;k10;[watermrkd_img,recmessage,PSNR,IF,NCC1] dwtdct(cover_object,message,k);axes(handles.axes3)imshow(watermrkd_img)title(‘DWTDCT Watermarked Image’)axes(handles.axes4)imshow(recmessage)title(‘DWTDCT Recovered Message’)b[PSNR,NCC1,IF]’;thandles.uitable1;set(t,‘Data’,[a b])handles.bb;guidata(hObject,handles)% — Executes on button press in DWTDCTBFO.function DWTDCTBFO_Callback(hObject, eventdata, handles)% hObject handle to DWTDCTBFO (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)ahandles.a;bhandles.b;messagehandles.msg;cover_objecthandles.S;[watermrkd_img,recmessage,PSNR,IF,NCC,pbest] BG(cover_object,message);axes(handles.axes3)imshow(watermrkd_img)title(‘DWTDCTBFO Watermarked Image’)axes(handles.axes4)imshow(recmessage)title(‘DWTDCTBFO Recovered Message’)c[PSNR,NCC,IF]‘;thandles.uitable1;set(t,‘Data’,[a b c])handles.cc;guidata(hObject,handles)% — Executes on button press in pushbutton6.function pushbutton6_Callback(hObject, eventdata, handles)% hObject handle to pushbutton6 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)ahandles.a;bhandles.b;chandles.c;dhandles.d;PSNR[a(1),b(1),c(1),d(1) ];NCC[a(2),b(2),c(2),d(2)];IF[a(3),b(3),c(3),d(3)];figurebar(PSNR)set(gca,‘XTickLabel’,’ ‘);ylabel(‘PSNR’)text(1,0,‘DWT’,‘Rotation’,260,‘Fontsize’,8);text(2,0,‘DWTDCT’,‘Rotation’,260,‘Fontsize’,8);text(3,0,‘DWTDCTBFO’,‘Rotation’,260,‘Fontsize’,8);text(4,0,‘DWTDCTPBFO’,‘Rotation’,260,‘Fontsize’,8);[t]get(gca,‘position’);set(gca,‘position’,[t(1) 0.31 t(3) 0.65])title(‘Bar Graph Comparison of PSNR’)%%%%figurebar(NCC)set(gca,‘XTickLabel’,’ ‘);ylabel(‘NCC’)text(1,0,‘DWT’,‘Rotation’,260,‘Fontsize’,8);text(2,0,‘DWTDCT’,‘Rotation’,260,‘Fontsize’,8);text(3,0,‘DWTDCTBFO’,‘Rotation’,260,‘Fontsize’,8);text(4,0,‘DWTDCTPBFO’,‘Rotation’,260,‘Fontsize’,8);[t]get(gca,‘position’);set(gca,‘position’,[t(1) 0.31 t(3) 0.65])title(‘Bar Graph Comparison of NCC’)% — Executes on button press in DWTDCTPBFO.function DWTDCTPBFO_Callback(hObject, eventdata, handles)% hObject handle to DWTDCTPBFO (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)ahandles.a;bhandles.b;chandles.c;messagehandles.msg;cover_objecthandles.S;[watermrkd_img,recmessage,PSNR,IF,NCC,pbest] BG_PSO(cover_object,message);axes(handles.axes3)imshow(watermrkd_img)title(‘DWTDCTPBFO Watermarked Image’)axes(handles.axes4)imshow(recmessage)title(‘DWTDCTPBFO Recovered Message’)d[PSNR,NCC,IF]’;thandles.uitable1;set(t,‘Data’,[a b c d])handles.dd;guidata(hObject,handles)⛄三、运行结果⛄四、matlab版本及参考文献1 matlab版本2014a2 参考文献[1]万谊丹.基于Arnold和DCT的抗剪切攻击图像水印研究[J].网络安全技术与应用. 2021,(08)3 备注简介此部分摘自互联网仅供参考若侵权联系删除 仿真咨询1 各类智能优化算法改进及应用生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化2 机器学习和深度学习方面卷积神经网络CNN、LSTM、支持向量机SVM、最小二乘支持向量机LSSVM、极限学习机ELM、核极限学习机KELM、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断3 图像处理方面图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知4 路径规划方面旅行商问题TSP、车辆路径问题VRP、MVRP、CVRP、VRPTW等、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化5 无人机应用方面无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配6 无线传感器定位及布局方面传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化7 信号处理方面信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化8 电力系统方面微电网优化、无功优化、配电网重构、储能配置9 元胞自动机方面交通流 人群疏散 病毒扩散 晶体生长10 雷达方面卡尔曼滤波跟踪、航迹关联、航迹融合
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表