一. 视频去水印的几种方法
- 使用ffmpeg delogo滤镜
delogo 滤镜的原理是通过插值算法,用水印周围的像素填充水印的位置。
示例:
ffmpeg -i input.mp4 -filter_complex "[0:v]delogo=x=420:y=920:w=1070:h=60" output.mp4
该命令表示通过滤镜去除水印,水印的位置为(x,y),尺寸为wxh。
效果如下:

这种方式从原理上来讲是存在问题的,可以保证画面整体颜色看起来差不多,但是局部看画面是不连续的。对于水印周围是纯色的情况,这种方式是没有问题的。
适用场景:水印位置为纯色,或者颜色变化不明显的情况。
- AI 去水印
尝试了可以搜索到的几种AI软件:
(1)有的使用的是ffmpeg delogo类似的方案;
(2)有的使用对象识别的方式,理论上来说,这种方式是可行的。但是也有一些问题,首先图像识别运算量大,耗时特别长。如果是单张图片还可以,对于视频耗时太长了。
- 同系列图片替换
这是自己尝试的一种方式,算是抛砖引玉吧。原理也很简单,一般视频就是连续变化的图片,只要找到两张图片水印区域不重叠,就可以进行替换。

原图1

原图2

原图1相对于原图2的偏转,这是对原图1 进行旋转后的效果。

提取水印位置,可以看到原图1和原图2,在水印处是没有重叠的。

用从原图2中提取的水印位置的图片,替换原图1 中的水印位置。可以看到图像是连续的,除了图像的清晰度有些区别。这是因为原图1和原图2 水印位置的图片是不一样导致的。
下面是替换后的视频:
这种方法的适用场景:
-
在水印区域是相同的或者变化很小
-
水印区域在不同图片存在不重叠的情况。
上面是我的一点尝试,了解的东西有限,欢迎大家交流。