《电子技术应用》
您所在的位置:首页 > 其他 > 业界动态 > 一种多图层任意形状膜版的图像叠加技术

一种多图层任意形状膜版的图像叠加技术

2009-08-27
作者:童晓阳

    摘  要: 针对在背景图像开出任意形状的剪裁区域(膜版)填充前景图像的问题,采用多图层方法,在背景和前景图像之间增加一个存放膜版的图层,提出一种多图层任意形状膜版的图像叠加技术,介绍了其工作原理和具体算法,并讨论了其运行实例。
    关键词: 图像叠加  区域连通性  膜版  多图层

 

    在处理图像的过程中,常常需要在背景图像开出任意形状的剪裁区域来填充前景图像,使得前景图像在背景给定范围内显示和活动。Photoshop软件采用套索工具,微软的画图软件采用“任意形状的剪裁”工具,二种方式均可获得任意形状的图像。但这种叠加需求实际上是想要事先获得一个任意形状外轮廓,然后在背景的该轮廓区域内填充上前景图像,现有软件较难实现或实现起来较繁琐。
    为解决该问题,本文借鉴Photoshop软件的多图层制作思想,先提取或勾勒出任意形状的剪裁区域(膜版),形成底色为白色的膜版图层。再通过程序对该图层进行二值化、求取膜版外接矩形、消除其内部白色孤立点、利用区域连通性消除其内部白色孤立区域等处理,形成黑色膜版,再将它与背景和前景叠加获得复合图像。本文给出了该叠加技术的工作原理和具体算法,通过实例说明达到的效果,并讨论了该技术的扩展使用。
1  多图层膜版叠加技术的工作原理
    本叠加技术的主要思路是,先由美工人员运用Photoshop的套索工具或画图软件的“任意形状的剪裁”工具在一张包含有目标膜版的原始图像上,提取所需的任意形状的剪裁区域,然后复制、粘贴到一个底色为白色的图像上,此时膜版内部仍保留原始图像。当图像结构和颜色复杂时,如果采用手工将膜版内部填充或涂成黑色则很繁琐。因此这里采取专门的处理算法可将膜版内部全部变成黑色,得到的就是完整的膜版图层,再将膜版图像存成文件即可。进行图像叠加时,判断背景上的点是否属于膜版区域,如果属于,则把背景上该点颜色用前景上相应点颜色替代,就可达到预期的叠加目标。整个多图层膜板叠加技术的工作原理如图1所示。

 


    膜版处理算法先对膜版原始图像进行二值化,变成白色或黑色,再消除膜版内部白色孤立奇异点(四周8个邻点均为黑色的白色点)。求取膜版的外接矩形是为了加快处理速度。为消除膜版内部的白色区域(白色空洞),利用区域连通性原理对膜版外接矩形内的白色点进行区域连通性计算,获得白色点的连通标记。由于膜版内部白色区域点的连通标记大于膜版外部白色点的连通标记,由此判定该白色点为膜版内部点,可变成黑色,从而消除膜版内的白色空洞,产生完整的黑色膜版,为叠加准备好所需的膜版图层。
2  具体算法
2.1 膜版图像二值化

    对膜版原始图像进行二值化,对图层每个点进行处理,保留白色和黑色点,把非白非黑的点颜色变成黑色。
2.2 消除膜版内白色孤立点
    二值化后的膜版图像可能存在一些白色孤立点,会影响后面的叠加处理,因此需消除。消除方法是对图像中每个白色点判断其四周8个邻点是否均为黑色,如果是,则将该点变成黑色。
2.3 求取膜版的外接矩形
    为缩小后面区域连通性计算的范围,需要求取膜版的外接矩形,即获得膜版的最左边界点和最右边界点的横坐标Xmin、Xmax及最上边界点和最下边界点的纵坐标Ymin、Ymax。
2.4 区域连通性计算
    为消除膜版内部的白色区域,同时避免错误地消除膜版外部的白色点,采用4邻域法[1][2]计算图层中外接矩形以内白色点所属的连通区域标记。这里采用的技巧:将膜版外接矩形向外扩大1个象素,得到外扩矩形。求取膜版的外扩矩形如图2所示。该外扩矩形上都是白色点,先将这些点的连通区域标记赋为1,再计算外接矩形内白色点的连通区域标记。这样外接矩形以内而膜版以外的白色点的标记肯定为1,膜版内部白色区域的标记将大于1。图2中,A点为膜版以外的白色点,C点为膜版内的白色区域中的点,B点为白色孤立点。

 


    计算区域连通性的算法描述如下:
    (1)对连通标记数组初始化,外扩矩形四边上的点标记为1,外扩矩形内部黑色点的标记为0。
    (2)从左至右、从上到下扫描图像。
    (3)对于每行的各点,如果某点的象素值为白色,则:如果上面点和左面点有一个标记,则复制该标记;如果2点有相同的标记,则复制该标记;如果2点有不同的标记,则复制2点中较小标记;将2标记写入等价表中作为等价标记;否则给这个象素点分配一个新标记,并将这一标记写入等价表。
    第一遍从上到下4连通序贯的相关Delphi代码如下:
