基于MATLAB的数字水印技术实现
3.1 图像数字水印的技术方案
在数据库中存储在国际互联网上传输的水印图像一般会被压缩,有时达到很高的压缩比。因此,数字水印算法所面临的第一个考验就是压缩。JPEG和EZW(Embedded Zero-Tree Wavelet)压缩是最常见的两种压缩方法。JPEG是基于离散余弦变换域的压缩方法,而EZW是基于小波变换域的压缩方法。前人的研究证明采用与压缩算法相同的变换域水印方法,对于压缩的稳健性较强。因此,我研究图像文件水印算法主要集中在变换域算法及利用人眼视觉特性上。
数字水印的嵌入要求即要考虑视觉透明性,又要保证嵌入水印后图像的稳健性,这两个方面存在着矛盾。保证视觉透明性,就要将水印嵌入到人眼不敏感区,也就是嵌入到图像的高频分量中。而多数图像处理方法对于图像高频部分的损坏程度较高,如有损压缩、高频滤波等。水印很容易在经历图像处理的过程中丢失。这样,则无法保证图像数字水印的稳健性。如果要获得很好的稳健性,数字水印应加在人眼敏感的低频部分,图像的大部分能量集中在低频部分,如果对于低频部分进行处理,水印固然会失去,而图像也没有了利用价值,然而,水印的嵌入会对图像的质量有非常大的影响,这又无法保证视觉透明性。
数字水印算法的实现基本分为三个部分:宿主图像的变换,水印的嵌入和水印的检测,分别描述如下。
3.2 基于DCT域的图像数字水印技术
离散余弦变换(Discrete Cosine Transform)属于正交变换图像编码方法中的一种。正交变换图像编码始于1968年。当时安德鲁斯(Andrews)等人发现大多数自然图像的高频分量相对幅度较低,可完全舍弃或者只用少数码字编码,提出不对图像本身编码,只对其二维傅立叶(DFT)系数进行编码和传输。但DFT是一种正交变换,运算量很大,常常使实时处理发生困难,第二年他们就用Walsh-Hadamard变换(WHT)取代DFT可以使运算量明显减少,这是因为WHT变换只有加减法而无需乘法。但是更有意义的是离散余弦变换和离散正旋变换的出现,它们具有快速算法,精确度高。其中最重要的是1974年提出的DCT,因为其变换矩阵的基向量很近似于托伯利兹矩阵的特征向量,而托伯利兹矩阵又体现了人类语言及图像信号的相关性。因此,DCT常常被认为是语音与图像信号变换的准最佳变换。
图像是二维的,所以在研究时主要用到二维DCT,以及二维IDCT来对图像进行处理。
3.2.1 离散余弦变换(DCT)的定义
3.2.2 离散余弦变换的特点
在基于DCT的变换编码中,图像是先经分块(8×8或16×16)后再经DCT,这种变换是局部的,只反映了图像某一部分的信息。当然也可以对整幅图像的特点,但是运算速度比分块DCT要慢。图像经DCT后,得到的DCT图像有三个特点:
一是系数值全部集中到0值附近(从直方图统计的意义上),动态范围很小,这说明用较小的量化比特数即可表示DCT系数;
二是DCT变换后图像能量集中在图像的低频部分,即DCT图像中不为零的系数大部分集中在一起(左上角),因此编码效率很高。
三是没有保留原图像块的精细结构,从中反映不了原图像块的边缘、轮廓等信息,这一特点是由DCT缺乏时局域性造成的。
3.2.3 离散余弦变换的数字水印算法
根据离散余弦变换后的参数性质,本文采用了以ZigZag方式重排变换域系数的方法,选出中频分量,用数字水印序列对其进行非线性调制。水印检测时,待检测图像仍按比方式选择变换域系数,与待水印进行相关运算,与阈值比较来判断是否所含水印。
离散余弦域的数字水印算法的具体实现分为三步:宿主图像的变换,数字水印的嵌入,数字水印的检测。
3.2.3.1 宿主图像的DCT变换
3.2.3.2 数字水印的嵌入
3.2.3.3 数字水印的检测
3.3 MATLAB工具简介
3.3.1. 简介
Matlab是当前在国内外十分流行的工程设计和系统仿真软件包。它是MathWorks公司于1982年推出的一套高性能的数值计算和可视化软件,它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一人方便的、界面友好的用户环境。
Matlab的推出得到了各个领域专家、学者的广泛关注,其强大的扩展功能为各个领域的应用提供了基础。由各个专家学者相继推出了MATLAB工具箱,其中的信号处理(signal processing)、控制系统(control system)、神经网络(neural network)、图像处理(image processing)、鲁棒控制(robust control)、非线性系统控制设计(nonlinear system control design)、系统辨识(system identification)、最优化(optimization)、模糊逻辑(fuzzy logic)、小波(wavelet)、通信(communication)、统计(statistics)等工具箱,这些工具箱给各个领域的研究和工程应用提供了有力的工具,借助于这些“巨人肩上的工具”,各个层次的研究人员可直观、方便地进行分析、计算及设计工作,从而大大地节省了时间。
3.3.2. MATLAB研究数字水印的优点
- 集成了DCT、DWT等函数有丰富的小波函数和处理函数,这不仅方便了研究人员,而且使源程序简洁明了、易实现。
- 强大的数学运算功能。能够方便、高效地实现音频、视频中的大量矩阵运算。
- 提供了图像处理工具箱、小波分析工具箱、数字信号处理工具箱。用来编制跨数字图像处理技术、数字信号处理等多学科的数字水印技术是非常好的选择。
- MATLAB与目前最强大的编程工具——Visual C++具有良好的接口。
3.3.3. MATLAB函数介绍
第四章: 图像数字水印技术的实现
③ 水印全过程(经剪切检测水印)
%水印加入程序
Q=input('请输入放缩因子的值(建议小于1):Q=')
subplot(3,3,1)
RGB=imread('MM','jpg');
imshow(RGB);
title('原始图像');
subplot(3,3,2)
imshow(RGB(:,:,3));
title('B分量');
subplot(3,3,3)
N=dct2(RGB(:,:,3));
imshow(log(abs(N)),[]),colorbar;
title('B分量能量分布');
subplot(3,3,4)
I=imread('lena1','bmp');
imshow(I);
title('灰度水印图像');
subplot(3,3,5)
M=dct2(I);
imshow(log(abs(M)),[]),colorbar;
title('水印能量分布');
subplot(3,3,7)
J(465:800,365:600)=0;
J=rot90(J);
J=rot90(J);
N=N+Q*J;
K=idct2(N);
RGB(:,:,3)=K;
imshow(RGB);
title('加入水印后图像');
subplot(3,3,8)
I=imcrop(RGB,[1 1 598 798]);
imshow(I);
subplot(3,3,9)
%水印提取程序
subplot(3,3,6)
RGB1=imread('MM','jpg');
J=RGB1(:,:,3);
X=J(1:799,1:599);
N=dct2(I(:,:,3));
M=dct2(X);
M=(N-M)/Q;
B=idct2(M(337:464,237:364));
Y=mat2gray(B);
imshow(Y);
title('经放缩后提取的水印图像')
运行结果:
4.2 图像水印的dwt算法
%以下是水印提取算法
clear all;
clc;%保存时间
start_time=cputime;
figure(1);%读出原始图像
subplot(1,2,1);
input=imread('2.jpg');
imshow(input);
title('原始图像');%读出水印图像
subplot(1,2,2);
watermarked_image=imread('watermarked.bmp');
imshow(watermarked_image,[]);
title('水印图像');%三色分离
input=double(input);
watermarked_image=double(watermarked_image);
inputr=input(:,:,1);
watermarked_imager=watermarked_image(:,:,1);
inputg=input(:,:,2);
watermarked_imageg=watermarked_image(:,:,2);%水印图像R的分解
[Cwr,Swr]=WAVEDEC2(watermarked_imager,2,'haar');%图像R的分解
[Cr,Sr]=WAVEDEC2(inputr,2,'haar');%水印图像G的分解
[Cwg,Swg]=WAVEDEC2(watermarked_imageg,2,'haar');%图像R的分解
[Cg,Sg]=WAVEDEC2(inputg,2,'haar');%水印图像B的分解
[Cwb,Swb]=WAVEDEC2(watermarked_imageb,2,'haar');%图像B的分解
[Cb,Sb]=WAVEDEC2(inputb,2,'haar');%提取水印小波系数
%提取水印R的小波系数
r=0.06;
for k=0:3whr(k+1,:)=Cwr(1+size(Cwr,2)/4+k*size(Cwr,2)/16:...size(Cwr,2)/4+(k+1)*size(Cwr,2)/16)-...Cr(1+size(Cr,2)/4+k*size(Cr,2)/16:...size(Cr,2)/4+(k+1)*size(Cr,2)/16);wvr(k+1,:)=Cwr(1+size(Cwr,2)/2+k*size(Cwr,2)/16:...size(Cwr,2)/2+(k+1)*size(Cwr,2)/16)-...Cr(1+size(Cr,2)/2+k*size(Cr,2)/16:...size(Cr,2)/2+(k+1)*size(Cr,2)/16);wdr(k+1,:)=Cwr(1+3*size(Cwr,2)/4+k*size(Cwr,2)/16:...3*size(Cwr,2)/4+(k+1)*size(Cwr,2)/16)-...Cr(1+3*size(Cr,2)/4+k*size(Cr,2)/16:...3*size(Cr,2)/4+(k+1)*size(Cr,2)/16);
end
whr=(whr(1,:)+whr(2,:)+whr(3,:)+whr(4,:))/(4*r);
wvr=(wvr(1,:)+wvr(2,:)+wvr(3,:)+wvr(4,:))/(4*r);
wdr=(wdr(1,:)+wdr(2,:)+wdr(3,:)+wdr(4,:))/(4*r);%提取水印小波系数
%提取水印G的小波系数
g=0.03;
for k=0:3whg(k+1,:)=Cwg(1+size(Cwg,2)/4+k*size(Cwg,2)/16:...size(Cwg,2)/4+(k+1)*size(Cwg,2)/16)-...Cg(1+size(Cg,2)/4+k*size(Cg,2)/16:...size(Cg,2)/4+(k+1)*size(Cg,2)/16);wvg(k+1,:)=Cwg(1+size(Cwg,2)/2+k*size(Cwg,2)/16:...size(Cwg,2)/2+(k+1)*size(Cwg,2)/16)-...Cg(1+size(Cg,2)/2+k*size(Cg,2)/16:...size(Cg,2)/2+(k+1)*size(Cg,2)/16);wdg(k+1,:)=Cwg(1+3*size(Cwg,2)/4+k*size(Cwg,2)/16:...3*size(Cwg,2)/4+(k+1)*size(Cwg,2)/16)-...Cg(1+3*size(Cg,2)/4+k*size(Cg,2)/16:...3*size(Cg,2)/4+(k+1)*size(Cg,2)/16);
end
whg=(whg(1,:)+whg(2,:)+whg(3,:)+whg(4,:))/(4*g);
wvg=(wvg(1,:)+wvg(2,:)+wvg(3,:)+wvg(4,:))/(4*g);
wdg=(wdg(1,:)+wdg(2,:)+wdg(3,:)+wdg(4))/(4*g);%提取水印小波系数
%提取水印B的小波系数
b=0.12;
for k=0:3whb(k+1,:)=Cwb(1+size(Cwb,2)/4+k*size(Cwb,2)/16:...size(Cwb,2)/4+(k+1)*size(Cwb,2)/16)-...Cb(1+size(Cb,2)/4+k*size(Cb,2)/16:...size(Cb,2)/4+(k+1)*size(Cb,2)/16);wvb(k+1,:)=Cwb(1+size(Cwb,2)/2+k*size(Cwb,2)/16:...size(Cwb,2)/2+(k+1)*size(Cwb,2)/16)-...Cb(1+size(Cb,2)/2+k*size(Cb,2)/16:...size(Cb,2)/2+(k+1)*size(Cb,2)/16);wdb(k+1,:)=Cwb(1+3*size(Cwb,2)/4+k*size(Cwb,2)/16:...3*size(Cwb,2)/4+(k+1)*size(Cwb,2)/16)-...Cb(1+3*size(Cb,2)/4+k*size(Cb,2)/16:...3*size(Cb,2)/4+(k+1)*size(Cb,2)/16);
end
whb=(whb(1,:)+whb(2,:)+whb(3,:)+whb(4,:))/(4*b);
wvb=(wvb(1,:)+wvb(2,:)+wvb(3,:)+wvb(4,:))/(4*b);
wdb=(wdb(1,:)+wdb(2,:)+wdb(3,:)+wdb(4,:))/(4*b);
wab=(Cwb(1:size(Cwb,2)/16)-Cb(1:size(Cb,2)/16))/b;%重构水印图像
cwr=[war,whr,wvr,wdr];
swr(:,1)=[sqrt(size(war,2)),sqrt(size(war,2)),2*sqrt(size(war,2))];
swr(:,2)=[sqrt(size(war,2)),sqrt(size(war,2)),2*sqrt(size(war,2))];
wr = waverec2(cwr,swr,'haar');cwg=[wag,whg,wvg,wdg];
swg(:,1)=[sqrt(size(wag,2)),sqrt(size(wag,2)),2*sqrt(size(wag,2))];
swg(:,2)=[sqrt(size(wag,2)),sqrt(size(wag,2)),2*sqrt(size(wag,2))];
wg=waverec2(cwg,swg,'haar');cwb=[wab,whb,wvb,wdb];
swb(:,1)=[sqrt(size(wab,2)),sqrt(size(wab,2)),2*sqrt(size(wab,2))];
swb(:,2)=[sqrt(size(wab,2)),sqrt(size(wab,2)),2*sqrt(size(wab,2))];
wb=waverec2(cwb,swb,'haar');%将R,G,B叠加
temp=size(wr);pic=zeros(temp(1),temp(2),3);for i=1:temp(1);for j=1:temp(2);pic(i,j,1)=wr(i,j);pic(i,j,2)=wg(i,j);pic(i,j,3)=wb(i,j);endend
output=uint8(round(pic));%转化为uint8
watermark_image_uint8=uint8(output);
imwrite(watermark_image_uint8,'watermark.bmp','bmp');
figure(2);
imshow(watermark_image_uint8);
title('提取出的水印');
基于MATLAB的数字水印技术实现相关推荐
- 基于matlab的数字水印技术研究,MATLAB在数字水印技术研究中的应用
MATLAB在数字水印技术研究中的应用 随着网络技术和数字技术的发展,数字水印技术在版权保护.数据鉴别.数字产品认证等领域有着广泛的应用前景.因而数字水印日益成为一个非常活跃 (本文共4页) 阅读全文 ...
- 基于Matlab的数字水印技术研究
摘要: ----- 数字水印技术作为数字媒体版权保护的有效办法,近年来在国内外引起了人们极大的兴趣.但是由于数字水印技术涉及到的知识面比较广,即使是专业人员有时也感到力不从心,那么如何选择一种有效的编 ...
- 基于MATLAB的数字水印技术【多方法对比,评价指标】
一.课题介绍 本课题为基于MATLAB的小波变换dwt和离散余弦dct的多方法对比数字水印系统.带GUI交互界面.有一个主界面GUI,可以调用dwt方法的子界面和dct方法的子界面.流程包括,读取宿主 ...
- 基于MATLAB的数字水印算法研究实现
基于MATLAB的数字水印算法研究实现 一.课题背景 随着图像.音频.视频等多媒体信息以及Internet的迅速发展,多媒体信息在互联 网上的广泛传播变得及其便利,数据的交换和传输过程变得相对简单.多 ...
- 基于MATLAB的数字水印系统
基于MATLAB的数字水印系统 一.课题背景和研究意义 从二十世纪九十年代开始,网络信息技术在全世界范围内取得了迅猛发展,它极大方便了人们之间的通信和交流.借助计算机网络所提供的强大的多媒体通信功能, ...
- 基于matlab的硅晶体模型,基于Matlab的图像处理技术识别硅太阳电池的缺陷
第 44 卷 第 7 期 2010 年 7 月 上 海 交 通 大 学 学 报 JOURNAL OF SHANGHAI J IAOTON G UNIVERSITY Vol. 44 No. 7 Jul. ...
- matlab图像类论文,基于matlab图形图像处理技术毕设论文.doc
基于matlab图形图像处理技术毕设论文 基于MATLAB图形图像处理技术 摘 要 本文提出了一种基于MATLAB的数字图像处理技术的设计,系统中包括了图像处理技术的各个方面,涵盖了图像处理领域的个别 ...
- matlab图形图像处理论文,基于matlab图形图像处理技术-本科毕设论文.doc
基于matlab图形图像处理技术-本科毕设论文 基于MATLAB图形图像处理技术 摘 要 本文提出了一种基于MATLAB的数字图像处理技术的设计,系统中包括了图像处理技术的各个方面,涵盖了图像处理领域 ...
- matlab关于图像增强的毕业论文,基于MATLAB的图像增强技术处理毕业论文
基于MATLAB的图像增强技术处理毕业论文 图像增强技术综述内容摘要数字图像处理是指将图像信号转换成数字格式并利用计算机对其进行处理的过程.图像增强是数字图像处理的过程中经常采用的一种方法,它对提高图 ...
- 基于MATLAB的图像处理技术
基于MATLAB的图像处理技术 摘 要: 一般情况下,拍摄到的图像由于光照不足等原因,可能有较多的噪声,且边界特征不清晰.因此,我们需要对这些图像进行增强或分割处理.介于此,本文介绍了基本的图像处理技 ...
最新文章
- centos 网卡聚合及Cisco交换机链路聚合
- vc 递归删除非空文件夹
- 阿里技术:万级规模K8s如何管理?
- 使用Jmeter 创建Post请求
- Microsoft WPF VS Adobe Apollo
- java中有scoreframe类型嘛_java构造函数的三种类型总结
- 狼性文化遭质疑,那我们当个佛系程序员可好?
- 强悍的 Ubuntu —— 粘贴板
- 【codevs1576】最长严格上升子序列
- eclipse 构建maven web工程
- 杭电oj1257最少拦截系统(贪心)
- java多线程Lock接口简介使用与synchronized对比 多线程下篇(三)
- BZOJ3083遥远的国度
- 自定义桌面(仿360桌面)
- CAD内容很少,文件很大清理无效
- 在几年后,程序员的薪资会一直这么高么?
- java模拟HTTP请求(集合了网上搜来的各种)
- 正点原子STM32F103学习笔记(六)——时钟系统
- 大学四年,我因为使用这几个学习方法,成为了同学眼中的“大神”、BUG克星!
- 文件服务器杀毒软件推荐,服务器杀毒软件哪个好 服务器装什么杀毒软件【详解】...
热门文章
- 关于“ 解决对COM组件的调用返回了错误HRESULT E_FAIL” 的方法
- 服务器与mysql数据库服务器_数据库与服务器的关系
- 白帽子讲web安全(精写含思维导图)
- SQL Server无法安装问题
- 安卓逆向 -- JEB3.7安装使用
- c python函数图像_python画正余弦函数图像?
- python去除视频马赛克_手把手教你用Python去除马赛克!
- CNC编程工程师如何炼成?要哪些必备技能?
- [es7]es查询实践示例
- 全球餐厅库存管理软件行业调研及趋势分析报告