知了博客

集天地之精华,吸日月之灵气

« DirectShow中常见的RGB/YUV格式单位dB~ »

几种抠象技术理论试验-1 (Luma-Key,Chroma-Key)

Key    
 

符号以及数值约定

 

一.          Key 的基础概念

 

二.          Luma-Key

 

三.          Chroma-Key

 

四.          Channel Key 使用颜色通道进行抠像

 

五.          Color Difference Mattes

 

六.          DV key

 

七.          参考资料

 

 

 

 

 

在开始之前先确定数值以及符号约定

 

默认的图像空间是:RGB空间

 

使用和Shake一样的float表示颜色数值,颜色范围从 [0-1] 0:表示纯白 1:表示纯黑,0.5表示50%灰。

 

红色使用  (1,0,0) 符号表示。

 

R 表示 红通道

 

G 表示 绿通道

 

B 表示 蓝通道

 

使用Apple Shake作为试验软件。

 

 

 

一.          Key 的基础概念

 

 

 

什么是Mattes:

 

Mattes 控制其他图像透明与不透明的图像。Mattes通常是只包含一个通道,是一幅黑白图像,通常黑色的区域代表完全透明,而白色区域代表完全不透明,而灰色区域表示着半透明。

 

数字合成中的一个重要的操作就是从一幅图像中提取所要的前景,让它与背景分离起来,这个过程就叫做提取Mattes,也叫做Keying,也就是我们所说的抠像。

 

抠像的方法有很多种,实际上每种合成软件中都提供了很多商业插件,而我们这里要描述的不是这些商业的插件的使用方法,而且数字合成中的一些基本基础知识和基本抠像手段,以及这些抠像手段的原理及应用。

 

选 择那种抠像手段要取决于你的素材,而且拍的摄素材对前期的拍摄有一些要求,所以在抠像之前先要对素材进行分析。分析它的亮度范围,分析它的色彩,分析它的 遮挡关系,分析它的拍摄设备(电影胶片摄影机器,广播Dv摄影机等),分析要提取的范围以及背景等,通常一种抠像手段是很难达到要求的,这时候就需要多种 手段并用,达到最终目的,但是在应用之前首先要了解这些基本手段的原理,这样才能够灵活的使用它们,这也是本文所要达到的目的。

 

如果使用技术手段无法达到要求的时候,可以使用手绘Mask的方式进行手工提取,如果对于动态的序列帧,那么就要对每一帧进行Mask动画,但是这些工作量是非常大的,可以使用软件抠像得到“大约”Matte,结合手绘Mask,就能减轻工作量。

 

为了更好的进行后期的抠像,在前期拍摄的时候,为了更好的提取所要的区域,通常使用蓝屏或者绿屏做为背景,为什么选用蓝屏或者绿屏呢?这有很多的解释,大家可以看使用通道操作进行抠像的部分可以有所了解。

 

下面我们讲介绍几种抠像基础方法:

 

二.          Luma-Key (亮度抠像)

 

亮度抠像主要是基于图像的暗部和亮部来创建Matte的。

 

工作原理:

 

首 先把一幅含有RGB通道的图像转换为单通道的黑白图像,这幅黑白图像就代表着这幅图像的亮部和暗部区域。下面将设置两个数值 lowValue,hightValue,只要黑白图像的数值大于hightValue,那么将会把这个数值设置为纯白色,如果小于lowValue就设 置为纯黑色。下图形象化的展示了上面文字。


三维的山峰表示了黑白图像的亮度分布范围,山峰高出的区域代表图像像素的亮度越高。

 

使用2图的一个切割刀,可以对原来的图像的亮度区域进行修改。

 

通过对黑白图像亮度区域进行操作,可以得到Matte,通常这个不会那么的完美,然后对这个使用图像亮度得到的Matte进行二次处理,或者和其他方法生成的Matte进行合成,就能够生成想要的Matte.

 

1.     使一幅RGB图像转换为单通道的BW(黑白)图像。

 

亮度方程

 

L (亮度)= 0.29*R+0.59*G+0.12*B

 

使用Shake ColorX节点,实现公式。


解释:使用ColorX节点可以对RGBAZ通道进行表达式控制。

 

表示使用29%的红加上59%的绿加上12%的蓝构成一幅黑白图像,

 

因为眼睛对绿色比较敏感,所以绿色所占的比重要高于其他色成分。

 

    2 .对这幅黑白图像进行处理

 

       现在已经把图像的亮度信息提出出来了,现在对这个黑白的亮度图像进行处理,就   得到想要的Matte.

 

       Shake 已经提供的LumaKey 不过在这里我们使用shake其他节点

 

       来实现和完善一个MyLumakey。

 

       下图是Shake节点网及解释


3.jpg

大家可以把这幅图片和Shake的LumaKey节点连接比较一下,你会发现最终效果是一样的。

 

提示:如果想对亮度黑白图像进行更加多的控制,可以使用Shake-〉Color-〉Lookup节点,可以用曲线调节整幅图像,如果想实现Expand的效果必须同时对RGB曲线同时进行调节。

 

 

 

  总结:Lumakey 的原理流程如下。


