嗯,很多公司内部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裡看到水印了。