各位大侠帮帮忙,我的毕业设计是数字水印程序设计,我想用java实现,现在就是没有一点思想,老师让做的也比较简单,就是给个图片中加入信息(水印)并能提取出来,用java写两个程序就行了,我现在实在是没有一点思想,希望高手能提供一点帮助,能提供些代码更好,或者别的什么都行,我真的想不到从什么地方入手,高手们帮忙啊,谢谢了!
解决方案 »
- FileLock是进程之间的同步控制的吗?
- 单例模式的实践应用失败了,请问为什么?
- 求教java学习的过程
- 帮忙分析以下程序
- 集合
- 如何通过Class对象进行向下转型?或者其他方法实现也可以。
- 兄弟们,FileInputStream的read(byte b[],int off,int len)中的那个关于偏移量的参数int off该怎么用啊?
- 看了大家关于JAVA工资的讨论,写点自己的感受!(可能对即将毕业的学生有用)
- applet有办法关闭它所在的IE窗口吗?
- 大虾们救我:japplet中中文的显示不出来
- 关于out.println(new Date());语句的问题?
- java中内部类和嵌套类有什么区别?
我们老师已经做好了,是用vc6做的,你还是需要知道其原理才能动手做软件:三个环节:水印设计、噪声消除和信号放大。
采用此设计出于以下几点考虑:① 色彩反差大,容易确认攻击点。② 同值象素聚集,可以进行自我修复。③ 增加了人眼对其的分辨力。④增加了信息的冗余度。⑤便于和数值形式的水印码建立对应关系。
从信号角度看,它实际上是增加了信号源的强度,因为较强的信号源能保证接收信号的强度。
在多媒体课件中,使用3张相同的图像不会引起攻击者的注意(比如背景)。我们在这3张图像中分别嵌入3个水印。除图1的水印外,我们还嵌入一张纯白水印和一张纯黑水印。3个水印尺寸完全相同。
我们基于以下几点考虑:
(1)攻击者为了达到破坏课件水印的目的,通常会对所有可疑媒体进行攻击。因此,我们有理由相信3个水印图像都遭到了攻击。这3个水印图像由于相似,经历的攻击也应大致相同。
(2)课件作为一个整体在网络上传播,各媒体游历了相同的过程,系统噪声的增加对于它们来说机会均等。
(3)攻击者的攻击是有限度的,造成原图像不可用的攻击对于攻击者也是没意义的。
依据嵌入方的记录,我们从3个图像中分别提取3个水印,我们称为wb、W、B。wb为真正水印,它代表一些有用的版权信息。W为白水印,B为黑水印。W在各种攻击和噪声影响下,将通过颜色变化表现出来,在我们的测试中它出现了很多黑点。B也产生了变化,不过它是以白点形式表现出来的。
降噪过程如下:
(1)定位W水印中的攻击点。
(2)利用攻击点校正原水印, 得到wb-W。
(3)定位B水印中的攻击点。
(4)利用攻击点校正原水印, 得到wb-B。
至此,我们得到了两个校正水印。如果攻击程度较弱,则提取水印已经有所改观。为了获得性能更好的结果。我们还需将信号放大。
信号放大
不同的算法可能对于颜色的处理方法不同,使用一种颜色进行校正,不可信程度增高。为此,我们提取两个校正结果中可信度高的部分。即认为用白色水印校正的结果中,白色区域是可信的,而用黑色水印校正的结果中,黑色区域是可信的。最后用可信区域对提取水印wb进行置换。
置换过程如下:
(1)两种校正结果按块划分,块的大小与原水印的划分块大小相同。(图一中有18个块)。
(2)对于第M个块,计算两种校正结果中对应块的灰度值的和,得S1、S2。
(3)计算纯白和纯黑块的灰度值的和,得W1、B1。
(4)计算差值(S1-W1)和(S2-B1)的绝对值A1、A2。
(5)如果A1>A2,原水印第M块被黑色校正结果的第M块置换。
(6)如果A1<A2,原水印第M块被白色校正结果的第M块置换。
如果想使信号进一步放大,则第(5)步用纯黑块置换,第(6)步用纯白块置换。
以下是部分代码:
blocksize=18;
for (q=0:1)
for (k=0:8)
w=0;//初始化差值A1
b=0; //初始化差值A2
for (i=1+q*10:10+q*10)
for (j=1+10*k:10+k*10)
w=255-Iw(i,j)+w;
b=Ib(i,j)+b;
end
end
if (w<b) //比较差值A1和A2
for (i=1+q*10:10+q*10)
for (j=1+10*k:10+k*10)
J4(i,j)=255;//置换
end
end
else
for (i=1+q*10:10+q*10)
for (j=1+10*k:10+k*10)
J4(i,j)=0; 置换
end
end
end
end
end