logo资料库

java实现图像处理.doc

第1页 / 共228页
第2页 / 共228页
第3页 / 共228页
第4页 / 共228页
第5页 / 共228页
第6页 / 共228页
第7页 / 共228页
第8页 / 共228页
资料共228页,剩余部分请下载后查看
1.1 数字水印的研究
1.2 JAVA语言介绍
3.1 二维DCT变换介绍
3.1.1 二维DCT变换原理
3.1.2 二维DCT变换举例
3.2 二维图像FDCT的JAVA实现
4.1 DFT原理
4.1.2 二维DFT的性质
4.2 一维FFT
4.3 二维FFT的JAVA实现
4.4 二维图像FFT的 JAVA实现
4.4.1 二维图像FFT幅度谱JAVA实现
4.4.2 二维图像FFT数字水印JAVA实现
5.1 卷积运算JAVA实现
5.2 一维FDWT的JAVA实现
5.3.1 二维FDWT原理
5.3.3 二维FIDWT的JAVA实现
5.5 二维图像FDWT数字水印JAVA实现
6.1.2 费尔码和欧拉定理
6.3.1 素数生成JAVA实现
6.3.3 e类JAVA实现
6.3.5 微型RSA算法JAVA实现
6.3.6 260 bits素数JAVA实现
6.3.7 130 bit e、d和518 bits n的JAVA实现
6.3.8 RSA算法的JAVA实现
7.1 DCT视觉感知模型
7.1.2 Watson视觉感知模型
7.2 小波视觉感知模型
8.1 仿射变换
8.2 灰度图与图像分割
8.2.1 灰度图
8.3 图像不变矩
8.3.1 平移旋转
8.3.3 抽取绿色分量预处理JAVA实现
8.3.5 Hu不变矩提取二值图像特征值JAVA实现
9.1 J2ME概述
9.2 J2ME安装与运行
9.2.2 J2ME环境下的开发步骤
9.3.2 J2ME常用的类和方法
9.4 J2ME对于图像的操作
9.4.2 通过像素生成图像
1.1 数字水印的研究
1.2 JAVA语言介绍
Java语言的主要特点如下:
2、分布式
3、解释型
4、稳定性和安全性
5、多线程
6、平台无关性
JAVA目前有3个版本:
2.1 可见图像数字水印JAVA程序设计
2.2 JPG-24BPP可见图像数字水印JAVA实现
JDK平台的安装和程序的运行
JAVA试验用源程序
JAVA试验用源程序
2.3 BMP-8BPP可见图像数字水印JAVA实现
JAVA试验用源程序
//这一部和读取不同,它先是得到一个IIOImage对象
2.4 JPG-8BPP可见图像数字水印JAVA实现
JAVA试验用源程序
}else
BufferedImage outImage = new BufferedImage
JAVA试验用源程序
} catch(IOException e) {
//得图像WritableRaster,得到图像高度和宽度像素
// 定义长为oWidth*oHeight一维数组存储图像像素
/*定义BufferedImage大小和原始图像一样大,格式为
} catch(IOException e) {
3.1 二维DCT变换介绍
3.2 二维图像FDCT的JAVA实现
JAVA试验用源程序
C2=0.923879532, C3=0.831469612, C4=0.707106781,
S0734=S07+S34;
S1625=S16+S25;
D0734=S07-S34;
D1625=S16-S25;
S0734=S07+S34;
S1625=S16+S25;
D0734=S07-S34;
D1625=S16-S25;
//将BufferedImage对象写入磁盘
JAVA试验用源程序
//得rgb图像三层矩阵,mRgbPixels[0]表示b层分量
//把嵌入水印的结果写到BufferedImage对象
"bmp");//将BufferedImage对象写入磁盘
4.1 DFT原理
2、二维DFT定义
设二维函数,其二维DFT为:
4.2.1 DIT-FFT算法基本原理
4.2.2 DIT-FFT编程思路
3、旋转因子
4、蝶型运算
4.2.3 一维IFFT的JAVA实现
JAVA试验用源程序
// []xr与[]xi分别为时/频域信号实部序列与虚部序列
JAVA试验用源程序
//原始序列虚部
6.0,11.48528137423857,
18.0,-5.4852813742385695,
1.216143118998150E-16,
JAVA试验用源程序
JAVA试验用源程序
JAVA试验用源程序
// 将绿色分量幅度谱以图像文件的形式写到缓冲区
} catch (IOException ee) {
JAVA试验用源程序
//读取原始图像的像素值
//将原始图像绿色分量分为8×8像素块,将这些像素块
//若水印图像像素为0值,我们将绿色分量的FFT域中
File outWaterFile =
JAVA试验用源程序
//读取原始图像绿色分量的像素
5.1 卷积运算JAVA实现
(3)将{6,-1}补0扩展成和m补0后相同长度,补0共有:
(m补0后长度)-(n长度)+1=6-2+1=5种情况。定义:
(4)将补零变换后的数组m与数组n(i)对应的元素相乘,然后各乘积相加得到第i个卷积结果。例如:
JAVA试验用源程序
5.2 一维FDWT的JAVA实现
5.2.1 一维FDWT原理
={-1/,-1/
(J-1=1,k)={-1/
(J-1=1,k)*L(-n)={3/
5.2.2 一维FIDWT原理
5.2.3 一维FDWT的JAVA实现
JAVA试验用源程序
JAVA试验用源程序
5.2.4 一维FIDWT的JAVA实现
JAVA试验用源程序
// 目的 :用于一维小波反变换变换演示实验
//定义输入数组值
5.3 二维FDWT的JAVA实现
{ 3, 5, 0,-2 }
{ 5, 5 }
{-2, 2 }
JAVA试验用源程序
//最大分辨率表示最多能进行几层小波分解
//定义一维变换高频系数
//定义一维变换低频系数
//高低系数
//低高系数
//低低系数
//下面对列进行一维小波变换
LL低频:{{ 3, 7},{ 5, 5}}
JAVA试验用源程序
5.4 二维图像FDWT的JAVA实现
JAVA试验用源程序
BufferedImage _image =
BufferedImage bImage =
BufferedImage gImage =
BufferedImage rImage =
// 将lRGB、hRGB、vRGB、dRGB赋值给temp
//分别输出R、G和B层一共12个图片
//调MathTool类matrixToArray把int型矩阵转向量
BufferedImage aImage =
5.5 二维图像FDWT数字水印JAVA实现
(3)在oblk的四个位置嵌入wblk的四比特信息;
JAVA试验用源程序(1)
JAVA试验用源程序(2)
BufferedImage mImage =
BufferedImage oImage =
//得到图像的WritableRaster对象
//定义结果矩阵
//创建输出图像的BufferedImage对象
//将像素写入到Raster
6.1 公钥密码算法预备知识
(5)如果,
(1)
6.1.2 费尔码和欧拉定理
(1)对于任一素数,有:
6.2 RSA公钥密码算法
RSA算法的描述:
(4)随机选取整数,满足
6.3 RSA算法JAVA实现
6.3.1 素数生成JAVA实现
JAVA试验用源程序
JAVA试验用源程序
JAVA试验用源程序
JAVA试验用源程序
6.3.5 微型RSA算法JAVA实现
JAVA试验用源程序
BigInteger b1=new BigInteger("35");//密文
6.3.6 260 bits素数JAVA实现
JAVA试验用源程序
// 目的 : 用于JAVA课RSA中随机生成素数(质数)演示
6.3.7 130 bit e、d和518 bits n的JAVA实现
JAVA试验用源程序
6.3.8 RSA算法的JAVA实现
JAVA试验用源程序
BigInteger a2(BigInteger a2_n,BigInteger
JAVA试验用源程序
String n1=
String e1=
String d1=
6.4 图像RSA公钥加密JAVA实现
JAVA试验用源程序
//对图像数据进行加密
//对加密后的图像数据进行解密
String msg) {
6.5 图像RSA公钥数字水印JAVA实现
(2)对oImage进行8*8分块,记为oblk,
(4)将得到的图像存入磁盘,命名为result.bmp
(1)读取嵌入水印的图像即result.bmp,得到mImage,
(3)将mblk[2][2]位置上用下列公式来求加密的水印信息
(4)将JMark解密,得解密后水印信息mark,存盘mark.bmp
JAVA试验用源程序(1)
//把水印结果写磁盘,创建输出图像BufferedImage对象
JAVA试验用源程序(2)
BufferedImage mImage =
String msg) {
7.1 DCT视觉感知模型
7.2 小波视觉感知模型
//得到原始图像的BufferedImage对象
//得到水印图像的BufferedImage对象
//把像素向量形式变成double型
//将像素向量变成矩阵形式
BufferedImage mImage =
BufferedImage oImage =
//得到图像的WritableRaster对象
//定义结果矩阵
//提取算法
} else
} else
}else
}else
8.1仿射变换
8.3.1 平移旋转
JAVA试验用源程序
} catch (IOException ee) {
JAVA试验用源程序
JAVA试验用源程序
// 目的 :Hu不变矩实验
//原始图片二值分割后在水平方向扭曲10度后得到的Hu值
//原始图片二值分割后旋转5度的Hu值
//原始图片二值分割后对图像垂直方向收缩80%
7.770426927759421E-4
7.382736247566968E-4
7.729153250761352E-4
9.1 J2ME概述
9.2 J2ME安装与运行
9.2.2 J2ME环境下的开发步骤
9.3 MIDP编程
StartApp()方法
PauseApp()方法
DestroyApp()方法
Display类
List组件
Graphics类
Command时间处理
(1)新建一个j2ME工程prj_1;
JAVA试验用源程序
Display.getDisplay(this).setCurrent
JAVA试验用源程序
CommandListener {
//依据Logo修改Alpha分量,从而产生透明效果的水印
JAVA试验用源程序
CommandListener {
} catch (IOException e) {
Display.getDisplay(mainMidlet).setCurrent(
Display.getDisplay(mainMidlet).setCurrent(
Imread
MATLAB实验用源程序
MATLAB实验用源程序
2、模糊控制器的设计
(b)输入输出量选择框,输入输出量是“词”而非数值;
3、运行过程说明
4、再次运行说明
5、实验
MATLAB实验用源程序
2、嵌入过程
MATLAB实验用源程序
MATLAB实验用源程序
1、方法rgb2gray
3、方法edge
1997,6(12):1673-1687
图像数字水印的 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 2.4 BMP-8BPP 可见图像数字水印 JAVA 实现 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 原理 DFT 的定义 4.1.1 4.1.2 二维 DFT 的性质 4.1.3 DFT 图像
4.2 一维 FFT DIT-FFT 算法基本原理 DIT-FFT 编程思路 4.2.1 4.2.2 4.2.3 一维 IFFT 的 JAVA 实现 4.3 二维 FFT 的 JAVA 实现 4.4 二维图像 FFT 的 JAVA 实现 4.4.1 二维图像 FFT 幅度谱 JAVA 实现 4.4.2 二维图像 FFT 数字水印 JAVA 实现 第 5 章 FDWT 图像数字水印 5.1 卷积运算 JAVA 实现 5.1.1 卷积运算介绍 5.1.2 卷积运算 JAVA 实现 5.2 一维 FDWT 的 JAVA 实现 5.2.1 一维 FDWT 原理 5.2.2 一维 FIDWT 原理 5.2.3 一维 FDWT 的 JAVA 实现 5.2.4 一维 FIDWT 的 JAVA 实现 5.3 二维 FDWT 的 JAVA 实现 5.3.1 二维 FDWT 原理 5.3.2 二维 FDWT 的 JAVA 实现 5.3.3 二维 FIDWT 的 JAVA 实现 5.4 二维图像 FDWT 的 JAVA 实现 5.5 二维图像 FDWT 数字水印 JAVA 实现 第 6 章 RSA 公钥数字水印 6.1 公钥密码算法预备知识 6.1.1 素数和模运算 6.1.2 费尔码和欧拉定理 6.1.3 欧几里德算法 RSA 公钥密码算法 RSA 算法 JAVA 实现 6.2 6.3 6.3.1 素数生成 JAVA 实现 6.3.2 素数测试 JAVA 实现 6.3.3 e 类 JAVA 实现
d 类的 JAVA 实现 6.3.4 6.3.5 微型 RSA 算法 JAVA 实现 260 bits 素数 JAVA 实现 6.3.6 130 bit e、d 和 518 bits n 的 JAVA 实现 6.3.7 6.3.8 RSA 算法的 JAVA 实现 6.4 图像 RSA 公钥加密 JAVA 实现 6.5 图像 RSA 公钥数字水印 JAVA 实现 第 7 章 视觉隐藏水印技术 7.1 DCT 视觉感知模型 7.1.1 7.1.2 7.1.3 DCT 视觉感知模型原理 Watson 视觉感知模型 Watson 视觉感知模型 JAVA 实现 7.2 小波视觉感知模型 7.2.1 小波视觉感知掩蔽函数 7.2.2 小波视觉感知模型原理 7.2.3 小波视觉感知模型 JAVA 实现 第 8 章 图像特征提取 JAVA 实现 8.1 仿射变换 8.2 灰度图与图像分割 8.2.1 灰度图 8.2.2 阈值分割 8.3 图像不变矩 8.3.1 平移旋转 8.3.2 原点矩、中心矩和 Hu 不变矩 8.3.3 抽取绿色分量预处理 JAVA 实现 8.3.4 灰度图分割 JAVA 实现 8.3.5 Hu 不变矩提取二值图像特征值 JAVA 实现 第 9 章 数字水印技术在手机领域的应用 9.1 9.2 J2ME 概述 J2ME 安装与运行 9.2.1 9.2.2 J2ME 开发环境安装与配置 J2ME 环境下的开发步骤 9.3 MIDP 编程
9.3.1 9.3.2 MIDlet 生命周期 J2ME 常用的类和方法 9.4 J2ME 对于图像的操作 9.4.1 图像的像素抓取及修改 9.4.2 通过像素生成图像 9.5 手机终端可见水印嵌入 MATLAB 编辑器的使用 附录 A 附录 B 小波和傅里叶频谱仿真实验 附录 C 小波模糊感知仿真实验 附录 D 小波模糊感知水印仿真实验 附录 E 图像边缘提取 参考文献
分享到:
收藏