水印代码

水印代码
水印代码

clear all;

%logistic序列生成算法

figure(1);

an=linspace(3.1,3.99,400);

hold on;box on;axis([min(an),max(an),-1,2]);

N=64*64;

xn=zeros(1,N);

for a=an;

x=rand;

for k=1:20;

x=a*x*(1-x);

end

for k=1:N;

x=a*x*(1-x);

xn(k)=x;

b(k,1)=x;

end

plot(a*ones(1,N),xn,'k.','markersize',1);

end

c=reshape(b,64,64);

%二维矩阵调制

for a1=1:64;

for a2=1:64;

if c(a1,a2)>=0.5;

d(a1,a2)=1;

else d(a1,a2)=0;

end;

end;

end

%水印加密

e=imread('c:\new\123.BMP');

e=double(e);

f=bitxor(d,e);%mm=imread('c:\new\0.BMP');nn=double(mm);%h=bitxor(d,mm); g=bitxor(d,f);

figure(2);

subplot(2,2,1);

imshow(d);title('混沌序列矩阵');

subplot(2,2,2);

imshow(e);title('水印图像');

subplot(2,2,3);

imshow(f);title('混沌加密水印图像');

imwrite(f,'c:\new\0.BMP');

subplot(2,2,4);

imshow(g);title('水印图像恢复');

M=256;

N=64;

[filename1,pathname]=uigetfile('*.*','select the image');

image1=imread(num2str(filename1));

figure(3);subplot(2,2,1);imshow(image1);

title('original image');

image1=double(image1);

subplot(2,2,2);imshow(f);title('original watermark');

%嵌入水印

[ca,ch,cv,cd] = dwt2(image1,'db1');

[cas,chs,cvs,cds] = dwt2(ca,'db1');

for i=1:N

for j=1:N

if f(i,j)==0

a=-1;

else a=1;

end

Ca(i,j)=cas(i,j)*(1+a*0.03);

end

end

IM= idwt2(Ca,chs,cvs,cds,'db1')

markedimage=double(idwt2(IM,ch,cv,cd,'db1'));

subplot(2,2,3);colormap(gray(256));image(markedimage);

title('marked image');

imwrite(markedimage,gray(256),'c:\new\watermarked.bmp','bmp');

%提取水印

image1=imread(num2str(filename1));image1=double(image1); imaged=imread('c:\new\watermarked.bmp');

[ca,ch,cv,cd] = dwt2(image1,'db1');

[cas,chs,cvs,cds]=dwt2(ca,'db1');

[caa,chh,cvv,cdd]=dwt2(imaged,'db1');

[caas,chhs,cvvs,cdds]=dwt2(caa,'db1');

for p=1:N

for q=1:N

a=caas(p,q)/cas(p,q)-1;

if a<0

W(p,q)=0;

else

W(p,q)=255;

end

%频谱

pic1= imread('c:\new\3.jpg');

%pic=rgb2gray(pic);

subplot(2,2,1);

imshow(pic1);

title('原图');

pic_fft1=fft2(double(pic1));

pic_fft1=fftshift(pic_fft1);

subplot(2,2,2);

imshow(log(abs(pic_fft1)),[]);

title('原图频谱图');

end

end

subplot(2,2,4);

colormap(gray(256));image(W);title('从含水印图像中提取的水印'); imwrite(W,gray(256),'watermark.bmp','bmp');

%figure(4);

h=bitxor(d,W);figure(7);subplot(2,2,1);imshow(h);

pic2= imread('c:\new\watermarked.BMP');

%pic=rgb2gray(pic);

subplot(2,2,3);

imshow(pic2);

title('新图');

pic_fft2=fft2(double(pic2));

pic_fft2=fftshift(pic_fft2);

subplot(2,2,4);

imshow(log(abs(pic_fft2)),[]);

