具体实施方式
为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。
在当前的图片应用中,为了标明出处、用途或者宣传等原因,很多图片上都会带有水印。在文档型的图片中,由于文档本身也记录了文字,并且文字一般是水平排列,此时,如为了避免冲突,此时文字性的水印一般以倾斜的直线文字的形式存在于文档图片中。如图1所示,图1为本说明书实施例所提供的当前实际应用中一种包含文字水印的示意图,可以看到,该水印已经影响了用户对图片的使用。在该示意图中,已经对图片进行了灰度处理,在实际中,水印还可以包含各种其它颜色。此外,在另一些情形中,一个目标图片还可以包括多个相同的水印。
在常规的去除水印中,要么采用遍历整体文档的方式,要么手动框出部分目标区域(如图1中所标识的虚框)进行清洗,在文档较大,以及水印较多的时候,效率较低。基于此,本说明书实施例提供一种方法,可以快速去除文档图片中的直线文字水印。
以下结合附图,详细说明本说明书各实施例提供的技术方案。如图2所示,图2是本说明书实施例提供的一种去除水印方法的流程示意图,该流程具体包括如下步骤:
S201,识别出目标图片中文字水印中的文字所处的目标直线,以及,初始文字和结束文字的坐标。
目标图片可以为终端设备本地存储的图像中的其中之一,或者为终端设备从网络或者其他终端设备获取到的图像。目标图像可以包括各种倾斜文字水印的格式的截图、照片、PDF文档等等。
如前所述,本说明书实施例所提供的方案中,文字水印以直线排列。此时,针对任一文字水印,首先可以首先定位出该文字水印所处的目标直线,例如,通过opencv霍夫曼方法检测出水印所处的直线。
需要说明的是,在实际处理中,检测得到的目标直线并不是总能完全的平行于水印实际中所处的直线,可能会稍稍偏离,但是,这并不影响本说明书实施例所提供的方案的效果。
同时,由于目标图片中的水印均是文字,因此,还可以检测出水印中的文字,以及得到水印中的文字在目标图像中的坐标。进一步地,根据所述文字的坐标在直线上的排列关系,确定出始文字和结束文字,得到初始文字和结束文字的坐标。
例如,可以将文字和目标直线的所有交点中的坐标极值作为初始文字和结束文字的坐标。以及,为保留一定的容错性,还可以以坐标极值为基准,沿目标直线,向两边扩展一定的距离,得到初始文字和结束文字的坐标。初始文字和结束文字的坐标用于确定包含水印的矩形目标区域的顶点。
S203,确定出包含文字水印的矩形目标区域。
具体而言,矩形目标区域的长与目标直线平行,即斜率相同。而矩形目标区域的顶点即在初始文字和结束文字的坐标附近。
在一个实施例中,可以以目标直线作为所述矩形目标区域的对称轴,而以初始文字和结束文字的所处的点,对所述目标直线进行垂直延伸一定的宽度,从而得到四个顶点,确定出矩形目标区域,可以看出矩形目标区域的长即与目标直线的斜率相同。
具体而言,延伸的宽度可以事先指定。例如,针对某一类目标图片,其中的水印大小已经事先确定,此时,可以事先指定一个比水印稍大的宽度值,从而在处理时均采用预设的宽度值即可,避免进一步的计算,提高效率
又例如,水印的宽度值还可以基于水印中文字的高度值来确定。即,对水印中的文字进行识别,进而确定出水印中文字的高度值,垂直延伸时根据该高度值进行相应的延伸。例如,直接以文字的高度值作为延伸时的宽;或者,对文字的高度值乘以一个放大系数k,以放大后的高度值作为延伸时的宽,k稍微大于1即可。例如,k=1.05。通过上述方式,即确定了一个较小的矩形目标处理区域。如图3所示,图3为本说明书实施例所提供的矩形目标区域的示意图。
与图1中的目标区域相比,在文字水印长度相同的条件下,容易看出本说明书所确定的矩形目标区域远小于图1中的目标区域。
此外,当一个文档中含有多个水印时,本说明书实施例所提供的方案可以自动的识别出每个水印对应的目标区域,避免手动圈定,提高效率。
S205,识别出所述矩形目标区域内的水印像素点,变更所述水印像素点的像素值为白色像素值,得到去除水印的图像。
具体而言,水印像素点即为水印文字所对应的像素点,其它点则为非水印像素点。水印像素点的像素值与非水印像素点的像素值存在差异,此时,可以遍历目标区域,基于像素点的像素值对全体像素点进行统计以及分类。
在一种实施例中,由于水印像素点的像素值一般相同,而在本申请实施例中,由于确定出来的矩形目标区域中,多数点都是水印像素点,此时,可以通过如下方式确定水印像素点:统计目标区域中的所有像素值的次数,将次数最大的像素值的所对应的点确定为水印像素点,其它点为非水印像素点。
在另一种实施例中,还可以首先对目标图片进行灰度处理。在进行灰度处理后,由于水印像素点的像素值和非水印像素点的像素值不同,水印像素点的像素值会大于非水印像素点,则此时,可以设定一个阈值,将超过阈值的像素点确定为水印像素点即可。
例如,水印的像素点一般比正常的文字浅一些,通过处理为灰度图后,正常文字的像素点在100以下,水印的像素点灰度在在150以上。则此时,可以遍历该矩形目标区域的像素点,像素值超过150,则将该像素点确定为水印像素点。
此外,在进行灰度处理是,还可以对灰度后目标图像进行通过高斯平滑方法将图片进行平滑,过滤掉极端的噪音。
由于本说明书实施例中水印是文字,在实际应用中,包含文字水印的目标图片是诸如论文、小说或者合同等文字性的文档图片。在文档图片中,一般文字是以黑色作为文字的像素,而以白色作为背景色。因此,在这种场景下,在确定了该水印像素点之后,对水印进行处理时,可以将水印像素点的像素值为白色像素值即可。对于灰度处理后的图片,白色像素值的大小即为255。
如果文档图片中以其它颜色作为背景色,此时,还可以将水印像素点的像素值调整为对应的其它背景色的像素值。
通过本说明书实施例所提供的方案,对于图片中的直线文字形的水印,首先定位出文字所处的直线以及两个端点,然后对与直线垂直的方向进行扩展得到一个适量的目标矩形区域,只对目标区域内的像素点进行水印清除,从而提高水印清除的效率。
如前所述,在文档型的图片中,文字水印一般是倾斜的。同时,文档中的文字本身处于一条水平直线上,此时,有可能识别得到多条水平以及倾斜的直线。
由于文档图片中本身的文字基于水平排列,即文档文字所处的直线其斜率一般就是0,而水印文字所处的直线斜率一般则是大于0的。因此,可以确定得到各直线的斜率,将斜率大于阈值的直线确定为目标直线,此处的阈值可以基于实际情形确定,略小于水印文字的直线的斜率即可。
在对于水印像素点转换成白色像素点之后,修复后得到的目标区域内的图像可能还会存在一些痕迹,特别在水印文字和文档文字像素点重叠的地方,甚至有小部分像素点(即该部分像素点也被识别成了水印像素点)可能会直接变为白色。为了抹平这些痕迹,对修复后得到的目标区域内的图像进行平滑处理,得到平滑后的去除水印的图像,平滑后的这些像素点的像素值一般即贴近了文档文字的像素点的像素值,不会对文档文字识别造成影响。
对应的,本说明书实施例还提供一种去除水印的装置,应用于包含直线型的文字水印的图片中,如图4所示,图4是本说明书实施例提供的一种去除水印的装置的结构示意图,包括:
识别模块401,识别出目标图片中文字水印中的文字所处的目标直线,以及,初始文字和结束文字的坐标;
区域确定模块403,确定出包含文字水印的矩形目标区域,其中,所述矩形目标区域的顶点与所述起始文字和结束文字的坐标相关,所述矩形目标区域的长与所述目标直线的斜率相同;
像素变更模块405,识别出所述矩形目标区域内的水印像素点,变更所述水印像素点的像素值为背景色像素值,得到去除水印的图像。
进一步地,当所述目标图片为文档图片时,所述识别模块401,识别出所述文档图片中的文字分别所处的直线;确定各直线的斜率,将斜率大于阈值的直线确定为目标直线。
进一步地,所述区域确定模块403,获取所述文字水印中文字的高度值,获取所述文字水印中文字的高度值,根据所述高度值确定所述矩形目标区域的宽度值;或者,以预先指定的宽度值作为所述矩形目标区域的宽度值。
进一步地,所述装置还包括灰度处理模块407,对所述矩形目标区域执行灰度处理,得到灰度目标区域;相应的,所述像素变更,遍历所述矩形目标区域内的像素点,将像素值大于阈值的像素点确定为水印像素点,将所述水印像素点的像素值设置为白色像素值255。
进一步地,所述装置还包括平滑模块409,利用模糊算法平滑所述去除水印的图像,得到平滑后的去除水印的图像。
本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现图2所示的去除水印的方法。
图5示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现图2所示的去除水印的方法。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
上述实施例阐明的系统、方法、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的方法实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。