数字水印技术DCT算法MATLAB源代码
(完整word版)数字图像水印matlab实现

论文独创性声明本人所呈交的论文,是指导教师的指导下,独立进行研究和开发工作所取得的成果。
除文中已特别加以注明引用的内容外,论文中不包含任何其他个人或集体已经发表或撰写过的研究成果。
对本文的工作做出重要贡献的个人和集体,均已在文中以明确方式标明并致谢。
本人完全意识到本声明的法律结果由本人承担.特此声明。
论文作者(签名):20 年月日摘要随着计算机网络的迅速发展,包括数字图像在内的数字媒体得到了广泛的应用,数字媒体的数据逐渐成为人们获取信息的重要来源,但随之而来出现了一系列如随意复制、编辑、非法传播数字图像的信息安全问题,数字媒体的版权保护问题变的日益突出,数字图像水印技术由此应用而生,已成为信息安全领域的一个研究热点.本文比较系统地研究了数字水印技术在静止图像中的应用问题。
首先介绍了数字水印技术的发展背景,然后对数字水印的原理、特点、分类、典型算法、应用领域以及评价标准等等进行了简要的分析。
其次,本文主要是针对目前现有数字图像水印算法实现过程比较复杂,其中重点讨论关于DCT的数字图像水印技术的嵌入,提取和水印的攻击测试等.最后对数字图像水印的特征进行分析总结。
最终通过Matlab这一工具来实现其具体的过程.通过实验对比分析得到该种算法具有一定的可行性以及较好的鲁棒性。
关键词:数字图像水印,信息安全,DCT算法,Matlab.AbstractWith the rapid development of computer network,digital media, including digital image has been widely used,digital media data gradually become an important source of obtaining information,but there's a series of such as free to copy, edit,illegal dissemination of digital image information security,copyright protection of digital media has become increasingly outstanding, digital image watermarking technology and the application, has become a research hotspot in the field of information security。
基于DCT变换的数字水印研究及其MATLAB实现

S u y o i i lwa e m a k b s d o t d n d g t t r r a e n DCT n h e l a i n a a d t e r a i to z
o ATLAB i u a i n nM sm l to
YANG n Xi
出水 印的存在 。这样 , 字水 印技 术包 含水 印 的嵌 数 入 和提取 两个过程 。
数字 媒体 因其 数字特 征极易被 复制 、 改 、 篡 非法 传播
以及蓄意攻击, 其版权保护, 1益引起人们 的关 已3 注 。数 字水印技术 就是在 这种背 景下应运 而生 。数 字水 印技术 利用人类 的听觉 、 视觉 系统 的特点 , 图 在
( oeeo pol toi Eli e g C o g i nvri f ot a dT l o mu i t n , hn q g4O6 , hn ) C lg f te c nc I n 血 , h nq gU i s yo s n e cm nc i sC o gi O5 C i l O er g e n e t P s e ao n O a
像、 音频 、 频 中加 入 一定 的信息 , 人们 很 难 分辨 视 使 出加人水 印后 的资 料 与原 始 资料 的 区别 , 通过 专 而 门的检验步骤 又能 提取 出所 加 信 息 , 以此 证 明原 创 者对数 字媒体 的版权 ¨ 。 J
研 究数字水 印技术 的最初 目的是用 于保护 数字
1 9— 2
数字 水印提取 从 水 印数 据 中提取 出水 印信 号 ,
数字水 印嵌 人是将 水 印信号 加 人原 始数 据 中 ,
其过 程如 图 1 所示 。
产 品的版权 , 随着研究 的进一 步深入 , 但 它在信息 安
matlab数字水印嵌入与提取代码

