使用半色调技术以隐藏多色阶或双色阶浮水印的方法

文档序号:6480494阅读:280来源:国知局
专利名称:使用半色调技术以隐藏多色阶或双色阶浮水印的方法
技术领域
本发明涉及一种隐藏图像浮水印的技术,尤其涉及一种隐藏半色调图像浮水印的方法。

背景技术
数字半色调(digital halftone)技术是一种将多色调图像转化为二元色调图像的技术。因为人类视觉系统具有低通特性,以致于这些半色调图像稍远看来可能类似于原始图像。半色调技术常被应用于计算机印表机,以及印刷书籍、报纸、杂志,因为印刷的相关过程当中只产生两种色调黑色(有墨水)和白色(无墨水)。目前三种最常见的半色调技术分别是有序抖动法(Ordered Dithering)、迭代式重建法(Iteration-basedReconstruction)以及错误扩散法(error diffusion,EDF)。这三种方法中,有序抖动法可以提供一有效率的步骤但视觉品质最差。迭代式重建法可以提供最佳的视觉品质但效率最差。相较而言,错误扩散法可提供一较好的解决方案以平衡视觉品质与编码效率。因此,现在市面上的印表机大多采用基于错误扩散法的半色调技术。
请参考图1,图1是传统半色调列印的错误扩散技术的示意图。其中xi,j代表输入值(或称为目前待处理的像素值),vi,j代表增益值(或称为校正后灰阶值),bi,j代表输出值(或称为增益值与临界值vth比较后的结果),ei,j代表增益值vi,j减输出值bi,j后所获得的误差值,x′i,j代表用来补偿输入值xi,j的错误扩散值,h代表权重矩阵同时也是错误扩散核心(kernel)。举例来说,Floyd的错误扩散核心可表示成

Jarvis的错误扩散核心可表示成

Stucki的错误扩散核心可表示成

其中“一”代表在目前列中已经处理过的像素(因此将错误扩散到已经处理过的像素便无意义而不需要),而“#”代表目前正在处理的像素。错误扩散核心中的每个数值代表上述正在处理的像素所产生的误差值ei,j扩散到邻近像素的权重。一般而言,上述各数值xi,j、x′i,j、vi,j、bi,j及ei,j之间的关系可表示如下 vi,j=xi,j+x′i,j(1) ei,j=vi,j-bi,j (4) 其中hm,n代表权重矩阵h的组成单元,min_level代表半色调图像所呈现的二像素值当中的较小值,max_level代表半色调图像所呈现的二种像素值当中的较大值,而vth代表临界值。
举例来说,当使用Floyd的错误扩散核心时,方程式(2)可被改写如下 其中权重矩阵h为
此外,如果半色调图像是从一张八位的原始图像转换而来,则min_level等于0,而max_level等于255(即28-1)。因此,如果临界值vth等于128,则方程式(3)可被改写如下 当bi,j等于0时,印表机列印一墨水点到相应的像素格上;当bi,j等于255时,印表机就不会列印墨水点到相应的像素格上。权重矩阵h会将增益值ei,j与输出值bi,j之间的误差值ei,j扩散到邻近的像素。接着,下一个输入值xi,j将被调整,而产生下一个增益值vi,j。在进行错误扩散半色调技术时,图像被从左到右、从上到下的扫描,而所有的像素值一个接一个地被量化。每当量化误差被扩散到邻近像素时,那些已经被量化的像素将不会受到影响。
举例而言,Floyd的核心的虚拟码(pseudo-code)可表示如下 for each i/*每一列的循环*/ for each j/*每一行的循环*/ /*进行半色调处理*/ oldpixel=pixel(i,j) if oldpixel≥threshold,then newpixel=max_level if oldpixel<threshold,then newpixel=min_level pixel(i,j)=newpixel /*进行错误扩散*/ error_value=oldpixel-newpixel pixel(i+1,j)=pixel(i+l,j)+7/16*error_value pixel(i-1,j+1)=pixel(i-1,j+1)+3/16*error_value pixel(i,j+1)=pixel(i,j+1)+5/16*error_value pixel(i+1,j+1)=pixel(i+1,j+1)+1/16*error_value endfor(j) endfor(i) 近年来,如何将机密数据藏入半色调图像已成为一重要的研究课题。它可见于许多应用中,包括保护图像的所有权、防止未经许可的图像盗用,以及确认图像是否遭修改。目前已公开许多基于半色调技术以嵌入浮水印的方法。例如,Ming Sun Fu(以下简称Fu)和Oscar Chi-Lim Au(以下简称Au)在他们的论文“Data hiding in halftone images by stochastic errordiffusion”(IEEE ICASSP’01,vol.3,pp.1965-1968,2001)公开了一种在半色调图像中隐藏数据的方法。简单来说,Fu和Au的方法是从一多色调图像X产生二张单色调图像Y0、Y1。第一张半色调图像是用标准错误扩散半色调技术产生,第二张半色调图像则是用数据隐藏推测错误扩散法(data hiding stochastic error diffusion,DHSED)所产生。浮水印H的信息可由二张单色调图像Y0、Y1的迭加结果所产生。其假设浮水印中所有黑色像素的集合为HB,而该浮水印中所有白色像素的集合为HW,而目前正处理的像素为(i,j)。当(i,j)∈HW,半色调图像Y0在座标(i,j)上的像素值等于半色调图像Y0在座标(i,j)上的像素值。反的当(i,j)∈HB,Fu和Au定义了一个以目前像素(i,j)为中心且长宽为(2L+1)x(2L+1)的矩阵C。如果矩阵C包含了白色像素和黑色像素,则矩阵C中的白色像素可表示成集合D,而



时,错误值ei,j等于零。当(i,j)∈D时,错误值ei,j等于max(min(vi,j-bi,j,127),-127)。当

时,错误值ei,j等于(vi,j-bi,j)。因此,当(i,j)∈HW时,(y0)i,j=(y1)i,j,且当(i,j)∈HB时,(y1)i,j对于(y0)i,j之间有一微小的偏移。
然而,Fu和Au的方法有一些缺点。比如说,为了隐藏浮水印的黑色像素在半色调图像Y1中,Fu和Au的方法在进行比较目前像素(i,j)和上述黑色像素的位置时,将会较费时。此外,如果原始的浮水印是一张较复杂图像,被嵌入的浮水印在迭加图像中的对比会不足。且,由于浮水印是一种半色调图像,其用以隐藏数据的容量会被限制在低水平。


