c语言抠图程序蓝屏,一种蓝屏抠图方法

一种蓝屏抠图方法

【专利摘要】本发明公开了一种蓝屏抠图方法,先将视频传递到GPU中,通过在GPU中对视频帧进行蓝屏抠图处理,这样提高了抠图的速率。具体的讲,先对视频帧提取背景色,根据背景色,利用色差抠图技术对蓝屏图像进行不透明度处理,再经过二值化处理后得到初始不透明度图像,然后利用彩色图像的梯度信息和改进的联合双边滤波器对初始不透明度进行优化得到最终不透明度图像,最后对最终不透明度图像进行背景色溢出去除后回传到CPU客户端,通过显示设备显示。这样在整个处理过程中大大减少了人工交互和参数的调整。

【专利说明】一种蓝屏抠图方法

【技术领域】

[0001]本发明属于视觉特效领域,更为具体地讲,涉及一种蓝屏抠图方法。

【背景技术】

[0002]抠图是指从图像或视频序列中精确地提取出前景对象的一种技术。抠图技术作为视觉特效领域的一种关键技术,被广泛地应用于图像编辑和电影制作等领域。但由于抠图问题的欠约束性,求解该问题时需要增加额外的约束条件,因此在影视制作中,通常采用蓝屏或者绿屏作为拍摄背景,以此来降低该问题的求解难度,这种将蓝屏或者绿屏作为背景的抠图技术通常叫做蓝屏抠图技术。

[0003]蓝屏抠图发展到今天已经产生了许多不同的技术。常见的蓝屏抠图技术主要有:亮度抠图(Luma Keying)、差异抠图(Difference Keying)、色度抠图(Chroma Keying)、色差枢图(Color Difference Keying)、3D 枢图(3D Keying)。

[0004]亮度抠图技术利用图像的亮度信息来求解不透明度。对于给定的RGB三通道彩色图像,先将其转换到HLS颜色空间,然后取亮度通道L进行二值化操作,得到的结果即为前景的不透明度。简单的硬阈值操作通常会造成边缘和半透明信息的严重丢失,因此,在实际应用中通常采取软阈值操作,即定义一个渐变的范围,使得不透明度从O到I平缓变化。由于该技术在抠图过程中只考虑了图像的亮度信息,而没有考虑图像的颜色信息,因此,对于大多数图像,该方法效果不够理想。

[0005]差异抠图技术利用前景图像与背景图像的差异求解不透明度。差异抠图技术对背景没有严格的限制,不仅适用于单色背景,对于背景颜色复杂的情况同样适用。然而,由于差异抠图技术需要背景图像已知,因此其使用范围受到了一定的限制。

[0006]色度抠图技术利用图像的颜色信息求解不透明度。对于给定的RGB三通道彩色图像,首先将其转换到HLS空间,然后对H通道进行阈值分割求取不透明度。在实际应用中,受光照等环境因素的影响,背景颜色会出现一定的波动,因此需要设置一个软阈值。然而,H通道虽然能较好地区分颜色信息,但是对于压缩的视频帧,H通道常常出现块状效应(blocky)。为了提高抠图精度,通常将色度(H)、亮度(L)、饱和度(S)三个通道结合起来。与单一通道的抠图技术相比,联合H、L、S三通道的抠图技术要更准确,不足之处是需要调节的参数较多,人工交互比较大。

[0007]色差抠图技术利用R、G、B三通道的颜色差异来求解不透明度。以蓝屏视频为例,对于输入视频帧I,其不透明度表示为a = Ib-MAX(IE, IG) 0色差抠图技术比较简单,速度较快且不需要进行阈值判断,然而,效果不够理想。

[0008]3D抠图技术是指在三维颜色空间(RGB、HLS等),根据像素的空间距离求解不透明度。由于背景的颜色变化范围较小,因此可以在三维空间中定义一个3D形状将前景和背景区分开来。该3D形状可以是球体,立方体,椭球体等。以简单的球体为例,为了获得渐变的不透明度,需要定义一大一小两个球体,小球体里面的像素为背景,大球体以外的像素为前景,介于两者之间的像素属于过度区域,不透明度在O到I之间变化。3D抠图技术虽然能取得较好的效果,但是速度和人工交互仍然有待进一步提高。

