首页 > 范文大全 > 正文

基于VB与MATLAB混合编程的彩色图像水印软件的设计

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于VB与MATLAB混合编程的彩色图像水印软件的设计范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

【摘 要】 针对以往图像水印的研究大都停留在理论方面,真正的图像水印软件并不多见,在分析了Visual Basic优越的可视化界面和matlab强大的图像处理能力相结合的编程原理基础上,提出了一种通过外部过程的调用将VB和MATLAB结合在一起进行彩色图像水印软件设计的方法,并通过具体的设计表明,通过VB优越的可视化界面和MATLAB强大的图像处理功能的结合开发了一个在Windows工作环境下运行的具有方便的程序接口和彩色图像水印处理能力的应用软件,对解决工程问题具有较大的参考价值。

【关键词】 混合编程 数字水印 图像处理

中图分类号:TP311.1 文献标识码:A

引言

数字水印(Digital Watermarking)技术[1]是信息隐藏技术的一个分支,通过一定的算法,在不影响原内容的价值和使用的前提下,在多媒体文件中嵌入一些标志性信息(如作者的序列号、公司标志、有特殊意义的文本),然后公开嵌入水印后的版本作品。当该作品被盗版或出现版权纠纷时,所有者只有通过专门的水印检测方法,才可从被盗版作品中获得水印信息,从而保护所有者的合法权益[2]。Cox等把水印定义为“在作品中不可感知地嵌入信息的操作行为”。目前绝大多数的研究都是数字水印理论方面的研究,实用的水印软件并不多见,所以对水印软件的设计很有实际意义和实用价值。

MATLAB是一套高性能的数值计算和可视化软件,具有编程简单、可操作性强等特点,而且能够方便、高效的实现图像中大量的矩阵运算[3],这样可用较少的代码实现水印算法;但它复杂的人机交互式图像界面的能力使其界面设计较为困难。

Visual Basic(以下简称VB) 是一种面向对象的可视化高级程序设计语言,能快速、高效的开发友好的用户界面[4]。相对于MATLAB而言, VB的计算功能相对薄弱,实现复杂算法的工作量比较大。因此VB与MATLAB的优缺点正好互补,利用优缺点的互补性,可以对VB与MATLAB混合编程[5],实现图像水印软件的开发。

1 VB与MATLAB混合编程主要问题

MATLAB提供了与C++的程序接口,并没有提供直接与VB的接口,因此,要进行VB与MATLAB的混合编程[5],先要将MATLAB中的M文件编译生成可执行性文件,然后才能在VB中通过调用MATLAB的可执行性文件进行,而在VB中调用可执行性文件,常以Shell指令来执行外部程序[6],然而用Shell指令在调用执行该外部程序时,VB立刻就会回到它的原程序入口处,执行VB的下一行程序,也就是说,这些都不是Shell指令所能控制的,因此我们需要在VB中使用API的帮助来完成,即要实现VB与MATLAB的混合编程,主要从以下方面解决VB与MATLAB的接口问题[7]:(1)MATLAB中的函数文件生成可执行文件;(2)在VB中调用可执行文件,并解决VB调用外部过程的一些基本问题;(3)VB与MATLAB的数据通信;(4)解决VB调用外部过程的一些基本问题。

2 MATLAB下的程序编译

利用VB友好的界面和MATLAB强大的图像处理功能,设计开发了基于小波变换的彩色图像水印处理软件,主要包括水印置乱变换、水印嵌入、水印提取等功能,功能模块结构如图1所示。

2.1 编写M文件

在MATLAB中编写设计时用到的水印置乱、水印嵌入和水印提取算法,选用MATLAB R2009b版本,采用基于DWT域的水印算法,分别编写水印置乱函数、水印嵌入函数以及水印提取函数。算法编写完成后,将其在MATLAB中进行各种攻击实验,实验结果良好。

2.2 将M文件转换成可执行性文件

要将MATLAB语言编写的函数文件,编译成可独自执行的可执行性文件(即可脱离MATLAB环境的可执行程序),首先要安装和配置好MATLAB Compiler,一般情况下,在安装了MATLAB时就已经安装了相应版本的compiler。在确定安装好compiler后,还需要对compiler进行适当的配置。方法如下。

(1)在MATLAB命令行输入mexCsetup,然后根据提示执行相应的操作,选择合适的编译器。也可选择MATLAB自带的Lcc编译器,其实自带的编译器对多数用户来说就已经够用了(本文选择的就是MATLAB自带的Lcc编译器)。

(2)调用编译器,使用MATLAB下的一个GUI平台deploytool能够完全实现,在命令窗口输入deploytool即可看到。当然也可以输入mcc Cm filename ,其中,filename为将要转换成可执行性文件的函数。如果要在没安装MATLAB的计算机上执行编译后的程序,先要将\MATLAB701\toolbox\compiler\deploy

\win32中的MCRinstaller.exe安装到该计算机上,其次要将MCRinstaller.exe安装目录\runtime\win32这个路径添加到该计算机的环境变量中,方法是:右击“我的电脑”-->“属性”-->“高级”-->“环境变量”-->“添加”指定一个变量名,将上述路径复制到里面就可以了。

(3)最后将编译生成的相关文件拷贝到同一目录下,打开dos操作窗口,进入到编译后的.exe程序所在的目录,执行编译生成的exe文件即可。

(4)解决运行时dos窗口存在问题。

上述方法美中不足就是,运行的时候dos窗口一直存在,可使用如下方法消除。

在命令窗口输入:

cd (prefdir)

edit compopts.bat

在打开的文件最后添加以下语句:

setLINKFLAGS=%LINKFLAGS%-subsystemwindows