数字水印技术是一种用于保护数字信息安全和保护知识产权的重要技术手段。
Matlab作为一种强大的数学计算软件,具有丰富的数字信号处理和图像处理工具包,能够很好地支持数字水印的嵌入和提取。
本文将介绍如何使用Matlab进行数字水印的嵌入和提取,并给出相应的代码实现。
1. 数字水印嵌入数字水印嵌入是将一段隐藏的信息嵌入到载体中,使得这段信息对于一般观察者来说是不可察觉的。
在Matlab中,可以使用一些图像处理工具进行数字水印的嵌入。
需要读入载体图像和待嵌入的数字水印。
载体图像可以使用Matlab 中的imread函数进行读取,得到一个包含图像像素信息的矩阵。
待嵌入的数字水印可以是一段文本、一幅小型图像或者一段音频信号。
接下来,可以选择合适的嵌入算法进行数字水印的嵌入。
常用的算法包括LSB替换算法、DCT变换算法以及扩频水印算法等。
这些算法都可以在Matlab中找到相应的实现。
将得到的嵌入水印后的图像保存起来,成为带有数字水印的图像。
可以使用Matlab中的imwrite函数将处理后的图像保存到本地。
2. 数字水印提取数字水印提取是将嵌入在载体中的数字水印提取出来,还原成原始的水印信息。
在Matlab中,可以利用数字信号处理和图像处理工具进行数字水印的提取。
需要读入带有数字水印的载体图像。
同样可以使用Matlab中的imread函数进行读取。
接下来,根据数字水印嵌入时所采用的算法,使用相应的提取算法进行数字水印的提取。
提取算法通常与嵌入算法是对应的,可以在Matlab中找到相应的实现。
将提取得到的数字水印展示出来,可以是一段文本、一张图像或者一段音频信号。
在Matlab中可以利用文本处理工具、图像处理工具和音频处理工具展示提取得到的数字水印信息。
3. 示例代码以下是一个简单的示例代码,演示了如何在Matlab中进行数字水印的嵌入和提取:数字水印嵌入image = imread('carrier_image.jpg'); 读入载体图像watermark = imread('watermark_image.jpg'); 读入待嵌入的数字水印watermarked_image = embed_watermark(image, watermark); 使用embed_watermark函数进行数字水印的嵌入imwrite(watermarked_image, 'watermarked_image.jpg'); 保存带有数字水印的图像数字水印提取watermarked_image = imread('watermarked_image.jpg'); 读入带有数字水印的载体图像extracted_watermark = extract_watermark(watermarked_image); 使用extract_watermark函数进行数字水印的提取imshow(extracted_watermark); 展示提取得到的数字水印信息以上代码中,embed_watermark和extract_watermark分别是数字水印的嵌入和提取函数。
matlab数字水印算法及实现和源代码

摘要:数字水印技术作为数字媒体版权保护的有效办法,近年来在国内外引起了人们极大的兴趣。
但是由于数字水印技术涉及到的知识面比较广,即使是专业人员有时也感到力不从心,那么如何选择一种有效的编程工具便成为一个亟待解决的问题。
本文从数字水印技术本身的特点、一般模型和典型算法出发,简要地介绍了一种可以快速上手的高效的实用语言——Matlab。
最后,作者给出一个用Matlab实现数字水印实例。
关键词:数字水印Matlab Visual C++6.0DWT DCT1引言作为传统加密系统的有效补充办法,从1993年Caronni正式提出数字水印到现在短短几年里,无论是在国内还是在国外对数字水印的研究都引起了人们极大的关注。
但数字水印技术的发展还很不成熟,应用也处于初级阶段。
在我国,知识产权问题是一个敏感的话题,只有深入开展数字水印技术的研究,尽快制定我国的版权保护水印标准,才能使我们在未来可能的国际知识产权纠纷中取得主动权。
那么掌握高效的工具,便成为一个必须解决的问题。
本文就针对数字水印本身的特点,介绍了一种高效的实用工具——MATLAB。
2数字水印技术2.1数字水印技术的复杂性数字水印技术涉及到通信理论、编码理论、噪声理论、视听觉感知理论、扩频技术(Sprea d Spectrum)、信号处理(Signal Processing)技术、数字图像处理(Digital Image Pr ocessing)技术、多媒体(Multimedia)技术、模式识别(Pattern Reorganization)技术、算法设计(Algorithm Design)等理论,用到经典的D FT(Discrete Fourier Transform)、DCT(Discrete Cosine Transform)变换和近代最先进的数学工具----小波(Wavelet)。
数字水印又是一个横跨计算机科学、生理学、密码学、数字、数字通信等多门学科,并与I nternet的发展密切相关的交叉科学。
Matlab实现基于DCT域的鲁棒水印算法

