基于Delphi的数字图像水印LSB算法的实现
- 格式:pdf
- 大小:211.60 KB
- 文档页数:3
基于Delphi的数字图像水印LSB算法的实现
谈冉;彭建华
【期刊名称】《现代计算机(专业版)》
【年(卷),期】2006(000)012
【摘要】最近十几年来,数字水印技术日益受到关注,取得了很大的发展.当前研究主要集中在对数字图像加水印上.本文介绍了用Delphi技术对数字图像水印中的LSB算法进行编程实现,并总结了LSB算法的利弊,提出了可行的改进措施.
【总页数】3页(P48-50)
【作者】谈冉;彭建华
【作者单位】武汉理工大学计算机科学与技术学院,武汉,430063;武汉理工大学计算机科学与技术学院,武汉,430063
【正文语种】中文
【中图分类】TP3
【相关文献】
1.利用Delphi实现数字水印LSB算法 [J], 戚利娜
2.基于LSB数字水印算法的研究与实现 [J], 王东东;王福明
3.基于LSB算法实现信息隐藏方案的研究 [J], 付三丽;黄恒一
4.基于LSB算法的文件隐藏工具的设计及实现 [J], 卢利琼
5.基于VC的数字图像水印LSB算法实现 [J], 黄勇
因版权原因,仅展示原文概要,查看原文内容请购买。
《新技术讲座》课程课程大作业作业名称:基于数字图像LSB隐写算法的研究姓名:其他组员:学号:班级:完成时间:2013年11月2日基于图像LSB隐写算法的研究(XX大学XX学院XX XX地联系方式)摘要:本文先对信息隐藏技术、隐藏模型、隐写术、隐写算法等进行了简单介绍,然后借助软件matlab7.0,采用空域隐写算法LSB将秘密信息嵌入数字图像,完成隐写;接着将嵌入的秘密信息提取出来,通过计算其峰值信噪比PSNR来评估该隐写算法的不可感知性,证实了LSB嵌入时在图像的最不重重要位加载秘密信息,一定程度上加强了秘密信息的不可感知性;再通过缩小和放大二倍来分析隐写算法的鲁棒性,试验结果表明,该算法计算量低,在低嵌入率时检测结果准确,优势明显,而对嵌入率较高的载秘图像,需要修正后才能达到常规检测的标准;最后,在实验总结基础上提出了一些建议,并对未来进行了展望。
关键词:信息隐藏技术隐写算法LSB信息嵌入信息提取PSNR不可感知性鲁棒性第一部分1.引言随着计算机技术、信息处理技术和计算机网络技术的飞速发展,Intemet在世界范围内得到了大力推广,各种数字信息的制作、传输、存储和处理由此变得越来越简单。
通过互联网,人们可以快捷高效地获得图像、声音和文本等各种多媒体数据,分享海量的信息资源。
各种机密信息,如个人的信用卡账号逐渐在网络通信中出现。
然而,全球互联网是一个开放的系统,虽然普通用户可以通过网络方便、快捷地交流信息,但是随之而出现的问题也十分严重:个人的隐私的安全如帐号、个人信息、密码口令、电子邮件等能否得到保障;多媒体作品的版权能否得到应有的保护;电子商务中的企业机密能否不被商业间谍所窃取;涉及到国家安全、政府绝密的文件在网络中能否被安全地传输等。
因此,蓬勃发展的网络使得信息传输和交流更加简单易行的同时,也对关系国家安全、经济发展乃至个人隐私等方而的信息安全提出了更高的要求。
国内外各界已经高度重视如何在既能有效地保证各种信息的安全这个大前提下,也能充分利用Internet便利的问题,由此一门新兴的交叉学科——信息隐藏诞生了。
MATLAB - Matlab的优势和特点:(1)友好的工作平台和编程环境MATLAB由一系列工具组成。
这些工具方便用户使用MATLAB的函数和文件,其中许工具采用的是图形用户界面。
包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。
随着MATLAB的商业化以及软件本身的不断升级,MATLAB的用户界面也越来越精致,更加接近Windows的标准界面,人机交互性更强,操作更简单。
而且新版本的MATLAB提供了完整的联机查询、帮助系统,极大的方便了用户的使用。
简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。
(2)简单易用的程序语言Matlab一个高级的距阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。
用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。
新版本的MATLAB语言是基于最为流行的C++语言基础上的,因此语法特征与C+语言极为相似,而且更加简单,更加符合科技人员对数字表达式的书写格式。
使之更利于非计算机专业的科技人员使用。
而且这种语言可移植性好、可拓展性极强,这也是MATLAB之所以能够深入到科学研究及工程计算各个领域的重要原因。
LSB算法水印安全性测试LSB算法水印源码1、嵌入源码clear all;% 保存开始时间start_time=cputime;% 读入原图像file_name='1.jpeg';[cover_object,map]=imread(file_name);% 读入水印图像file_name='2.jpeg';[message,map1]=imread(file_name);message1=message;message=double(message); %%转换为double数message=fix(message./2); %%转换为0,1组成的矩阵message=uint8(message); %%转换为uint8数% 原图的行数与列数Mc=size(cover_object,1); %原图的行数Nc=size(cover_object,2); %原图的列数% 水印的行数与列数Mm=size(message,1); %水印的行数Nm=size(message,2); %水印的列数% 将水印扩展为原图像大小,并写入watermarkfor ii = 1:Mcfor jj = 1:Ncwatermark(ii,jj)=message(mod(ii,Mm)+1,mod(jj,Nm)+1);endend% 将原图的最低有效位值换为水印的值watermarked_image=cover_object;for ii = 1:Mcfor jj = 1:Ncwatermarked_image(ii,jj)=bitset(watermarked_image(ii,jj),1,watermark(ii,jj)); endend% 将嵌入水印图像写入lsb_watermarked.jpegimwrite(watermarked_image,'lsb_watermarked.jpeg','jpeg');% 显示运行时间elapsed_time=cputime-start_time,% 显示嵌入水印图像figure(1)subplot(1,2,1)imshow(watermarked_image,[])title('嵌入水印图像')subplot(1,2,2)imshow(cover_object,[])title('原图像')%%扩展后水印for ii = 1:Mcfor jj = 1:Ncwatermark1(ii,jj)=message1(mod(ii,Mm)+1,mod(jj,Nm)+1);endendfigure(2)imshow(watermark1,[])title('扩展后的水印')figure(3)imshow(message1,[])title('原水印')2、提取源码clear all;% 保存开始时间start_time=cputime;% 读入嵌入水印图像file_name='lsb_watermarked.jpeg ';watermarked_image=imread(file_name);% 嵌入水印图像的行数与列数Mw=size(watermarked_image,1); %嵌入水印图像行数Nw=size(watermarked_image,2); %嵌入水印图像列数%读入原始水印file_name='2.jpeg';orig_watermark=imread(file_name);%%原始水印的行数与列数Mm=size(orig_watermark,1); %水印的行数Nm=size(orig_watermark,1); %水印的列数% 用嵌入水印图像的最低有效位重建水印for ii = 1:Mwfor jj = 1:Nwwatermark(ii,jj)=bitget(watermarked_image(ii,jj),1);endend% 将提取水印变为原始水印大小watermark=2*double(watermark);for ii = 1:Mm-1for jj = 1:Nm-1watermark1(ii+1,jj+1)=watermark(ii,jj);endendwatermark1(1,1)=watermark(Mm,Nm);% 显示运行时间elapsed_time=cputime-start_time,% 显示提取水印与原始水印figure(4)subplot(1,2,1)imshow(watermark1,[])title('提取水印')subplot(1,2,2)imshow(orig_watermark,[])title('原始水印')3、中值滤波处理二维中值滤波器对图像的处理是用一个二维的窗口去依次成块地覆盖图像中的像素,用覆盖的那些像素值的中值去取代窗口正中的那个像素的值。
基于LSB 的数字水印算法及MATLAB 实现加密算法宗岳,王恺山东科技大学 山东,中国 ***************摘要—LSB 是一种简单传统的信息隐藏算法,属于数字水印技术中的一种。
本文首先介绍了LSB 技术的原理和特点,然后讨论了基于LSB 的数字水印算法。
最后利用MATLAB 2010 b2对这一算法的加密过程进行了仿真。
关键词:LSB 数字水印 信息隐藏 MATLABI. 介绍随着计算机应用逐渐广泛、网络技术的迅速发展,使音频、视频等多媒体信息都能以数字形式传输和播放,从而使大规模非授权拷贝成为了可能,而这样会损害音乐、电影、书籍和软件等出版业的发展,为了保护知识产权引发了一个很有意义的研究方向:信息隐藏。
本文首先介绍了了数字水印技术的原理和分类,接着对LSB 算法原理及LSB 算法实现进行了介绍,最后使用MATLAB 对其加密过程进行了仿真。
II. 数字水印技术的基本原理数字水印的主要 目的是将特定的信息加入到需要保护的媒体信息中,加入的信息一般是能够代表媒体信息版权的内容,如公司标志、媒体作者、特定代码等,而且要保证数字水印能够抵抗一定的攻击,而不被轻易的破坏和修改,同时数字水印要能够被提取或者能够被检测到。
数字水印的具体内容、算法、提取或检测过程根据实际应用有不同的要求。
数字水印的嵌入和提取过程如图1,图2所示。
图1 数 字水印的嵌入过程图2 数字水印的提取过程图1是数字水印的嵌入过程,加入密钥可以提高数字水印的隐蔽性、抗攻击性,而并非是必须的。
根据用途不同,,嵌入的水印有些是需要还原的,而有些则只需验证水印的存在性,前者需要数字水印的提取算法,而图2需要数字水印的检测算法,根据具体的水印算法,嵌入或提取的过程可能有所不同。
III. 数字水印的分类数字水印技术可以从不同的角度进行分类,因此有多种分类方法。
按数字水印的特性可分为鲁捧数字水印和脆弱数字水印。
鲁棒数字水印主要用于标识数字媒体信息的版权信息,它要求嵌入的水印能够抵抗对媒体的常规编辑和恶意攻击,在对媒体进行如:裁剪、旋转、缩放、压缩的变换后水印信息不受到较大损害。
数字图像水印算法研究与实现随着数字化的普及,网络媒体的迅猛发展,信息的传播越来越容易,而原创者的作品权益反而受到了侵犯。
在这种情况下,数字图像水印成为了保护版权的有效手段。
数字图像水印就是将一些特殊的信息嵌入到数字图像中的一种技术。
这篇文章主要介绍数字图像水印算法的研究与实现。
一、数字图像水印的分类数字图像水印主要分为可见水印与不可见水印两种。
在可见水印中,信息直接嵌入到图像中,可以被人类肉眼直接通过观察看到。
而不可见水印则是将信息隐秘地嵌入到图像中,对于人类眼睛来说看不出来。
因为可见水印的安全性不高,通常不会使用在保护版权这种敏感的领域,而不可见水印则更容易被广泛应用。
二、数字图像水印的嵌入过程数字图像水印的主要过程分为嵌入和提取两个过程。
在嵌入过程中,需要选定一些位置作为水印的嵌入点,然后将水印信息嵌入到这些点中。
具体的嵌入过程包括以下几个步骤:1. 对图像进行预处理:将图像转换成灰度图像或二值图像,以便更好地进行处理。
2. 选择嵌入点:选择一些图像中的像素点用来嵌入水印信息。
通常选择的像素点要符合一些特定的规则,比如保证水印信息容易提取,嵌入点分布均匀等。
3. 生成水印信息:生成需要嵌入的水印信息。
水印信息可以是一些文字、数字、图片或者其他的信息。
4. 对水印信息进行转换和编码:将水印信息转化成数字信号,然后进行编码。
常用的编码方式有Huffman编码、压缩编码等。
5. 嵌入水印:将编码后的水印信息嵌入到选择的像素点中。
嵌入方式通常分为直接覆盖、加法混沌、小波变换等方式。
三、数字图像水印的提取过程数字图像水印的提取过程是将嵌入的水印信息从图像中提取出来的过程。
提取的过程其实是嵌入过程的逆过程,包括以下几个步骤:1. 对图像进行预处理:和嵌入过程一样,需要将图像转换成灰度图像或二值图像,才能更好地进行处理。
2. 选择提取点:选择嵌入点对应的提取点。
3. 提取水印信息:从提取点中提取嵌入的水印信息。
LSB算法实现实验报告一、实验环境1、计算机一台;2、Windows XP操作系统、MATLAB7.5二、实验内容与原理LSB(Least Significant Bit)算法是将秘密信息嵌入到载体图像像素值的最低有效位,也称最不显著位,改变这一位置对载体图像的品质影响最小。
LSB算法的基本原理:对空域的LSB做替换,用来替换LSB的序列就是需要加入的水印信息、水印的数字摘要或者由水印生成的伪随机序列。
由于水印信息嵌入的位置是LSB,为了满足水印的不可见性,允许嵌入的水印强度不可能太高。
然而针对空域的各种处理,如游程编码前的预处理,会对不显著分量进行一定的压缩,所以LSB算法对这些操作很敏感。
因此LSB算法最初是用于脆弱性水印的。
LSB算法基本步骤:1、将得到的隐藏有秘密信息的十进制像素值转换为二进制数据;2 、用二进制秘密信息中的每一比特信息替换与之相对应的载体数据的最低有效位;3、将得到的含秘密信息的二进制数据转换为十进制像素值,从而获得含秘密信息的图像。
图1. LSB原理示意图三、实验步骤3.1信息嵌入Picture=imread(‘c:\\test.tif’); %读入载体图像Double_Picture=Picture;Double_Picture=double(Double_Picture);%将图像转换为二进制‘c:\\test.txt’_id=fopen(‘c:\\test.txt’,'r'); %读取秘密信息文件[msg,len]=fread(‘c:\\test.txt’_id,'ubit1');[m,n]=size(Double_Picture);p=1; %p 为秘密信息的位计数器for f2=1:nfor f1=1:mDouble_Picture(f1,f2)=Double_Picture(f1,f2)-mod(Double_Picture(f1,f2),2)+msg(p,1);%将秘密信息按位隐藏入连续的像素中if p==lenbreak;endp=p+1;endif p==lenbreak;endendDouble_Picture=uint8(Double_Picture);imwrite(Double_Picture,‘c:\\result.tif’); %生成秘密信息subplot(121);imshow(Picture);title(' 未嵌入信息的图片');subplot(122);imshow(Double_Picture);title(' 嵌入信息的图片');图2. 嵌入信息前后结果图3.2 信息提取Picture=imread(‘c:\\result.tif’); %读入隐秘信息的图像Picture=double(Picture);[m,n]=size(Picture);frr=fopen(‘c:\\result.txt’,'a');len=8; %设定隐秘信息长度p=1;for f2=1:nfor f1=1:mif bitand(Picture(f1,f2),1)==1%顺序提取图像相应像素LSB 的秘密信息fwrite(frr,1,'bit1');result(p,1)=1;elsefwrite(frr,0,'bit1');result(p,1)=0;endif p==len %判断秘密信息是否读完break;endp=p+1;endif p==lenbreak;endendfclose(frr);图 3 提取结果四、结论基于Matlab 实现了图像的LSB 信息隐藏算法,并讨论了两种图像像素选择算法,通过比较可以发现,使用随机选择算法会将秘密信息均匀地嵌入到整个图像中,增强了秘密信息的不可见性和破解的难度,而顺序选择算法则容易受到视觉攻击。
基于不同图层的LSB自适应数字水印隐藏算法研究宫海梅【期刊名称】《电子测试》【年(卷),期】2016(000)021【摘要】The least significant bit(LSB) algorithm in the spatial domain has low robustness and weak anti attack ability.A LSB adaptive digital watermarking algorithm based on different layers in spatial domain is proposed,The main idea is that the image can be represented by RGB three color matrix,in these three kinds of color components,According to the characteristics of HVS,Hidden information can be embedded dynamically in the low position.Until all the pixels of the cover image are embedded,Experimental results show that the algorithm is simple,can hide large amount of information and has high security.%针对时域的最低有效位(LSB)算法鲁棒性低且抗攻击能力弱的问题,提出了一种时域范围内基于不同图层的LSB自适应数字水印隐藏算法,主要思想是图像可由RGB三个颜色矩阵表示,在这三种颜色分量上,根据HVS的特性,在低位上动态的嵌入隐藏信息,直到载体图像所有像素点嵌入完毕.试验结果表明,该算法实现简单,嵌入、提取信息速度快,隐藏信息量大,具有很高的安全性.【总页数】3页(P58-59,61)【作者】宫海梅【作者单位】海南工商职业学院信息工程系,海南海口,570203【正文语种】中文【中图分类】TP391【相关文献】1.基于LSB的QR码数字水印算法研究 [J], 朱本威;万武南;陈运2.基于小波的数字水印自适应智能算法研究 [J], 付弦;3.基于LSB及置乱的图像隐藏算法研究 [J], 牛振喜4.基于图像LSB的隐藏检测算法研究 [J], 孙碧容;马春波5.基于小波的数字水印自适应智能算法研究 [J], 付弦因版权原因,仅展示原文概要,查看原文内容请购买。
基于LSB的图像数字⽔印实验1. 实验类别设计型实验:MATLAB设计并实现基于LSB的图像数字⽔印算法。
2. 实验⽬的了解信息隐藏中最常⽤的LSB算法的特点,掌握LSB算法原理,设计并实现⼀种基于图像的LSB隐藏算法。
条件实验条件3. 实验(1) Windows 2000或Windows Xp以上操作系统;(2) MATLAB 6.5以上版本软件;(3)图像⽂件4. 实验原理基于LSB的图像数字⽔印任何多媒体信息在数字化时都会产⽣物理随机噪声,⽽⼈的感官系统对这些随机噪声并不敏感。
替换技术就是利⽤这个原理,通过使⽤秘密信息⽐特替换随机噪声,从⽽实现信息隐藏⽬的。
图像⾼位平⾯对图像感官质量起主要作⽤,去除图像最低⼏个位平⾯并不会造成画⾯质量的下降。
利⽤这个原理可⽤秘密信息(或称⽔印信息)替代载体图像低位平⾯以实现信息嵌⼊。
LSB算法选⽤最低位平⾯来嵌⼊秘密信息,最低位平⾯对图像的视觉效果影响最轻微,但很容易受噪声影响和攻击,可采⽤冗余嵌⼊的⽅式来增强稳健性加以解决,即在⼀个区域中嵌⼊相同的信息,提取时根据该区域中的所有像素判断。
1.嵌⼊⽔印.m脚本代码:clear all;clc;picpath = input('请输⼊图⽚绝对路径(加单引号):');watermark_path = input('请输⼊⽔印⽂件绝对路径(加单引号):');msgfid = fopen(watermark_path,'r'); % 打开秘密⽂件,读⼊秘密信息[key,count] = fread(msgfid,'ubit1'); % 读取秘密信息,存⼊key,count为成功读⼊了多少位fclose(msgfid); % 关闭⽂件i = imread(picpath);i1 = i(:,:,1); % 提取RGB第1层嵌⼊⽔印[row,col] = size(i1); % x⾏y列contents = row * col; % 图像能嵌⼊⽔印最⼤⽐特数if count > contentsdisp('warning: 当前图⽚容量⽆法通过LSB⽅法嵌⼊所有⽔印信息!按enter退出matlab.');pause;quit;elsedisp(['当前图⽚通过LSB能嵌⼊的最⼤⽔印⽐特数为: ',num2str(contents),' bits']);endkey_counter = 1;round_counter = 0;total_watermark_bits = 0;if mod(count,row) == 0round = floor(count/row);elseround = floor(count/row) + 1;endfor ii=1:1:roundfor jj = 1:1:rowi1(jj,ii) = bitset(i1(jj,ii),1,key(key_counter,1));% bitset函数改变像素值最后⼀位bit为⽔印bit值key_counter = key_counter + 1;total_watermark_bits = total_watermark_bits + 1;if key_counter > countbreak;endend %内层forround_counter = round_counter + 1;disp(['当前嵌⼊轮数: ',num2str(round_counter)]);if key_counter > countdisp(['LSB嵌⼊正常结束!共嵌⼊⽔印⽐特数: ',num2str(total_watermark_bits),' bits']);break;endend %外层fori(:,:,1) = i1;imwrite(i,'E:\new\LSB_watermarked.bmp');figure;subplot(1,2,1);imshow(picpath);title('原始图像');subplot(1,2,2);imshow(i);title('LSB嵌⼊⽔印后的图像');运⾏截图:2.提取⽔印.m脚本代码:clear all;clc;picpath = input('请输⼊待提取LSB⽔印图⽚绝对路径(加单引号):');watermark_bits = input('请输⼊提取的⽔印⽐特数:');i = imread(picpath); % 读取含有⽔印信息的彩⾊图像i1 = i(:,:,1);key = zeros(watermark_bits,1); % 创建⼀个watermark_bits⾏1列的全0矩阵,⽤于存放⽔印⽐特[row,col] = size(i1);key_counter = 1;round = 0;round_counter = 0;total_watermark_bits = 0;if mod(watermark_bits,row) == 0round = floor(watermark_bits/row);elseround = floor(watermark_bits/row) + 1;endfor ii = 1:1:roundfor jj = 1:1:rowkey(key_counter,1) = bitget(i1(jj,ii),1); % 提取图像矩阵的bit⽔印信息key_counter = key_counter + 1;total_watermark_bits = total_watermark_bits + 1;if key_counter > watermark_bitsbreak;endend %内层forround_counter = round_counter + 1;disp(['当前提取轮数: ',num2str(round_counter)]);if key_counter > watermark_bitsdisp(['LSB⽔印提取正常结束!共提取⽔印⽐特数:',num2str(total_watermark_bits),' bits']);break;endend %外层forfobject = fopen('E:\new\LSB_watermark.txt','w'); % 以只写模式打开⼀个名为mark_message.txt的⽂件,不存在则创建之fwrite(fobject,key,'bit1'); % 将key矩阵中的数作为bit写⼊⽂件句柄为fobject的⽂件fclose(fobject); % 关闭⽂件句柄所对应的⽂件运⾏后hidden.txt与LSB_watermark.txt⽂件⽔印内容LSB⽔印实验的要点1.该实验选取的是彩⾊RGB图像,是3维图像,因此要选RGB中的某⼀层进⾏⽔印嵌⼊,可以选第1,2或3层,分别对于R,G,B层,本实验选择R层及第⼀层i1 = i(:,:,1)2.还应对图像所能容纳⽔印⽐特最⼤数进⾏检查,以防⽔印信息太多导致嵌⼊失败.3.嵌⼊完成后,要将选取的RGB层赋给原3维矩阵对应层i(:,:,1) = i14.代码注意if及for与end配对,⼀个if或for配⼀个end上述脚本在matlab6.5能正确运⾏.。
《新技术讲座》课程课程大作业作业名称:基于数字图像LSB隐写算法的研究姓名:其他组员:学号:班级:完成时间: 2013 年 11 月 2 日基于图像LSB隐写算法的研究(XX大学XX学院XX XX地联系方式)摘要:本文先对信息隐藏技术、隐藏模型、隐写术、隐写算法等进行了简单介绍,然后借助软件matlab7.0,采用空域隐写算法LSB将秘密信息嵌入数字图像,完成隐写;接着将嵌入的秘密信息提取出来,通过计算其峰值信噪比PSNR来评估该隐写算法的不可感知性,证实了LSB嵌入时在图像的最不重重要位加载秘密信息,一定程度上加强了秘密信息的不可感知性;再通过缩小和放大二倍来分析隐写算法的鲁棒性,试验结果表明,该算法计算量低,在低嵌入率时检测结果准确,优势明显,而对嵌入率较高的载秘图像,需要修正后才能达到常规检测的标准;最后,在实验总结基础上提出了一些建议,并对未来进行了展望。
关键词:信息隐藏技术隐写算法 LSB 信息嵌入信息提取 PSNR 不可感知性鲁棒性第一部分1.引言随着计算机技术、信息处理技术和计算机网络技术的飞速发展,Intemet在世界范围内得到了大力推广,各种数字信息的制作、传输、存储和处理由此变得越来越简单。
通过互联网,人们可以快捷高效地获得图像、声音和文本等各种多媒体数据,分享海量的信息资源。
各种机密信息,如个人的信用卡账号逐渐在网络通信中出现。
然而,全球互联网是一个开放的系统,虽然普通用户可以通过网络方便、快捷地交流信息,但是随之而出现的问题也十分严重:个人的隐私的安全如帐号、个人信息、密码口令、电子邮件等能否得到保障;多媒体作品的版权能否得到应有的保护;电子商务中的企业机密能否不被商业间谍所窃取;涉及到国家安全、政府绝密的文件在网络中能否被安全地传输等。
因此,蓬勃发展的网络使得信息传输和交流更加简单易行的同时,也对关系国家安全、经济发展乃至个人隐私等方而的信息安全提出了更高的要求。
国内外各界已经高度重视如何在既能有效地保证各种信息的安全这个大前提下,也能充分利用Internet便利的问题,由此一门新兴的交叉学科——信息隐藏诞生了。
基于LSB算法的可逆水印LSB是Least Singificant Bit的缩写,意思是最不重要比特位。
LSB算法利用了数字图像处理中位平面的原理,即改变图像的最低位的信息,对图像信息产生的影响非常小以至于人眼的视觉感知系统往往不能察觉。
以一幅256灰度的图像为例,256灰度共需要8个位来表示,但其中每一个位的作用是不一样的,越高位对图像的影响越大,反之越低的位影响越小,甚至不能被感知。
LSB算法实现较为简单,嵌入水印步骤如下:①将原始载体图像的时/空域像素值由十进制转换到二进制表示,下面以大小的块图像为例。
②用二进制秘密信息中的每一比特信息替换与之相对应的载体数据的最低有效位,假设待嵌入的二进制秘密信息序列为[ 0 1 1 0 0 0 1 0 0 ],则替换过程如图所示。
③将得到的含秘密信息的二进制数据转换为十进制像素值,从而获得含秘密信息的图像,如图所示。
LSB算法提取水印步骤如下:○1将得到的隐藏有秘密信息的十进制像素值转换为二进制数据,如图所示。
○2将二进制数据的最低有效位提取出来,即为秘密信息序列[ 0 1 1 0 0 0 1 0 0 ]。
如图所示。
但是,对于上述思路,一个八位的二进制水印信息就需要载体作品用八个像素值空间去存储。
如果盲目照搬上述思路来进行水印嵌入,不仅在有限的作品容量中嵌入的信息量小,而且当嵌入的水印数据量多时,计算机的计算量会很大,也可能载体作品的容量不够或为了使作品能够存储水印信息而将作品高位也进行数据置换,从而带来严重的失真。
因此,必须在上述思路的基础上另辟蹊径。
本作业中,我是将一副灰度图片嵌入到一副偏蓝的RGB图片中。
这里我在嵌入前先将图片进行了裁剪,使得载体图片的R、G、B任何一个通道矩阵的行、列大小都大于的嵌入的灰度图片矩阵的行、列大小。
由于图片偏蓝,因此为了使得嵌入水印后,图片失真较小,我选择用色彩非常弱的红色通道嵌入灰度图片。
程序算法如下:1、取出RGB图片的红色通道,然后用mod这个函数将该通道与灰度图片矩阵大小相等的部分的各个像素取模2值,那么像素值为奇数的就会余1,像素值为偶数的就为0,将取模余数用一个和灰度图片矩阵等大小的矩阵存储起来,然后将红色通道被模2的像素与其对应余数相减。
一.数字水印数字水印技术数字水印技术(Digital Watermark):技术是将一些标识信息(即数字水印)直接嵌入数字载体(包括多媒体、文档、软件等)当中,但不影响原载体的使用价值,也不容易被人的知觉系统(如视觉或听觉系统)觉察或注意到。
目前主要有两类数字水印,一类是空间数字水印,另一类是频率数字水印。
空间数字水印的典型代表是最低有效位(LSB)算法,其原理是通过修改表示数字图像的颜色或颜色分量的位平面,调整数字图像中感知不重要的像素来表达水印的信息,以达到嵌入水印的目的。
频率数字水印的典型代表是扩展频谱算法,其原理是通过时频分析,根据扩展频谱特性,在数字图像的频率域上选择那些对视觉最敏感的部分,使修改后的系数隐含数字水印的信息。
可视密码技术二.可视密码技术:可视密码技术是Naor和Shamir于1994年首次提出的,其主要特点是恢复秘密图像时不需要任何复杂的密码学计算,而是以人的视觉即可将秘密图像辨别出来。
其做法是产生n张不具有任何意义的胶片,任取其中t张胶片叠合在一起即可还原出隐藏在其中的秘密信息。
其后,人们又对该方案进行了改进和发展。
主要的改进办法办法有:使产生的n张胶片都有一定的意义,这样做更具有迷惑性;改进了相关集合的造方法;将针对黑白图像的可视秘密共享扩展到基于灰度和彩色图像的可视秘密共享。
三.数字水印(Digital Watermark或称Steganography)技术是指用信号处理的方法在数字化的多媒体数据中嵌入隐蔽的标记,这种标记通常是不可见的,只有通过专用的检测器或阅读器才能提取。
数字水印是信息隐藏技术的一个重要研究方向。
数字水印技术源于开放的网络环境下保护多媒体版权的新型技术,它可验证数字产品的版权拥有者、识别销售商、购买者或提供关于数字产品内容的其他附加信息,并将这些信息以人眼不可见的形式嵌入在数字图像或视频序列中,用于确认数字产品的所有权和跟踪侵权行为。
除此之外,它在证据篡改鉴定,数字的分级访问,数据产品的跟踪和检测,商业视频广播和因特网数字媒体的服务付费,电子商务的认证鉴定,商务活动中的杜撰防伪等方面也具有十分广阔的应用前景。
33利用Delphi 实现数字水印LSB 算法戚利娜(吉首大学张家界学院,湖南张家界427000)摘要:数字水印算法可以有效保护数字媒体资源的版权,文章在基本的空间域LSB 水印算法的基础上讨论了改进的LSB算法,并通过delphi 编程工具实现了改进的LSB 算法嵌入和提取过程,从实现效果看,基本可以满足对图片版权的保护要求。
关键词:Delphi ;数字水印;LSB 算法中图分类号:TP309.7文献标识码:A文章编号:1673-1131(2016)10-0033-02随着互联网的快速发展,图像、音频、文件等数字化媒体资源面临严重的盗版问题。
数字化水印技术的实现可以阻止非法复制,从而有效地保护版权,是信息安全领域的重要分支。
数字水印主要分为图像水印、视频水印、音频水印、文本水印和三维网格数据水印等。
而图像是最基本的多媒体数据,且互联网的发展为图像水印的应用提供了直接大量的应用需求。
因此实现数字水印算法从而保护图像的版权显得尤其重要。
1数字水印概述(1)数字水印原理。
所谓数字水印,即通过一定的算法将特定的版权信息作为水印嵌入在受保护的数字资源中。
在数字资源传播的过程中,可以通过提取其中的版权信息,验证版权内容,从而实现版权的确认与保护。
因此版权信息要具有隐蔽性、鲁棒性、可验证性等特点。
(2)数字水印算法概述。
目前的数字水印算法较多,按水印嵌入的方式可分为空间域和变换域两种方式。
所谓空间域嵌入即直接将水印叠加到图像的空间域,该类算法简单,容易实现,具有较好的水印效果等。
而变换域嵌入即将图像先做某种变换,然后将水印叠加到图像的变换域上。
该算法具有更好的鲁棒性和更强的抵抗能力,但是算法复杂,实现困难。
作者实现图像水印的目的是实现版权的确认和保护,本文的图像资源受到恶意攻击概率较少。
因此,本文选择空间域水印算法来实现图像的保护。
而空间域水印算法中比较经典的有LSB 算法等。
2基本LSB 算法原理LSB 算法的英文全称是:LeastSignificantBit ,即最低有效位算法。
信息安全数字水印作业设计题目LSB算法实现位图图象中的信息隐藏和提取姓名:陈志文陈杭蔡艺军邱榕杰黄莘程__________________________ 学号:2606484 532 531 552 539 ______________________学院:工程技术学院 ___________专业:数字水印 _______年级:2006级________________指导教师:___________________________ (签名)2007 年12 月28 日一、实验原理LSB是L.F.Turner和R.G.van Schyndel等人提出的一种典型的空间域信息隐藏算法。
考虑人视觉上的厄不可见性缺陷,信息一般嵌入到图像最不重要的像素位上,如最低几位。
利用LSB算法可以在8色、16色、256色以及24位真彩色图像中隐藏信息。
对于256色图像,在不考虑压缩的情况下,每个字节存放一个像素点,那么一个像素点至少可以隐藏1位信息,一张640*480像素的256色图像至少可隐藏640*480=307200位(38400字节)的信息。
对于真彩色图像,同样可以按照如上的方法计算可以隐藏的信息量。
二、实验目的通过对LSB算法的编程实现,实现对信息的隐藏和提取。
三、实验环境(1)系统环境:CPU : In ter? Celero n(R) CPU 1.80GHzRAM : 526M(2)开发环境:IDE : Microsoft Visual Studio 2005Language: Microsoft C#四、实验内容在上述系统环境和开发环境中编程实现LSB算法,包括信息的隐藏和提取。
五、程序说明(1)程序运行界面如下图所示:图1信息隐藏界面(2)程序功能说明自动计算最大隐藏信息量并给出提示可以在24位位图中隐藏大小不超过最大隐藏信息量的任意类型文件 自动备份原始图片自动检测伪装图片中是否包含隐藏信息 正确提取出LSB 中的隐藏信息并还原出文件六、实现过程(1) LSBEncrypt 类该类用于实现LSB 的信息嵌入算法,类中各字段及方法说明如下: -字段private string _originalPicPath原始图片路径图2信息提取界面private string _hidinglnfoPath private FileStream _picStream private FileStream _infoStream方法private void HidelnfoLength()输入: 无 输出: 无功能: 将图像的第55至第66字节的LSB 替换为隐藏信息文件的长度private void HidelnfoContent()输入: 无 输出: 无功能: 将隐藏信息以每3个字节写入原始图像从第 67字节开始的每12字节块的LSB 中private byte[] ConvertToBinaryArray(long x) 输入: long x 要转换的长整型数,这个数的大小不会超过2的24次方输出: byte[]二进制表示的字节数组功能: 将长整型数转换为24位二进制表示的字节数组private byte[] ConvertToBinaryArray(byte[] array) 输入: byte[] array 长度为3的字节数组输出: byte[]二进制表示的字节数组功能: 将隐藏信息以每3个字节写入原始图像从第 67字节开始的每12字节块的LSB 中public void ExecuteEncrypt()输入:无 输出:无功能: 执行信息隐藏操作(2) LSBDecrypt 类该类用于实现LSB 的信息提取算法,类中各字段及方法说明如下:1字段隐藏信息路径 原始图片的文件流 隐藏信息的文件流private string _camouflagePicPath private string _infoSavePathprivate FileStream _camouflageStream private FileStream _infoSaveStream■方法private int GetlnfoLength() ;输入:无 输出:int隐藏信息长度功能:从伪装图片的第55至第66字节中提取岀隐藏信息的长度private byte[] ExtractHidingBits(byte[] arr);输入:byte[] arr 长度为12的字节数组,含有隐藏信息 输岀:byte[]从12字节块中提取出的3字节隐藏信息功能:利用位操作提取伪装文件流中每 12字节的LSB 位 public bool ExecuteDecrypt() ;输入:无 输岀:bool执行成功返回true ,失败返回false功能:执行信息提取操作实验小结及思考(1) 程序测试信息隐藏 载体位图图像:桌面\527\527.bmp伪装图片的路径还原岀的隐藏信息的保存路径 伪装图片的文件流还原岀的隐藏信息的文件流七、图3载体图像要隐藏的信息:桌面\527\527.txt图4待隐藏的信息执行信息隐藏算法:图5隐藏信息成功信息隐藏选择伪装图片和还原出的隐藏信息的保存路径:图6信息提取还原出的文本文件test.txt:图7还原出的文件(2) 实验思考在信息隐藏的研究中,主要研究信息隐藏算法与隐蔽通信。
基于LSB算法的图像数字嵌入技术软件系统设计与实现孟范立【摘要】论述了图像水印算法的通用模型,研究了其组成,基于Vc++平台,结合KSB算法以BMP文件为载体传送隐藏的信息,实现了数字水印软件系统的设计.该系统的最大优点是信息嵌入和提取算法简单、执行速度快、图像信息里可编码信息量大、且待隐藏信息可以是任意的文件格式.%This paper discusses the general model of image watermarking algorithm and studies its composition. Combining with LSB algorithm and taking BMP file as the carrier to transport hidden information, this paper develops the digital watermark software system based on VC ++ platform. The system has the advantage of embedded information, simple extracting algorithm, fast implementation,large amount of encodable information, and the arbitrary format of file needed to be hidden.【期刊名称】《吉林化工学院学报》【年(卷),期】2011(028)011【总页数】5页(P74-78)【关键词】信息隐藏;数字水印;LSB算法【作者】孟范立【作者单位】吉林工业职业技术学院自动化系,吉林吉林132013【正文语种】中文【中图分类】TP39随着互联网的迅速发展,人们越来越容易获取数字多媒体信息,与此同时,数字多媒体信息的版权、保密等问题也变得日益突出起来.因为传统的网络安全技术密码学的方法无法解决网络传输中版权保护的问题.一方面其加密后的文件的不可理解性妨碍了多媒体信息的传播和交流;另外,加密信息被接受并解密后,内容完全透明,丧失了所有保护.因此,多媒体信息安全的版权保密等问题也变得日益重要.信息隐藏技术兴起的主要原因也就源于版权保护.数字水印技术是信息隐藏技术的一种,它将具有确定性和保密性的信息(水印)直接嵌入到数字化产品中,使之作为原始数据的一部分而保留其中,从而实现隐藏传输、存储、标注、身份识别、版权保护等功能.现在数字水印技术已经成为用来解决数字多媒体中版权问题和内容认证的主要工具.多媒体数字技术的发展,伴随着版权保护的问题日益增大.近年来,国际上提出了一种新的版权保护技术——数字水印(Digital Watermark)技术.它属于信息隐藏技术的一种,与钞票水印相类似,它是将具体性和保密性的信息(水印)直接嵌入到数字化产品(静止图像、语音、文档、图书、视频等)中,使之作为原始数据的一部分而保留在其中,利用人类的听觉、视觉系统地特点,在数字化的数据内容中嵌入不明显的记号通常是不可见或不可察觉的,因此,嵌入了数字水印的信息和原始的信息相差不大,难以被人们所分辨出来,但是通过一些计算操作可以检测或提取出水印,即在解密之后仍可以对数据的复制和传输实施跟踪,从而实现隐藏传输、版权保护等功能.目前主要的数字水印算法有:最低有效位算法(LSB)空域算法、文档结构微调方法、Patchwork算法、纹理块映射编码方法、直接序列扩频水印算法、基于DCT变换与数字水印算法、压缩域算法、NEC算法、生理模型算法等.数字水印产品应用前景广阔,在以下领域都将得到应用,版权保护、票据防伪、加指纹、篡改提示、使用控制、标题和注释、内容认证、隐蔽通信及其对抗.本文应用Visual C++开发工具,利用其MFC模块,以BMP位图文件为传送载体,实现了图像数字嵌入技术软件系统的设计.LSB(Least Significant Bits)算法:是将秘密信息嵌入到载体图像像素值的最低有效位,也称最不显著位,改变这一位置对载体图像的品质影响最小,就是把水印信息嵌入到载体图片最不重要的位置上.LSB算法的信息隐藏是一种典型的空间域数据隐藏方法,是通过替换最低有效位来嵌入秘密信息.由于LSB隐藏信息方法实现简单,隐藏量比较大,因此设计信息隐藏传送的应用软件要完成两个方面的工作:首先是对输入的位图文件能够进行处理,实现数字水印的嵌入并将嵌入的文件进行保存;其次是对已嵌入水印的位图进行水印的提取并提取出的文件保存.本文在软件系统的设计过程中采用了如下方法.(1)载入位图文件,判断是否嵌入水印信息,通过检验文件头中两个保留字(这里用来保留嵌入信息长度的)来实现(如果保留字为零表示没有嵌入水印信息).(2)位图文件像素所占数据宽度,检查载入的图片是否是24位位图,不是则必须进行位图转换.(3)判断信息位图所占空间,比例合适调用算法进行嵌入,最后将原始载体位图和嵌入信息的载体位图显示在窗口上进行比较.其工作的流程图,如图1所示:这部分的主要功能是实现了对BMP文件嵌入不同的信息,然后把嵌入了信息的BMP文件保存起来,针对嵌入信息的操作的相应数据流图如图2所示.具体主要包含四方面的内容:载入位图、嵌入文件、显示原始图和嵌入文件的位图以进行对比、保存已经嵌入文件的位图.(1)载入位图:首先在系统的实现中这部分有一个与用户进行交互的按钮——打开位图文件,此按钮通过VC++的ClassWizard与消息映射函数OnBmfOpen()相关联起来,此函数主要实现的功能是:定义文件对话框.该对话框是由MFC提供的,它继承自CDialog类,主要的功能是负责与用户进行交互从而得到要打开位图文件的路径.字符串static char szFilter="BMP Files(*.BMP)|*.BMP||",用来指明这个文件对话框所能代表的文件类型.通过 InvalidateRect(NULL,TRUE)与UpdateWindow()将对视图窗口进行更新显示,启动程序调用相关的画图程序对窗口进行绘制.程序中将多次用到m_Dib,m_Dib是该类的一个数据成员,它是程序中添加定义的一个新类——DIB的对象实例.将对话框得到的路径传给m_Dib.Load(const char*),由其来读取位图的相关信息,然后把需要的参数进行相应的设置.得到文件对话框传过来的文件路径后,把该文件调入内存,使用dwDibSize记录该位图图像除文件头外的数据长度,同时还定义指针pDib,该指针将指向位图信息头开始的位置.然后需要察看图像是否已经嵌入了隐藏信息.由于位图文件头中bfReserved1和bfReserved1为保留字,不用考虑.于是在对信息进行嵌入的时候,就利用这两个域来保存嵌入信息的长度,当程序发现它为0时,可以对它进行嵌入操作.否则,就把嵌入信息的长度提取出来,保存到embfile_size中.还需要把具体的信息放进真正的类成员数据里面,m_pDib=pDib;//指向信息头位置;m_dwDibSize=dwDibSize;//信息头加图像长度;它将为以后操作进行真正的数据保存.位图还分为2色位图,16色位图,256色位图和真正需要的24位位图.由于只有24位位图不需要用到调色板,为了简化程序,这里还需要对2色、16色、256色位图进行转换,即不用调色板,而每个像素改用3字节来记录其RGB具体值.要完成该工作,首先要判断其是否为24位位图.当载入的位图不是24位位图时,要进行位图转换.同时,要用到DIB的类数据成员m_pDibBits保存实际图像数据位置:位图的文件头被保存在BFH中,而信息头位置被保存在m_pDib中,m_pDibBits则保存了实际图像数据的位置.到此,所有准备工作已经完成,还需要的工作是记录载体图像数据长度.最后根据位图是否嵌入信息对标志位tag进行设置.从DIB的Load函数回到OnBmfOpen函数,if{m_Dib.tag==0}是对图像是否有隐藏信息进行判断,当 if条件成立,即 m_Dib.tag==0,将 embed=true;和pick=false;否则 embed=false;和 pick=true;接着调用 SetButton(embed,pick);它原始定义如下:SetButton(bool embed,bool pick)它是类成员函数,它负责对两个按钮进行设置,使用GetDlgItem(IDC_ONEMBEDFILE);是将ONEMBEDFILE这个按钮的ID值赋给 pButton,这时,pButton也指向了这个按钮,pButton->EnableWindow(embed);则是对按钮进行是否可操作设置.当embed为true时,按钮可被操作(如鼠标单击它或双击它),它将对事件进行消息映射,否则,它将被设置成不可操作.同理,该函数也对IDC_ONPICK进行了相类似的操作.事实上,本水印系统可进行位图进行嵌入和提取操作,由于这两个是互逆的操作,于是这里对嵌入(embed)和提取(pick)进行互斥的设置,每次打开一个位图图像,则在对图像进行了判断后,接着就对着两个动作进行相应的设置,以告诉使用者接下来应该做出什么处理(嵌入或提取).(2)嵌入文件:通过上面分析知道,在打开一个没有嵌入信息的位图后,单击嵌入文件按钮可操作,按钮提示由暗变成亮.该按钮通过VC++的ClassWizard与消息映射函数OnEmbedFile()相关联起来,主要是:定义文件对话框.它主要的功能也是负责与用户进行交互从而得到文件.然后它不同的是,它可以打开任意的文件,而不仅局限于位图文件(*.BMP).为了方便使用者的选择,字符串static char BASED_CODE szFilter还在All Files(*.*)|*.*后添加其他的几个文件类型,让使用者可以任意的选择合适的文件类型,按自己的需要进行文件搜索范围的缩小.当嵌入的文件大小合适时,程序调用m_Dib.BackUpDib();对原始位图进行保存供以后的对比显示,调用m_Dib.Embed();对图像进行水印嵌入.由于选择了利用最低一位来进行信息的嵌入,并要求对载体图像每字节的奇偶进行计算,于是用x来记录载体图像每字节的每一位数据,同时程序中用了一个t来记录载体图像每走八个字节就记录一次嵌入信息的一个字节每一位数据,并将其保存在s中,然后与载体图像数据进行运算将信息隐藏起来.当位图被嵌入了信息后,Invalidate(true);将通知主窗口调用画图代码对窗口进行重新的绘制,接下来有文件对话框提示用户保存嵌入了信息的位图.如果位图已经被嵌入了信息,就会对嵌入按钮进行禁止接受消息设置.(3)显示原始和嵌入文件的位图进行对比:位图的显示主要通过函数OnPick()完成,它主要的工作有两个:当首次打开位图文件时;与嵌入信息后的文件对比,它不能通过按钮和用户直接的交互,而是每次窗口被刷新时有主程序来直接调用.得到主窗口的信息后,包括其长和宽等一些参数.而show_contrast分别在打开位图文件和打开嵌入文件时分别赋为false和true,这里就针对它所赋的值进行单个显示还是对比显示.显然,当位图没有被嵌入信息时,它调用m_Dib.Draw(pDC,0,0);将图像显示在设备窗口中,否则,它调用m_Dib.DrawContrast(pDC,Rect.right,Rect.bottom);将图像进行对比显示,同时,还在窗口(Rect.bottom-80)位置显示文本提示:“左图为原始图,右图为嵌入了隐藏信息的图”,显示相关信息.这部分的主要功能是实现了对已经嵌了信息的BMP文件进行信息的提取,然后把提取的信息进行保存.针对提取嵌入信息的操作的相应数据流如图3所示.具体主要包含三个方面的内容:载入位图;提取信息;保存提取的信息.下面分别对这几部分进行阐述.(1)载入位图:这部分操作和嵌入水印的第一部分是类似的,在系统设计时,将这两个部分合成一个,都利用函数OnBmfOpen()进行图像处理.(2)提取信息并进行保存:实现是与用户进行交互的按钮——提取隐藏信息,当图像被打开并检查有嵌入信息时,m_Dib.Load()会将tag设置为1,表示已经嵌入了信息.接着,提取信息按钮将被设置成亮.该按钮和消息映射函数OnPick()相关联,这个函数的主要功能是:定义一个对话框,负责与用户进行交互得到保存位图文件的路径.使用单个字符串可以对保存文件的类型进行选择.由于该对话框是对文件进行保存的,所以FileDlg的第一个参数被设置成FALSE,表示该对话框是进行文件的保存(而非打开).当图中保存按钮被按下时,得到保存文件的路径并作出相应处理.确定文件保存后,m_Dib.Pick()才对图像中的信息进行提取.指针p指向位图真正的数据部分,对每个字节,用数组x记录每一位信息,然后s记录隐藏信息的每一位,载体图像经过八个字节,就计算出八个s,组成隐藏信息数据一个字节.信息被提取后,m_Dib.SavePicked(FileDlg.GetPathName());将隐藏信息保存到FileDlg.Get-PathName()指定的路径,由于信息已被提取,pick=false;和SetButton(embed,pick);对提取按钮进行设置,使该按钮不能再接受消息.这是一个模式对话框,也就是当它被调用后,仅当按下确定按钮或关闭它之后,程序的其他部分才能做出响应.系统中使用到的按钮、对话框以及所有这些控件都要集成到一个主窗口中,Windows支持几种类型的应用程序窗口.典型的应用程序应该活动在称为“框架窗口”中.框架窗口是全功能的主窗口,用户可以改变尺寸、最小化、最大化等.当主窗口被关闭时,所有子窗口将一起被关闭.该数字水印系统使用的是单文档界面,它直接继承自类CFormView,当打开的位图文件是没有嵌入水印信息的文件的时候,按钮“打开嵌入文件”会提示使用者打开需要嵌入的信息文件,如图4所示.当嵌入水印信息以后,会自动显示原始载体图片和已经嵌入信息的图片,这时“打开嵌入文件”的按钮会自动变灰提示操作不可再次进行,如图5所示,可以看到,原有载体图片和已经嵌入水印信息的文件用肉眼是无法分辨的.为了说明问题这里把实验时嵌入的水印信息附在如图6所示中,是一个较小的BMP位图格式图片.当打开的文件是含有水印信息的位图的时候,“提取隐藏信息的”按钮会自动变亮,提示可以从图片中提取水印信息,如图7所示.该数字水印系统主要针对位图文件,利用LSB算法进行文件的嵌入.它的优点是在信息嵌入和提取方面执行速度快,图像信息里可编码信息量大,而且,待隐藏信息可以是任意的文件格式.除了可以嵌入图片信息以外,还可以嵌入文本文件和其它文件.图像数字嵌入技术作为一种新兴的技术,它需要得到更多的完善和改进.通过对本文的学习,认识到其研究将侧重于数字水印理论方面更好的模型建立,分析各种媒体中隐藏水印信息的理论容量,以及算法稳健性和抗攻击性.同时,也应重视对水印攻击方法的研究,这有利于促进研制更好的数字水印算法,以便开发更好的图像数字嵌入技术应用软件系统.【相关文献】[1]齐锐.基于变换域的数字图像水印技术的研究[M].成都:电子科技大学,2003.[2]张焕国,郝彦军.数字水印、密码学比较研究[J].计算机工程与应用,2008,39(9):63-67. [3]马小松,王朔中,张新鹏.一种基于N像分块特性的数字水印嵌入方法[J].上海大学学报:自然科学版,2006,9(1):1-4.。
基于LSB算法的数字水印嵌入与提取方法1设计目的(1)了解数字水印的基本概念,深入理解基于LSB算法的数字水印嵌入与提取方法。
(2)运用MATLAB语言编程实现图像水印的嵌入和提取。
(3)能够显示水印嵌入前后的载体图像,能够显示嵌入与提取的水印。
2设计方案2.1 数字水印的相关知识数字水印的相关知识数字水印(Digital Watermark)技术是指用信号处理的方法在数字化的多媒体数据中嵌入隐蔽的标记,这种标记通常是不可见的,只有通过专用的检测器或阅读器才能提取。
数字水印是信息隐藏技术的一个重要研究方向。
在数字水印技术中,水印的数据量和鲁棒性构成了一对基本矛盾。
从主观上讲,理想的水印算法应该既能隐藏大量数据,又可以抗各种信道噪声和信号变形。
然而在实际中,这两个指标往往不能同时实现,不过这并不会影响数字水印技术的应用,因为实际应用一般只偏重其中的一个方面。
如果是为了隐蔽通信,数据量显然是最重要的,由于通信方式极为隐蔽,遭遇敌方篡改攻击的可能性很小,因而对鲁棒性要求不高。
但对保证数据安全来说,情况恰恰相反,各种保密的数据随时面临着被盗取和篡改的危险,所以鲁棒性是十分重要的,此时,隐藏数据量的要求居于次要地位。
数字水印技术是通过一定的算法将一些标志性信息直接嵌到多媒体内容当中,但不影响原内容的价值和使用,并且不能被人的知觉系统觉察或注意到。
水印信息可以是作者的序列号、公司标志、有特殊意义的文本等,可用来识别文件、图像或音乐制品的来源、版本、原作者、拥有者、发行人、合法使用人对数字产品的拥有权。
与加密技术不同,数字水印技术并不能阻止盗版活动的发生,但它可以判别对象是否受到保护,监视被保护数据的传播、真伪鉴别和非法拷贝、解决版权纠纷并为法庭提供证据。
为了给攻击者增加去除水印的难度,目前大多数水印制作方案都采用密码学中的加密(包括公开密钥、私有密钥)体系来加强,在水印的嵌入、提取时采用一种密钥,甚至几种密钥联合使用。