暗水印到底是什么?为什么改了画面还是被认出来
暗水印藏在像素最低位、频域和文件信息三层里,裁一刀、调个色都对它没用。说清它藏在哪,以及该用哪些算法去打散。
看不见,但它确实在那儿
水印分两种。
一种是你看得见的:角落那个 logo,或者半透明铺满屏的账号名。 这种裁一刀、补一块就能盖掉。
另一种是看不见的,叫暗水印。你眼睛找不到它, 但平台的程序一读就能读出来。很多人「画面明明改过了还是被认出来」, 问题就出在这一层。
它藏在哪三个地方
- 藏在像素的最低位。每个像素的颜色在计算机里是一串数字, 改这串数字的最后一位,画面几乎看不出变化, 但这一串「最后一位」连起来就是一条标记。这叫最低有效位。
- 藏在频域里。画面除了能按像素看,还能按「明暗变化的快慢」看。 在这一层里加一点规律的扰动,肉眼看不出来,程序能读出来。
- 藏在文件信息里。文件自带的拍摄时间、设备型号、软件版本、 作者信息,这些不显示在画面上,但一直跟着文件走。
第三类最好办:元数据清除这一项就是干这个的,勾上就没了。
为什么你裁一刀、调个色它还在
因为你做的是「对所有像素一视同仁」的操作。
调亮度,所有像素一起变亮;裁画面,所有留下的像素一起挪位置。 藏在最低位上的那条标记,也跟着一起被保留下来—— 你动的是「值」,它记的是「位置上的规律」,两者不在一层。
所以光靠调色、加滤镜、改尺寸,对这一类东西作用很有限。 这也是为什么有些人觉得「我都改这么多了怎么还被认出来」。
要打散它,得往下走一层
针对的是下面这些算法:噪点融合、频域扰动、色差补偿、 噪声融合。它们改的不是「画面看起来怎么样」, 而是像素底层那串数字本身,正好和标记藏的地方在同一层。
视频这边勾噪点融合 + 元数据清除; 图片那边可以在方案里加上频域扰动、噪声融合、色差补偿, 再配合 EXIF 重构、JPEG 重写把文件那层也写一遍。 具体怎么搭可以看 旋风图片去重里的 23 项算法,按需勾选。
有一点要说清楚:这一层是「打散」,不是「彻底消除」。 每种平台的写法不一样,而且会变。能做到的是让大多数情况下读不出来, 不是任何情况下都读不出来。
一句话记住:明暗水印分两层——看得见的裁掉就行,看不见的得用噪点融合、频域扰动这类改到底层的算法。