如何高效批量图片去水印,一次成果丰硕的实验记录
由于爬虫抓到了各种各样的文章,避免不了要处理文章中存在的图片,现在大家都追短视频去了,如果文字再不配成图文就更没人看了,这也正常。但是这样抓下来的图片多数都包含原站点的水印,如何把这些图片上的水印去掉,同时添加上自己站点的水印就是迫切需要解决的问题。
我之前解决的方法比较暴力,就是制作一张水印图片,然后找出原站水印图片存在的规律,直接把自己水印图片透明度做的更低,尺寸比它原图上的水印图片大,就是很硬性的覆盖,虽然体验不太好,但是图片一般在图文结构的文章中都是点缀作用,也没有实质性的图解或者剖清、解析事物的意义,所以这么做也无可厚非。但是ai
时代,我搞了很多文章已经依赖于nlp(自然语言处理)
的知识,帮我粗粒度的解决了文本分类、推荐系统、翻译系统的问题,而人工智能在视觉领域是一直在取得突破的,比如说现在各公司广泛使用的人脸识别用于上班打卡、公共交通运输上使用人脸扫描技术加快人员检票时间、自动驾驶技术就更是视觉智能广泛使用的领域,所以,有这些有力的佐证,相信去除水印这种小事情在现在科技发展的程度上应该很容易解决了,所以近期就又抽出时间寻找这一问题更优的解法。
先汇报一下这次冲塔的成果:
-
我通过
opencv-python
这个包,依赖于封装的inpaint
方法,成功完成了水印图片的处理,效果也是蛮好的,但是要提前生成通道图mask
。 -
信赖于现有的视觉训练模型,但是跟第1条提到的要点一样,要提前传入生成出的通道图
mask
,最终水印去除成功,但是效率没有第1条的好,这个估计采用模型调参,进一步优化视觉训练模型,估计处理的效果更好,暂时没空做这个。 -
利用膨胀算法加上图片组成的通道概念,指定图片上水印图片的色域变化范围,这种方法适用于图片和水印间的色差比较明显的情况。同样原理,还可以利用图片明暗变化的极值,找到水印图片消失的过度值,直接把水印给隐掉,这会对原图的明暗程度有一定影响,我试用了这种方法,没有取得理想的效果,后来用
photoshop
在水印上取色,指定相对精准的水印图片色域变化范围,结果是水印去除不彻底,同时图片上相同色相的部分被误删。我后面总结过,用photoshop
取的范围可能只是某几个点位上的色彩RGB
取值,无法完全覆盖,同时,这个水印与背影颜色色差不明显,因此也损害了原图。
由于我要处理的站点图片数量庞大,因此实战时候,并没有采用上述方法,因为效率都比较低。如果你想实践的话,我也推荐你使用opencv-python
包的inpaint
方法,先生成通道图,再用通道图定位精准移除,效果当然还可以,但是生成通道图,目前还没有实践出完全不需要人工干预的方法,差异只是生成通道图过程中,人为介入工作量的大小,可想而知,对于我要处理的图片体量,这样的人工成本我是无法投入的,如果你感兴趣我用的是什么方法,欢迎给我留言。