发明内容
本发明提供一种使用半色调技术隐藏一浮水印的方法。所述方法包括根据一临界值与一权重矩阵,进行第一错误扩散程序,以将一原始图像转换成第一半色调图像;设定一噪声值;以及根据临界值、权重矩阵以及噪声值,进行第二错误扩散程序,以将原始图像以及浮水印转换成第二半色调图像。其中第二半色调图像在座标(i,j)上的像素的一偏移值是依据第一半色调图像在座标(i,j)上的一像素的一像素值以及浮水印在座标(i,j)上的一像素值决定。第二错误扩散程序依据第二半色调图像在座标(i,j)上的像素的偏移值,调整第二半色调图像在座标(i,j)上的像素的一原始误差值,以产生一调整误差值。第二错误扩散程序根据权重矩阵,扩散调整误差值至邻近第二半色调图像在座标(i,j)上的像素的其他像素。
本发明另提供一种使用半色调技术隐藏一浮水印的方法。所述方法包括设定一噪声值;以及根据一临界值、一权重矩阵、一水平值dx、一垂直值dy以及噪声值进行一错误扩散程序,以将一原始图像和浮水印转换成一半色调图像。其中半色调图像在座标(i,j)上的像素的偏移值决定于半色调图像在座标(i-dx,j-dy)上的像素值以及浮水印在座标(i-dx,j-dy)上的像素值,其中i大于dx,且j大于dy;错误扩散程序根据第一半色调图像在座标(i,j)上的像素的偏移值,调整半色调图像在座标(i,j)上的像素的一原始误差而产生一调整误差;错误扩散程序根据权重矩阵,将调整误差扩散到邻近半色调图像在座标(i,j)上的像素的其他像素,半色调图像在座标(i,j)上的一像素值是依据临界值而被决定成二像素值当中的一像素值。
在本发明的一实施例中,上述浮水印为半色调图像,而上述第二半色调图像在座标(i,j)上的像素的偏移值等于噪声值或等于噪声值的负值,其中如果上述浮水印在座标(i,j)上的像素值等于第一半色调图像在座标(i,j)上的像素值,则第二半色调图像在座标(i,j)上的像素的偏移值等于噪声值,而其中如果上述浮水印在座标(i,j)上的像素值等于第一半色调图像在座标(i,j)上的像素值,则第二半色调图像在座标(i,j)上的像素的偏移值等于噪声值的负值。
在本发明的一实施例中,上述浮水印为灰阶图像,而当上述浮水印在座标(i,j)上的像素值不等于为了呈现上述浮水印的一最大像素值或一最小像素值时,第二半色调图像在座标(i,j)上的像素的偏移值等于

或等于

其中NA是噪声值,Wi,j是浮水印在座标(i,j)上的像素值,Ndiff是最大像素值与最小像素值之间的差异值,倘若第一半色调图像在座标(i,j)上的像素值等于呈现第一半色调图像时的二种像素值中的较大值时,第二半色调图像在座标(i,j)上的像素的偏移值等于

然倘若第一半色调图像在座标(i,j)上的像素值等于呈现第一半色调图像时的二种像素值中的较小值时,第二半色调图像在座标(i,j)上的像素的偏移值等于
在本发明的一实施例中,上述第二半色调图像在座标(i,j)上的像素值依临界值将被决定成二像素值当中的一像素值,第二半色调图像在座标(i,j)上的像素的原始误差值等于第二半色调图像在座标(i,j)上的一增益值减去第二半色调图像在座标(i,j)上的像素值的像素值,第二半色调图像在座标(i,j)上的像素值的增益值等于第二半色调图像在座标(i,j)上的像素的偏移值与第二半色调图像在座标(i,j)上的一像素输入值的总和,第二半色调图像在座标(i,j)上的像素输入值决定于原始图像在座标(i,j)上的一像素值以及邻近第二半色调图像在座标(i,j)上的像素的其他像素所扩散的误差值。
在本发明的一实施例中,所述方法还包括将第一半色调图像与第二半色调图像迭加而产生一迭加半色调图像,迭加半色调图像具有一类似浮水印的嵌入式图像。
在本发明的一实施例中,当上述浮水印在座标(i,j)上的像素值不等于为了呈现浮水印的一最大像素值与一最小像素值时,半色调图像在座标(i,j)上的像素的偏移值等于

或等于

其中NA是噪声值,Wi-dx,j-dy是浮水印在座标(i-dx,j-dy)上的像素值,Ndiff是最大像素值与最小像素值之间的差异值,而倘若半色调图像在座标(i-dx,j-dy)上的像素值等于呈现半色调图像时的二像素值中的较大值时,半色调图像在座标(i,j)上的像素的偏移值等于

然倘若半色调图像在座标(i-dx,j-dy)上的像素值等于呈现半色调图像时的二像素值中的较小值时,半色调图像在座标(i,j)上的像素的偏移值等于
在本发明的一实施例中,所述方法还包括将第一半色调图像与第二半色调图像迭加而产生一迭加半色调图像;执行一滤波程序而将迭加半色调图像转换成第一过滤图像;将第一过滤图像转换成第二过滤图像;以及根据第一过滤图像与第二过滤图像产生一还原图像。其中还原图像在座标(i,j)上的一像素值等于还原图像在座标(i,j)上的一还原值H′i,j再加上还原图像在座标(i,j)上的一最小值H′min的绝对值,还原值H′i,j等于第一过滤图像在座标(i,j)上的像素值减去第二过滤图像在座标(i,j)上的像素值,最小值H′min等于还原图像的所有还原值当中的最小值。
在本发明的一实施例中,所述方法还包括通过选择在半色调图像座标

上的多个像素,而产生一处理图像,其中P是半色调图像的列数,而Q是半色调图像的行数;将处理图像与半色调图像迭加而产生一迭加半色调图像;执行一滤波程序而将迭加半色调图像转换成第一过滤图像并将第一过滤图像转换成第二过滤图像;以及根据第一过滤图像与第二过滤图像产生一还原图像。其中在还原图像座标(s,t)上的一像素值等于在还原图像座标(s,t)上的一还原值H′s,t再加上在还原图像座标(s,t)上的一最小值H′min的绝对值,还原值H′s,t等于第一过滤图像在座标(s,t)上的像素值减去第二过滤图像在座标(s,t)上的一像素值;最小值H′min等于还原图像所有还原值当中的最小值。
为让本发明的上述特征和优点能更明显易懂,下文特举优选实施例,并配合附图,作详细说明如下,然非用以限制本发明。