MaxEquValue:=1;//连通标记变量,初始为1
for j:=Ymin to Ymax do
    for i:=Xmin to Xmax do
    begin
    if ImgTempGood.Canvas.Pixels[i,j]=clWhite then //是否白色
      begin
      if(ImgTempGood.Canvas.Pixels[i,j-1]=clBlack) and
           (ImgTempGood.Canvas.Pixels[i-1,j]=clBlack) then
          begin //上点和左点均为黑色点
             MaxEquValue:=MaxEquValue+1;  //新的连通标记
             EquTable[i,j]:=MaxEquValue;  //赋值到标记数组
      end
    else if (ImgTempGood.Canvas.Pixels[i,j-1]=clWhite)
      and (ImgTempGood.Canvas.Pixels[i-1,j]=clWhite) then
      begin  //上点和左点同时为白色点
          Lj_1:=EquTable[i,j-1];  //上边点的标记
          Li_1:=EquTable[i-1,j];  //左边点的标记
          if(Li_1>0) and (Lj_1>0) then  //标记同时存在
          begin
             if Li_1=Lj_1 then   //上点和左点标记相同
                EquTable[i,j]:=Li_1
             else  //上点和左点标记不相同,取二者中小的
                EquTable[i,j]:=MIN(Li_1,Lj_1);
          end;
      end  //end for else if
    else   //上点或左点只有一个为白色点
    begin
      //上点为1,且有标记L,则该点的标记也为L,上点优先
     if(ImgTempGood.Canvas.Pixels[i,j-1]=clWhite) and
         (EquTable[i,j-1]>0) then
          EquTable[i,j]:=EquTable[i,j-1]//左点为1,且有标记L,则该点的标记也为L
     else if(ImgTempGood.Canvas.Pixels[i-1,j]=clWhite) and
         (EquTable[i-1,j]>0) then
       EquTable[i,j]:=EquTable[i-1,j];
    end;//end for else
 end;//end for if
end;//end for i
    (4)考虑下一行,则重复第(3)步。
    (5)从下到上扫描图像,重复(3)、(4)步。
    (6)在等价表的每一等价集中找到该等价集中最低的标记。
    (7)扫描图像,用等价表中的最低标记取代每一标记,即标记出较大的连通域。
2.5 消除膜版内白色区域
    对外接矩形内各点,判断其连通标记是否大于1,若是,则说明该点是膜版内部白色点(空洞点),则置为黑色。
2.6 多图层叠加
    图层叠加时,对于膜版外接矩形内各点,如果是黑色点,则用该点坐标对应的前景点颜色去替代背景上相应点的颜色来完成图像的复合叠加。相关代码如下:
for y:=Ymin to Ymax do
    for x:=Xmin to Xmax do  //点(x,y)是否属于模版区域?
    if ImgTempGood.Canvas.Pixels[x,y]=clBlack then
ImgObject.Canvas.Pixels[x,y]:=ImgForgrd.Canvas.Pixels[x,y];//背景图像上属于膜版区域的点填充成前景颜色
3  运行实例
    本算法采用Delphi7实现,一个叠加的运行实例如图3所示。图中,B、T0、F分别是背景、膜版的原始图像及前景,图T1是二值化后的膜版图像,图T2是去掉白色空洞后的膜版。从图中可看到二值化后的膜版包含许多白色孤立点和白色区域,需要消除掉。图O是最后叠加产生的合成结果。有关本叠加技术的扩展使用讨论如下:

 


    (1)上述方法是针对在背景上开一个裁减窗口设计的。如果想开多个不交叉的裁减窗口,同样可为每个裁减窗口准备一个膜版图层,分别把前景、背景和每个膜版叠加。还可通过在膜版图层移动膜版的位置,实现前景被移动过滤的效果。(2)当多个裁减窗口有交叉部分,就要注意事先安排好各膜版对应前景的遮挡关系,然后程序依照预定的前后顺序进行叠加。(3)本叠加技术可用于人物拍摄时,在背景上给出艺术化外轮廓,其内部区域供被拍摄者来拍照。也可用于电视节目的制作,屏幕上留出专门形状的区域来播放其他文字或视频图像。还可用于游戏制作程序,屏幕上限制某区域,供显示游戏中人物或动画。
4  结  论
    本文采用多图层方法,在背景和前景之间增加一个膜版图层来过滤前景实现图像复合,利用区域连通性原理消除膜版内部白色孤立区域,产生黑色膜版。这些技术的运用只是图像叠加处理中的部分方法,起到抛砖引玉的效果。
参考文献
1   贾云得.机器视觉.北京:科学出版社,2000
2   童晓阳,杨名利.人脸轮廓定位和归一化的研究.系统仿真学报,2005;17(3)

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。