图像数字水印的 JAVA 实现
刘剑鸣 著
哈尔滨地图出版社
哈尔滨
内 容 简 介
我国目前正处于 JAVA 语言数字水印技术开发的起步阶段。
本书共分 9 章,由浅入深、循序渐进地讲解了可见图像水印、DCT、
DFT、小波和 RSA 公钥水印的 JAVA 编程方法,介绍了视觉隐藏水
印技术的 JAVA 实现。在应用方面本书重点介绍了印刷图像抗干扰
和手机领域中数字水印技术的 JAVA 实现。在附录中本书介绍了相
关章节中 JAVA 实验的 matlab 补充实验。本书各章的 JAVA 语言源
程序均通过了在 jdk1.6 上的独立运行实验,可供企业、科研单位、
高等学校从事 JAVA 语言图像数字水印技术开发的同行分析、研究
使用。
前 言
本书的内容适合于已经掌握了 JAVA 基本编程技术和数字水印
理论并准备进一步使用 JAVA 技术开发数字水印软件的读者使用。
书中提供了应用 JAVA 技术开发数字图像水印的一系列有针对性的
实例。本书几位作者长期从事数字水印和 JAVA 的技术开发和教学
研究工作,通过对多年工作的总结,向读者提供了使用 JAVA 开发
水印软件的一系列解决方案。书中设计了一系列有针对性的例子
帮助读者领会数字水印 JAVA 软件开发的本质和内涵,例子的讲解
充分考虑了读者的实际水平和自学时可能遇到的各种障碍,尽量
深入浅出短小精练。为了帮助读者尽快掌握相关的核心编程技术,
本书没有泛泛地讲解各种数字水印的 JAVA 编程,而是挑选几个具
有代表性的数字水印算法,通过采用逐层展开的方式,循序渐进
地引导读者逐步掌握数字图像处理和数字水印的 JAVA 编程技术的
各个编程环节。
目前 SUN 公司和其它的软件提供商还没有推出完整的有关数
字水印的 JAVA 类库,国内外也还没有见到图像数字水印 JAVA 软
件开发的指导材料和相应的教学用书和实验教学软件。作者编写
本书另一目的是给高校图像处理和信息安全专业的研究生和高年
级大学生提供一本教学参考用书。在两年多的时间里,作者在两
名教师的参与下与 6 名硕士研究生一起参考公开资料编写了此书。
书中非常详细地介绍了几种有代表性的图像数字水印的编程特点
和编程思路。为了方便软件的实际应用,书中处理的数字图片绝
大多数来源于普通数码相机或扫描仪拍摄得到的彩色图像文件。
因为水印处理过程涉及到大量的数字图像信息,为了提高图片的
程序处理速度,增加软件的实用性,书中各章尽可能采用快速编
程算法。作为一本教学参考书,本书提供的实验程序均通过了在
jdk1.6 平台上的单独运行调试和实际实验课的使用验证,其各章
实验量是按照 1 小节课的时间设定的,根据实验需要,部分程序
前面附有详细的使用说明。
本书共分 9 章。第 1 章介绍了数字水印和 JAVA 语言的一些基
本概念;第 2 章介绍了可见图像数字水印的 JAVA 编程,本章程序
主要由隋明森、李晓君编写;第 3 章介绍了 FDCT 图像数字水印的
JAVA 编程,本章程序由梁伟英、隋明森编写;第 4 章介绍了 FFT
图像数字水印的 JAVA 编程,本章程序主要由刘小凡、李晓君编写;
第 5 章介绍了 FDWT 图像数字水印的 JAVA 编程,第 7 章介绍了视
觉隐藏水印技术 JAVA 实现,这 2 章程序主要由隋明森、邢文慧编
写;第 6 章介绍了公钥数字水印的 JAVA 编程,本章程序由张帆、
隋明森编写;第 8 章介绍了图像特征提取 JAVA 编程,第 9 章介绍
了数字水印技术在手机领域应用编程,这 2 章程序主要由刘小凡、
许龙彬编写;附录 ABCDE 的 matlab 实验是对相关章节中 JAVA 实
验的补充。在本书撰写过程中,有些资料来源于网上,由于网页
的更新,原资料多已被替换。在此对上述同志及网上提供资料的
同仁们表示忠心的感谢。
虽然作者已经尽力,但由于本人水平有限,掌握知识存在局
限性以及时间上的限制,在本书的撰写过程中难免有错误或不尽
人意之处,恳请读者朋友们多提宝贵意见,共同进一步深入探讨
图像数字水印 JAVA 编程的原理及其特点。我的 E-mail 地址是:
LJMJAVA2@YAHOO.COM.CN。
作 者
2008 年 11 月 16 日
目 录
第 1 章 概述
1.1 数字水印的研究
1.1.1 历史及现状
1.1.2 数字水印分类
1.1.3 数字水印评价标准
1.2 JAVA 语言介绍
第 2 章 可见图像数字水印
2.1 可见图像数字水印 JAVA 程序设计
2.1.1 图像文件像素的获取
2.1.2 图像文件三维像素矩阵
2.1.3 可见水印的嵌入
2.1.4 三维像素矩阵的逆变换
2.1.5 像素转换成图像文件
2.2 JPG-24BPP 可见图像数字水印 JAVA 实现
2.2.1 创建新文件
2.2.2 嵌入可见水印
2.3 BMP-8BPP 可见图像数字水印 JAVA 实现
2.4 JPG-8BPP 可见图像数字水印 JAVA 实现
2.4.1 创建新文件
2.4.2 嵌入可见水印
第 3 章 FDCT 图像数字水印
3.1 二维 DCT 变换介绍
3.1.1 二维 DCT 变换原理
3.1.2 二维 DCT 变换举例
3.2 二维图像 FDCT 的 JAVA 实现
第 4 章 FFT 图像数字水印
4.1 DFT 原理