通过傅立叶转换对图片增加盲水印
嗯,很多公司内部oa或者im都加了水印,比如著名阿里月饼事件
brew install fftw
brew install imagemagick --with-fftw
convert test.jpg -fft fft.png
convert mark.png -rotate 180 mark1.png
convert fft-1.png mark.png -gravity northwest -geometry +1382+1124 -composite fft-2.png
convert fft-2.png mark1.png -gravity southeast -geometry +1382+1124 -composite fft-1.png
convert fft-0.png fft-1.png -ift -crop 3264x2448+0+0 test1.jpg
convert test1.jpg -fft fft1.png
上面的命令中,convert就是ImageMagick的主命令。test.jpg为测试图片,大小为600x600,mark.png为透明PNG图片水印,大小为160x120。
这个例子裡用的是明文水印,会在目标图片裡留下一些纹理,作编码分散后会好很多,这裡从略。
第一句就是把test.jpg作傅立叶变换,生成两个图片:fft-0.png和fft-1.png。其中fft-0为影象的幅度谱,fft-1为相伴谱(即频域)。
第二句生成一个旋转180度的水印图,用于生成对称水印。
第三句就是在相位谱左上方三分之一的位置放一个水印图,具体位置可以自己调整,越往左上,水印能量越小,也就越容易丢失,越往中间则对目标图片影响越大。
第四句与第三句一样,只是对称地在右下方放一个旋转过的水印。
第五句作傅立叶逆变换并裁剪(因为转换后图片会变成方形)生成目标图片。
第六句则是把目标图片作傅立叶变换,之后就可以在fft1-1.png裡看到水印了。

浙公网安备 33010602011771号