首页 > 其他分享 >通过傅立叶转换对图片增加盲水印

通过傅立叶转换对图片增加盲水印

时间:2024-03-15 16:45:37浏览次数:28  
标签:convert 转换 圖片 fft 水印 jpg 傅立叶 png

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

标签:convert,转换,圖片,fft,水印,jpg,傅立叶,png
From: https://www.cnblogs.com/netstat/p/18075765

相关文章

  • 108. 将有序数组转换为二叉搜索树c
    /***Definitionforabinarytreenode.*structTreeNode{*intval;*structTreeNode*left;*structTreeNode*right;*};*/structTreeNode*build(int*nums,inthead,inttail){if(head>tail)returnNULL;intmid=head+(......
  • python bytes格式的一些转换
    importbinascii#中文字符串转bytess="中国"b=s.encode("utf-8")print(b)#输出:b'\xe4\xb8\xad\xe5\x9b\xbd'#bytes转字符串,默认utf-8解码print(b.decode())#输出:中国#16进制字符串转byteshex_s="e4b8ade59bbd"b=bytes.fromhex(he......
  • 稳定可靠:PW2163降压芯片,实现5V至3.3V/3V高效转换,3A电流稳定输出
    在现代电子设备中,电源管理芯片发挥着至关重要的作用。PW2163作为一款高效稳定的500kHz同步降压DC-DC转换器,凭借其出色的性能和广泛的应用领域,已成为众多电子设备中的电源管理新选择。 一、PW2163的显著特点与优势PW2163具有内部集成低RDS(ON)的主开关和同步开关,这一设计有助于最......
  • 稀疏数组与二维数组之间的转换
    稀疏数组介绍:稀疏数组:当一个数组中大部分元素为同一个值时,就可以考虑使用稀疏数组来保存数据节省空间。稀疏数组的原理:1)稀疏数组一共三列,第一行的第一列保存原二维数组的行数,第一行第二列保存原二维数组的列数,第一行第三列保存原二维数组非0数据的个数;2)稀疏数组一共有【原二维......
  • 进制介绍及进制之间的转换
    进制介绍对于整数,有四种表示方式:二进制:0,1,满2进一。以0b或者0B开头。十进制:0-9,满10进一。八进制:0-7,满8进一。以数字0开头。十六进制:0-9及A(10)-F(15),满16进一。以0x或者0X开头表示,此处的A-F不区分大小写。进制之间的转换二进制转十进制方法:从最低位(右边)开始,将每个位上的数......
  • shell脚本实现子母大小写转换
    文章目录把变量中的第一个字符换成大写把变量中的所有小写字母,全部替换为大写把变量中的第一个字符换成小写把变量中的所有大写字母,全部替换为小写用tr需要新增变量,用declare或typeset需要在变量赋值前或者赋值后单独声明,都有些麻烦此方法为bash4.0以后新增,bash4......
  • MFEA-GSMT--通过基因相似性和镜像转换来解决多任务优化问题
    MFEA-GSMT–通过基因相似性和镜像转换来解决多任务优化问题title:ImprovingEvolutionaryMultitaskingOptimizationbyLeveragingInter-TaskGeneSimilarityandMirrorTransformationauthor:XiaoliangMa,YongjinZheng,andZexuanZhu,XiaodongLi,LeiWang,Yu......
  • 【5V 转 3.3V,3V,2.5V芯片首选】PW2162高效恒压转换器,外围电路超简单
    在现代电子设备高速发展的今天,一款高效、稳定的电源管理芯片对于设备的性能至关重要。PW2162,作为一款完全集成、高效的2A同步整流降压转换器,凭借其出色的性能和广泛的应用领域,正引领着电源管理领域的新纪元。首先,让我们深入了解一下PW2162的独特之处。这款转换器在宽输出电流负载......
  • 视频快速去除水印的方法
    视频图片去水印麻烦?图片还好说,但是视频去水印是比较麻烦的,今天给大家分享一个超简单的去除视频水印的方法,只需三步就可以一键帮助大家去除图片视频水印,一键操作简单快捷。这个工具去年分享过,小伙伴用的感觉比较不错,今天给大家带来了新的版本。HitPaw水印去除器是一款基于人工智......
  • Flutter中JSON、List和Map之间的相互转换
    JSON转换为Map要将JSON字符串转换为Dart的Map对象,您可以使用Flutter的内置json库。这个库提供了jsonDecode()函数,可以将JSON字符串解析为Dart的Map对象import'dart:convert';StringjsonString='{"name":"John","age":30}';Map<String,dynamic>us......