图1是传统半色调列印的错误扩散技术的示意图。
图2是根据本发明第一个实施例的错误扩散半色调模块的功能方块图。
图3为所要隐藏的浮水印的图像。
图4是由图2中第一错误扩散模块所产生的第一半色调图像。
图5是由图2中第二错误扩散模块所产生的且包含有图3浮水印隐藏信息的第二半色调图像。
图6则是迭加模块经迭加图4的第一半色调图像和图5的第二半色调图像之后所产生的迭加半色调图像。
图7是图2第二错误扩散模块执行错误扩散半色调程序时的数据循环的示意图。
图8是图7的等效图示。
图9是用来说明第二半色调图像中在座标(i,j)周围的像素是黑色像素的机率。
图10是用来说明第二半色调图像中在座标(i,j)周围的像素是白色像素的机率。
图11为所要隐藏的灰阶浮水印的图像。
图12是由图2中第一错误扩散模块所产生的第一半色调图像。
图13是由图2中第二错误扩散模块58所产生且包含有图11灰阶浮水印的隐藏信息的第二半色调图像。
图14是迭加模块经迭加图12的第一半色调图像和图13的第二半色调图像之后所产生的迭加半色调图像。
图15则是图2的解码模块对图14的迭加半色调图像进行解码后所获得的还原图像。
图16是用来说明如何将浮水印藏在单张半色调图像之中。
图17是用以解释如何将单张半色调图像通过图2所示的迭加模块而形成迭加图像的示意图。
图18为本发明另一实施例所产生的半色调图像。
图19是通过迭加与解码图18的半色调图像而产生的还原图像。
图20绘示不同的外加噪声与相应PSNR之间的关系。
图21绘示不同的外加噪声与相应CDR之间的关系。
图22绘示高斯滤波器的大小与相应CDR之间的关系。
图23绘示标准差与相应CDR之间的关系。
图24绘示当半色调图像遭受切割攻击之后,其CDR与切割率之间的关系。
图25绘示当半色调图像遭受列印攻击之后,其CDR与列印解析度之间的关系。
主要元件符号说明
50错误扩散半色调模块 52编码器 54解码器 56第一错误扩散模块 58第二错误扩散模块 60迭加模块 62高斯滤波器 64减法器 66解码模块 68CDR模块 100半色调图像 102显示区块 xi,j输入值 vi,j增益值 bi,j输出值EDF2i,j vth临界值 ei,jo原始错误值 ei,j调整误差值 x′i,j错误扩散值 h权重矩阵(EDF核心) NA噪声值 Oi,j偏移值 xi,jsum总和 I原始图像 W浮水印 S迭加图像 D还原图像 EDF1第一半色调图像 EDF2第二半色调图像 Sg第一过滤图像 EDF1g第二过滤图像 Dg过滤还原图像 Wg过滤浮水印 P列数 Q行数 dx水平间距 dy垂直间距 PSNR峰值噪声比 CDR正确解码率
具体实施例方式 请参考图2,图2是根据本发明第一个实施例的错误扩散半色调模块50的功能方块图。错误扩散半色调模块50可以是软件、固件或是硬件/电路。错误扩散半色调模块50包含一编码器52和一解码器54。编码器52包含第一错误扩散模块56,用以根据一临界值vth和一权重矩阵h而将原始图像I转换成第一半色调图像EDF1。编码器52还包含第二错误扩散模块58,用以根据临界值vth、权重矩阵h以及噪声值NA(NA是一正值)而将原始图像I和浮水印W转换成第二半色调图像EDF2。在此实施例中,浮水印W是半色调图像,而临界值Vth等于128。编码模块52中的迭加模块60被用来迭加第一半色调图像EDF1和第二半色调图像EDF2而产生迭加半色调图像S。解码模块54包含了高斯滤波器62、减法器64、解码模块66以及一正确解码率(CDR)模块68。高斯滤波器62执行高斯滤波程序以便将迭加半色调图像S转换成第一过滤图像Sg,以及将第一半色调图像EDF1转换成第二过滤图像EDF1g。减法器64将第一过滤图像Sg的像素值减去第二过滤图像EDF1g的像素值,并将结果输出到解码模块66,而使解码模块66根据减法模块64的结果产生相应的还原图像D。其中,还原图像D看起来类似于浮水印W。在本实施例中,原始图像I是长方形图像并具有排列成P列及Q行像素,其中P、Q皆为大于1的正整数。因为第一半色调图像EDF1和第二过滤图像EDF1g都源自于原始图像I,故它们的尺寸都是(P×Q)。此外,浮水印W的尺寸可以等于或小于原始图像I的尺寸。换句话说,倘若浮水印W的尺寸是(X×Y),则1≤X≤P,1≤Y≤Q。另外,在本文中,下标字元i和j代表座标(i,j)的数值。比如,xi,j是座标为(i,j)的像素的输入值,而Wi,j是浮水印在座标(i,j)的像素值。
请参见图3到图6。图3为所要隐藏的浮水印的图像,图4是由图2中第一错误扩散模块56所产生的第一半色调图像。图5是由图2中第二错误扩散模块58所产生的第二半色调图像,此图像包含有图3浮水印的隐藏信息。图6则是迭加模块60经迭加图4的第一半色调图像和图5的第二半色调图像之后所产生的迭加半色调图像。从图6中可发现迭加模块60所产生的迭加半色调图像中有一类似于图3浮水印的嵌入式图像。
第一错误扩散模块56会依据前述先前技术的规则来执行第一错误扩散程序。亦即,可利用方程式(1)至(4)来将原始图像I转换成第一半色调图像EDF1。然而,不同的是,本发明为了进行第二错误扩散程序,会另设定外加噪声值NA。请参考图7,图7是图2第二错误扩散模块58执行错误扩散半色调程序时的数据循环的示意图。同样地,xi,j代表输入值(或称为目前待处理的像素值),vi,j代表增益值(或称为校正后灰阶值),bi,j代表第二半色调图像EDF2在座标(i,j)上的输出值(或称为增益值与临界值vth比较后的结果),ei,j代表经由计算原始误差值ei,jo和噪声值NA后所获得的调整误差值,x′i,j代表用来补偿输入值xi,j的错误扩散值,而h代表权重矩阵同时也是错误扩散核心。权重矩阵h可以是Floyd错误扩散核心、Floyd错误扩散核心、Floyd错误扩散核心或是其他的错误扩散核心。噪声值NA是用来补偿原始输入值xi,j和错误扩散值x′i,j两者的总和xi,jsum,以及补偿原始错误值ei,jo。在本文中,总和xi,jsum被定义成第二错误扩散模块58执行第二错误扩散程序时的输入值,而输入值xi,jsum等于(xi,j+x′i,j)。此外,所有浮水印W中的黑色像素被定义为集合WB,而所有浮水印W中的白色像素被定义为集合WW。再者,第一半色调图像EDF1中所有黑色像素被定义为一集合(EDF1)B,而第一半色调图像EDF1中所有白色像素被定义为一集合(EDF1)W。一般而言,这些数值xi,j、x′i,j、xi,jsum、NA、vi,j、bi,j、ei,jo及ei,j之间的关系可由下列方程式表示 其中EDF1i,j是第一半色调图像在座标(i,j)上的像素值,Wi,j是浮水印在座标(i,j)上的像素值,hm,n是权重矩阵h内的项目,min_level代表半色调图像所呈现的二像素值当中的较小值,max_level代表半色调图像所呈现的二种像素值当中的较大值,而vth是临界值。在本文中,每个拥有与min_level相同像素值的像素被定义成一个黑色像素,而每个拥有和max_level相同像素值的像素则被定义成一个白色像素。此外,因为bi,j代表第二半色调图像EDF2在座标(i,j)上的输出值,故第二半色调图像EDF2在座标(i,j)上的像素值EDF2ij等于输出值bi,j。因此,方程式(10)可被改写如下 同样地,方程式(7)和(12)可分别被改写成 根据方程式(14)和(15),增益值vi,j等于(xi,jsum+NA)或等于(xi,jsum-NA)。调整误差值ei,j等于(ei,jo-NA)或等于(ei,jo+NA)。当增益值vi,j等于(xi,jsum+NA)时,调整误差值ei,j等于(ei,jo-NA)。当增益值vi,j等于(xi,jsum-NA)时,调整误差值ei,j等于(ei,jo+NA)。增益值vi,j和调整误差值ei,j皆决定于浮水印W的像素值Wi,j以及第一半色调图像EDF1的像素值EDF1i,j。为简化本发明的叙述,在此提出一变数Oi,j。此一变数Oi,j用以表示第二半色调图像EDF2在座标(i,j)上的像素的一偏移值。在本实施例中,当浮水印W的像素值Wi,j等于第一半色调图像EDF1的像素值EDFIi,j时,偏移值Oi,j会等于噪声值NA。相对地,当浮水印W的像素值Wi,j不等于第一半色调图像EDF1的像素值EDF1i,j时,偏移值Oi,j则会等于噪声值NA的负值(即-NA)。举例来说,当第一半色调图像EDF1和浮水印W在座标(i,j)上的像素皆是白色像素或皆是黑色像素时,偏移值Oi,j会等于噪声值NA;而当第一半色调图像EDF1在座标(i,j)上的像素是黑色像素而浮水印W在座标(i,j)上的像素是白色像素时,偏移值Oi,j等于噪声值(-NA)。同样地,当第一半色调图像EDF1在座标(i,j)上的像素是白色像素而浮水印W在座标(i,j)上的像素是黑色像素时,偏移值Oi,j会等于噪声值(-NA)。因此,偏移值Oi,j可被定义成 需注意的是,因噪声值NA已被设定为一个正数,故噪声值NA的负值会是一个负数。
通过偏移值Oi,j,方程式(7)和(14)可简化为 至于方程式(12)和(15)则可简化为 因此,图7所显示在执行错误扩散半色调程序时的数据循环可进一步简化成图8。
以Floyd的错误扩散核心为例,方程式(9)可被改写如下 类似地,如果原始图像I是一张8位的图像,则mijn_level=0且max_level=255。因此,当临界值vth被设定成128时,方程式(13)可被改写如下 根据方程式(13),增益值vi,j越大时,第二半色调图像EDF2在座标(i,j)上的像素值EDF2i,j等于max_level的机率会越大。因此,当浮水印W的像素值Wi,j等于第一半色调图像EDF1的像素值EDF1i,j时,偏移值Oi,j为正值,且增益值vi,j会增加。也因此,第二半色调图像EDF2在座标(i,j)上的像素值EDF2i,j等于max_level的机率会增加,而第二半色调图像EDF2在座标(i,j)上的像素值EDF2i,j等于min_level的机率会相对地减少。另一方面,当浮水印W的像素值Wi,j不等于第一半色调图像EDF1的像素值EDF1i,j时,偏移值Oi,j为负值,且增益值vi,j会减少,故第二半色调图像EDF2在座标(i,j)上的像素值EDF2i,j等于max_level的机率会减少,而第二半色调图像EDF2在座标(i,j)上的像素值EDF2i,j等于min_level的机率相对地增加。
此外,因为调整误差值ei,j等于原始误差值ei,jo减去偏移值Oi,j,故在偏移值Oi,j是正值且像素值Wi,j等于像素值EDF1i,j的条件下,调整误差值ei,j会小于原始误差值ei,jo。相对地,在偏移值Oi,j是负值且像素值Wi,j不等于像素值EDF1i,j的条件下,调整误差值ei,j会大于原始误差值ei,jo。因为调整误差值ei,j将被扩散到邻近座标(i,j)的其他像素,邻近座标(i,j)的其他像素的像素值将受到偏移值Oi,j和原始误差值ei,jo的影响。因此,当偏移值Oi,j是正值而像素值Wi,j等于第一半色调图像EDF1像素值EDF1i,j时,邻近座标(i,j)的其他像素的像素值等于max_level的机率将会减少。另一方面,当偏移值Oi,j是负值而像素值Wi,j不等于第一半色调图像EDF1像素值EDF1i,j时,邻近座标(i,j)的其他像素的像素值等于max_level的机率将增加。
因为迭加半色调图像S来自于第一半色调图像EDF1和第二半色调图像EDF2作迭加的结果,如果第一半色调图像EDF1在座标(i,j)上的像素以及第二半色调图像EDF2在座标(i,j)上的像素中至少有一个像素是黑色像素,则迭加半色调图像S在座标(i,j)上的像素必定是黑色像素。因此,只有当第一半色调图像EDF1在座标(i,j)上的像素以及第二半色调图像EDF2在座标(i,j)上的像素都是白色像素时,迭加半色调图像S在座标(i,j)上的像素才会是白色像素。此外,因为第一半色调图像EDF1和浮水印W皆是半色调图像,故当依据第一半色调图像EDF1的像素值EDF1i,j以及浮水印W的像素值Wi,j来决定第二半色调图像EDF2的像素值EDF2i,j时,将会发生下列四种情况的其中一种情况 1.第一种情况发生在Wi,j∈(W)B且EDF1i,j∈(EDF1)W时。此时,因浮水印W在座标(i,j)上的像素是黑色像素,故迭加半色调图像S在座标(i,j)上的像素被期待会同为黑色像素。为此,偏移值Oi,j被设定为(-NA),以增加第二半色调图像EDF2在座标(i,j)上的像素为黑色像素的机率,进而当第一半色调图像EDF1在座标(i,j)上的像素与第二半色调图像EDF2在座标(i,j)上的像素迭加时,迭加半色调图像S在座标(i,j)上像素大致上将会是一个黑色像素。
2.第二种情况发生在Wi,j∈(W)W且EDF1i,j∈(EDF1)W]时。此时,因浮水印W在座标(i,j)上的像素是白色像素,故迭加半色调图像S在座标(i,j)上的像素被期待会同为白色像素。为此,偏移值Oi,j被设定为NA,以增加第二半色调图像EDF2在座标(i,j)上的像素为白色像素的机率,进而当第一半色调图像EDF1在座标(i,j)上的像素与第二半色调图像EDF2在座标(i,j)上的像素迭加时,迭加半色调图像S在座标(i,j)上像素大致上将会是一个白色像素。
3.第三种情况发生在Wi,j∈(W)W且EDF1i,j∈(EDF1)B]时。此时,因为第一半色调图像EDF1在座标(i,j)上的像素属黑色像素,则迭加半色调图像S在座标(i,j)上的像素必然是黑色像素。在此情况下,第二半色调图像EDF2于座标(i,j)周围的像素被期待为白色像素,以便视觉上地补偿迭加半色调图像S在座标(i,j)上的像素是黑色像素的情形。为此,偏移值Oi,j被设定为(-NA),以增加第二半色调图像EDF2于座标(i,j)周围的像素为白色像素的机率。
4.第四种情况发生在Wi,j∈(W)B且EDF1i,j∈(EDF1)B时。此时,因为第一半色调图像EDF1在座标(i,j)上的像素属黑色像素,故迭加半色调图像S在座标(i,j)上的像素必然也是黑色像素。从图5可知浮水印W中黑色像素邻近黑色像素的机率,远大于浮水印W中黑色像素邻近白色像素的机率。因此,为了增加邻近第二半色调图像EDF2于座标(i,j)周围的像素是黑色像素的机率,偏移值Oi,j被设为NA。
需要注意的是,因为相应的偏移值Oi,j已加入每一个第二半色调图像EDF2的输入值xi,jsum,故每一个第二半色调图像EDF2的原始误差值ei,jo会减去相应的偏移值Oi,j,以维持整体平均像素值。
此外,因为浮水印W的尺寸可能小于原始图像I的尺寸,故原始图像I在座标(i,j)上的像素存在时,浮水印W在座标(i,j)上的像素可能不存在。在此情况之下,因浮水印W是半色调图像,故浮水印W在座标(i,j)上的像素值会被设定成呈现浮水印W时的二像素值中的较大值。因此,当浮水印W在座标(i,j)上的像素不存在时,像素值Wi,j会被设定为max_level,而使浮水印的一个白色像素看似出现在座标(i,j)上。另一方面,当浮水印W在座标(i,j)上的像素存在时,像素值Wi,j会等于浮水印W在座标(i,j)上的像素值。举例来说,当浮水印W在座标(37,125)上的像素值存在且等于0时,像素值W37,125会等于0。
在本发明的一实施例中,第二错误扩散模块58使用Floyd错误扩散核心所进行的第二错误扩散程序的虚拟码可表示如下 for each i/*每一列的循环*/ for each j/*每一行的循环*/ noise_value=NA/*设定噪声值*/ /*决定偏移值*/ if Wi,j=EDF1i,j,then offset_value=positive(noise_value) if Wi,j≠EDF1i,j,then offset_value=negative(noise_value) /*对EDF2中目前的像素进行半色调处理*/ oldpixel=pixel(i,j)+offset_value if oldpixel≥threshold,then newpixel=max_level if oldpixel<threshold,then newpixel=min_level pixel(i,j)=newpixel /*对EDF2进行错误扩散*/ error value=oldpixel-newpixel-offset_value pixel(i+1,j)=pixel(i+1,j)+7/16*error_value pixel(i-1,j+1)=pixel(i-1,j+1)+3/16*error_value pixel(i,j+1)=pixel(i,j+1)+5/16*error_value pixel(i+1,j+1)=pixel(i+1,j+1)+1/16*error_value endtor(j) endfor(i) 在本发明的另一实施例中,浮水印W是灰阶图像(或称之为多色调(multi-tone)图像),而具有多个灰阶。为求简化,呈现浮水印W时的最大像素值亦被定义成max_level,而最小像素值亦被定义成min_level。最大像素值max_level与最小像素值min_level之间的差值被定义成Ndiff,故Ndiff=(max_level-min_level)。举例而言,如果使用8位图像当作浮水印W,为了呈现浮水印W,所有灰阶的数目是256,因此max_level等于255,min_level等于0,而差值Ndiff等于255。第二错误扩散模块58执行错误扩散半色调程序时的数据循环的示意图。在本实施例中,亦通过图8所示的错误扩散半色调程序执行循环来说明本发明的演算法,且亦使用图2所示的错误扩散半色调模块50来产生第一半色调图像EDF1和第二半色调图像EDF2。然而,因为本实施例中的浮水印W是灰阶图像而非半色调图像,故方程式(7)、(12)、(16)须略作修改,而方程式(8)-(11)、(13)、(17)、(18)则保持不变。亦即 简言之,在本实施例中,第一错误扩散模块56根据方程式(1)至(4)执行第一错误扩散程序,而将原始图像I转换成第一半色调图像EDF1。第二错误扩散模块58则根据方程式(8)~(11)、(13)、(17)、(18)以及(21)~(23)执行第二错误扩散程序,而将原始图像I以及灰阶浮水印W转换成第二半色调图像EDF2。
在本文中,第二半色调图像EDF2的所有黑色像素被定义为集合(EDF2)B,第二半色调图像EDF2中所有白色像素被定义为一集合(EDF2)W,而与第二半色调图像EDF2在座标(i,j)上的像素邻近的一个像素被定义为EDF2i,jA。如上所述,倘若第一半色调图像EDF1在座标(i,j)上的像素和第二半色调图像EDF2在座标(i,j)上的像素当中的至少一个像素是黑色像素,则迭加半色调图像S在座标(i,j)上的像素必定是黑色像素;而只有当第一半色调图像EDF1在座标(i,j)上的像素以及第二半色调图像EDF2在座标(i,j)上的像素都是白色像素时,迭加半色调图像S在座标(i,j)上的像素才会是白色像素。因此,当第一半色调图像EDF1在座标(i,j)上的像素EDF1i,j属黑色像素时,亦即当EDF1i,j∈(EDF1)B时,所期望的是第二半色调图像EDF2于座标(i,j)周围的像素可以在视觉上适当地补偿第二半色调图像EDF2在座标(i,j)上的像素EDF1i,j。为此,偏移值Oi,j被设定成

