MATLAB做数字水印求助

请教数字水印的高手,我按照一篇论文做数字水印,上面写道:

先对图像的Y分量进行DCT变换,然后
灰度值植入计算如下
1 对所有的DCT 系数按绝对值的大小排序
2 对灰度图像的灰度值排序并进行归一化处理归一化处理是指将灰度值归一到[0,1]区间中若总灰度级为256 则
新灰度值 = 原灰度值/256
3 将第i 大的灰度值Wi 植入绝对值第i+1 大的DCT 系数DCTi+1 中同时将灰度
值Wi 在灰度图像中的坐标位置和原系数DCTi+1 记录在一个文件中称为密码文件直到将整幅灰度图像全部植入DCT 变换域中植入的公式如下计算
DCT'i+1= DCTi+1 *(1+a*Wi) (i+1)为下标

如何对一个图像的DCT系数进行排序?工作量岂不是很大,如果我的图片是512*512的,水印图片是64*64的,那岂不是要比较512*512和64*64次才可以?或者是我的理解有错,请高手帮忙解释下,谢谢,另外密码文件又是什么意思?

如果你的图片是512×512的, 按nlogn的排序算法大约需要 512*512 * 18次比较而已, 即使是你用 N^2的算法也就几十G的运算量, 用不了一分钟就算完了
温馨提示:答案为网友推荐,仅供参考
相似回答