[0009]从以上分析可以看出,现有的蓝屏抠图技术在抠图速度,抠图质量和人工交互上不能同时取得理想的效果,因此,对蓝屏抠图技术进行深入研究是很有必要的。

【发明内容】

[0010]本发明的目的在于克服现有技术的不足,提供一种蓝屏抠图方法,通过在GPU中对视频帧进行蓝屏抠图处理,具有抠图速度快,抠图效果好,且不需要调整太多的参数和人工交互等优点。

[0011]为实现上述发明目的,本发明一种蓝屏抠图方法,其特征在于,包括以下步骤:

[0012](I)、传递视频到GPU

[0013]对GPU进行初始化;在CPU端通过视频输入、输出接口向GPU端申请纹理内存、常量内存和全局内存;

[0014]CPU端申请内存成功后,再次通过视频输入、输出接口将视频帧传递到纹理内存,将视频的参数向量传递到常量内存,同时将选取的一幅背景合成图像传递到全局内存;

[0015](2)、GPU的并行计算线程块对视频进行处理

[0016]从纹理内存中读取视频帧,从常量内存中读取视频的参数向量到GPU的并行计算线程块,在GPU的并行计算线程块中分别对所有视频帧进行处理;

[0017](2.1)、提取背景色

[0018]将视频的第一帧图像作为蓝屏图像,再读取视频的参数向量得到蓝屏图像的结构信息;

[0019]将视频的第一帧图像从RGB颜色空间转换到转换到HLS颜色空间,对HLS颜色空间中H通道的图像颜色进行颜色直方图统计,将颜色直方图中出现频率最大的颜色作为背景色;

[0020](2.2)、获取蓝屏图像的初始不透明度

[0021]参照步骤(2.1)得到的背景色,利用色差抠图技术对蓝屏图像的每个像素点进行不透明度处理,即通过公式a ' i = Iikey-MAXdi, I’),得到a ' i,其中,i = 1,2,…,η,η表示蓝屏图像中像素点的个数,Iikey表示像素点在BRG空间内与背景色相同的通道颜色值,

Ii,I’ i分别表示像素点在BRG空间内另外两个通道颜色值,所有的a / i组成一幅Trimap图,再对Trimap图中的每个像素点进行二值化处理,得到每个点的初始不透明度Qi,所有的a i组成一幅初始不透明度图像;

[0022](2.3)、利用蓝屏图像的梯度信息对初始不透明度图像进行边缘补充

[0023]在RGB空间的蓝屏图像的梯度信息为:

【权利要求】

1.一种蓝屏抠图方法,其特征在于,包括以下步骤: (1)、传递视频到GPU 对GPU进行初始化;在CPU端通过视频输入、输出接口向GPU端申请纹理内存、常量内存和全局内存; CPU端申请内存成功后,再次通过视频输入、输出接口将视频帧传递到纹理内存,将视频的参数向量传递到常量内存,同时将选取的一幅背景合成图像传递到全局内存; (2)、GPU的并行计算线程块对视频进行处理 从纹理内存中读取视频帧,从常量内存中读取视频的参数向量到GPU的并行计算线程块,在GPU的并行计算线程块中分别对所有视频帧进行处理; (2.1)、提取背景色 将视频的第一帧图像作为蓝屏图像,再读取视频的参数向量得到蓝屏图像的结构信息; 将视频的帧图像从RGB颜色空间转换到转换到HLS颜色空间,对HLS颜色空间中H通道的图像颜色进行颜色直方图统计,将颜色直方图中出现频率最大的颜色作为背景色; (2.2)、获取蓝屏图像的初始不透明度 参照步骤(2.1)得到的背景色,利用色差抠图技术对蓝屏图像的每个像素点进行不透明度处理,即通过公式a' i = Iikey-MMdi, I’i),得到a ' i,其中,i = 1,2,…,η, η表示蓝屏图像中像素点的个数,Iilrey表示像素点在BRG空间内与背景色相同的通道颜色值,Ii,I’i分别表示像素点在BRG空间内另外两个通道颜色值,所有的α,3且成一幅Trimap图,再对Trimap图中的每个像素点进行二值化处理,得到每个点的初始不透明度Qi,所有的a i组成一幅初始不透明度图像; (2.3)、利用彩色图像的梯度信息对初始不透明度图像进行边缘补充 在RGB空间的蓝屏图像的梯度信息为: 「I? "2

