发明内容
本发明实施例所要解决的技术问题在于,提供一种移色处理方法及***。可快速对视频流进行移色处理。
为了解决上述技术问题,本发明实施例提供了一种移色处理方法,包括:
采集视频帧并确定目标颜色的色相值要求;;
针对每个视频帧,根据预置的色相计算公式计算所述视频帧中每个像素的色相值;
将所述视频帧中色相值不满足所述目标颜色的色相值要求的像素作为待转换像素,根据预置的像素转换公式将所述待转换像素转换为灰色像素,生成移色处理后的新视频帧。
其中,所述采集视频帧并确定目标颜色的色相值要求的步骤具体包括:
采集视频帧;
获取所采集的视频帧上的参考区域;
根据所述参考区域中的像素的色相值分布确定目标颜色的色相值范围。
其中,在RGB颜色空间中,所述预置的像素转换公式为:Y=(R*第一转换系数+G*第二转换系数+B*第三转换系数+第四转换系数)>>第五转换系数,其中R、G、B分别为所述待转换像素在R颜色通道的亮度值、在G颜色通道的亮度值和在B颜色通道的亮度值,Y为所述灰色像素的亮度值,第一转换系数的取值范围为300~310,第二转换系数的取值范围为596~605,第三转换系数的取值范围为112~122,第四转换系数为512,第五转换系数为10。
其中,所述根据预置的色相计算公式计算所述视频帧中每个像素的色相值的步骤具体包括:
在RGB颜色空间中,分别确定所述视频帧中每个像素在R颜色通道、G颜色通道和B颜色通道的亮度值,将最大的亮度值作为该像素的的亮度最大值,将最小的亮度值作为该像素的亮度最小值;
判断所述像素的亮度最大值和亮度最小值是否相等;
若判断所述像素的亮度最大值和亮度最小值是否相等的判断结果为是,则所述像素的色相值H=0;
若判断所述像素的亮度最大值和亮度最小值是否相等的判断结果为否,则根据所述亮度最大值对应的颜色通道确定所述像素的色相值。
其中,所述根据所述亮度最大值对应的颜色通道确定所述像素的色相值的步骤具体包括:
若所述亮度最大值对应于R颜色通道,则在查找表Table中查找Table[MAX-MIN]的值,并确定所述像素的色相值H=255+((G-B)*Table[MAX-MIN])>>Bits;
若所述亮度最大值对应于G颜色通道,则在查找表Table中查找Table[MAX-MIN]的值,并确定所述像素的色相值H=84+((B-R)*Table[MAX-MIN])>>Bits;
若所述亮度最大值对应于B颜色通道,则在查找表Table中查找Table[MAX-MIN]的值,并确定所述像素的色相值H=171+((R-G)*Table[MAX-MIN])>>Bits;
其中,R、G、B分别为所述像素在R颜色通道的亮度值、在G颜色通道的亮度值和在B颜色通道的亮度值,MAX为所述像素的亮度最大值,MIN为所述像素的亮度最小值,查找表Table为预先设置的固定长度为256的表,在所述查找表Table中,Table[i]=(43<<Bits)/i,其中Bits为任意合适的正整数。
相应地,本发明实施例还提供一种移色处理***,包括:
数据采集模块,用于采集视频帧;
目标颜色确定模块,用于确定目标颜色的色相值要求;
色相值获取模块,用于针对每个视频帧,根据预置的色相计算公式计算所述视频帧中每个像素的色相值;
新帧生成模块,用于将所述视频帧中色相值不满足所述目标颜色的色相值要求的像素作为待转换像素,根据预置的像素转换公式将所述待转换像素转换为灰色像素,生成移色处理后的新视频帧。
其中,所述目标颜色确定模块具体包括:
参考区域获取模块,用于获取所述数据采集模块采集的视频帧上的参考区域;
色相值范围确定模块,用于根据所述参考区域中的像素的色相值分布确定目标颜色的色相值范围。
其中,在RGB颜色空间中,所述预置的像素转换公式为:Y=(R*第一转换系数+G*第二转换系数+B*第三转换系数+第四转换系数)>>第五转换系数,其中R、G、B分别为所述待转换像素在R颜色通道的亮度值、在G颜色通道的亮度值和在B颜色通道的亮度值,Y为所述灰色像素的亮度值,第一转换系数的取值范围为300~310,第二转换系数的取值范围为596~605,第三转换系数的取值范围为112~122,第四转换系数为512,第五转换系数为10。
其中,所述色相值获取模块具体包括:
亮度极值确定模块,用于在RGB颜色空间中,分别确定所述视频帧中每个像素在R颜色通道、G颜色通道和B颜色通道的亮度值,将最大的亮度值作为该像素的的亮度最大值,将最小的亮度值作为该像素的亮度最小值;
判断模块,用于判断所述像素的亮度最大值和亮度最小值是否相等;
色相值确定模块,用于在所述判断模块的判断结果为是时,确定所述像素的色相值H=0;还用于在所述判断模块的判断结果为否时,根据所述亮度最大值对应的颜色通道确定所述像素的色相值。
其中,所述色相值确定模块具体包括:
查找表存储模块,用于存储预先设置的固定长度为256的查找表Table,在所述查找表Table中,Table[i]=(43<<Bits)/i,其中Bits为任意合适的正整数;
零值模块,用于在所述判断模块的判断结果为是时,确定所述像素的色相值H=0;
R颜色通道模块,用于在所述判断模块的判断结果为否且所述亮度最大值对应于R颜色通道时,在所述查找表Table中查找Table[MAX-MIN]的值,并确定所述像素的色相值H=255+((G-B)*Table[MAX-MIN])>>Bits;
G颜色通道模块,用于在所述判断模块的判断结果为否且所述亮度最大值对应于G颜色通道时,在所述查找表Table中查找Table[MAX-MIN]的值,并确定所述像素的色相值H=84+((B-R)*Table[MAX-MIN])>>Bits;
B颜色通道模块,用于在所述判断模块的判断结果为否且所述亮度最大值对应于B颜色通道时,在所述查找表Table中查找Table[MAX-MIN]的值,确定所述像素的色相值H=171+((R-G)*Table[MAX-MIN])>>Bits;
其中,R、G、B分别为所述像素在R颜色通道的亮度值、在G颜色通道的亮度值和在B颜色通道的亮度值,MAX为所述像素的亮度最大值,MIN为所述像素的亮度最小值。
实施本发明实施例,具有如下有益效果:通过像素的色相值来判断该像素的颜色是否为需要保留的目标颜色,加快了移色处理的速度,可以实时地对视频流进行移色处理,以所见即所得的实时方式呈现给用户,不仅能处理单个图片,还能实时处理视频和摄像头数据,提升了用户体验。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,是本发明提供的移色处理方法的第一实施例流程图,所述方法包括:
在步骤S100,采集视频帧并确定目标颜色的色相值要求。
在步骤S101,针对每个视频帧,根据预置的色相计算公式计算该视频帧中每个像素的色相值。
在步骤S102,将该视频帧中色相值不满足目标颜色的色相值要求的像素作为待转换像素,根据预置的像素转换公式将待转换像素转换为灰色像素,生成移色处理后的新视频帧。
本发明实施例提供的移色处理方法,通过像素的色相值来判断该像素的颜色是否为需要保留的目标颜色,加快了移色处理的速度,可以实时地对视频流进行移色处理,以所见即所得的实时方式呈现给用户,不仅能处理单个图片,还能实时处理视频和摄像头数据,提升了用户体验。
参见图2,是本发明提供的移色处理方法的第二实施例流程图,所述方法包括:
在步骤S200,采集视频帧。可以采集摄像头捕捉的视频帧,也可以采集正在播放的视频文件中的视频帧。当采集摄像头捕捉的视频帧时,可以在录像模式下进行,也可以在拍照预览模式下进行。也就是说,本发明可以实时地对视频流数据进行移色处理,而不仅限于对静态的图片进行移色处理。
在步骤S201,获取所采集的视频帧上的参考区域。具体地,可以接收用户输入的参考区域选择指令。例如,用户可以通过选框工具或魔棒工具等在显示窗口当前显示的视频帧图像中选择一定大小的带有其想保留的目标颜色的典型区域作为参考区域,参考区域在图像中的位置和大小都可以由用户自行确定。又例如,可以在显示窗口中提供一个边长为r的正方形框Rect,用户可以随时移动框Rect来指定当前显示的视频帧图像中带有其想保留的目标颜色的典型区域作为参考区域,一般地,在640*480的屏幕分辨率下,可以取r=40。
在步骤S202,根据获取的参考区域中的像素的色相值分布确定目标颜色的色相值范围。
除了RGB颜色空间以外,还可以用HSL颜色空间来表示颜色。HSL颜色空间采用3个分量H(Hue,色相)、S(Saturation,饱和度)和L(Lightness,明度)来表示颜色。传统RGB颜色空间是基于物体对光源红绿蓝分量反射量大小来表示颜色,即发光加色原理。而HSL颜色空间是基于人们对色彩的感知来表示颜色。HSL的H分量,代表的是人眼所能感知的颜色范围,这些颜色分布在一个平面的色相环上,取值范围是0°到360°的圆心角,每个角度可以代表一种颜色;HSL的S分量,指的是色彩的饱和度,它用0%至100%的值描述了相同色相、明度下色彩纯度的变化,数值越大,颜色中的灰色越少,颜色越鲜艳;HSL的L分量,指的是色彩的明度,作用是控制色彩的明暗变化,它的取值也是0%至100%,数值越小,色彩越暗,越接近于黑色,数值越大,色彩越亮,越接近于白色。
在本步骤S202中,可以将整个色相环360度切分为若干个区间,根据落入每个区间中的参考区域像素的个数确定参考区域的主要颜色,即目标颜色。例如,可以将整个色相环360度切分为5度为一个区间,共72个区间,再针对框Rect中的像素点的色相值H进行这72个区间的桶分类,即H值落在哪个区间内,该区间内像素个数增加1,那么可以直接将该区间的色相值范围作为目标颜色的色相值范围。
优选地,为了更精确地确定目标颜色,可以设落入第K个区间内的像素个数最多,为n个,它们的色相值之和为SumHue,则目标颜色的色相值Hue_Target =SumHue / n。需要说明的是,不限于以5度为一个区间,可以取[4,10]度为一个区间。可以直接将目标颜色的色相值作为判断标准,也可以设置一定的容差。例如,可以设置色相容差Threshold,那么目标颜色的色相值范围为[Hue_Target-Threshold,Hue_Target+ Threshold],在该范围内的两个色相值可以认为是同一种色调,一般将Threshold的值设置为15。需要说明的是,Threshold的值不限于15,还可以取[10,20]。通过确定目标颜色的色相值范围,可以更精确地确定用户想要保留的目标颜色,有利于提升用户体验。
在步骤S203,针对每个视频帧,根据预置的色相计算公式计算该视频帧中每个像素的色相值。
在步骤S204,将该视频帧中色相值属于目标颜色的色相值范围的像素保留下来,并将该视频帧中色相值不属于目标颜色的色相值范围的像素作为待转换像素,根据预置的像素转换公式将待转换像素转换为灰色像素,从而生成移色处理后的新视频帧。具体地,在RGB颜色空间中,预置的像素转换公式为:Y=(R*第一转换系数+G*第二转换系数+B*第三转换系数+第四转换系数)>>第五转换系数,其中R、G、B分别为待转换像素在R颜色通道的亮度值、在G颜色通道的亮度值和在B颜色通道的亮度值,Y为灰色像素的亮度值。根据国际标准,第一转换系数为0.299,第二转换系数为0.587,第三转换系数为0.114,第四转换系数为0,第五转换系数为0,但是这种浮点计算可能降低运算速率,影响视频处理的效果。优选地,可以进行放大处理,即,可以对该公式进行改写,将浮点计算转化成整数计算,使得整个过程只需使用整数计算,当各转换系数放大1024倍时(注: 1024是2的10次方),第一转换系数的取值范围为300~310,第二转换系数的取值范围为596~605,第三转换系数的取值范围为112~122,更加优选地,第一转换系数为306,第二转换系数为601,第三转换系数为117,第四转换系数为512,第五转换系数为10。当然,也可以类似地进行2的8次方,16次方,20次方的放大处理等。这种整式运算大大加快了移色处理的速度,提升了用户体验。
除了以上实施例中列举的通过视频帧上的参考区域获取目标颜色的方案以外,还可以采用其他方案获取目标颜色,例如由用户直接输入目标颜色的色相值。
参见图3,是本发明提供的移色处理方法的第三实施例流程图,所述方法包括:
在步骤S300,采集视频帧。
在步骤S301,获取所采集的视频帧上的参考区域。
在步骤S302,根据获取的参考区域中的像素的色相值分布确定目标颜色的色相值范围。可以采用步骤S303-S306中描述的方法计算像素的色相值。
在步骤S303,针对每个视频帧,在RGB颜色空间中,分别确定该视频帧中每个像素在R颜色通道、G颜色通道和B颜色通道的亮度值,将最大的亮度值作为该像素的的亮度最大值,将最小的亮度值作为该像素的亮度最小值。具体地,分别确定视频帧中每个像素在R颜色通道的亮度值R、在G颜色通道的亮度值G和在B颜色通道的亮度值B,用MAX表示R、G、B中的最大值,用MIN表示R、G、B中的最小值,MAX即为像素的亮度最大值,MIN即为像素的亮度最小值。
在步骤S304,针对每个像素,判断该像素的亮度最大值和亮度最小值是否相等。
若步骤S304的判断结果为是,则执行步骤S305。在步骤S305,确定该像素的色相值H=0。
若步骤S304的判断结果为否,则执行步骤S306。在步骤S306,根据该像素的亮度最大值对应的颜色通道确定该像素的色相值。具体地,在360度色相环中,若该像素的亮度最大值对应于R颜色通道,即MAX=R,则确定该像素的色相值H=360+60*(G-B)/(MAX-MIN);若该像素的亮度最大值对应于G颜色通道,即MAX=G,则确定该像素的色相值H=120+60*(B-R)/(MAX-MIN);若该像素的亮度最大值对应于B颜色通道,即MAX=B,则确定该像素的色相值H=240+60*(R-G)/(MAX-MIN)。
在步骤S307,将该视频帧中色相值属于目标颜色的色相值范围的像素保留下来,并将该视频帧中色相值不属于目标颜色的色相值范围的像素作为待转换像素,根据预置的像素转换公式将待转换像素转换为灰色像素,从而生成移色处理后的新视频帧。
在上述步骤S306中,示出了一种根据像素的亮度最大值对应的颜色通道确定该像素的色相值的方法,但这仅仅用于举例说明,而不用于限制。
优选地,为了加快移色处理的速度,实现在移动平台(如智能手机)上实时地进行视频的移色操作,可以将色相环范围[0,360]线性映射到一个字节能表示的范围[0,255]。在色相范围[0,255]中,若该像素的亮度最大值对应于R颜色通道,即MAX=R,则确定该像素的色相值H=255+43*(G-B)/(MAX-MIN);若该像素的亮度最大值对应于G颜色通道,即MAX=G,则确定该像素的色相值H=84+43*(B-R)/(MAX-MIN);若该像素的亮度最大值对应于B颜色通道,即MAX=B,则确定该像素的色相值H=171+43*(R-G)/(MAX-MIN)。
更加优选地,为了进一步加快处理速度,可以减少以上计算式中的整数除法的运算。由于MAX-MIN的取值范围为[0,255],可以预先设置一个固定长度为256的查找表Table,定义该查找表为Table[i]=(43<<Bits)/i,其中左移Bits(<<Bits)是为了保留整数除法中尽量多的有效位数,Bits的取值可以为20。此时,在步骤S306,若该像素的亮度最大值对应于R颜色通道,即MAX=R,则在查找表Table中查找Table[MAX-MIN]的值,并确定该像素的色相值H=255+((G-B)*Table[MAX-MIN])>>Bits;若该像素的亮度最大值对应于G颜色通道,即MAX=G,则在查找表Table中查找Table[MAX-MIN]的值,并确定该像素的色相值H=84+((B-R)*Table[MAX-MIN])>>Bits;若该像素的亮度最大值对应于B颜色通道,即MAX=B,则在查找表Table中查找Table[MAX-MIN]的值,并确定该像素的色相值H=171+((R-G)*Table[MAX-MIN])>>Bits。当使用进一步优化后的公式计算像素的色相时,效率可以大幅提高。经大规模测试,本实施例提供的移色处理方法在iPhone4手机上运行的帧率可达到20帧/秒以上,达到了实时的要求。
参见图4,是本发明提供的移色处理***的第一实施例结构示意图,所述***包括:
数据采集模块410,用于采集视频帧。
目标颜色确定模块420,用于确定目标颜色的色相值要求。
色相值获取模块430,用于针对每个视频帧,根据预置的色相计算公式计算该视频帧中每个像素的色相值。
新帧生成模块440,用于将该视频帧中色相值不满足目标颜色的色相值要求的像素作为待转换像素,根据预置的像素转换公式将待转换像素转换为灰色像素,生成移色处理后的新视频帧。
本发明实施例提供的移色处理***,通过像素的色相值来判断该像素的颜色是否为需要保留的目标颜色,加快了移色处理的速度,可以实时地对视频流进行移色处理,以所见即所得的实时方式呈现给用户,不仅能处理单个图片,还能实时处理视频和摄像头数据,提升了用户体验。
参见图5,是本发明提供的移色处理***的第二实施例结构示意图,所述***包括数据采集模块510、目标颜色确定模块520、色相值获取模块530和新帧生成模块540,其中目标颜色确定模块520又可以包括参考区域获取模块521和色相值范围确定模块522。
数据采集模块510,用于采集视频帧。数据采集模块510可以采集摄像头捕捉的视频帧,也可以采集正在播放的视频文件中的视频帧。当采集摄像头捕捉的视频帧时,数据采集模块510可以在录像模式下采集视频帧,也可以在拍照预览模式下采集视频帧。也就是说,本发明可以实时地对视频流数据进行移色处理,而不仅限于对静态的图片进行移色处理。
参考区域获取模块521,用于获取数据采集模块510采集的视频帧上的参考区域。具体地,参考区域获取模块521可以用于接收用户输入的参考区域选择指令。例如,用户可以通过参考区域获取模块521提供的选框工具或魔棒工具等在显示窗口当前显示的视频帧图像中选择一定大小的带有其想保留的目标颜色的典型区域作为参考区域,参考区域在图像中的位置和大小都可以由用户自行确定。又例如,参考区域获取模块521可以在显示窗口中提供一个边长为r的正方形框Rect,用户可以随时移动框Rect来指定当前显示的视频帧图像中带有其想保留的目标颜色的典型区域作为参考区域,一般地,在640*480的屏幕分辨率下,可以取r=40。
色相值范围确定模块522,用于根据参考区域获取模块521获取的参考区域中的像素的色相值分布确定目标颜色的色相值范围。
除了RGB颜色空间以外,还可以用HSL颜色空间来表示颜色。HSL颜色空间采用3个分量H(Hue,色相)、S(Saturation,饱和度)和L(Lightness,明度)来表示颜色。传统RGB颜色空间是基于物体对光源红绿蓝分量反射量大小来表示颜色,即发光加色原理。而HSL颜色空间是基于人们对色彩的感知来表示颜色。HSL的H分量,代表的是人眼所能感知的颜色范围,这些颜色分布在一个平面的色相环上,取值范围是0°到360°的圆心角,每个角度可以代表一种颜色;HSL的S分量,指的是色彩的饱和度,它用0%至100%的值描述了相同色相、明度下色彩纯度的变化,数值越大,颜色中的灰色越少,颜色越鲜艳;HSL的L分量,指的是色彩的明度,作用是控制色彩的明暗变化,它的取值也是0%至100%,数值越小,色彩越暗,越接近于黑色,数值越大,色彩越亮,越接近于白色。
色相值范围确定模块522可以将整个色相环360度切分为若干个区间,根据落入每个区间中的参考区域像素的个数确定参考区域的主要颜色,即目标颜色。例如,色相值范围确定模块522可以将整个色相环360度切分为5度为一个区间,共72个区间,再针对框Rect中的像素点的色相值H进行这72个区间的桶分类,即H值落在哪个区间内,该区间内像素个数增加1,那么可以直接将该区间的色相值范围作为目标颜色的色相值范围。
优选地,为了更精确地确定目标颜色,可以设落入第K个区间内的像素个数最多,为n个,它们的色相值之和为SumHue,则目标颜色的色相值Hue_Target =SumHue / n。需要说明的是,不限于以5度为一个区间,色相值范围确定模块522可以取[4,10]度为一个区间。色相值范围确定模块522可以直接将目标颜色的色相值作为判断标准,也可以设置一定的容差。例如,色相值范围确定模块522可以设置色相容差Threshold,那么目标颜色的色相值范围为[Hue_Target-Threshold,Hue_Target+ Threshold],在该范围内的两个色相值可以认为是同一种色调,一般将Threshold的值设置为15。需要说明的是,Threshold的值不限于15,还可以取[10,20]。通过确定目标颜色的色相值范围,可以更精确地确定用户想要保留的目标颜色,有利于提升用户体验。
色相值获取模块530,用于针对每个视频帧,根据预置的色相计算公式计算该视频帧中每个像素的色相值。
新帧生成模块540,用于将该视频帧中色相值属于目标颜色的色相值范围的像素保留下来,并将该视频帧中色相值不属于目标颜色的色相值范围的像素作为待转换像素,根据预置的像素转换公式将待转换像素转换为灰色像素,从而生成移色处理后的新视频帧。具体地,在RGB颜色空间中,预置的像素转换公式为:Y=(R*第一转换系数+G*第二转换系数+B*第三转换系数+第四转换系数)>>第五转换系数,其中R、G、B分别为待转换像素在R颜色通道的亮度值、在G颜色通道的亮度值和在B颜色通道的亮度值,Y为灰色像素的亮度值。根据国际标准,第一转换系数为0.299,第二转换系数为0.587,第三转换系数为0.114,第四转换系数为0,第五转换系数为0,但是这种浮点计算可能降低运算速率,影响视频处理的效果。优选地,可以进行放大处理,即,可以对该公式进行改写,将浮点计算转化成整数计算,使得整个过程只需使用整数计算,当各转换系数放大1024倍时(注: 1024是2的10次方),第一转换系数的取值范围为300~310,第二转换系数的取值范围为596~605,第三转换系数的取值范围为112~122,更加优选地,第一转换系数为306,第二转换系数为601,第三转换系数为117,第四转换系数为512,第五转换系数为10。当然,也可以类似地进行2的8次方,16次方,20次方的放大处理等。这种整式运算大大加快了移色处理的速度,提升了用户体验。
除了以上实施例中列举的通过视频帧上的参考区域获取目标颜色的方案以外,还可以采用其他方案获取目标颜色,例如目标颜色确定模块410接收用户直接输入的目标颜色的色相值。
参见图6,是本发明提供的移色处理***的第三实施例结构示意图,所述***包括数据采集模块610、目标颜色确定模块620、色相值获取模块630和新帧生成模块640,其中目标颜色确定模块620又可以包括参考区域获取模块621和色相值范围确定模块622,色相值获取模块630又可以包括亮度极值确定模块631、判断模块632和色相值确定模块633。
数据采集模块610,用于采集视频帧。
参考区域获取模块621,用于获取数据采集模块610采集的视频帧上的参考区域。
色相值范围确定模块622,用于根据获取的参考区域中的像素的色相值分布确定目标颜色的色相值范围。色相值范围确定模块622可以采用与色相值获取模块630相同的方式计算像素的色相值。
亮度极值确定模块631,用于针对每个视频帧,在RGB颜色空间中,分别确定该视频帧中每个像素在R颜色通道、G颜色通道和B颜色通道的亮度值,将最大的亮度值作为该像素的的亮度最大值,将最小的亮度值作为该像素的亮度最小值。具体地,亮度极值确定模块631可以分别确定视频帧中每个像素在R颜色通道的亮度值R、在G颜色通道的亮度值G和在B颜色通道的亮度值B,用MAX表示R、G、B中的最大值,用MIN表示R、G、B中的最小值,MAX即为像素的亮度最大值,MIN即为像素的亮度最小值。
判断模块632,用于针对每个像素,判断该像素的亮度最大值和亮度最小值是否相等。
色相值确定模块633,用于在判断模块632的判断结果为是时,确定该像素的色相值H=0;还用于在判断模块632的判断结果为否时,根据该像素的亮度最大值对应的颜色通道确定该像素的色相值。
具体地,色相值确定模块633又可以包括零值模块、R颜色通道模块、G颜色通道模块和B颜色通道模块。在360度色相环中,零值模块用于在判断模块632的判断结果为是时,确定该像素的色相值H=0;R颜色通道模块用于在判断模块632的判断结果为否且该像素的亮度最大值对应于R颜色通道(即MAX=R)时,确定该像素的色相值H=360+60*(G-B)/(MAX-MIN);G颜色通道模块用于在判断模块632的判断结果为否且该像素的亮度最大值对应于G颜色通道(即MAX=G)时,确定该像素的色相值H=120+60*(B-R)/(MAX-MIN);B颜色通道模块用于在判断模块632的判断结果为否且该像素的亮度最大值对应于B颜色通道(即MAX=B)时,确定该像素的色相值H=240+60*(R-G)/(MAX-MIN)。
新帧生成模块640,用于将该视频帧中色相值属于目标颜色的色相值范围的像素保留下来,并将该视频帧中色相值不属于目标颜色的色相值范围的像素作为待转换像素,根据预置的像素转换公式将待转换像素转换为灰色像素,从而生成移色处理后的新视频帧。
优选地,为了加快移色处理的速度,实现在移动平台(如智能手机)上实时地进行视频的移色操作,可以将色相环范围[0,360]线性映射到一个字节能表示的范围[0,255]。在色相范围[0,255]中,R颜色通道模块可以用于在判断模块632的判断结果为否且该像素的亮度最大值对应于R颜色通道(即MAX=R)时,确定该像素的色相值H=255+43*(G-B)/(MAX-MIN);G颜色通道模块可以用于在判断模块632的判断结果为否且该像素的亮度最大值对应于G颜色通道(即MAX=G)时,确定该像素的色相值H=84+43*(B-R)/(MAX-MIN);B颜色通道模块可以用于在判断模块632的判断结果为否且该像素的亮度最大值对应于B颜色通道(即MAX=B)时,确定该像素的色相值H=171+43*(R-G)/(MAX-MIN)。
更加优选地,为了进一步加快处理速度,可以减少以上计算式中的整数除法的运算。此时,色相值确定模块633还可以包括查找表存储模块,由于MAX-MIN的取值范围为[0,255],查找表存储模块中可以预先存储有一个固定长度为256的查找表Table,定义该查找表为Table[i]=(43<<Bits)/i,其中左移Bits(<<Bits)是为了保留整数除法中尽量多的有效位数,Bits的取值可以为20。此时,R颜色通道模块可以用于在判断模块632的判断结果为否且该像素的亮度最大值对应于R颜色通道(即MAX=R)时,在查找表存储模块中查找Table[MAX-MIN]的值,然后确定该像素的色相值H=255+((G-B)*Table[MAX-MIN])>>Bits;G颜色通道模块可以用于在判断模块632的判断结果为否且该像素的亮度最大值对应于G颜色通道(即MAX=G)时,在查找表存储模块中查找Table[MAX-MIN]的值,然后确定该像素的色相值H=84+((B-R)*Table[MAX-MIN])>>Bits;B颜色通道模块可以用于在判断模块632的判断结果为否且该像素的亮度最大值对应于B颜色通道(即MAX=B)时,在查找表存储模块中查找Table[MAX-MIN]的值,然后确定该像素的色相值H=171+((R-G)*Table[MAX-MIN])>>Bits。当使用进一步优化后的公式计算像素的色相时,效率可以大幅提高。经大规模测试,本实施例提供的移色处理***在iPhone4手机上运行的帧率可达到20帧/秒以上,达到了实时的要求。
本发明实施例提供的移色处理方法及***,可以在移动平台(如手机和平板电脑等)上实时运行,且与人的交互方式简单自然;可以只保留用户喜欢的颜色,如草丛中的一朵花,可以只保留花是彩色的,而其他区域为灰色,形成强烈的对比。该方法和***有很强的易用性和可玩性,相比Camera360的移色处理,本发明实施例提供的移色处理方案以所见即所得的实时方式呈现给用户,即在照相模式下,可以在用户预览的时候实时地将其它颜色移除,在摄像模式下,可以在录制的时候实时地将其它颜色移除。也就是说,本发明实施例不仅能处理静态图片,而且还能实时处理视频和摄像头数据,给用户以一种所见即所得的反馈。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所揭露的仅为本发明一种较佳实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。