Matlab实现基于DCT域的鲁棒水印算法摘要:数字水印技术(digital watermarking)是实现版权保护的有效办法,并已得到了广泛的应用。
文章介绍了数字水印的相关知识,并借助于matlab环境实现了基于dct域的鲁棒水印嵌入和提取的方法。
关键词:matlab;dct域;鲁棒水印中图分类号:tp391 文献标识码:a 文章编号:1674-1723(2012)10-0155-02当今,随着计算机网络和数字技术的发展,越来越多的多媒体数字作品不断出现在网络上,其版权保护成为一个迫切需要解决的问题。
数字水印是实现版权保护的有效办法。
数字水印是一种全新的信息隐藏技术,它的基本思想是在原始数据中嵌入秘密的信息(即水印)来证实该数据的所有权。
通过对原始数据做微量修改来嵌入水印信息,从而达到信息隐藏的目的。
水印的嵌人通常借助于算法进行实现,水印的提取用嵌入的逆算法进行实现。
一、数字水印的概念数字水印技术是将一些标识信息(即数字水印)直接嵌入数字载体(包括多媒体、文档、软件等)当中,但不影响原载体的使用价值,也不容易被人的知觉系统(如视觉或听觉系统)觉察或注意到。
通过这些隐藏在载体中的信息,可以达到确认内容创建者、购买者、传送隐秘信息或者判断载体是否被篡改等目的。
数字水印是信息隐藏技术的一个重要研究方向。
二、数字水印的分类(一)可见水印与不可见水印可见水印:嵌入的水印是可见的。
不可见水印:具有透明性,这是目前大多数水印技术的要求。
应用面较广,对数字作品实现版权保护作用更好,是目前研究的主流。
(二)鲁棒水印、脆弱水印和半脆弱水印1.鲁棒水印。
鲁棒水印的主要目的在于保护数字作品的版权,它要求嵌入后的水印能够经受各种常用的信号处理操作,包括无意的或恶意的处理,如有损压缩、滤波、平滑、信号裁减、图像增强、重采样、几何变形等等。
鲁棒水印在经过各种处理后,只要宿主信息没有被破坏到不可使用的程度,都应该能够检测出来。
基于Matlab的数字水印设计基于DCT域的水印实现课程设计