V) 二I 2[(&, +gw)+(g,x -g>;r)cos 1Θ + 2SxrSm2#]I Ca) θττ =Iarctan , 2gy—γ(b)

2 其中,Fe(x,y)表示蓝屏图像的不透明度,0xy表示蓝屏图像在坐标(x,y)处最大变化率的方向,gxx、gyy和gxy的计算公式如下:

SR 2 BG2 cS 2

*…................................0? 一: ,Λ-S

m.0x (\x

I1-> BR" SG - 55".X g = T + T + T⑷

ον oy cy

ΓΡ r.r; r.r; PR Γβ Afxi7 ~+ —+ —— w Xy^■/.%今?.ax ax cv ex cy 根据公式(b)得到Fe (x, y)两个相隔90°的角度值,即公式(b)与两个正交方向的每个像素点相关,则对于每个像素点,取Fe (x, y)两个正交方向的角度值,将两个角度值的最大值记为Fi ; 比较每个像素点的Fi值与a i值,取两者之间的最大值作为每个像素点边缘补充后的不透明度,即Ciinew = MAX(CiDFi),所有的Ciinrat组成一幅边缘补充后的不透明度图像; (2.4)、利用改进的联合双边滤波器对边缘补充后的不透明度图像进行滤波优化将边缘补充后的不透明度图像作为噪声图像,再将蓝屏图像的结构信息传递到噪声图像中,通过改进的联合双边滤波器进行滤波处理;

其中,函数/_ = £>技/2σ'2,指数中的丨_表示范数,σ s表示高斯核宽度参数;p表示一个像素点,Ω(ρ)表示以P为中心的邻域窗口,q表示Ω(ρ)中的像素点,函数g{l)^e^!2e , t表示颜色差,t = I (p)-1 (q)表示两个像素点在R、G、B通道的颜色差,I (P)表示输入的RGB蓝屏图像中像素点P的颜色值,a (q)表示q像素点的边缘补充后的不透明度,ajb(p)表示P像素点在进行滤波之后的不透明度,通过对每个像素点进行滤波优化,得到最终的不透明度图像; (2.5)、去除背景色溢出及图像合成 将最终的不透明度图像与蓝屏图像进行与操作,得到前景图像F,然后从GPU的全局内存中读取背景合成图像,再与前景图像通过合成方程C= aF+(l-a)B合成,得到初始合成图像C,其中F代表前景图像,B代表背景合成图像,a代表最终的不透明度图像; 将初始合成图像C中的每个像素点在H通道的颜色值与背景色的颜色值进行比较,如果它们的差异值小于1,即需要抑制背景色溢出,则通过式(e)来降低像素点的饱和度,f(hpixel) =AXsin(2 Ji X (hkey+(0.25_hpixel)))-(Α_1.5)(e) 其中,f(hpiMl)为饱和度的降低程度,hkey表示图像中背景色的颜色值,‘^表示像素点的颜色值,A为常数; 如果像素点H通道的颜色值与背景色的颜色值的差异大于或等于1,则像素点的饱和度保持不变; 通过对初始合成图像C中每一个像素点进行处理,得到最终合成图像,再将最终合成图像回传到CPU中缓存; 当第一帧图像处理完成后,按照步骤(2.1)~(2.5)处理继续处理第二帧图像,直到所有的视频帧图像处理完成后,通过视频输入、输出接口将合成的图像利用显示设备显示; (3)、内存释放 当图像显示结束后释放CPU和GPU上分配的内存空间。

2.根据权利要求1所述的蓝屏抠图方法,其特征在于,所述的蓝屏图像结构信息包括:图像长度、宽度以及像素点的个数。

3.根据权利要求1所述的蓝屏抠图方法,其特征在于,所述的二值化处理为:设阀值M,当像素点的不透明度大于或等于阀值M时,将不透明度值设为O,即为背景,当像素点的不透明度小于阈值M时,将不透明度值设为1,即前景。

【文档编号】G06T7/00GK104200470SQ201410436813

【公开日】2014年12月10日 申请日期:2014年8月29日 优先权日:2014年8月29日

【发明者】胡绍湘, 詹肇楷, 陈奋 申请人:电子科技大学

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值