DCT 嵌入水印图片与DWT是擦不多的。在Matlab上直接用函数的话值是一样的,应该说DWT包含DCT。下面我说一下嵌入过程,程序就不写了。网上很多的。给你一个嵌入思路。
DWT方法。原图大小为(512,512)嵌入图片大小为(64,64)
嵌入:
读取原图片。
读取水印图片。
原图片要处理为灰图。
水印图片要处理为2值图。
生成伪随机乱数(记住是怎么生成的,提取时用到)。
随机乱数做成2值图K与水印图生成密钥WK的2值图(方法有很多种)。
原图片做3次DWT处理(Matlab里函数是dwt2)得到图片DA,DB,DC,DD。
取出DB或DC,或者DB,DC都用上,设一个嵌入强度Q,与密钥K一起嵌入到DB,DC中(方法有很多种)。
将嵌入后的DB,DC与没有嵌入的DA,DD一起(DA,DB,DC,DD顺序不要错了)进行反DWT处理。
得到嵌入水印后的图片进行保存。
提取:
读取嵌入水印后的图片。
嵌入水印后的图片做3次DWT,并得到DA,DB,DC,DD。
定义Q(嵌入时的强度,比如5)。
生成嵌入水印时的伪随机乱数并做成2值图K。
取出,嵌入水印的成分(嵌入到DB的话取出DB,两个都用了就两个都取出,在这里用DB代替)。
进行嵌入时的反计算。
提取后的水印图片进行保存。