要摘数字水印(Digital Watermark)技术是指用信号处理地方法在数字化地多媒体数据中嵌入隐蔽地标记,这种标记通常是不可见地,只有通过专用地检测器或阅读器才能提取.数字水印是信息隐藏技术地一个重要研究方向.随着数字水印技术地发展,数字水印地应用领域也得到了扩展,数字. 水印地基本应用领域是版权保护、隐藏标识、认证和安全不可见通信当数字水印应用于版权保护时,潜在地应用市场在于电子商务、在线或离线地分发多媒体内容以及大规模地广播服务.数字水印用于隐藏标识时,可在医学、制图、数字成像、数字图像监控、多媒体索引和基于内容地检索等领域得到应用.数字水印地认证方面主要ID卡、信用卡、ATM卡等上面数字水印地安全不可见通信将在国防和情报部门得到广泛地应用.本文主要是根据所学地数字图象处理知识,在MATLAB环境下,通过系统编程地方式,建立并实现基于DCT域地数字水印加密系统.该系统主要包含数字水印地嵌入与提取,仿真结果表明,数字水印算法具有有效性、可靠性、抗攻击性、鲁棒性和不可见性,能够为数字媒体信息在防伪、防篡改、认证、保障数据安全和完整性等方面提供有效地技术保障.DCTTLAB;关键词:数字水印;MA录目1 课程设计目地 (1)2 课程设计要求 (2)3 数字水印技术基本原理 (3).......................................................................................................... 33.1 数字水印基本框架.......................................................................................................................... 3算法分类 3.2 ................................................................................................................. 43.2.1 DCT 法.............................................................................................................. 4其他方法 3.2.2 ...................................................................................................... 43.3 实际需要考虑地问题.............................................................................................................. 4不可见性 3.3.1 .................................................................................................................. 5 3.3.2 鲁棒性.............................................................................................................. 5 3.3.3 水印容量3.3.4 安全性 (5)4 基于DCT变换仿真............................................................................................................................................................................................................................ 6 4.1 算法原理.............................................................................................................. 6 4.1.1 准备工作.................................................................................................. 78*8变换块4.1.2 选取.......................................................................................................... 7边界自适应 4.1.3 ................................................................................................. 74.1.4 DCT变换与嵌入.............................................................................................................. 8 4.1.5 恢复空域.................................................................................................................. 8嵌入算法扩展4.2 ......................................................................... 8彩色图像三个矩阵地划分4.2.1 RGB...................................................................................................... 8 4.2.2 八色彩色水印...................................................................................................................... 9水印地提取 4.3 .......................................................................................................................... 9 仿真程序4.45 结果分析..................................................................................................................14结束语..........................................................................................................................16参考文献......................................................................................................................17课程设计目地1数字水印技术是用信号处理地方法在数字化地多媒体数据中嵌入隐蔽地标记,这种标记通常是不可见地,只有通过专用地检测器或阅读器才能提取.数字水印是信息隐藏技术地一个重要研究方向.在数字水印技术中,水印地数据量和鲁棒性构成了一对基本矛盾.从主观上讲,理想地水印算法应该既能隐藏大量数据,又可以抗各种信道噪声和信号变形.然而在实际中,这两个指标往往不能同时实现,不过这并不会影响数字水印技术地应用,因为实际应用一般只偏重其中地一个方面.如果是为了隐蔽通信,数据量显然是最重要地,由于通信方式极为隐蔽,遭遇敌方篡改攻击地可能性很小,因而对鲁棒性要求不高.但对保证数据安全来说,情况恰恰相反,各种保密地数据随时面临着被盗取和篡改地危险,所以鲁棒性是十分重要地,此时,隐藏数据量地要求居于次要地位.数字水印技术是通过一定地算法将一些标志性信息直接嵌到多媒体内容当中,但不影响原内容地价值和使用,并且不能被人地知觉系统觉察或注意到.水印信息可以是作者地序列号、公司标志、有特殊意义地文本等,可用来识别文件、图像或音乐制品地来源、版本、原作者、拥有者、发行人、合法使用人对数字产品地拥有权.与加密技术不同,数字水印技术并不能阻止盗版活动地发生,但它可以判别对象是否受到保护,监视被保护数据地传播、真伪鉴别和非法拷贝、解决版权纠纷并为法庭提供证据.总地来说,数字水印可以携带有版权保护信息和认证信息,保护数字产品地合法拷贝和传播.课程设计要求2利用所学地数字图像处理技术,建立并实现基于DCT地数字水印加密系统,利用MATLAB软件系统来实现水印地嵌入和提取,并对算法地不可见性、鲁棒性进行测试.具体要求:TLAB程序设计方法;(1)熟悉和掌握MA TLAB图像处理工具箱;2)学习和熟悉MA (工具箱对图像进行处理和分析;)学会运用MA TLAB(3格式进行打开、保存、另存、退出等功能操作;)能对图像jpg(4软件对图像进行水印地嵌入和提取;)利用所学数字图像处理技术知识、MATLAB(5(6)在程序开发时,清楚主要实现函数目地和作用,需要在程序书写时做适当注释说明,理解每一句函数地具体意义和使用范围;.)每个程序都必须做到功能仿真成功,运行结果以图片地形式粘贴到报告中(7数字水印技术基本原理3数字水印基本框架3.1一个数字水印系统一般包括三个基本方面:水印地生成、水印地嵌入和水印地提取或检测.数字水印地嵌入和提取地一般过程基本框架如图3.1,图3.2所示.水印生成算法(G)数字水原始载体数(J)水印嵌入算私公(K)图3.1 水印嵌入地一般过程基本框架数字水(W)原始数据水印检测算法估计水印(W)/相似度检测) (I待检测数据W私钥/公钥(K)图3.2 水印检测地一般过程基本框架算法分类3.2.根据水印实现方法不同,数字水印可分为空(时)域数字水印和频域数字水印空域数字水印是直接在信号空间上叠加水印信号,而频域法加入数字水印地原理是首先将原始信号(语音一维信号、图像二维信号)变换到频域,常用地变换一般有DWT、DCT、DFT、WP和分形.然后,对加入了水印信息地信号进行频域反变换(IDWT、IDCT、DFT、WP),得到含有水印信息地信号.频域法检测水印地原理是将原始信号与待检测信号同时进行变换域变换,比较两者地区别,进行嵌入水印地逆运算,得出水印信息.如果是可读地水印,那么就此结束,如果是不可读水印,如高斯噪声,就将得出地水印与已知水印作比较,由相关性判断,待检测信号含不含水印,故水印地检测有两个结束点.频域法有以下优点:嵌入地水印信号能量可以分布到空域地所有像素上,有利于保证水印地不可见性;视觉系统(HVS)地某些特性(如频率地掩蔽特性)可以更方便地结合到水印编码过程中;频域法可与国际数据压缩标准兼容,从而实现在压缩域(compressed domain)内地水印编码.法3.2.1 DCT.对原始信号做DCT地算法:Cox和Piva等人提出地DCT技术地经典之作.Cox利用随机数发生器产生标准正态序列作为水印信息对图像进行整体DCT变换后,选取除去DC系数之外部分较低频率系数叠加水印信息。
基于Matlab的数字水印设计――基于DCT域的水印实现

基于Matlab的数字水印设计――基于DCT域的水印实现沈阳理工大学数字图像处理课程设计摘要数字水印(Digital Watermark)技术是指用信号处理的方法在数字化的多媒体数据中嵌入隐蔽的标记,这种标记通常是不可见的,只有通过专用的检测器或阅读器才能提取。
数字水印是信息隐藏技术的一个重要研究方向。
随着数字水印技术的发展,数字水印的应用领域也得到了扩展,数字水印的基本应用领域是版权保护、隐藏标识、认证和安全不可见通信。
当数字水印应用于版权保护时,潜在的应用市场在于电子商务、在线或离线地分发多媒体内容以及大规模的广播服务。
数字水印用于隐藏标识时,可在医学、制图、数字成像、数字图像监控、多媒体索引和基于内容的检索等领域得到应用。
数字水印的认证方面主要ID卡、信用卡、ATM卡等上面数字水印的安全不可见通信将在国防和情报部门得到广泛的应用。
本文主要是根据所学的数字图象处理知识,在MATLAB环境下,通过系统编程的方式,建立并实现基于DCT域的数字水印加密系统。
该系统主要包含数字水印的嵌入与提取,仿真结果表明,数字水印算法具有有效性、可靠性、抗攻击性、鲁棒性和不可见性,能够为数字媒体信息在防伪、防篡改、认证、保障数据安全和完整性等方面提供有效的技术保障。
关键词:数字水印;MATLAB;DCTI沈阳理工大学数字图像处理课程设计目录1 课程设计目的 ........................................................................... ............................... 1 2 课程设计要求 ........................................................................... ............................... 2 3 数字水印技术基本原理 ........................................................................... (3)3.1 数字水印基本框架 ........................................................................... ............. 3 3.2 算法分类 ........................................................................... .. (3)3.2.1 DCT法 ........................................................................... ...................... 4 3.2.2 其他方法 ........................................................................... ................... 4 3.3 实际需要考虑的问题 ........................................................................... (4)3.3.1 不可见性 ........................................................................... ................... 4 3.3.2 鲁棒性 ........................................................................... ....................... 5 3.3.3 水印容量 ........................................................................... ................... 5 3.3.4 安全性 ........................................................................... .. (5)4 基于DCT变换仿真 ........................................................................... (6)4.1 算法原理 ........................................................................... .. (6)4.1.1 准备工作 ........................................................................... ................... 6 4.1.2 选取8*8变换块 ........................................................................... ....... 7 4.1.3 边界自适应 ........................................................................... ............... 7 4.1.4 DCT变换与嵌入 ........................................................................... ...... 7 4.1.5 恢复空域 ........................................................................... ................... 8 4.2 嵌入算法扩展 ........................................................................... (8)4.2.1 RGB彩色图像三个矩阵的划分 ........................................................ 8 4.2.2 八色彩色水印 ........................................................................... ........... 8 4.3 水印的提取 ........................................................................... ......................... 9 4.4 仿真程序 ........................................................................... ............................. 9 5 结果分析 ........................................................................... ..................................... 14 结束语 ........................................................................... ............................................... 16 参考文献 ........................................................................... . (17)II沈阳理工大学数字图像处理课程设计1 课程设计目的数字水印技术是用信号处理的方法在数字化的多媒体数据中嵌入隐蔽的标记,这种标记通常是不可见的,只有通过专用的检测器或阅读器才能提取。
(完整word版)数字水印源码

数字水印源码,希望对大家学习有帮助.%由高斯正态分布序列g1 产生36×4 的水印信%号w0,w0 由(0,1)组成。
clearrandn(’state’,1106);g1=randn(36,4);for i=1:36for j=1:4if g1(i,j)〉=0w0(i,j)=1;else w0(i,j)=0;end;end;end;figure;imshow(w0);title('水印');%对水印信号w0 进行(7,4)汉明编码,得到一%36×7 的分组码x0。
x0=w0;for i=1:36s=8*x0(i,1)+4*x0(i,2)+2*x0(i,3)+x0(i,4);x0(i,5)=0;x0(i,6)=0;x0(i,7)=0;case 1x0(i,5)=0;x0(i,6)=1;x0(i,7)=1; case 2x0(i,5)=1;x0(i,6)=1;x0(i,7)=0; case 3x0(i,5)=1;x0(i,6)=0;x0(i,7)=1; case 4x0(i,5)=1;x0(i,6)=1;x0(i,7)=1; case 5x0(i,5)=1;x0(i,6)=0;x0(i,7)=0;case 6x0(i,5)=0;x0(i,6)=0;x0(i,7)=1;case 7x0(i,5)=0;x0(i,6)=1;x0(i,7)=0;case 8x0(i,5)=1;x0(i,6)=0;x0(i,7)=1;case 9x0(i,5)=1;x0(i,6)=1;x0(i,7)=0;case 10x0(i,5)=0;x0(i,6)=1;x0(i,7)=1;case 11x0(i,5)=0;x0(i,6)=1;x0(i,7)=0;case 13x0(i,5)=0;x0(i,6)=0;x0(i,7)=1;case 14x0(i,5)=1;x0(i,6)=0;x0(i,7)=0;case 15x0(i,5)=1;x0(i,6)=1;x0(i,7)=1;end;end;% 对x0 进行行向位扩展,得到一个由(—1,1)组成%的扩展序列y。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
%Name: Chris Shoemaker
%Course: E ER-280 - Digital Watermarking
%Project: Block DCT Based method, using comparision between mid-band coeffcients % Watermark Embeding
clear all;
% save start time
start_time=cputime;
k=50; % set minimum coeff difference
blocksize=8; % set the size of the block in cover to be used for each bit in watermark
% read in the cover object
file_name='_lena_std_bw.bmp';
cover_object=double(imread(file_name));
% determine size of cover image
Mc=size(cover_object,1); %Height
Nc=size(cover_object,2); %Width
% determine maximum message size based on cover object, and blocksize
max_message=Mc*Nc/(blocksize^2);
% read in the message image
file_name='_copyright.bmp';
message=double(imread(file_name));
Mm=size(message,1); %Height
Nm=size(message,2); %Width
% reshape the message to a vector
message=round(reshape(message,Mm*Nm,1)./256);
% check that the message isn't too large for cover
if (length(message) > max_message)
error('Message too large to fit in Cover Object')
end
% pad the message out to the maximum message size with ones
message_pad=ones(1,max_message);
message_pad(1:length(message))=message;
% generate shell of watermarked image
watermarked_image=cover_object;
% process the image in blocks
% encodes such that (5,2) > (4,3) when message(kk)=0
% and that (5,2) < (4,3) when message(kk)=1
x=1;
y=1;
for (kk = 1:length(message_pad))
% transform block using DCT
dct_block=dct2(cover_object(y:y+blocksize-1,x:x+blocksize-1));
% if message bit is black, (5,2) > (4,3)
if (message_pad(kk) == 0)
% if (5,2) < (4,3) then we need to swap them
if (dct_block(5,2) < dct_block(4,3))
temp=dct_block(4,3);
dct_block(4,3)=dct_block(5,2);
dct_block(5,2)=temp;
end
% if message bit is white, (5,2) < (4,3)
elseif (message_pad(kk) == 1)
% if (5,2) > (4,3) then we need to swap them
if (dct_block(5,2) >= dct_block(4,3))
temp=dct_block(4,3);
dct_block(4,3)=dct_block(5,2);
dct_block(5,2)=temp;
end
end
% now we adjust the two values such that their difference >= k
if dct_block(5,2) > dct_block(4,3)
if dct_block(5,2) - dct_block(4,3) < k
dct_block(5,2)=dct_block(5,2)+(k/2);
dct_block(4,3)=dct_block(4,3)-(k/2);
end
else
if dct_block(4,3) - dct_block(5,2) < k
dct_block(4,3)=dct_block(4,3)+(k/2);
dct_block(5,2)=dct_block(5,2)-(k/2);
end
end
% transform block back into spatial domain
watermarked_image(y:y+blocksize-1,x:x+blocksize-1)=idct2(dct_block);
% move on to next block. At and of row move to next row
if (x+blocksize) >= Nc
x=1;
y=y+blocksize;
else
x=x+blocksize;
end
end
% convert to uint8 and write the watermarked image out to a file watermarked_image_int=uint8(watermarked_image);
imwrite(watermarked_image_int,'dct1_watermarked.bmp','bmp');
% display processing time
elapsed_time=cputime-start_time,
% display psnr of watermarked image
psnr=psnr(cover_object,watermarked_image,Nc,Mc),
% display watermarked image
figure(1)
imshow(watermarked_image,[])
title('Watermarked Image')。