以在通过将原始误差值ei,jo减去偏移值Oi,j而获得调整误差值ei,j时,像素EDF2i,jA的像素值可以让像素EDF2i,j的视觉效果获得适当的补偿。请参考图9,图9是用来说明像素EDF2i,jA属于集合(EDF2)B的机率的图表。很明显的,较大的像素值Wi,j将导致较小偏移值Oi,j,而较小偏移值Oi,j将导致像素EDF2i,jA属于集合(EDF2)B的机率变小。因此,当Wi,j像素值越小时,像素EDF2i,jA属于集合(EDF2)B的机率会越大。
相对地,当第一半色调图像EDF1在座标(i,j)上的像素EDF1i,j为白色像素时,亦即当EDF1i,j∈(EDF1)W时,所期望的是第二半色调图像EDF2在座标(i,j)上的像素EDF2i,j的像素值可以适当地表现浮水印W的像素值Wi,j。为此,偏移值Oi,j被设定成

以在通过将输入值xi,jsum加上偏移值Oi,j而获得增益值vi,j时,像素EDF2i,j的像素值可以适当地表现浮水印W的像素值Wi,j。请参考图10,图10是用来说明像素EDF2i,j属于集合(EDF2)W的机率的图表。很明显的,较大Wi,j像素值将导致较大偏移值Oi,j,而较大偏移值Oi,j将导致像素EDF2i,j属于集合(EDF2)W的机率变大。因此,当Wi,j像素值越大时,像素EDF2i,j属于集合(EDF2)W的机率会越大。
因此,灰阶浮水印可以隐藏于半色调图像之中,故依据本发明隐藏机密数据的容量相对地会增加。
在本发明的一实施例中,第二错误扩散模块58使用Floyd错误扩散核心来进行第二错误扩散程序,以隐藏灰阶浮水印的虚拟码可表示如下 for each i/*每一列的循环*/ for each j/*每一行的循环*/ noise_value=NA/*设定噪声值*/ Ndiff=max_level-min_level /*决定偏移值*/ if[EDF1i,j=min_level],then { } if[ED1i,j=max_level],then { } /*对EDF2中目前的像素进行半色调处理*/ oldpixel=pixel(i,j)+offset_value if oldpixel≥threshold,then newpixel=max_level if oldpixel<threshold,then newpixel=min_level pixel(i,j)=newpixel /*对EDF2进行错误扩散*/ error_value=oldpixel-newpixel-offset_value pixel(i+1,j)=pixel(i+1,j)+7/16*error_value pixel(i-1,j+1)=pixel(i-1,j+1)+3/16*error_value pixel(i,j+1)=pixel(i,j+1)+5/16*error_value pixel(i+1,j+1)=pixel(i+1,j+1)+1/16*error_value endfor(j) endfor(i) 请参考图2。如上所述,当第二错误扩散模块58将原始图像I和浮水印W转换成第二半色调图像EDF2之后,迭加模块60会迭加第一半色调图像EDF1和第二半色调图像EDF2,而产生一迭加半色调图像S。高斯滤波器62执行高斯滤波程序,以将迭加半色调图像S转换成第一过滤图像Sg,并将第一半色调图像EDF1转换成第二过滤图像EDF1g。高斯滤波器62所执行的高斯滤波程序可由下列方程式所表示 其中gx,y是执行高斯滤波程序之后的滤波图像在座标(x,y)上的像素的新像素值,μx是x的平均值,μy是y的平均值,σx与σy是标准差,而ρ是相关系数。σx、σy的最佳化方法将在下文讨论。此外,在本发明的其他实施中,高斯滤波器62可被其他的滤波器所取代,例如低通滤波器、扩散滤波器...等等,然而本发明并不以此为限。
随后,减法器64将第一过滤图像Sg的像素值减去第二过滤图像EDF1g的像素值,并将结果输出到解码模块66,而使得减法模块64依据来自减法器64的输出结果,产生还原图像D。还原图像D在座标(i,j)上的像素值Hi,j等于还原图像D在座标(i,j)上的还原值H′i,j与一最小值H′min的绝对值的总和,其中还原值H′i,j等于第一过滤图像Sg在座标(i,j)上的像素值(Sg)i,j减去第二过滤图像EDF1g在座标(i,j)上的像素值(EDF1g)i,j,而上述最小值H′min等于还原图像D的所有还原值当中的最小值。简言之,各数值Hi,j、H′i,j、H′min、(EDF1g)i,j及Sg(i,j)之间的关系可如下表示 H′i,j=(Sg)i,j-(EDF1g)i,j(25) H′min=minimum(H′i,j) (26) Hi,j=H′i,j+|H′min| (27) 另外,由于还原图像D的对比可能较低,故可执行直方图等化(Histogram Equalization)程序来强化还原图像D的对比。上述直方图等化程序表示如下 其中T(Hi,j)是Hi,j的转移函数,gi是灰阶值(例如0到255),P(gi)是图像D中gi的机率密度函数(probability density function)。
请参见图11至15。图11为所要隐藏的灰阶浮水印的图像,图12是由图2中第一错误扩散模块56所产生的第一半色调图像。图13是由图2中第二错误扩散模块58所产生的第二半色调图像,此图像包含有图11灰阶浮水印的隐藏信息。图14是迭加模块60经迭加图12的第一半色调图像和图13的第二半色调图像之后所产生的迭加半色调图像。图15则是解码模块66依据方程式(25)至(27),对图14的迭加半色调图像进行解码后,所获得的还原图像。从图15中可发现迭加模块60所产生的还原图像类似于图11的浮水印。
在本发明的另一实施例中,倘若浮水印W为半色调图像,则可通过使用两张透明的媒介(如透明的塑胶片),来观看所嵌入的浮水印。首先,将该第一半色调图像列印到第一透明媒介,并将该第二半色调图像列印到第二透明媒介。之后,将印有该第一半色调图像的该第一透明媒介与印有该第二半色调图像的该第二透明媒介重迭,即可观察到所嵌入的浮水印。
此外,本发明也可作一延伸而将浮水印隐藏入一单张半色调图像,并从此单张半色调图像取出类似浮水印的还原图像。请参考图16,图16是半色调图像100的示意图,用来解释如何将浮水印藏在半色调图像100之中。半色调图像100是通过第一错误扩散模块56和第二错误扩散模块58从原始图像I转换而得。原始图像I和半色调图像100具有相同的尺寸(即具有P列、Q行的像素,其中P和Q皆是正整数)。半色调图像100包含了一用来隐藏浮水印的四方形的显示区块102。显示区块102的右侧边和下侧边分别和半色调图像100的右侧边和下侧边重迭。此外,如图16所示,水平值dx代表半色调图像100的左侧边与显示区块102的左侧边之间所间距的像素数目,而垂直值dy代表半色调图像100的顶侧边与显示区块102的顶例边之间所间距的像素数目。在本实施例中,水平值dx与垂直值dy皆是正整数。然而,当垂直值dy为正值时,水平值dx可等于0;而当水平值dx为正值时,垂直值dy可等于0。第二错误扩散模块58会计算显示区块102中的每个像素的像素值。而除了显示区块102中的像素之外,半色调图像100的其他像素皆由第一错误扩散模块56产生,而为了方便起见,这些像素被定义为集合EDF1。相对地,显示区块102中的像素则被定义为集合EDF2。倘若半色调图像100中所有的像素被定义为集合EDF,则EDF=EDF1∪EDF2。其中,集合EDF1的每个像素的像素值是根据方程式(1)-(4)计算而得。换句话说,集合EDF1在座标(i,j)上的像素值EDF1i,j决定于原始图像I在座标(i,j)上的像素值以及从邻近像素扩散而来的错误值。相对而言,集合EDF2在座标(i,j)上的像素值EDF2i,j决定于像素值Wi,j、原始图像I在座标(i,j)上的像素值、从邻近像素扩散而来的错误值以及相应的偏移值Oi,j。对显示区块102的每个像素而言,座标(i,j)的参数i大于水平值dx,而座标(i,j)的参数j大于垂直值dy。在本实施例中,浮水印W是灰阶图像,而在座标(i,j)上的偏移值Oi,j可由以下方程式所决定 其中Wi-dx,j-dy代表浮水印W在座标(i-dx,j-dy)上的像素值,EDF(i-dx,j-dy)代表半色调图像100在座标(i-dx,j-dy)上的像素值,(EDF)B代表半色调图像100中所有黑色像素的集合,而(EDF)W代表半色调图像100中所有白色像素的集合。
请再参考图16,当座标(i,j)落在显示区块102当中时,在座标(i,j)上的偏移值Oi,j则与半色调图像100的像素值EDF(i-dx,j-dy)有关。而由于水平值dx、垂直值dy皆为定数,故当i>2dx&j>2dy时,座标(i-dx,j-dy)会落在显示区块102当中。决定半色调图像100的像素值的方式类似于依据方程式(8)~(11)、(13)、(17)~(18)及(21)~(23)来执行第二错误扩散程序的方式。然而,在本实施例中,稍加修改了方程式(21)~(23)。其中,方程式(21)以方程式(28)取代,而方程式(22)~(23)可修改如下 在本发明的一实施例中,使用Floyd错误扩散核心以将灰阶浮水印隐藏在单张半色调图像的错误扩散程序的虚拟码可表示如下 /*对EDF1执行错误扩散程序*/ for each(i,j)∈EDF1 /*对EDF1中目前的像素进行半色调处理*/ oldpixel=pixel(i,j) if oldpixel≥threshold,then newpixel=max_level if oldpixel<threshold,then newpixel=min_level pixel(i,j)=newpixel /*对EDF1进行错误扩散*/ error_value=oldpixel-newpixel pixel(i+1,j)=pixel(i+1,j)+7/16*error_value pixel(i-1,j+1)=pixel(i-1,j+1)+3/16*error_value pixel(i,j+1)=pixel(i,j+1)+5/16*error_value pixel(i+1,j+1)=pixel(i+1,j+1)+1/16*error_value endfor(i,j) /*对EDF2执行错误扩散程序*/ for each i>dx/*从第(dx+1)个像素开始的列循环*/ for eachj>dy/*从第(dy+1)个像素开始的行循环*/ noise_value=NA/*设定噪声值*/ Ndiff=max_level-min_level /*决定偏移值*/ if[EDFi-dx,j-dy=min_level],then { } if[EDFi-dx,j-dy=max_level],then { } /*对EDF2中目前的像素进行半色调处理*/ oldpixel=pixel(i,j)+offset_value if oldpixel≥threshold,then newpixel=max_level if oldpixel<threshold,then newpixel=min_level pixel(i,j)=newpixel /*对EDF2进行错误扩散*/ error_value=oldpixel-newpixel-offset_value pixel(i+1,j)=pixel(i+1,j)+7/16*error_value pixel(i-1,j+1)=pixel(i-1,j+1)+3/16*error_value pixel(i,j+1)=pixel(i,j+1)+5/16*error_value pixel(i+1,j+1)=pixel(i+1,j+1)+1/16*error_value endfor(j) endfor(i) 通过方程式(8)~(11)、(13)、(17)~(18)及(28)~(30),图2中编码器52的第一错误扩散模块56和第二错误扩散模块58可以将浮水印W藏入半色调图像100的显示区块102内。请参考图17,图17是用以解释如何将单张半色调图像通过图2所示的迭加模块60而形成一迭加图像S的示意图。当产生迭加图像S时,显示区块102似乎朝上移动了水平值dx并朝左移动了垂直值dy,以致于显示区块102中座标为(i,j)的像素会对应到半色调图像100中座标为(i-dx,j-dy)的像素。更精确地说,在产生迭加图像S的过程中,会在半色调图像当中选出其座标属于座标集合

