给你的图片加上盲水印

前言

水印,一般是指图片上印有文字的水印,比如发表在微博或者CSDN的图片都会自动打上肉眼可见的文字水印。像这种一般用于标识某张图片的出处或者用于声明版权。但是这样做会破坏掉原图,而且影响美观,比较粗暴。此处我想讨论的是另一种水印--盲水印。盲水印不仅仅用于图片,也可应用于像音频这种数据流。当然这篇文章只讨论图片上的应用。盲水印隐蔽性强,给水印数据进行编码过后不易被破解出来。这是它最大的优势。

盲水印原理

前一篇文章里面我写了关于傅立叶的c语言实现方式,盲水印的实现就和傅立叶相关,傅立叶变换可以把数据从时域转换到频域。而且过程可逆。盲水印就是在图像的频域上添加水印数据。再通过逆变换转回时域。区别是图片是二维数据,要把图片数据由时域转到频域需要用到二维傅立叶变换。
水印添加流程图如下:

流程图.png

图像的二维傅立叶变换

和一维数据不同,要想对图片进行频域转换就要使用二维傅立叶变换。
其实,只要实现了一维傅立叶变换,二维傅立叶变换就不会那么难:先对图像矩阵数据每一行进行傅立叶变换,再对每一列进行傅立叶变换即完成二维傅立叶变换。这里还是用一张常见的美女lena. 对lena(256*256)进行二维傅立叶变换如下图:

lena傅立叶变换并中心化的过程.png

对于分辨率很大的图片,DFT的效率很低,通常不会考虑,取而代之的是FFT,但是,FFT的条件是要保证图片的宽和高都是2的幂级数。但是通常生活中的图片一般都不满足这个条件。这时候我们就需要对图片的宽和高进行补0扩充直到满足条件为止。

图片频域数据特征如下图所示:

fft_pic.jpg

图片中明亮的部分就是低频部分,暗点的是高频部分。
一般为了展示会把频谱图低频的部分移到中心(上面手机拍的最右边的图)。频谱图是关于中心点对称的
由于傅立叶变换是可逆的,若一张图片进行补零扩大后,进行逆变换后再把它补零的部分进行裁剪就可以得到原图。

水印数据嵌入

为了让水印更加隐蔽,需要将水印像素按照一定的顺序打乱,再进行二维傅立叶变化,最后再让它叠加在需要加水印的图片的频域上。为了提高水印的安全性,规定这种打乱的顺序需要外界传入一个密钥,根据不同的密钥生成不同乱序的规则,而且过程是可逆的。

  • 乱序


    水印乱序.png
  • 水印的添加过程
水印添加过程.png

水印的提取

因为水印的添加是在原图的频域上进行叠加。我们只需要将原图和加了水印的图片分别进行傅立叶变换,最后通过减法则可提取出加密过的水印数据。通过已知的密钥可以逆推出打乱的规则,这样当我们从水印图片中提取出水印像素时,可以还原出水印像素的原序列。最后就可以得到原水印。

提取出的水印.png

代码实现

所有的OC实现方法都已经写成框架LHWatermark

嵌入水印:
    //初始化
    LHWatermarkProcessor *  processor = [[LHWatermarkProcessor alloc] initWidthImage:image config:[LHConfig defaultConfig]];
    __weak typeof(self) weakSelf = self;
    //把文字水印@"你的名字"添加到image中。 异步线程
    [processor addMarkText:@"你的名字"  result:^(UIImage *watermarkImage) {
        // block中返回加了水印的图片 主线程
        __strong typeof(weakSelf) strongSelf = weakSelf;
        strongSelf.topImgView.image = watermarkImage;
    }];
提取水印:
   UIImage *image = [UIImage imageNamed:ImageName];
     __weak typeof(self) weakSelf = self;
    // 分别传入原图像、加了水印的图像 。异步线程
    [LHWatermarkProcessor restoreImageWidthOriginImage:image watermarkImage:[UIImage imageWithContentsOfFile:_imagePath] config:[LHConfig defaultConfig] result:^(UIImage *markImage) {
         __strong typeof(weakSelf) strongSelf = weakSelf;
        // block中返回水印的图片 主线程
         strongSelf.bottomImgView.image = watermarkImage;
    }];

具体代码请转到本人GitHub,如果觉得对你有帮助不要吝惜你的start。如果哪位大神有更好的方案也请不必吝惜你的建议。
转载请注明出处。谢谢!

博客地址:here

参考资料:

知乎
图书馆查阅后不记得名字的某本书

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • 姓名:朱睿琦 学号:15180288015 参考:http://www.cnblogs.com/zkwarrior...
    BLASSREITER阅读 6,041评论 4 1
  • 一、傅立叶变换的由来 关于傅立叶变换,无论是书本还是在网上可以很容易找到关于傅立叶变换的描述,但是大都是些故弄玄虚...
    constant007阅读 4,398评论 1 10
  • [傅里叶变换算法及盲水印实现]盲水印,顾名思义就是看不见的水印。今天我们来说下频域加盲水印。相信大家做过图像处理的...
    Miaoz0070阅读 13,296评论 52 20
  • 导语 前段时间有一则阿里员工外泄信息被捕获的报道。大致内容是阿里的某位员工,在内部办公软件截图,使用PS工具修掉截...
    我家大白阅读 28,004评论 1 26
  • 一只稚嫩的小鸟 停靠在我的肩膀上 我将你关进了笼子 每天为你精心喂食 期待你的羽毛 越来越美丽 可是你依然两眼无光...
    冷冬年阅读 143评论 0 1