end if T>T1 Alpha=Alpha2; else Alpha=Alpha1; end block_dct1(1,1)=block_dct1(1,1)*(1+Alpha*mark(k)); block_dct1=idct2(block_dct1); D(x:x+block-1,y:y+block-1)=block_dct1; k=k+1; end end %显示嵌入水印后的图像 subplot(2,2,4);imshow(D,[]);title('embeded image:D'); 运行结果如图3所示,由些可以看到用MATLAB的编写一个完整的水印嵌入算法只需几十条语句便可以完成,而这些程序如果用C语言或其它高级语言编写程序至少在100行以上。这个例子充分证明了MATLAB在数字水印技术处理中的方便性和高效性。 4 MATLAB与VC++6.0的接口 用MATLAB编写数字水印程序的主要优点是语言本身适合水印技术所需的大量的函数库。并且MATLAB本身具有可扩展性、易学易用性和高效性的优点。除此之外,MATLAB还与VC++6.0有着良好的编程接口,必要时,可以采用MATLAB与VC6.0++的混合编程。有兴趣的读者可参考文献[3]。 5 结束语 数字水印软件作为数据安全领域中的新生事物,具有很高的技术含量和很强的生命力,同时也孕育着巨大的商机。我们有理由相信,有了一个高效实用的研究工具能起到事半功倍的效果,会有越来越多的有识之士投入到数字水印技术的研究和产业化进程中来。 (责任编辑:泉水) |