title('新图频谱图'

%DWT水印源码

%嵌入源码

clc

clear all;

% 保存开始时间

start_time=cputime;

iTimes=20; %置乱次数

k=20;

blocksize=8; % 设置块的大小

filter_m=[ 1,1,1,1,1,1,1,1; % 滤波矩阵

1,1,1,1,1,1,1,1;

1,1,0,0,0,0,1,1;

1,1,0,0,0,0,1,1;

1,1,0,0,0,0,1,1;

1,1,0,0,0,0,1,1;

1,1,1,1,1,1,1,1;

1,1,1,1,1,1,1,1 ];

% 读入原图像

file_name='_lena_std_bw.bmp';

cover_object=double(imread(file_name));

% 原图像的行数与列数

Mc=size(cover_object,1); %原图像行数

Nc=size(cover_object,2); %原图像列数

% 最大嵌入信息量

max_message=Mc*Nc/(blocksize^2);

% 读入水印图像

file_name='c.bmp';

message=double(imread(file_name));

%%水印图像的行数与列数

Mm=size(message,1); %水印行数Nm=size(message,2); %水印列数% 检查水印信息是否过大

if (Mm*Nm> max_message)

error('水印太大')

end

%对水印图像进行arnold置乱

if Mm~=Nm

error('水印矩阵必须为方阵');

end

if Mm~=40

error('必须为40*40大小,或者修改置乱次数'); end

tempImg=message;

for n=1:iTimes % 次数

for u=1:Mm

for v=1:Nm

temp=tempImg(u,v);

ax=mod((u-1)+(v-1),Mm)+1;

ay=mod((u-1)+2*(v-1),Nm)+1;

outImg(ax,ay)=temp;

end

end

tempImg=outImg;

end

message_vector=reshape(tempImg,1,Mm*Nm);

% 产生watermarked_image,并写入原图信息

watermarked_image=cover_object;

%置随机数发生器的状态为1100

key=1100;

rand('state',key);

% 产生伪随机序列

pn_sequence_zero=round(2*(rand(1,sum(sum(filter_m)))-0.5)); pn_sequence_one=round(2*(rand(1,sum(sum(filter_m)))-0.5)); % 将图像分块嵌入

% 当(2,2) > (2,3) 且message_pad(kk)=0

% 当(2,2) < (2,3) 且message_pad(kk)=1

%%经过分析可以得出结论:在提取水印时,如果cD1(2,2)>cD1(2,3)便是嵌入了水印的黑色像素,

%%反之则是嵌入了白色像素

x=1;

y=1;

h=waitbar(0,'嵌入水印,请等待');

for (kk = 1:length(message_vector))

% 对块进行DWT变换

[cA1,cH1,cV1,cD1] =

dwt2(cover_object(x:x+blocksize-1,y:y+blocksize-1),'haar');

a=cD1;

% 如果message_pad(kk)== 0

if (message_vector(kk) == 0)

% 且(2,2) < (2,3) ,交换它们

if (cD1(2,2) < cD1(2,3))

temp=cD1(2,3);

cD1(2,3)=cD1(2,2);

cD1(2,2)=temp;

end

% 如果message_pad(kk) == 1, elseif (message_vector(kk) == 1)

% 且(2,2) > (2,3) ,交换它们

if (cD1(2,2) >= cD1(2,3))

temp=cD1(2,3);

cD1(2,3)=cD1(2,2);

cD1(2,2)=temp;

end

end

% 检查(2,2) ,(2,3)的差是否>= k if cD1(2,2) > cD1(2,3)

if cD1(2,2) - cD1(2,3) < k

cD1(2,2)=cD1(2,2)+(k/2);

cD1(2,3)=cD1(2,3)-(k/2);

end

else

if cD1(2,3) - cD1(2,2) < k

cD1(2,3)=cD1(2,3)+(k/2);

cD1(2,2)=cD1(2,2)-(k/2);

end

end

%IDWT

watermarked_image(x:x+blocksize-1,y:y+blocksize-1)=

idwt2(cA1,cH1,cV1,cD1,'haar',[Mc,Nc]);

% 移动到下一块

if (x+blocksize) >= Nc

x=1;

y=y+blocksize;

else

x=x+blocksize;

end

waitbar(kk/length(message_vector),h);

end

close(h);

% 转换为uint8并写入dwt_watermarked.bmp

watermarked_image_uint=uint8(watermarked_image);

imwrite(watermarked_image_uint,'dwt_watermarked.bmp','bmp'); % 显示运行时间

elapsed_time=cputime-start_time,

% 显示图像

figure(1)

subplot(2,2,1);

imshow(message,[]);

title('水印');

subplot(2,2,4)

imshow(outImg,[]);

title('置乱水印');

subplot(2,2,2);

imshow(cover_object,[]);

title('原图');

subplot(2,2,3);

imshow(watermarked_image,[]) title('嵌入水印图像')

%DWT源码

%提取源码

clear all;

% 保存开始时间

start_time=cputime;

iTimes=20; %置乱次数

blocksize=8; % 设置块的大小

filter_m=[ 1,1,1,1,1,1,1,1; % 滤波矩阵

1,1,1,1,1,1,1,1;

1,1,0,0,0,0,1,1;

1,1,0,0,0,0,1,1;

1,1,0,0,0,0,1,1;

1,1,0,0,0,0,1,1;

1,1,1,1,1,1,1,1;

1,1,1,1,1,1,1,1 ];

% 读入嵌入水印图像

[filename,pathname]=uigetfile('*.bmp;*tiff;*tif;*jpg','输入嵌有水印的图像'); watermarked_image=double(imread(filename));

% 嵌入水印图像的行数与列数

Mw=size(watermarked_image,1); %嵌入水印图像的行数

Nw=size(watermarked_image,2); %嵌入水印图像的列数

% 最大嵌入信息量

max_message=Mw*Nw/(blocksize^2);

% 读入原始水印

file_name='c.bmp';

orig_watermark=double(imread(file_name));

% 原始水印的行数与列数

Mo=size(orig_watermark,1); %原始水印的行数

No=size(orig_watermark,2); %原始水印的列数

%置随机数发生器的状态为1100

rand('state',1100);

% 产生伪随机序列

pn_sequence_zero=round(2*(rand(1,sum(sum(filter_m)))-0.5));

pn_sequence_one=round(2*(rand(1,sum(sum(filter_m)))-0.5));

% 将图像分块提取水印

x=1;

y=1;

h=waitbar(0,'水印提取中,请等待');

for (kk = 1:max_message)

% 对块进行dwt变换

[cA1,cH1,cV1,cD1] =

dwt2(watermarked_image(x:x+blocksize-1,y:y+blocksize-1),'haar');

% 如果cD1(2,2) > cD1(3,3) 那么message_vector(kk)=0

% 否则message_vector(kk)=1

if cD1(2,2)>cD1(3,3)

message_vector(kk)=0;

else

message_vector(kk)=1;

end

% 移动到下一块

if (x+blocksize) >= Mw

x=1;

y=y+blocksize;

else

x=x+blocksize;

end

waitbar(kk/max_message,h);

end

close(h);

% arnold置乱

tempImg=reshape(message_vector(1:Mo*No),Mo,No); message_arnold=tempImg;

for n=1:iTimes % 次数

for u=1:Mo

for v=1:No

temp=tempImg(u,v);

ax=mod((u-1)+(v-1),Mo)+1;

ay=mod((u-1)+2*(v-1),No)+1;

outImg(ax,ay)=temp;

end

end

tempImg=outImg;

end

message=tempImg;

% 计算运行时间

elapsed_time=cputime-start_time, % 显示提取水印与原始水印

figure(3)

subplot(1,3,1);

imshow(message_arnold,[]);

title('提取的置乱水印');

subplot(1,3,2);

imshow(message,[]);

title('再次置乱后水印');

subplot(1,3,3);

imshow(orig_watermark,[])

title('原始水印');

图像水印算法源代码

M=256; %原图像长度 N=32; %水印图像长度 K=8; I=zeros(M,M); II=zeros(K,K); B=zeros(M,M); Idct=zeros(K,K); D=zeros(M,M); %读取原图像 I=imread('33.png'); subplot(2,2,1); %显示原图像 imshow(I); title('原图像'); %产生水印序列 randn('seed',10); mark=randn(1024,1); subplot(2,2,2); plot(mark); title('水印序列'); %嵌入水印 T=1; for m=1:N for n=1:N x=(m-1)*K+1; y=(n-1)*K+1; II=I(x:x+K-1,y:y+K-1);%将原图分成8*8的子块 Idct=dct2(II);%对子块进行DCT变换 if x==1&y==1 alfa=0.002; else alfa=0; end B=Idct*(1+alfa*mark(T));%嵌入水印 Bidct=idct2(B);%进行DCT反变换 I(x:x+K-1,y:y+K-1)=Bidct; T=T+1; end end subplot(2,2,3); imshow(I);%显示嵌入水印后的图像

title('tu');imwrite(I,'嵌入后的图像.bmp'); %进行相关性比较 figure; for i=1:50 if i==10; mark2=mark1'; else mark2=randn(1024,1); end %计算相关值 c=(mark2'*mark)/sqrt(mark2'*mark2); stem(i,c); hold on; end

数字图像处理在数字水印中的应用

数字图像处理课程报告——图像处理在数字水印中的应用 姓名:蒋运文 学号:12212842 专业:通信与信息系统 指导老师:沈伟教授 2013.06

一、研究背景及意义 数字图像处理方法的研究源于两个主要应用领域:其一是为了便于人们分析而对图像信息进行改进,其二是为使机器自动理解而对图像数据进行存储、传输及显示。 数字图像处理技术已经在各个领域上都有了比较广泛的应用,图像是人类获取和交换信息的主要来源,因此,图像处理的应用领域必然涉及到人类生活和工作的方方面面。随着人类活动范围的不断扩大,图像处理的应用领域也将随之不断扩大,本文主要介绍数字图像处理技术在信息安全领域的数字水印中的应用。 在信息安全领域,数字图像还承担着作为法庭证据的责任,其真实性和完整性直接影响到执法结果,随着互联网的发展,人们越来越容易从互联网上获取数字多媒体信息,而与此同时,数字多媒体信息 的版权、保密等问题也变得日益突出起来。本文在介绍数字水印技术的相关概念、特点和分类的基础上,分析了实现数字水印的步骤,并对数字图像处理技术在数字水印中的应用进行了研究。 人们由于不同的应用需求造就了不同的水印技术,数字水印技术则是其中最新的一种,数字水印是把主要内容隐藏在图像,声音中,水印与内容结合在一起。这大大改善了传统水印的肉眼即可分辨性,数字水印在不同的环境同时也具有不同的特征性质,它还能够被特定的机器所识别,正是其具有的这些优点,越来越多的各个领域的人们开把把眼光看向它。数字图像水印可以用于鉴别信息真伪、认证身份、图像保护、版权保护、隐藏信息、以及做标记等等方面。数字图像不

仅包含信息量大,而且其传输和处理极其方便,成为人们获得信息的一种重要来源,所以数字图像水印也是应用得非常广泛的一项技术。 二、数字水印的衡量标准 安全性:数字水印的信息应是安全的,难以篡改或伪造,同时,应当有较低的误检测率,当原内容发生变化时,数字水印应当发生变化,从而可以检测原始数据的变更;当然数字水印同样对重复添加有很强的抵抗性 隐蔽性:数字水印应是不可知觉的,而且应不影响被保护数据的正常使用;不会降质; 鲁棒性:是指在经历多种无意或有意的信号处理过程后,数字水印仍能保持部分完整性并能被准确鉴别。可能的信号处理过程包括信道噪声、滤波、数/模与模/数转换、重采样、剪切、位移、尺度变化以及有损压缩编码等。主要用于版权保护的数字水印易损水印(Fragile Watermarking),主要用于完整性保护,这种水印同样是在内容数据中嵌入不可见的信息。当内容发生改变时,这些水印信息会发生相应的改变,从而可以鉴定原始数据是否被篡改。 三、数字水印的分类 数字水印的分类方法很多,下面按主要特征对其作一简单概述:从含水印图象中的水印是否可见分为可见水印和不可见水印两大类。当前学者们主要致力于研究不可见水印,即水印是不可被感知的,这也是本文的研究重点。为了保证水印嵌入引起的改变不被感知,需要

数字水印算法介绍

数字水印算法列举 湖南科技大学计算机科学与工程学院 ①基于LSB 的数字水印方案(空间域、不可逆、不可见和盲检测) 嵌入步骤: (1)先把水印信息转化为二进制比特流I。 (2)根据I的长度生成密钥K,并且严格保存。密钥K是对图像载体像素位置的一个映射。 (3)把I中的每一位依次根据密钥K,置换掉原始载体图像中相应位置的像素最后一位。提取步骤: (1)根据严格保存的密钥K遍历嵌入了水印的图像中的相应像素,提取出最后一位。 (2)将提取出来的每一位重新组合成水印信息。 ②基于差分扩展的数字水印方案(变换域、可逆、不可见和盲检测) 嵌入步骤: (1)将图像M分成像素点对(x,y),将水印信息转化为二进制比特流,比特流的每一位用m 表示。 (2)根据水印信息比特流的长度随机生成信息的嵌入位置k作为密钥信息严格保存。(3)对图像M计算均值l和差值h:?????-=+=y x h y x floor l 2((floor表示向下取整) (4)将水印比特信息m以差值扩展的方法嵌入到差值h中:m h h +?='2(5)将得到的h '代入(3)中,得到新的图像像素对,形成嵌入秘密信息后的图像C。提取步骤: (1)将图像C分成像素点对(x,y),读入密钥信息K。 (2)将图像C依旧按照嵌入步骤中的(3)式计算均值l和差值h。 (3)根据密钥k找到相应位置,提取差值h的最后一位比特信息m,再将差值h进行变换得到1>>='h h 。 (4)将提取到的比特信息m进行组合可以恢复水印信息,将得到的h '代入嵌入步骤的(3)中计算新的图像像素对可以恢复原始图像载体M。 ③基于直方图修改的数字水印算法(空间域、可逆、不可见和盲检测) 嵌入步骤:(1)找到直方图的零点z和峰值点p,将z v p <<的像素值v自加1。 (2)漂移后的直方图v=p处即为嵌入水印的位置,将水印信息转化为二进制流并记为k,按顺序嵌入,即k v v +=';(3)得到的由像素值v '组成的图像就是嵌入秘密信息后的图像。同时p、z以密钥的形式保存。 提取步骤: (1)读取密钥,得到p、z的值。 (2)遍历图像的每个像素,当像素v=p时,提取信息0并保持数据不变;当v=p+1时,提取信息1并将数据减1。 (3)当vz时,数据保持不变;当p-1=0 w0(i,j)=1; else w0(i,j)=0; end; end; end; figure; imshow(w0);title('水印'); % 对水印信号 w0 进行(7,4)汉明编码,得到一 %36×7 的分组码 x0。 x0=w0; for i=1:36 s=8*x0(i,1)+4*x0(i,2)+2*x0(i,3)+x0(i,4); switch s case 0 x0(i,5)=0;x0(i,6)=0;x0(i,7)=0; case 1 x0(i,5)=0;x0(i,6)=1;x0(i,7)=1; case 2 x0(i,5)=1;x0(i,6)=1;x0(i,7)=0; case 3 x0(i,5)=1;x0(i,6)=0;x0(i,7)=1; case 4 x0(i,5)=1;x0(i,6)=1;x0(i,7)=1; case 5 x0(i,5)=1;x0(i,6)=0;x0(i,7)=0; case 6 x0(i,5)=0;x0(i,6)=0;x0(i,7)=1; case 7 x0(i,5)=0;x0(i,6)=1;x0(i,7)=0; case 8 x0(i,5)=1;x0(i,6)=0;x0(i,7)=1; case 9

x0(i,5)=1;x0(i,6)=1;x0(i,7)=0; case 10 x0(i,5)=0;x0(i,6)=1;x0(i,7)=1; case 11 x0(i,5)=0;x0(i,6)=0;x0(i,7)=0; case 12 x0(i,5)=0;x0(i,6)=1;x0(i,7)=0; case 13 x0(i,5)=0;x0(i,6)=0;x0(i,7)=1; case 14 x0(i,5)=1;x0(i,6)=0;x0(i,7)=0; case 15 x0(i,5)=1;x0(i,6)=1;x0(i,7)=1; end; end; % 对 x0 进行行向位扩展,得到一个由(-1,1)组成 %的扩展序列 y。cr 为扩展因子。 cr=256; for i=1:252 if x0(i)==1 y(i,1:cr)=1; else y(i,1:cr)=-1; end; end; y(253:256,:)=0; % 以下产生伪随机序列 p。为此先设定密钥(1114) %并产生高斯正态分布序列g2,再由g2产生由(-1,1) %组成的伪随机序列 p。 randn('state',1114); g2=randn(256,256);<

图像数字水印+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来对图像进行处理。

图像数字水印的设计与实现

唐山师范学院专科毕业论文 题目图像数字水印的设计与实现 学生 指导教师 年级08级信息安全 专业计算机应用技术 系别计算机科学系 唐山师范学院计算机科学系 2011 年6月

郑重声明 本人的毕业论文(设计)是在指导老师的指导下独立撰写并完成的。毕业论文(设计)没有剽窃、抄袭、造假等违反学术道德、学术规范和侵权行为,本人愿意承担由此产生的各种后果,直至法律责任;并可以通过网络接受公众的查询。特此郑重声明。 毕业论文(设计)作者(签名): 2011 年 6 月11 日

目录 图像数字水印的设计与实现 (1) 摘要 (1) 1绪论 (1) 1.1本课题研究的背景及意义 (1) 1.2数字图像水印的发展历程及其现状 (1) 2系统的需求分析 (2) 2.1任务概述 (2) 2.2功能需求 (2) 3数字水印技术概括 (2) 3.1 数字水印的概念和特性 (2) 3.2 数字水印系统模型 (2) 3.3 数字水印的分类 (3) 4数字水印算法研究 (3) 4.1 空域算法 (3) 4.2 变换域算法 (4) 5基于空域最低位算法实现对彩色和灰度图像的隐藏 (4) 5.1最低有效位方法 (4) 5.2 数字水印图像LSB空域法的原理 (4) 5.3 LSB的算法实现(嵌入和提取) (4) 6 调试及测试分析 (5) 6.1 是否嵌入水印图像成功的判断 (5) 6.2 测试判断是否嵌入水印的依据 (5) 7 总结与心得 (5)

参考文献: (6) 致谢 (6) 外文页......................................................................................错误!未定义书签。

基于Matlab的数字图像水印技术

基于Matlab 的数字图像水印技术 ********** 摘要:数字水印技术涉及到许多图像处理算法以及数学计算工具等,如果用普通编程工具实现上述算法,需要要花费大量的时间,MathWorks公司推出的一种简单、高效、功能极强的高级语言——MATLAB语言,它具有高性能数值计算能力,可视化计算环境。只需短短的几行代码就可在MATLAB中解决许多复杂的计算问题。 关键字:图像处理,数字水印, MATLAB 0 引言 随着Internet的普及,信息的安全保护问题越来越备受关注。如何有效地防止数据的非法复制以及鉴别数字媒体的知识产权,成为急需解决的问题。Caronni在1993年提出了数字水印,并将其应用于数字图像,后来,将数字水印的概念扩展到电视图像等领域,数字水印技术是一种版权保护的重要手段,得到了广泛的研究和应用。本文简要介绍一下基于Matlab的数字图像水印技术。介绍数字水印的原理以及使用方法,探索了基于离散余弦变换(DCT)的数字图像水印算法,并借助MATLAB,实现数字水印的嵌入、提取以及攻击测试。 1 数字水印技术 1.1 数字水印 数字水印(Digital Watermarking)技术是将一些标识信息(即数字水印)直接嵌入数字载体当中,例如包括多媒体、文档、软件等,但不影响原载体的使用价值,也不容易被人的知觉系统,如视觉或听觉系统觉察到。通过这些隐藏在载体中的信息,可以确认内容创建者、购买者、传送隐秘信息或者判断载体是否被篡改等。数字水印是信息隐藏技术的重要研究方向之一。从信号处理的角度看,在载体图像中嵌入数字水印,可以视为在强背景(即原始公开图像)下叠加一个视觉上看不到的弱信号(即水印图像),由于人的视觉系统(Human Visual

数字图像水印技术

数字图像水印技术 人类视觉系统的灵敏度相比听觉系统较低。水印技术主要利用了灵敏度和掩蔽效应。灵敏度:频率灵敏度(对于图像中水平和垂直的线和边缘最敏感,而对于成45度的线和边缘最不敏感)、频谱被感知为色彩(人眼对于彩色的感知,其最低一级是由三个单独的颜色通道组成的,人眼对于这三个颜色的反应中,对蓝色通道明显比其余两个通道要低。所以一些彩色水印处理系统将大部分的水印信号嵌入到彩色图像的蓝色通道中)、时间频率被感知成运动或闪烁(当频率超过30Hz时人眼的灵敏度下降的非常快)、亮度灵敏度(人眼对于亮度越高的信号越不敏感)。掩蔽效应:频率掩蔽(某一频率成分的存在能够掩蔽人类对于作品中另一频率成分的感知)、亮度掩蔽(局部亮度特征能够掩盖对比度的变化)。 数字图像水印系统的基本要求:鲁棒性(抵抗常见图像处理操做的能力,也就是含水印图像经历无意修改而保留水印信息的能力)、透明性(不明显干扰被保护的图像数据)、安全性(抵抗恶意攻击的能力,能承受一定程度的人为攻击,从而水印信息不会被删除、破坏、窃取)、数据容量、盲检测和自恢复性(盲检测是指水印的检测和提取不需要原始图像的参与。自恢复性指图像经过一些操作和变换后,会产生较大的失真和破坏,但是可以从留下的片段数据仍能恢复水印信号,而且恢复的过程不需要原始图像的参与)、确定性(水印所携带的信息能够被唯一的确定鉴别) 数字图像水印的处理过程主要包括水印生成、嵌入和检测三个步骤。前面二三四章已经基本讲述了。 图像内容的认证:精确认证(脆弱水印、嵌入签名、可擦除水印)、选择性认证(半脆弱水印、嵌入半脆弱签名、叙述型水印)。 图像水印系统的评测:数字水印生成算法的测试(水印生成算法的性能主要包括不可逆性以及在给定信道容量下水印的信息量)、数字水印嵌入散发的测试(主要包含水印图像质量评价和鲁棒性评测)、数字水印检测/提取算法(观察虚警好漏检的概率)。 对含有水印图像质量的评价:逼真度和品质、主观度量、基于像素的度量、基于人类视觉系统进行建模度量。

数字图像水印算法的快速实现研究

数字图像水印算法的快速实现研究 数字图像水印算法的快速实现研究 摘要:数字水印技术作为数字多媒体作品版权保护和认证的重要手段,近几年来发展得很快。本文着重研究水印算法的快速实现。第一步提出一种基于图像盲水印算法:首先对原始图像进行分块处理,然后通过在分块Hadamard变换域中修改中频系数来嵌入水印,最后得出具有一定使用价值的结论。实验结果表明,算法对常用的图像处理如JPEG压缩、加噪、滤波等攻击具有较好的鲁棒性。第二步,在前人的研究基础上,实现GPU来执行快速Hadamard变换和反变换。实验结果表明,在Visual C++下利用GPU执行Hadamard变换在一定条件下比CPU更快,实验用显卡性能越强,实验效果越好。 关键词:数字水印;Hadamard变换;快速算法;GPU 0 引言 数字水印技术作为数字多媒体作品版权保护和认证的重要手段,近几年来发展得很快。数字水印技术是在数字媒体中嵌入特定信息的一种技术,根据所嵌入的载体不同,可分为图像水印、音频水印、视频水印等;根据嵌入位置不同,可分为空域水印[1]和变换域水印[2-4];而按检测过程,又可分为盲水印和非盲水印。其中用于版权保护的数字水印一般要求具有:鲁棒性、不可见性和安全性。目前,数字水印算法研究的重点是鲁棒性,应用最多的是变换域算法,包括DFT[2]、DCT[3]和DWT[4],经过国内外专家的多年研究、改进,基于变换域的数字水印算法具有较强的鲁棒性,但还是在一定程度上忽略对算法速度的关注,有些算法鲁棒性很高,但处理速度较慢,在小图像中嵌入水印的时间也可能要1分钟。而实际的应用图像往往非常大,有一些应用甚至有实时性的要求,计算工作量大,操作复杂的算法就存在实际应用推广价值低的问题,因此非常有必要研究快速的数字水印算法。哈达玛变换(Hadamard Transform,下文简称HT)的变换矩阵的元素取值最多只有两种,即{1,-1},所以有速度快、容易用硬件实现的优点。本研究首先提出了一种利用HT的快速数字图

数字图像水印技术及其算法

2011年05月 科教纵横 数字图像水印技术及其算法的研究 文/曾玲 摘 要:随着信息技术和计算机网络通讯技术的迅速发展,数字图像水印技术得到了越来越多的关注,然后其研究刚刚起步,需要解决的问题也还很多。本文首先介绍了数字水印的概念,并在此基础上数字水印的生存、嵌入及检测三个方面阐述了数字水印技术的基本内容,并对数字水印技术的算法进行了归纳与讨论。 关键词:数字水印;嵌入;算法 中图分类号:X796 文献标识码:A 文章编号:1006-4117(2011)05-0217-01 信息技术和计算机网络通讯技术的迅速发展,加快了信息的交流和沟通,然而也带来了一系列的新问题。如非法复制传播就给社会造成了巨大的经济损失。因此,如何保护数字产品的安全及完整是一个急需解决的问题。随着计算机运行能力的不断加强,以密码学理论为基础的传统信息安全技术已经变得越来越不可靠。数字水印技术就是在这种情况下为加强信息安全而出现的一种新型的信息安全技术。然而,数字水印技术的研究还刚刚起步,因此,开展数字水印技术的研究具有十分重要的理论与现实意义。 一、 数字水印的概念 Tanaka等人于1990年最早提出了数字水印技术。经过二十多年的发展,数字水印技术取得了许多成绩,但始终没有出现一个统一的定义。比较公认的说法是,数字水印技术是将代表作品所有者的信息,如指定的标志、身份信息、序列码等按照某种方式嵌入到被保护的信息中。这种被保护的信息的形式多种多样,可以是一般性的电子文档,也可以是视频、音频或图像。水印通常隐藏与原始数据之中,在受到攻击后才会显现出来。 二、 数字水印的基本内容 数字水印的产生、嵌入及检测是通用的数字水印算法的三个基本方面。 1、数字水印的产生。实际上,数字水印产生的过程就是将原始版权信息、认证信息及保密信息等一系列的有关信息生成水印信号的过程。当然,水印信号必须嵌入到原始载体中,其生成过程也必须在密钥的控制下进行。 2、数字水印的嵌入。通过什么方法,以及在载体数据的什么位置嵌入水印是数字水印嵌入需要重点考虑的问题。水印嵌入的过程实际上是将水印信息、载体数据及密钥通过嵌入算法,转化为水印数据的过程。水印信息与原始载体数据是输入信号,原始载体可以为视频、音频、文本等,密钥则可以用来加强水印算法的安全性。此外,水印的嵌入还必须选好嵌入位置,将水印信号嵌入到图像中后还必须对其加以调整才能得到合适的图像。 3、数字水印的检测。水印算法中最重要的是水印检测,水印检测有提取与检测两种判断方式。一般情况下,提取适用于无意义水印,以判断得到的水印与原始水印是否相符;而检测则适用于无意义水印,以判断图像中是否存在制定的水印。此外,虚警与漏检是水印提取与检测过程中常发生的两种错误,因此,在水印算法设计中,应根据不同的水印系统,综合选择不同的指标以求取得最佳平衡。 三、数字水印的特点 不同的领域对水印算法的要求也不尽相同,其特点也有所差别。但是不同的水印技术仍存在着一些共性。 1、鲁棒性。鲁棒性是指图像经过有损压缩、噪声干扰、伸缩等处理操作后仍能检测到水印的能力。数字水印必须能够抵抗水印受到的攻击,也就是说,水印方案的设计必须考虑图像处理的鲁棒性。 2、不可见性。不可见性主要体现在视觉上,即观察者无法觉察经过水印嵌入的图像,且攻击者也难以通过统计方法发现并删除水印。一般来讲,当嵌入的水印不能引起人眼注意时,就说明该水印具有不可见性的特点。 3、安全性。安全性的关键性在于密钥。在不知道密钥的情况下,非法用户是不能破解一个安全的嵌入算法的。也就是说,非法用户在不知道密钥的情况下,及时非常了解其提取算法,也不可能正确恢复嵌入信息。嵌入水印必须具有安全性,以防止非法用户的发现及销毁。 四、常见的数字水印算法 1、时域、空域数字水印技术。为了实现水印的嵌入,时域/空域方法修改像素的某个分量值。Tirkel等人最早提出了空域嵌入技术的经典算法——最低有效位LSB。然后,这种算法的鲁棒性较差,其水印信息很容易被破坏。Schyndel等人提出的空域技术抗JPEG压缩的鲁棒性也不是很好。Bender等人于1995年提出的“拼凑”算法则在很多方面做了改进,且其抵抗力也明显加强,还能嵌入多比特的水印。在国内,刘瑞祯和谭铁牛提出的基于奇异值分解的非盲水印算法也受到了众多学者的关注。 2、变换域数字水印技术。嵌入的信息量过少、抗信号失真的能力较差、鲁棒性不好是空间域水印算法的最大缺点。有鉴于此,近几年来,变换域数字水印技术得到了广泛的关注。该种数字水印技术要求首先对整个载体或者载体的各部分信息进行某种正交变换。与嵌入空间某些频带相对应的系数则按照嵌入算法的规则进行交换。载体的高频信息的鲁棒性较差,容易被压缩技术所剔除;而载体的低频率信息则反映载体的主要轮廓,但嵌入水印量过大会引起失真。因此,中频系数是最好的选择。变换域数字水印技术弥补了空域数字水印技术的不足,在变换域中将水印分散到全距,大大加强了抵抗攻击的能力。此外,变换域能量分布比较集中,其嵌入水印的强度通过与人类视觉体系模型的结合也得到了一定程度的加强。 3、基于内容的数字水印技术。很多学者从视觉系统的感知模型等方面进行了研究以此来保证水印的透明性,然而他们对利用图像的内容特征来嵌入水印的研究却寥寥无几。Kutter等人提出的第二代水印改变了这种状况,他们认为在感知有意义的特征区域进行水印嵌入是解决问题的关键。这些特征既可以是宿主数据抽箱的特征,又可以是语义上的特征。图像既可以边缘区域,也可以使重点区域。Bas等人提出的机遇图像特征点的水印方案进一步完善了这种观点。华先胜等人提出的局部化数字水印算法则能够通过这些特征点来定位并提取水印。 结束语:数字水印技术弥补了密码术与数字签名技术的缺陷,是一种新型的隐藏技术,能够保护数字产品的版权证明,已引起了广泛了关注,且众多的学者也对此进行了大量的研究并取得了一定的成就。然而,数字水印技术正处于起步阶段,其相关的理论体系还有待改善,其体系框架与标准也还很不城西,需要解决的问题也还很多,其实际应用仍任重而道远。 作者单位:湖南衡阳技师学院参考文献: [1]宋琪,吴林东,朱光喜等.一种基于Hvs的利用零树编码的水印算法[J].华中科技大学学报(自然科学版),2004,32(5):5—7. [2]刘瑞祯,谭铁牛.基于奇异值分解的数字图像水印[J].电子学报,2001,29(2):168—171 [3]黄继武,谭铁牛.图像隐形水印自动化学报[J].2000,26(5):645—655. [4]张志明,周学广.采用奇异值分解的数字水印嵌入算法[J].微计算机息,2006,22(7):69—71. 2011.05 217

数字图像水印算法和研究.

数字图像水印算法和研究 数字图像水印算法和研究 摘要 随着计算机通信技术的迅速发展,多媒体存储和传输技术的进步使存储和传输数字化信息成为可能,然而,这也使盗版者能以低廉的成本复制及传播未经授权的数字产品内容。密码学的加解密技术是保护数字产品的一种方法,它能够保护数字产品安全传输,并可作为存取控制和征收费用的手段,但它不能保证数字产品解密后的盗版问题,因此,1995年,人们提出了信息伪装技术,其中,数字水印就是近年来比较热门的数字产权保护技术。 数字水印技术属于信息安全的范畴,是信息隐藏的一个分支。数字图像水印算法是数字水印技术研究的一个方面,具有极大的理论研究价值和应用前景,是目前学术研究的一个热点。该文论述了数字水印的提出及研究现状;水印的基本原理和算法;最后给分析了展望 关键词数字水印算法 Digital Image Watermarking Algorithm and research Abstract With the rapid development of communication technology, multimedia storage and transmission technology to enable storage and transmission of digital information possible, however, that the pirates can make low cost of unauthorized copying and dissemination of the contents of digital products. Cryptography is the encryption and decryption technology to protect digital products in a way that it can protect the secure transmission of digital products, and Access control and as a means of charging, but it can not guarantee that the post-decryption digital piracy problem, therefore, 1995 years, the information raised camouflage technology, including digital watermarking is relatively popular in recent years the number

相关文档
最新文档