早上,看到期刊《Water Resources Research》的文章《智能解决方案定位供水管网渗漏》。通过SCI-HUB下载回来,发现文章填满水印"Accepted Article"。总之,视觉效果非常差。思考是否可以通过MATLAB实现去除水印。其实,很多算法的核心哲学是"分类"。正如水印的去除也是如此--把水印的部分与其他的分别出来。水印去除的算法非常多[有些可编辑的PDF文件有时可以直接删除水印]。主要分为有监督算法与监督算法。监督算法有神经网络、支持向量机等。这需要学习水印的特征。无监督算法有KNN与K~MEANS(在RGB色彩空间)、灰度图、二值图等。根据先验知识:这个PDF的水印比较简单,只是灰色。与黑色的文字及白色的底色可以很好区分。所以用简单的二值图算法就可以实现目的。单纯图片的话,MATLAB就没有问题。但是,这里是PDF。最终的文件也是PDF,所以还需要结合其他的处理才实现。当然希望全程自动化的话,PYTHON结合MATLAB可以很好实现。
根据上面的讨论,PDF去除水印分为三个步骤。
1.PDF文件转化为图片;
2.MATLAB去除图片水印;
3.图片转化为PDF文件。
1.PDF文件转化为图片
PDF文件无法直接在MATLAB进行处理,需要先转换为图片格式,常见图片格式有jpg、bmp、png等。PDF转换图片的方法有很多,如果不想麻烦安装软件或者不是保密文件的话可以选择在线转换。PDF文件在线转换图片网址:http://app.xunjiepdf.com/pdf2jpg。
2.MATLAB去除图片水印;
本文去除水印就利用图片二值化的原理,通过阈值设置将颜色较浅的水印设置成白色,从而完成去除水印的操作。效果与MATLAB代码如下:
3.图片转化为PDF文件
去除水印之后的图片可以导入到WORD文档中,之后用虚拟PDF打印机转化为单个PDF文件。
去除图片水印的方法有很多,请大家不要拘泥于形式,根据实际情况[先验知识,比如RGB、Lab等的色彩空间或者图片中的位置锁定水印位置]合理选择适合自己的处理方法。