的所有像素,而作为一张处理图像(即图17中的显示区块102)。之后,迭加模块60会将处理图像102与半色调影100迭加,以产生迭加半色调图像S。因此,迭加半色调图像S在座标(i,j)的像素值Si,j可由下式决定 Si,j=min[EDFi,j,EDFi-dx,j-dy] (31) 其中因为半色调图像100中的所有像素已定义为集合EDF,故EDfi,j代表半色调图像100在座标(i,j)的像素值,而EDFi-dx,j-dy代表半色调图像100在座标(i-dx,j-dy)的像素值。至于迭加半色调图像S在座标(i,j)的像素值则等于两像素值EDFi,j、EDFi-dx,j-dy当中的最小值。
类似前述的实施例,在本实施例中,当产生迭加图像S之后,高斯滤波器62会执行高斯滤波程序以将迭加半色调图像S转换成第一过滤图像Sg,并将半色调图像EDF转换成第一过滤图像EDF1g。之后,减法器64会将第一过滤图像Sg的像素值减去第二过滤图像EDF1g的像素值,并将结果输出到解码模块66,而使解码模块66根据减法模块64的结果产生相应的还原图像D。另外,根据方程式(25)~(27),还原图像D在座标(s,t)上的像素值Hst等于还原图像D在座标(s,t)上的还原值H′s,t与还原图像D在座标(s,t)上的最小值H′min的绝对值的总和。其中还原图像D在座标(s,t)上的还原值H′s,t等于第一过滤图像Sg在座标(s,t)上的像素值(Sg)s,t减去在第二过滤图像EDF1g在座标(s,t)上的像素值(EDF1g)s,t,而最小值H′min等于还原图像D的所有还原值当中的最小值。
请参见图11以及图18~19。图11是前面说明中曾提及过的灰阶浮水印的图像。图18是根据方程式(8)~(11)、(13)、(17)~(18)及(28)~(30)所产生的半色调图像,其隐藏有图11的浮水印的信息。图19是通过迭加与解码图18的半色调图像而产生的还原图像。其中,图19的还原图像看起来与图11的灰阶浮水印相似。
本发明除了能将灰阶图像藏入单张半色调图像之外,亦能将半色调浮水印藏入单张半色调图像并从中取出所隐藏的浮水印。为了达成上述目的,方程式(28)~(30)修改成如下 在本发明的一实施例中,使用Floyd错误扩散核心以将半色调浮水印隐藏在单张半色调图像的错误扩散程序的虚拟码可表示如下 /*对EDF1执行错误扩散程序*/ for each(i,j)∈EDF1 /*对EDF1中目前的像素进行半色调处理*/ oldpixel=pixel(i,j) if oldpixel≥threshold,then newpixel=max_level if oldpixel<threshold,then newpixel=min_level pixel(i,j)=newpixel /*对EDF1进行错误扩散*/ error_value=oldpixel-newpixel pixel(i+1,j)=pixel(i+1,j)+7/16*error_value pixel(i-1,j+1)=pixel(i-1,j+1)+3/16*error_value pixel(i,j+1)=pixel(i,j+1)+5/16*error_value pixel(i+1,j+1)=pixel(i+1,j+1)+1/16*error_value endfor(i,j) /*对EDF2执行错误扩散程序*/ for each i>dx/*从第(dx+1)个像素开始的列回圈*/ for eachj>dy/*从第(dy+1)个像素开始的行回圈*/ noise_value=NA/*设定噪声值*/ Ndiff=max_level-min_level /*决定偏移值*/ if Wi,j=EDFi-dx,j-dy,then offset_value=positive(noise_value) if Wi,j≠EDFi-dx,j-dy,then offset_value=negative(noise_value) /*对EDF2的目前像素执行半色调技术*/ oldpixel=pixel(i,j)+offset_value if oldpixel≥threshold,then newpixel=max_level if oldpixel<threshold,then newpixel=min_level pixel(i,j)=newpixel /*对EDF2执行错误扩散*/ error_value=oldpixel-newpixel-offset_value pixel(i+1,j)=pixel(i+1,j)+7/16*error_value pixel(i-1,j+1)=pixel(i-1,j+1)+3/16*error_value pixel(i,j+1)=pixel(i,j+1)+5/16*error_value pixel(i+1,j+1)=pixel(i+1,j+1)+1/16*error_value endfor(j) endfor(i) 在本发明的另一实施例中,如果浮水印W是半色调图像,则可以使用两张透明媒介以找出所隐藏的浮水印。首先,将半色调图像100列印到第一透明媒介和第二透明媒介。之后,将印有半色调图像100的第一透明媒介的座标(i,j)与印有半色调图像EDF2的第二透明媒介的座标(i-dx,j-dy)对齐后,即可观察到所隐藏的浮水印。
为了估计本发明的优点,在此提出了二种量化值。第一种量化值是正确解码率(correct decode rate,CDR),而第二种量化值是正确解码率是峰值噪声比(peak signal-to-noise ratio,PSNR)。这二种量化值分别如下定义 其中(Dg)i,j代表过滤还原图像Dg在座标(i,j)上的像素值,(Wg)i,j代表过滤浮水印Wg在座标(i,j)上的像素值,P代表原始图像I的列数,Q代表原始图像I的行数,而wm,n代表最小均方(Least-Mean-Squares)滤波器在座标(m,n)上的系数。高斯滤波器62执行高斯滤波程序,而使还原图像D转换成过滤还原图像Dg,并使浮水印W转换成过滤浮水印Wg。过滤还原图像Dg和过滤浮水印Wg会被传送到CDR模块68,以使CDR模块68根据方程式(35)、(36)计算出相应的CDR和PSNR。
请参见图20与图21。图20绘示不同的外加噪声NA与相应PSNR之间的关系。图20中绘示有五条曲线,每条曲线分别对应不同的浮水印W的灰阶(或称色阶)的数目。比如,以符号「*」所标示的曲线代表256灰阶的浮水印W其外加噪声NA与PSNR之间的关系,而以符号「-」所标示的曲线代表2灰阶的浮水印W其外加噪声NA与PSNR之间的关系。图21绘示不同的外加噪声NA与相应CDR之间的关系。同样地,图21中亦绘示有五条曲线,每条曲线分别对应不同的浮水印W的灰阶数。根据图20和图21的实验结果,噪声值NA设定在25附近,以在CDR与PSNR之间可取得平衡。
请参考图22,图22绘示高斯滤波器62的大小与相应CDR之间的关系。同样地,图22中亦绘示有五条曲线,而每条曲线分别对应不同的浮水印W的灰阶数。因为较大的滤波器会有较大的CDR值,但相对地其效率会较差,故滤波器大小设定为7x7时,以在CDR与效率之间取得平衡。
请参见图23,图23绘示方程式(24)中所使用的标准差σx、σy与相应CDR之间的关系。因为标准差σx、σy是相等的,故图23横轴所绘示的数值同时代表标准差σx和σy。同样地,图23亦绘示有五条曲线,而每条曲线分别对应不同的浮水印W的灰阶数。根据图23的实验结果,标准差σx、σy被设定在0.9附近。
为了估计本发明对所产生的半色调图像当遭受攻击(如裁切攻击、列印攻击等)时其保存浮水印的能力,以下基于实际操作而提出二组实验图表。请参见图24与图25。图24是第一个实验的图表,用来表现半色调图像遭受切割攻击(cropping attack)之后,其CDR与切割率(cropping rate)之间的关系。图25则是第二个实验的图表,用来表现半色调图像遭受列印攻击之后,其CDR与列印解析度之间的关系。图24的横轴代表切割攻击下的切割率,图25的横轴代表列印攻击下的列印解析度。很明显的,本发明可较好地保护藏入的浮水印并避免其遭受多种攻击。
综上所述,在本发明中会将噪声值导入到错误扩散的数据循环当中,并依据原始图像与第一半色调图像之间像素的关连性,来决定所导入的噪声值为其正值或为其负值,进而计算出第二半色调图像的像素值。本发明所隐藏的浮水印除可为半色调图像之外,也可为灰阶图像。
虽然本发明已以优选实施例公开如上,然其并非用以限定本发明,本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,因此本发明的保护范围当视所附权利要求书所界定者为准。
权利要求
1.一种使用半色调技术隐藏一浮水印的方法,该方法包括
根据一临界值与一权重矩阵,进行一第一错误扩散程序,以将一原始图像转换成一第一半色调图像;
设定一噪声值;以及
根据该临界值、该权重矩阵以及该噪声值,进行一第二错误扩散程序,以将该原始图像以及该浮水印转换成一第二半色调图像;
其中该第二半色调图像在座标(i,j)上的该像素的一偏移值是依据该第一半色调图像在座标(i,j)上的一像素的一像素值以及该浮水印在座标(i,j)上的一像素值决定;
其中该第二错误扩散程序依据该第二半色调图像在座标(i,j)上的该像素的该偏移值,调整该第二半色调图像在座标(i,j)上的该像素的一原始误差值,以产生一调整误差值;
其中该第二错误扩散程序根据该权重矩阵,扩散该调整误差值至邻近该第二半色调图像在座标(i,j)上的该像素的其他像素。
2.如权利要求1所述的方法,其中该浮水印为半色调图像,而该第二半色调图像在座标(i,j)上的该像素的该偏移值等于该噪声值或等于该噪声值的负值,其中如果该浮水印在座标(i,j)上的该像素值等于该第一半色调图像在座标(i,j)上的该像素值,则该第二半色调图像在座标(i,j)上的该像素的该偏移值等于该噪声值,而其中如果该浮水印在座标(i,j)上的该像素值等于该第一半色调图像在座标(i,j)上的该像素值,则该第二半色调图像在座标(i,j)上的该像素的该偏移值等于该噪声值的负值。
3.如权利要求1所述的方法,其中该浮水印为灰阶图像,而当该浮水印在座标(i,j)上的该像素值不等于为了呈现该浮水印的一最大像素值或一最小像素值时,该第二半色调图像在座标(i,j)上的该像素的该偏移值等于
或等于
其中NA是该噪声值,wi,j是该浮水印在座标(i,j)上的该像素值,Ndiff是该最大像素值与该最小像素值之间的差异值,倘若该第一半色调图像在座标(i,j)上的该像素值等于呈现该第一半色调图像时的二种像素值中的较大值时,该第二半色调图像在座标(i,j)上的该像素的偏移值等于
然而倘若该第一半色调图像在座标(i,j)上的该像素值等于呈现该第一半色调图像时的二种像素值中的较小值时,该第二半色调图像在座标(i,j)上的该像素的偏移值等于
4.如权利要求1所述的方法,其中该第二半色调图像在座标(i,j)上的像素值依该临界值将被决定成二像素值当中的一像素值,该第二半色调图像在座标(i,j)上的该像素的该原始误差值等于该第二半色调图像在座标(i,j)上的一增益值减去该第二半色调图像在座标(i,j)上的该像素值的该像素值,该第二半色调图像在座标(i,j)上的该像素值的该增益值等于该第二半色调图像在座标(i,j)上的该像素的该偏移值与第二半色调图像在座标(i,j)上的一像素输入值的总和,该第二半色调图像在座标(i,j)上的该像素输入值决定于该原始图像在座标(i,j)上的一像素值以及邻近该第二半色调图像在座标(i,j)上的该像素的其他像素所扩散的误差值。
5.如权利要求1所述的方法,还包括
将该第一半色调图像与该第二半色调图像迭加而产生一迭加半色调图像,该迭加半色调图像具有一类似该浮水印的嵌入式图像。
6.如权利要求1所述的方法,还包括
将该第一半色调图像与该第二半色调图像迭加而产生一迭加半色调图像;
执行一滤波程序而将该迭加半色调图像转换成一第一过滤图像;
将该第一过滤图像转换成一第二过滤图像;以及
根据该第一过滤图像与该第二过滤图像产生一还原图像,其中该还原图像在座标(i,j)上的一像素值等于该还原图像在座标(i,j)上的一还原值H′i,j再加上该还原图像在座标(i,j)上的一最小值H′min的绝对值,该还原值H′i,j等于该第一过滤图像在座标(i,j)上的该像素值减去该第二过滤图像在座标(i,j)上的该像素值,该最小值H′min等于该还原图像的所有还原值当中的最小值。
7.一种使用半色调技术以隐藏一浮水印的方法,该方法包括
设定一噪声值;以及
根据一临界值、一权重矩阵、一水平值dx、一垂直值dy以及该噪声值进行一错误扩散程序,以将一原始图像和该浮水印转换成一半色调图像,其中该半色调图像在座标(i,j)上的像素的偏移值决定于该半色调图像在座标(i-dx,j-dy)上的像素值以及该浮水印在座标(i-dx,j-dy)上的像素值,其中i大于dx,且j大于dy;该错误扩散程序根据该第一半色调图像在座标(i,j)上的该像素的该偏移值,调整该半色调图像在座标(i,j)上的像素的一原始误差而产生一调整误差;该错误扩散程序根据该权重矩阵,将该调整误差扩散到邻近该半色调图像在座标(i,j)上的该像素的其他像素,该半色调图像在座标(i,j)上的一像素值是依据该临界值而被决定成二像素值当中的一像素值。
8.如权利要求7所述的方法,其中当该浮水印在座标(i,j)上的该像素值不等于为了呈现该浮水印的一最大像素值与一最小像素值时,该半色调图像在座标(i,j)上的该像素的该偏移值等于
或等于
其中NA是该噪声值,Wi-dx,j-dy是该浮水印在座标(i-dx,j-dy)上的该像素值,Ndiff是该最大像素值与该最小像素值之间的差异值,而倘若该半色调图像在座标(i-dx,j-dy)上的该像素值等于呈现该半色调图像时的二像素值中的较大值时,该半色调图像在座标(i,j)上的该像素的偏移值等于
然倘若该半色调图像在座标(i-dx,j-dy)上的该像素值等于呈现该半色调图像时的二像素值中的较小值时,该半色调图像在座标(i,j)上的该像素的偏移值等于
9.如权利要求7所述的方法,其中该半色调图像在座标(i,j)上的该像素的该原始误差值等于该半色调图像在座标(i,j)上的一增益值减去该半色调图像在座标(i,j)上的该像素值的该像素值,该半色调图像在座标(i,j)上的该像素值的该增益值等于该半色调图像在座标(i,j)上的该像素的该偏移值与该半色调图像在座标(i,j)上的该像素一输入值的总和,而该半色调图像在座标(i,j)上的该像素的该输入值决定于原始图像在座标(i,j)上的该像素值以及邻近该半色调图像在座标(i,j)上的该像素的其他像素所扩散的误差值。
10.如权利要求7所述的方法,还包括
通过选择在该半色调图像座标
上的多个像素,而产生一处理图像,其中P是该半色调图像的列数,而Q是该半色调图像的行数;
将该处理图像与该半色调图像迭加而产生一迭加半色调图像;
执行一滤波程序而将该迭加半色调图像转换成一第一过滤图像并将该第一过滤图像转换成一第二过滤图像;以及
根据该第一过滤图像与该第二过滤图像产生一还原图像,其中在该还原图像座标(s,t)上的一像素值等于在该还原图像座标(s,t)上的一还原值H′s,t再加上在该还原图像座标(s,t)上的一最小值H′min的绝对值,该还原值H′s,t等于该第一过滤图像在座标(s,t)上的该像素值减去该第二过滤图像在座标(s,t)上的一像素值;该最小值H′min等于该还原图像所有还原值当中的最小值。
全文摘要
使用半色调技术以隐藏多色阶或双色阶浮水印的方法。本发明提出一种方法,以将浮水印隐藏于两张半色调图像或单张半色调图像之中。半色调图像包含了被隐藏的浮水印的信息,且半色调图像中每一像素值都有一相应的偏移值。该偏移值是根据一相应的浮水印的像素值以及另一张半色调图像的像素值来决定。该偏移值是用来补偿相应的半色调图像输入值以及原始误差值。
文档编号G06T1/00GK101676950SQ20091000496
公开日2010年3月24日 申请日期2009年2月20日 优先权日2008年9月15日
发明者郭景明, 刘云夫 申请人:郭景明
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1