一种自动去除图片背景的方法及系统
技术领域
本发明涉及图片背景去除的
技术领域
,尤其涉及一种自动去除图片背景的方法及系统。背景技术
在拍摄电影,对照片进行处理,时尚元素设计等等领域中,通常都需要对图片的背景进行去除。但是现有技术中还没有全自动又能将背景完全去除干净的方法。
已有的软件通常是通过以下方法去除图片中的背景:
(1)人工选定区域删除;
(2)人工选择一个点,去除和选定点相似的相邻像素点;
(3)人工选定区域,去除和选定区域相似的相邻像素点。
然而,以上方法都需要人工操作,而且当图片边缘越复杂时,去除背景的效果越差。
发明内容
针对上述问题,本发明的目的在于提供一种自动去除图片背景的方法及系统,具有能够全自动去除图片背景,无需人工操作,且针对边缘复杂的图片也具有很好的背景去除效果的优点。
本发明的上述发明目的是通过以下技术方案得以实现的:
一种自动去除图片背景的方法,包括以下步骤:
S1:获取待去除背景图片,并抹去所述待去除背景图片中包含过多噪点的不必要的内部细节;
S2:采用包括粗线条提取法和细线条提取法在内的任意一种方法,提取所述待去除背景图片中的物体线条;
S3:获取所述物体线条的外部轮廓,并把所述外部轮廓描绘出来;
S4:将所述外部轮廓内部颜色填充为白色RGB(255,255,255),将所述外部轮廓外部颜色填充为黑色RGB(0,0,0);
S5:当所述待去除背景图片为包括jpg、jpeg在内的不包括alpha图层的图片时,创建新的alpha图层,当所述待去除背景图片为包括png在内的包括alpha图层的图片时,重写alpha图层数值,将alpha图层赋值为任意一个其他图层的数值,其中,由于在alpha图层中255代表不透明,0代表透明,设置后所述外部轮廓内部的图像显示出来,所述外部轮廓外部的图像不显示,即成功去除图片背景。
进一步地,在步骤S1中,抹去所述待去除背景图片中包含过多噪点的不必要的所述内部细节,具体为:采用高斯模糊抹去所述待去除背景图片中的所述内部细节。
进一步地,在步骤S2中,采用包括所述粗线条提取法和所述细线条提取法在内的任意一种方法,提取所述待去除背景图片中的物体线条,具体为:
所述粗线条提取法采用边缘检测算法canny,应用于希望去除背景线条比较平滑的场景中;
所述细线条提取法采用边缘检测CNN模型DexiNed,应用于希望去除背景线条比较精细的场景中。
进一步地,在步骤S3中,获取所述物体线条的外部轮廓,并把所述外部轮廓描绘出来,具体为:
采用Python中findContours函数获取所述物体线条的外部轮廓,并采用Python中drawContours函数把所述外部轮廓描绘出来。
一种自动去除图片背景的系统,包括:
内部细节去除模块,用于获取待去除背景图片,并抹去所述待去除背景图片中包含过多噪点的不必要的内部细节;
物体线条提取模块,用于采用包括粗线条提取法和细线条提取法在内的任意一种方法,提取所述待去除背景图片中的物体线条;
外部轮廓描绘模块,用于获取所述物体线条的外部轮廓,并把所述外部轮廓描绘出来;
颜色填充模块,用于将所述外部轮廓内部颜色填充为白色RGB(255,255,255),将所述外部轮廓外部颜色填充为黑色RGB(0,0,0)
alpha图层赋值模块,用于当所述待去除背景图片为包括jpg、jpeg在内的不包括alpha图层的图片时,创建新的alpha图层,当所述待去除背景图片为包括png在内的包括alpha图层的图片时,重写alpha图层数值,将alpha图层赋值为任意一个其他图层的数值,其中,由于在alpha图层中255代表不透明,0代表透明,设置后所述外部轮廓内部的图像显示出来,所述外部轮廓外部的图像不显示,即成功去除图片背景。
进一步地,在所述内部细节去除模块中,还包括:采用高斯模糊抹去所述待去除背景图片中的所述内部细节。
进一步地,在所述物体线条提取模块中,还包括:所述粗线条提取法采用边缘检测算法canny,应用于希望去除背景线条比较平滑的场景中;所述细线条提取法采用边缘检测CNN模型DexiNed,应用于希望去除背景线条比较精细的场景中。
进一步地,在所述外部轮廓描绘模块中,还包括:采用Python中findContours函数获取所述物体线条的外部轮廓,并采用Python中drawContours函数把所述外部轮廓描绘出来。
一种电子设备,其特征在于,包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或所述指令集由所述处理器加载并执行以实现如上述的方法。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机代码,当所述计算机代码被执行时,如上述的方法被执行。
与现有技术相比,本发明包括以下至少一种有益效果是:
(1)通过提供一种自动去除图片背景的方法,包括以下步骤:S1:获取待去除背景图片,并抹去所述待去除背景图片中包含过多噪点的不必要的内部细节;S2:采用包括粗线条提取法和细线条提取法在内的任意一种方法,提取所述待去除背景图片中的物体线条;S3:获取所述物体线条的外部轮廓,并把所述外部轮廓描绘出来;S4:将所述外部轮廓内部颜色填充为白色RGB(255,255,255),将所述外部轮廓外部颜色填充为黑色RGB(0,0,0);S5:当所述待去除背景图片为包括jpg、jpeg在内的不包括alpha图层的图片时,创建新的alpha图层,当所述待去除背景图片为包括png在内的包括alpha图层的图片时,重写alpha图层数值,将alpha图层赋值为任意一个其他图层的数值,其中,由于在alpha图层中255代表不透明,0代表透明,设置后所述外部轮廓内部的图像显示出来,所述外部轮廓外部的图像不显示,即成功去除图片背景。上述技术方案具有能够全自动去除图片背景,无需人工操作,且针对边缘复杂的图片也具有很好的背景去除效果的优点。
附图说明
图1位本发明一种自动去除图片背景的方法的整体流程图;
图2为本发明采用边缘检测算法canny进行粗线条提取的示意图;
图3为本发明采用边缘检测CNN模型DexiNed进行细线条提取的示意图;
图4为本发明原始图像未处理过的图像的示意图;
图5为本发明提取物体线条后的物体线条示意图;
图6为本发明最终去除背景之后的图像示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。
第一实施例
如图1所示,本实施例提供了一种自动去除图片背景的方法,具体包括以下步骤:
S1:获取待去除背景图片,并抹去所述待去除背景图片中包含过多噪点的不必要的内部细节。
具体地,在本实施例中,首先要用高斯模糊抹去内部细节,否则下一步提取线条的话,会出现过多的噪点。比如如果是一张猫在草地上的图片,高斯模糊会去掉像是猫毛和草之类的细节,这样下一步提取的时候,草和猫会有清晰的轮廓线条提取出来。如果这一步没有做的话,草的细节没有去掉,在后续描绘外部轮廓时,草就会被认定为最外部轮廓,那提取背景就会失败。如果先做过高斯模糊,草和猫不必要的细节先被去掉了,草和猫就很容易被分离开。这样的情况下,背景去除的成功率就比较高,去除得比较干净。
其中,高斯模糊,也叫高斯平滑,是在Adobe Photoshop、GIMP以及Paint.NET等图像处理软件中广泛使用的处理效果,通常用它来减少图像噪声以及降低细节层次。这种模糊技术生成的图像,其视觉效果就像是经过一个毛玻璃在观察图像,这与镜头焦外成像效果散景以及普通照明阴影中的效果都明显不同。
S2:采用包括粗线条提取法和细线条提取法在内的任意一种方法,提取所述待去除背景图片中的物体线条。
其中,所述粗线条提取法采用Python中边缘检测算法canny,应用于希望去除背景线条比较平滑的场景中(图2);所述细线条提取法采用Python中边缘检测CNN模型DexiNed,应用于希望去除背景线条比较精细的场景中(图3)。
S3:获取所述物体线条的外部轮廓,并把所述外部轮廓描绘出来.
具体地,在本实施例中,针对于步骤S2中提取出来的线条,除了轮廓以外都要去掉。采用Python中findContours函数获取所述物体线条的外部轮廓,并采用Python中drawContours函数把所述外部轮廓描绘出来。
S4:将所述外部轮廓内部颜色填充为白色RGB(255,255,255),将所述外部轮廓外部颜色填充为黑色RGB(0,0,0)。
具体地,接下来需要把轮廓内部颜色填充成白色,RGB(255,255,255),把轮廓外部颜色填充成黑色,RGB(0,0,0)。原图片如果是jpg或jpeg,说明原图片只有三个图层,没有alpha图层;原图片如果是png,说明原图片有四个图层,有alpha图层,alpha图层是掌管透明度的图层。
S5:当所述待去除背景图片为包括jpg、jpeg在内的不包括alpha图层的图片时,创建新的alpha图层,当所述待去除背景图片为包括png在内的包括alpha图层的图片时,重写alpha图层数值,将alpha图层赋值为任意一个其他图层的数值,其中,由于在alpha图层中255代表不透明,0代表透明,设置后所述外部轮廓内部的图像显示出来,所述外部轮廓外部的图像不显示,即成功去除图片背景。
在本实施例中,创建一个覆盖有alpha图层的新图片,alpha图层图像部分填充颜色设置不透明,其他背景部分设置为透明。具体为:
获取一开始最原始的没有进行过任何操作的待去除背景图片,假设原图片长x宽y,若原图片没有alpha图层,创建新的alpha图层,即为一个x*y*1的矩阵,任意取一个经过步骤S1-S4处理过的图像中的任意一个图层,对alpha图层赋值为上述经过步骤S1-S4处理过的图层相同的值,因为之前已经把图层设成255和0两个值,在alpha图层里,255代表不透明,0代表透明,所以效果就是轮廓内部的图像会显示出来,外部的不显示,因为已经设为透明,即成功去除图片背景。若原图片已经有alpha图层,则按照以上相同方法重写alpha图层数值,因为之前已经把图层设成255和0两个值,在alpha图层里,255代表不透明,0代表透明,所以当将alpha图层覆盖到原始图片上之后,效果就是轮廓内部的图像会显示出来,外部的不显示,因为已经设为透明,即成功去除图片背景。
经过以上本发明的步骤进行处理之后,图像就可以脱离背景独立出来,便于后期编辑和用在服装设计里面。具体示例如图4-6所示。其中,图4为原始图像,图5为步骤S2提取图像中的物体线条后的物体线条的示意图。图6为最终去除背景之后的图像示意图。
第二实施例
本实施例提供了一种自动去除图片背景的系统,包括:
内部细节去除模块1,用于获取待去除背景图片,并抹去所述待去除背景图片中包含过多噪点的不必要的内部细节;
物体线条提取模块2,用于采用包括粗线条提取法和细线条提取法在内的任意一种方法,提取所述待去除背景图片中的物体线条;
外部轮廓描绘模块3,用于获取所述物体线条的外部轮廓,并把所述外部轮廓描绘出来;
颜色填充模块4,用于将所述外部轮廓内部颜色填充为白色RGB(255,255,255),将所述外部轮廓外部颜色填充为黑色RGB(0,0,0)
alpha图层赋值模块5,用于当所述待去除背景图片为包括jpg、jpeg在内的不包括alpha图层的图片时,创建新的alpha图层,当所述待去除背景图片为包括png在内的包括alpha图层的图片时,重写alpha图层数值,将alpha图层赋值为任意一个其他图层的数值,其中,由于在alpha图层中255代表不透明,0代表透明,设置后所述外部轮廓内部的图像显示出来,所述外部轮廓外部的图像不显示,即成功去除图片背景。
进一步地,在所述内部细节去除模块1中,还包括:采用高斯模糊抹去所述待去除背景图片中的所述内部细节。
进一步地,在所述物体线条提取模块2中,还包括:所述粗线条提取法采用边缘检测算法canny,应用于希望去除背景线条比较平滑的场景中;所述细线条提取法采用边缘检测CNN模型Dex i Ned,应用于希望去除背景线条比较精细的场景中。
进一步地,在所述外部轮廓描绘模块3中,还包括:采用Python中findContours函数获取所述物体线条的外部轮廓,并采用Python中drawContours函数把所述外部轮廓描绘出来。
本发明还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机代码,当计算机代码被执行时,如上述方法被执行。本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁盘或光盘等。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
应当说明的是,上述实施例均可根据需要自由组合。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
本发明的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本发明的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本发明的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个功能或步骤的电路。如本说明书实施例所示实施例揭示的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Net work Processor,NP)等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本说明书实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本说明书实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子系统执行时,使得所述电子系统执行实施例一所述的方法。在此不再赘述。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(tr ansitory media),如调制的数据信号和载波。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PR AM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitor y media),如调制的数据信号和载波。还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
另外,本发明的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本发明的方法和/或技术方案。而调用本发明的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本发明的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本发明的多个实施例的方法和/或技术方案。