对图像进行实时色度抠图的方法、装置及移动端
文献发布时间:2023-06-19 11:29:13
技术领域
本发明属于图像处理技术领域,具体涉及一种对图像进行实时色度抠图的方法、装置及移动端。
背景技术
随着移动设备的普及,用户对于能在移动设备上进行图像编辑的需求日益高涨。同时,在图像编辑过程中,会经常遇到需要对原始图像或素材图像进行色度抠图的情况。
相关技术中,在现有的色度抠图方法中,一方面只能在高性能的设备如个人电脑上进行且具有复杂的计算,计算量庞大且便携性差,现有的移动设备达不到实时的要求;另一方面,虽然存在能在移动端实时进行色度抠图的方法,但是图像中会出现边缘有瑕疵或视频中会出现抖动色块的情况,效果并不能让人满意。
发明内容
有鉴于此,本发明的目的在于克服现有技术的不足,提供一种对图像进行实时色度抠图的方法、装置及移动端,以解决现有技术中色度抠图会出现瑕疵的问题。
为实现以上目的,本发明采用如下技术方案:一种对图像进行实时色度抠图的方法,包括:
获取原始图像数据并输入到预先构建的OpenGL渲染环境中,得到纹理数据;
对所述纹理数据的像素RGBA值进行颜色空间转换,得到像素YCbCr值;
获取色度RGBA值并对所述色度RGBA值进行颜色空间转换,得到色度HSL值和色度YCbCr值;
对所述色度HSL值进行判断,并根据判断结果确定相应的颜色空间距离比较算法,如果所述颜色空间距离比较算法采用RGB颜色空间距离比较算法,则利用所述像素RGBA值和色度RGBA值计算颜色空间距离;如果所述颜色空间距离比较算法采用YCbCr颜色空间距离比较算法,则利用所述像素YCbCr值和所述色度YCbCr值计算颜色空间距离;
根据所述颜色空间距离对所述原始图像数据中的像素RGBA值进行计算,得到输出像素RGBA值。
进一步的,所述原始图像数据为:
图片或视频。
进一步的,对所述纹理数据的像素RGBA值进行颜色空间转换,得到像素YCbCr值,包括:
对所述像素RGBA值的RGB分量进行RGB到YCbCr的颜色空间转换,得到像素YCbCr值。
进一步的,所述对所述色度RGBA值进行颜色空间转换,得到色度HSL值和色度YCbCr值,包括:
对所述色度RGBA值的RGB分量进行RGB到HSL的颜色空间转换,得到色度HSL值;
对所述色度RGBA值的RGB分量进行RGB到YCbCr的颜色空间转换,得到色度YCbCr值。
进一步的,所述对所述色度HSL值进行判断,并根据判断结果确定相应的颜色空间距离比较算法,包括:
若所述色度HSL值中的S分量小于0.2或者色度HSL值中的L分量小于0.2或者色度HSL值中的L分量大于0.8,则采用RGB颜色空间距离比较算法计算得到RGB颜色空间距离;
否则,采用YCbCr颜色空间距离比较算法计算得到YCbCr颜色空间距离。
进一步的,还包括:
将所述输出像素RGBA值缓存至预创建的帧缓存中。
进一步的,所述像素RGBA值的R分量取值范围为0~1,G分量取值范围为0~1,B分量取值范围为0~1,A分量取值范围为0~1;
所述色度RGBA值的R分量取值范围为0~1,G分量取值范围为0~1,B分量取值范围为0~1,A分量取值范围为0~1。
进一步的,所述色度HSL值的H分量取值范围为0~1,S分量取值范围为0~1,L分量取值范围为0~1
所述色度YCbCr值的其中Y分量取值范围为0~1,Cb分量取值范围为0~1,Cr分量取值范围为0~1;
所述像素YCbCr值的Y分量取值范围为0~1,Cb分量取值范围为0~1,Cr分量取值范围为0~1。
本申请实施例提供一种对图像进行实时色度抠图的装置,包括:
获取模块,用于获取原始图像数据并输入到预先构建的OpenGL渲染环境中,得到纹理数据;
第一空间转换模块,用于对所述纹理数据的像素RGBA值进行颜色空间转换,得到像素YCbCr值;
第二空间转换模块,用于获取色度RGBA值并对所述色度RGBA值进行颜色空间转换,得到色度HSL值和色度YCbCr值;
颜色比较模块,用于对所述色度HSL值进行判断,并根据判断结果确定相应的颜色空间距离比较算法,如果所述颜色空间距离比较算法采用RGB颜色空间距离比较算法,则利用所述像素RGBA值和色度RGBA值计算颜色空间距离;如果所述颜色空间距离比较算法采用YCbCr颜色空间距离比较算法,则利用所述像素YCbCr值和所述色度YCbCr值计算颜色空间距离;
输出模块,用于根据所述颜色空间距离与所述原始图像数据中的像素RGBA值,得到输出像素RGBA值。
本申请提供一种移动端,包括处理器,以及与所述处理器连接的存储器;
所述存储器用于存储计算机程序,计算机程序用于执行所述权利要求1至8任一项所述的对图像进行实时色度抠图的方法;
所述处理器用于调用并执行存储器中的计算机程序。
本发明采用以上技术方案,能够达到的有益效果包括:
本发明提供一种对图像进行实时色度抠图的方法、装置及移动端,所述方法包括获取原始图像数据并输入到预先构建的OpenGL渲染环境中,得到纹理数据;对纹理数据的像素RGBA值进行颜色空间转换,得到像素YCbCr值;获取色度RGBA值并对色度RGBA值进行颜色空间转换,得到色度HSL值和色度YCbCr值;对色度HSL值进行判断,并根据判断结果确定相应的颜色空间距离比较算法得到颜色空间距离;根据颜色空间距离对原始图像数据中的像素RGBA值进行计算,得到输出像素RGBA值。本发明结合颜色空间转换,对图片或视频进行色度抠图,以达到效率能达到实时的程度,同时达到图像边缘过渡自然,没有瑕疵,还能够消除色块抖动,达到满意的效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明对图像进行实时色度抠图的方法的步骤示意图;
图2为本发明对图像进行颜色空间转换的流程示意图;
图3为本发明对图像计算颜色空间距离的流程示意图;
图4为本发明对图像进行实时色度抠图的装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将对本发明的技术方案进行详细的描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施方式,都属于本发明所保护的范围。
下面结合附图介绍本申请实施例中提供的一个具体的对图像进行实时色度抠图的方法、装置及移动端。
如图1所示,本申请实施例中提供的对图像进行实时色度抠图的方法,包括:
S101,获取原始图像数据并输入到预先构建的OpenGL渲染环境中,得到纹理数据;
本申请可通过移动端实现,首先利用移动端创建运行OpenGL程序的环境,并在所述环境中创建一个OpenGL程序,通过移动端获取原始图像数据,例如通过移动端进行拍摄图片或视频,还可以通过移动端的相册获取存储的图片或视频,然后通过移动端读取一帧纹理数据,并将纹理数据输入到预先设置的OpenGL程序中。
优选的,原始图像数据为图片或视频;移动端可以为智能手机或平板电脑等。
需要说明的是,OpenGL是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口。OpenGL常用于CAD、虚拟实境、科学可视化程序和电子游戏开发。OpenGL规范由1992年成立的OpenGL架构评审委员会(ARB)维护,其为现有技术实现,本申请在此不做赘述。
S102,对所述纹理数据的像素RGBA值进行颜色空间转换,得到像素YCbCr值;
通过OpenGL程序对纹理数据进行处理,获取纹理数据的像素RGBA值,然后对像素RGBA值进行颜色空间转换,得到像素YCbCr值。
S103,获取色度RGBA值并对所述色度RGBA值进行颜色空间转换,得到色度HSL值和色度YCbCr值;
获取用户输入的色度RGBA值,对色度RGBA值进行颜色空间转换,从而得到色度HSL值和色度YCbCr值。
需要说明的是,RGB颜色模型是一种颜色模型,以R(Red,红)、G(Green,绿)、B(Blue,蓝)三种基本色为基础,进行不同程度的叠加,产生丰富而广泛的颜色。HSL颜色模型是一种颜色模型,用H、S、L三参数描述颜色特性,其中H定义颜色的频率,称为色调;S表示颜色的深浅程度,称为饱和度;L表示亮度。HSL模型是美国色彩学家孟塞尔于1915年提出的,它反映了人的视觉系统感知彩色的方式,以色调、饱和度和强度三种基本特征量来感知颜色。
YCbCr(或Y'CbCr)颜色模型是一种颜色模型,有的时候会被写作:YCBCR或Y'CBCR,通常会用于影片中的影像连续处理,或是数字摄影系统中。Y'为颜色的亮度(luma)成分、而CB和CR则为蓝色和红色的浓度偏移量成份。Y'和Y是不同的,而Y就是所谓的亮度(luminance),表示光的浓度且为非线性,使用伽马修正(gamma correction)编码处理。
S104,对所述色度HSL值进行判断,并根据判断结果确定相应的颜色空间距离比较算法,如果所述颜色空间距离比较算法采用RGB颜色空间距离比较算法,则利用所述像素RGBA值和色度RGBA值计算颜色空间距离;如果所述颜色空间距离比较算法采用YCbCr颜色空间距离比较算法,则利用所述像素YCbCr值和所述色度YCbCr值计算颜色空间距离;
对色度HSL值中的S分量、L分量与预设阈值进行比较判断,并根据判断结果选择合适的颜色空间距离比较算法计算颜色空间距离。
其中,颜色空间距离比较算法包括:RGB颜色空间距离比较算法和YCbCr颜色空间距离比较算法。
S105,根据所述颜色空间距离对所述原始图像数据中的像素RGBA值进行计算,得到输出像素RGBA值。
利用得到的颜色空间距离结合原始图像数据,计算出输出像素RGBA值,所述输出像素RGBA值也就是最终的色度抠图结果。
对图像进行实时色度抠图的方法的工作原理为:首先利用移动端创建运行OpenGL程序的环境,并在所述环境中创建一个OpenGL程序,通过移动端获取原始图像数据,例如通过移动端进行拍摄图片或视频,还可以通过移动端的相册获取存储的图片或视频,然后通过移动端读取一帧纹理数据。并将纹理数据输入到预先设置的OpenGL程序中,获取纹理数据的像素RGBA值,然后对像素RGBA值进行颜色空间转换,得到像素YCbCr值,再获取用户输入的色度RGBA值,对色度RGBA值进行颜色空间转换,从而得到色度HSL值和色度YCbCr值,通过对所述色度HSL值进行判断,采用相应的颜色空间距离比较算法利用像素YCbCr值、色度HSL值和色度YCbCr值计算颜色空间距离,其中,RGB颜色空间距离比较算法利用所述像素RGBA值和色度RGBA值计算颜色空间距离;YCbCr颜色空间距离比较算法利用像素YCbCr值和色度YCbCr值计算颜色空间距离,最后将原始图像数据结合空间距离计算出输出结果。
一些实施例中,如图2所示,对所述纹理数据的像素RGBA值进行颜色空间转换,得到像素YCbCr值,包括:
对所述像素RGBA值的RGB分量进行RGB到YCbCr的颜色空间转换,得到像素YCbCr值。
一些实施例中,所述对所述色度RGBA值进行颜色空间转换,得到色度HSL值和色度YCbCr值,包括:
对所述色度RGBA值的RGB分量进行RGB到HSL的颜色空间转换,得到色度HSL值;
对所述色度RGBA值的RGB分量进行RGB到YCbCr的颜色空间转换,得到色度YCbCr值。
具体的,获取纹理数据的像素RGBA值,其中R分量取值范围为0~1,G分量取值范围为0~1,B分量取值范围为0~1,A分量取值范围为0~1;
载入用户输入的色度RGBA值,其中R分量取值范围为0~1,G分量取值范围为0~1,B分量取值范围为0~1,A分量取值范围为0~1;
对所述色度RGBA值的RGB分量进行RGB到HSL的颜色空间转换,得到色度HSL值,其中H分量取值范围为0~1,S分量取值范围为0~1,L分量取值范围为0~1;
对所述色度RGBA值的RGB分量进行RGB到YCbCr的颜色空间转换,得到色度YCbCr值,其中Y分量取值范围为0~1,Cb分量取值范围为0~1,Cr分量取值范围为0~1;
对所述像素RGBA值的RGB分量进行RGB到YCbCr的颜色空间转换,得到像素YCbCr值,其中Y分量取值范围为0~1,Cb分量取值范围为0~1,Cr分量取值范围为0~1。
一些实施例中,所述对所述色度HSL值进行判断,并根据判断结果确定相应的颜色空间距离比较算法,包括:
若所述色度HSL值中的S分量小于0.2或者色度HSL值中的L分量小于0.2或者色度HSL值中的L分量大于0.8,则采用RGB颜色空间距离比较算法计算得到RGB颜色空间距离;
否则,采用YCbCr颜色空间距离比较算法计算得到YCbCr颜色空间距离。
具体的,如图3所示,对色度HSL值进行判断,若所述色度HSL值中的S分量小于0.2或者色度HSL值中的L分量小于0.2或者色度HSL值中的L分量大于0.8,则进行RGB颜色空间距离比较算法,否则进行YCbCr颜色空间距离比较算法。
所述RGB颜色空间距离比较算法,具体为,通过公式
dist=length(src.rgb-key.rgb);
计算得到RGB颜色空间距离dist,其中length为OpenGL内置函数,src.rgb为所述像素RGBA值中的RGB分量,key.rgb为所述色度RGBA值中的RGB分量,再通过公式res=src*smoothstep(0.15,0.5,dist),计算得到输出像素RGBA值res;其中,src为所述像素RGBA值,dist为所述RGB颜色空间距离,smoothstep为OpenGL内置函数。
所述YCbCr颜色空间距离比较算法,具体为,通过公式
distY=length(srcY.yz-keyY.yz);
计算得到YCbCr颜色空间距离distY,其中length为OpenGL内置函数,srcY.yz为所述像素YCbCr值中的CbCr分量,keyY.yz为所述色度YCbCr值中的CbCr分量,再通过公式res=src-(1-(distY-0.07)/0.16)*key,计算得到输出像素RGBA值res,其中src为所述像素RGBA值,key为所述色度RGBA值,distY为所述YCbCr颜色空间距离。
一些实施例中,将所述输出像素RGBA值缓存至预创建的帧缓存中。
具体的,在OpenGL渲染环境的OpenGL程序创建一个帧缓存,将所述输出像素RGBA值写到所述帧缓存中,读取所述帧缓存中的数据,即可得到完成色度抠图的图片或视频。
本申请通过移动端的OpenGL,结合颜色空间转换,对图片或视频进行色度抠图,以达到效率能达到实时的程度,同时达到边缘过渡自然,没有瑕疵,以及消除色块抖动的效果。
如图4所示,本申请实施例提供一种对图像进行实时色度抠图的装置,包括:
获取模块401,用于获取原始图像数据并输入到预先构建的OpenGL渲染环境中,得到纹理数据;
第一空间转换模块402,用于对所述纹理数据的像素RGBA值进行颜色空间转换,得到像素YCbCr值;
第二空间转换模块403,用于获取色度RGBA值并对所述色度RGBA值进行颜色空间转换,得到色度HSL值和色度YCbCr值;
颜色比较模块404,用于对所述色度HSL值进行判断,并根据判断结果确定相应的颜色空间距离比较算法,如果所述颜色空间距离比较算法采用RGB颜色空间距离比较算法,则利用所述像素RGBA值和色度RGBA值计算颜色空间距离;如果所述颜色空间距离比较算法采用YCbCr颜色空间距离比较算法,则利用所述像素YCbCr值和所述色度YCbCr值计算颜色空间距离;
输出模块405,用于根据所述颜色空间距离与所述原始图像数据中的像素RGBA值,得到输出像素RGBA值。
本申请实施例提供一种对图像进行实时色度抠图的装置的工作原理为,获取模块401获取原始图像数据并输入到预先构建的OpenGL渲染环境中,得到纹理数据;第一空间转换模块402对所述纹理数据的像素RGBA值进行颜色空间转换,得到像素YCbCr值;第二空间转换模块403获取色度RGBA值并对所述色度RGBA值进行颜色空间转换,得到色度HSL值和色度YCbCr值;颜色比较模块404对所述色度HSL值进行判断,并根据判断结果确定相应的颜色空间距离比较算法;输出模块405根据所述颜色空间距离与所述原始图像数据中的像素RGBA值,得到输出像素RGBA值。
本申请实施例提供一种计算机设备,包括处理器,以及与处理器连接的存储器;
存储器用于存储计算机程序,计算机程序用于执行
获取原始图像数据并输入到预先构建的OpenGL渲染环境中,得到纹理数据;
对所述纹理数据的像素RGBA值进行颜色空间转换,得到像素YCbCr值;
获取色度RGBA值并对所述色度RGBA值进行颜色空间转换,得到色度HSL值和色度YCbCr值;
对所述色度HSL值进行判断,并根据判断结果确定相应的颜色空间距离比较算法,如果所述颜色空间距离比较算法采用RGB颜色空间距离比较算法,则利用所述像素RGBA值和色度RGBA值计算颜色空间距离;如果所述颜色空间距离比较算法采用YCbCr颜色空间距离比较算法,则利用所述像素YCbCr值和所述色度YCbCr值计算颜色空间距离;
根据所述颜色空间距离对所述原始图像数据中的像素RGBA值进行计算,得到输出像素RGBA值;
处理器用于调用并执行存储器中的计算机程序。
综上所述,本发明提供一种对图像进行实时色度抠图的方法、装置及移动端,所述方法包括获取原始图像数据并输入到预先构建的OpenGL渲染环境中,得到纹理数据;对纹理数据的像素RGBA值进行颜色空间转换,得到像素YCbCr值;获取色度RGBA值并对色度RGBA值进行颜色空间转换,得到色度HSL值和色度YCbCr值;对色度HSL值进行判断,并根据判断结果确定相应的颜色空间距离比较算法计算颜色空间距离;根据颜色空间距离对原始图像数据中的像素RGBA值进行计算,得到输出像素RGBA值。本发明结合颜色空间转换,对图片或视频进行色度抠图,以达到效率能达到实时的程度,同时达到图像边缘过渡自然,没有瑕疵,还能够消除色块抖动,达到满意的效果。
可以理解的是,上述提供的方法实施例与上述的装置实施例对应,相应的具体内容可以相互参考,在此不再赘述。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令方法的制造品,该指令方法实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
- 对图像进行实时色度抠图的方法、装置及移动端
- 基于用户实时点击交互的自然图像抠图方法