4.jpg

 

 

三.          Chroma-Key (色度抠像)

 

理解RGB三维空间:

 

大 家在初中时候刚学习初等几何时候,接触过坐标系的概念,方便的把代数问题可视化,方便分析问题,普通的立体空间坐标系,一般用xyz来表示,横,竖,纵三 个方向,如果使用像素的RGB数值来表示三个向量方向,就可以组成一个新的坐标系,这个坐标系通常称为RGB空间,因为RGB数值可以在显示器上表示颜 色,这样把整个RGB空间使用颜色像素完全填充,下图就是显示结果。可以看到一个立方体,实际上还有很多颜色空间。比如大家比较熟悉的hsv。


RGB_Space.jpg

下图就是hsv空间,可以看到一个类似锥体的立体模型,不同形状说明他们轴向实现的方程是不一样的。


HSV.jpg

如 果把一幅使用RGB表示的图像放入这个空间中,就可以通过这个坐标系来观察和分析整幅图像的红绿蓝颜色分布了,因为引入了立体坐标系,所以可以使用研究立 体几何的方法来研究和处理图像了。这里将介绍Chroma-Key的一些原理,其中很多的概念和思路,大家可以借鉴一下,或者说发展一下,特别是对以后学 习3D抠象有一个更加好的基础。 

 

 

picinrgb.jpg

一幅图像在rgb空间的分布

 

点距离公式:

 

在高中时候肯定都学过两点在2d和3d坐标系中的距离公式,我们把它应用在我们的RGB空间中。

 

    假设在xyz坐标系中有两点p1(r1,g1,b1),p2(r2,g2,b2),距离为D.

 

RGB 空间中两点之间距离公式:


dist-rgb.jpg

考虑一下P1,P2这两个像素点,如果这两个像素颜色接近,也就是他们的RGB数值接近,那么D就会接近零,反映在颜色上就是接近黑色,如果两个像素点的颜色差异很大,也就是

 

RGB 数值之间差比较大,那么D就会很大,因为我们实现约定了,RGB范围在0-1之间,所以,最大距离如果大于1,那么就显示为白色,如果小于0,将显示为黑色。

 

我们在拍摄时候蓝屏,或者绿屏目的就是为了使前景和背景差异很大,所以上面的这个公式就能够帮助我们生成一张距离图。因为距离是单一浮点数,所以产生的这张图是单通道黑白的。


ShakeScreenSnapz002.jpg

一张Distance map.

 

这 张图片假设公式中,P1点在前景,P2点是背景蓝色的一张单一颜色图像,对这两张图片求距离得到的。女孩后面的黑色说明蓝布与我们要提出的颜色相近,所以 距离接近黑色,女孩身上很少的蓝色,所以距离就接近白色,我们可以惊奇的发现,可以使用任何一种颜色作为比较色来提取这样的距离图。

 

有这样一个“大约“Matte,我们可以对这个图像进行调色处理,比如增加对比度,可以绘制遮罩等进行处理。

 

理解了上面的一些以后,关于Chroma-Key的一些解释就很好理解了。

 

Chroma-Key  顾名思义就是通过色调来提取Matte,上面我们说过,如果我们预先对我们的图像进行调色处理,对于想要的像素,加大他与不想要的像素颜色之间的距离,对于不想要的像素,减小与不想要像素的颜色之间的距离,就可以达到提取matte的目的。

 

Chroma-Key 是首先把图像转换到HSV空间,然后对整幅图像进行调节,调节它的色调的偏移,范围,饱和度偏移,范围等,来达到上述目的。在Shake  中有一个很好的hsv调节工具,就是HueCurves,可以使用hue曲线对图像进行精细调节。

 

下图就是HueCurves节点的参数区。


ShakeScreenSnapz003.jpg

下面我们把上面的理论总结一下,在shake中实现我们调节功能更加强大的MyChroma-Key。 

 

 

MyChromaKey.jpg

这 里的ContrastLum是对图像进行对比度处理,可以在此段区域内,对Distance Map进行调色处理,使用HueCurves进行调节时候,比如可以降低bHue的红色范围数值,因为前景女孩穿的是含红量高的衣服,比如可以增加 rHue的红色范围数值,让女孩前景的颜色更加远离背景。

 

 

 

这也是很多商业抠象软件的基本原理,因为抠象实际是把分布在RGB空间中的一些部分给剔除掉的过程,比如Infeno中就使用三维来显示一幅图像分布,中间的三维物体表示剔出的区域,这样对这个三维物体进行参数调节或者“建模“处理,就可以得到想要的matte。

 

大家可以按照这个思路,使用立体几何的公式或者概念,加上Shake提供的方便的表达式节点,可以试验出更加有意思的抠象或者调色技术。

来源:http://www.cnitblog.com/DavidLew/archive/2009/08/06/16052.html

  • 相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Arwen Build 90619 Code detection by Codefense  theme by BokeZhuti

Copyright know blog. Some Rights Reserved.站长(msn):webmaster#webgou.info(#换成@) 粤ICP备09183716号