背景技术
由于电视字幕具有独立的表意功能,作为一种必备的电视节目要素,电视字幕是一种重要的电视图文的展现形式。随着电视频道、节目内容的细分,各个部门的分工也更加专业化,对于不同类型节目的制作,以单一类型的字幕系统已很难满足要求。另外,电视节目的日益多样性和电视观众欣赏、鉴赏水平的不断提高,也要求电视字幕的应用模式必然朝着多样性的方向发展。
从广义的角度来说,电视字幕所处理的字幕对象可以分为图形和文字两个部分。图形包括各种规则形状的图形、由基本图形元素组成的复合图形和任意不规则图形,文字包括世界上各种语种的文字。
从计算机展现的角度来说,字幕对象渲染的最终目的是根据图形化的矢量信息和图像纹理,采用数字图像处理的相关算法,得到由32位RGBA表示的像素组成的一帧图像。因此将字幕对象归一化为一种图形表达形式,有利于数字图像处理算法的统一化。
从计算机图形学的角度来说,可以将所有类型的字幕对象视为由一系列直线和曲线组成的图形。计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法。图形通常由点、线、面、体等几何元素和灰度、色彩、线型、线宽等非几何属性组成。从处理技术上来看,图形主要分为两类,一类是基于线条信息表示的,如工程图、等高线地图、曲面的线框图等,另一类是明暗图,也就是通常所说的真实感图形。计算机图形学一个主要的目的就是要利用计算机产生令人赏心悦目的真实感图形。为此,必须建立图形所描述的场景的几何表示,再用某种光照模型,计算在假想的光源、纹理、材质属性下的光照明效果。
在计算机图形学中,Bezier曲线是一种重要的多项式参数曲线。平面中的任意N(N>=2)个点都可以构成一个Bezier曲线。这N个点称为Bezier曲线的控制顶点,N个点组成的多边形称为Bezier曲线的控制多边形。在字幕渲染技术中,可以使用Bezier曲线来表达所有字幕对象的矢量信息,将字幕对象的原始矢量轮廓转化为二次Bezier曲线,并将一个内部自相交Bezier封闭曲线分成多个封闭轮廓,根据交点将一条Bezier线段分割成若干条首尾相连的线段,在字幕矢量轮廓中确定每一条Bezier线段的内边/外边属性,根据内边/外边属性对字幕矢量轮廓进行规并整理,最终得到若干不相交的封闭轮廓。然后,将字幕对象的矢量轮廓离散化为直线段,计算字幕对象的多边形矢量轮廓的属性,进一步根据多边形的方向和加边类型,创建出用来加内边和外边的多边形矢量轮廓。
当针对字幕对象的矢量信息进行上述处理后,对字幕进行渲染。由于某一渲染区(渲染基元为一个像素)的渲染属性取决于其相对于曲线轮廓封闭环域的位置,因此要建立与原始图像具有相同维数的像素空间掩码矩阵和纹理图像矩阵,按照一定的贴图顺序在贴图半径内部对原始图像的每个像素的纹理进行准确的赋值。另外,为了实现基于字幕物体轮廓的真正的渐变效果,还需要建立形态渐变色彩数组,基于形态渐变进行色彩填充。在经过纹理贴图或形态渐变径向色彩填充之后,已经对全边(内边、外边)和侧边进行了基于子像素面积的反走样处理,为了使面与内边、面与外边、面与侧边、内边与内边、外边与外边、外边与侧边的效果更加平滑,需要根据相邻四像素的等高线距离进行进一步的反走样处理。
发明内容
本发明的目的是针对上述基于曲线轮廓封闭环域和像素空间掩码矩阵模型的字幕渲染技术的实现原理,提供一种基于相邻四像素等高线距离的边缘反走样处理方法,使得渲染后的字幕对象的轮廓边界更加平滑。
本发明的技术方案如下:一种基于相邻四像素等高线距离的边缘反走样处理方法,包括如下步骤:
(1)建立与原始图像具有相同维数的像素空间掩码矩阵,由到字幕对象轮廓边界的最短距离Border值相同的像素点构成一系列等高线;
(2)在已经填充了色彩的图像中,得到当前像素P[i][j]以及其上、下、左、右四个相邻像素P[i-1][j]、P[i+1][j]、P[i][j-1]、P[i][j+1]的色彩RGBA的值,分别为:
C[0]=RGBA(P[i][j])
C[1]=RGBA(P[i-1][j])
C[2]=RGBA(P[i+1][j])
C[3]=RGBA(P[i][j-1])
C[4]=RGBA(P[i][j+1]);
(3)在像素空间掩码矩阵中得到与上述像素对应的掩码属性值;
(4)根据上述四个相邻像素的色彩RGBA的值以及各像素的掩码属性值,进行加权平均,得到处理后的像素P[i][j]的色彩RGBA的值。
进一步,如上所述的基于相邻四像素等高线距离的边缘反走样处理方法,步骤(3)中,对于全边,得到的掩码属性值是像素到边界的最短距离Border值,分别为:
R[0]=M[i][j].Border
R[1]=M[i-1][j].Border
R[2]=M[i+1][j].Border
R[3]=M[i][j-1].Border
R[4]=M[i][j+1].Border。
进一步,如上所述的基于相邻四像素等高线距离的边缘反走样处理方法,步骤(3)中,对于侧边,得到的掩码属性值是像素到最外侧边的侧边方向的距离Side值,分别为:
R[0]=M[i][j].Side
R[1]=M[i-1][j].Side
R[2]=M[i+1][j].Side
R[3]=M[i][j-1].Side
R[4]=M[i][j+1].Side。
进一步,如上所述的基于相邻四像素等高线距离的边缘反走样处理方法,步骤(4)中进行加权平均处理的公式如下:
其中,R为当前边界对应的等高线的值。
本发明的有益效果如下:本发明在经过纹理贴图或形态渐变径向色彩填充之后,对边缘像素根据相邻四像素的等高线距离进行进一步的反走样处理,使字幕渲染后的面与内边、面与外边、面与侧边、内边与内边、外边与外边、外边与侧边的效果更加平滑,从而提升电视字幕的整体视觉效果,满足公众的欣赏要求。
具体实施方式
下面结合附图和具体实施例对本发明进行详细的描述。
由于目前的用于电视节目制作的字幕系统中字幕渲染普遍存在渲染效率低下、边缘锯齿效应、小字模糊不清晰、文字笔画粗细不均匀、渐变效果不真实、无法实现多边多影渲染效果、无法实现艺术字效果等一系列技术上和应用上的问题,因此,可以通过将字幕对象的矢量信息转化为一个基于等高线的像素掩码矩阵,在此基础上进行字幕渲染的技术来加以解决,这一技术称作基于曲线轮廓的封闭环域和像素掩码矩阵的字幕渲染方法(具体内容可参见同期申请的专利)。
上述方法的关键步骤首先是有限封闭环域的生成。有限封闭环域为有限个内环、外环(内、外环方向相反)定义的一个多连通闭区域,内环必须在一个外环内。一个输入图元由一个或多个封闭轮廓组成,轮廓以首尾连结的二次Bezier曲线表示。对封闭轮廓进行曲线相交检测,通过裁减曲线、并归轮廓,生成有限环域的内外环。
曲线的相交检测利用外接矩形检测选取可能相交曲线对以提高效率,然后递归法对可能相交的Bezier曲线对二分法分割进行局部曲线段的包围盒检测,当分割的曲线段满足直线拟和精度时,用直线规则求交点,根据交点分割相交曲线对。计算交点相连的曲线的方向进行内、外环分类测试,裁减不满足内、外环属性的曲线,即删除被一个外环包含却与外环方向一致的曲线或者被内环包含的与内环方向一致的曲线。连接首尾端点重合的曲线,生成封闭的内外环。
算法的思想基于某一渲染区(渲染基元为一个象素)的渲染属性取决于其相对于环域的位置,即以原始轮廓环域为0距线,通过计算渲染基元相对0距线的距离得到像素掩码矩阵,由像素掩码矩阵的等高线划分不同的渲染区。渲染区的灵活划分,可以实现多层图元渲染;不同的距离计算方式得到不同的等高线,从而实现不同的区域边界导角特性;像素掩码矩阵做深度信息等转换,实现浮雕等立体效果。
因此,算法的另一关键步骤就是像素掩码矩阵中各个属性的计算。离散化曲线环域,根据离散化的轮廓点链的前进方向标记距离映射图中各基元的符号(例如,外环逆时针,则左为正右为负,点链经过的基元为零)。通过对点链中各点的方向矢量及其前后点的方向角平分线方向矢量围成的有限区域范围内计算渲染基元的距离,在映射图中记录各基元的绝对值最小的距离值。
基于上述原理,在将一个字幕对象的Bezier曲线矢量轮廓离散化为多边形矢量G之后,进一步根据多边形的方向和加边类型,创建出用来加内边的多边形矢量G1和用来加外边的多边形矢量G2。然后,就可以对字幕对象进行后续渲染。
本发明首先需要建立与原始图像具有相同维数的像素空间掩码矩阵M如图1a所示,填充了色彩以后的像素空间色彩矩阵如图1b所示,每个像素的色彩值包括RGBA四个分量。
像素空间掩码矩阵M中每个像素点包括以下属性数据:
(1).一个像素到边界的最短距离Border。该值在加内边、外边时使用。根据方角边、尖角边、圆角边的不同类型,这个距离有不同的意义。
(2).一个像素到最外侧边的侧边方向的距离Side。该值在加侧边时使用。
(3).经过一个像素的所有边界围成的多边形的面积Area。该值在对边界像素进行反走样贴图时使用。因此首先要区分内部像素和边界像素:对于内部像素来说,该值为固定的值(512*512);对于边界像素而言,该值是一个小于等于512*512的值,表示通过该像素的边与该像素矩形(高和宽均为512)围成多边形的面积。
(4).一个像素的类型Type。该值用来表示一个像素是侧边边界、外边边界、内边边界、内部像素。
(5).一个像素是否已经进行了反走样处理的标志bAntialiasing。使用这个布尔变量以避免对同一个像素进行多次的反走样处理。
以上的Border、Side、Area的值都是在512*512的坐标空间中,因此,可以将以上这些数据当作一个像素的掩码。以上属性数据的具体确定方法可以参见同期申请的专利,此处仅对本发明中需要用到的一个像素到边界的最短距离Border值以及经过一个像素到最外侧边的侧边方向的距离Side的计算进行介绍。
如图3a、图3b所示,计算一个像素到边界的最短距离Border值的方法如下:
(1)在字幕对象的多边形矢量轮廓边界上选取直线段(P0,P1),确定直线段(P0,P1)两个端点P0、P1的坐标(P0.x,P0.y)、(P1.x,P1.y)以及两个端点的加边方向的向量(P0.dx,P0.dy)、(P1.dx,P1.dy);
加边方向的向量与加边方向的角度的关系如下:
P0.dx=Cos(A0) P0.dy=Sin(A0)
P1.dx=Cos(A1) P1.dy=Sin(A1)
其中,P0点的加边方向的角度为A0,P1点的加边方向的角度为A1。
(2)设定沿加边方向逐层计算的距离k、步长s,根据P0、P1的加边方向的向量依次计算P0、P1在加边方向上所对应的点P2、P3、P4、P5的坐标;
P2、P4的坐标根据P0点来计算:
P2.x=P0.x+(k-s)*P0.dx;
P2.y=P0.y+(k-s)*P0.dy;
P4.x=P0.x+k*P0.dx;
P4.y=P0.y+k*P0.dy;
P3、P5的坐标根据P1点来计算:
P3.x=P1.x+(k-s)*P1.dx;
P3.y=P1.y+(k-s)*P1.dy;
P5.x=P1.x+k*P1.dx;
P5.y=P1.y+k*P1.dy。
(3)由P2、P3、P4、P5点围成四边形,遍历四边形内的所有像素点,根据点到直线垂直距离的计算公式,计算每个点到直线段(P0,P1)的距离。
如图4a-图4c所示,计算一个像素到最外侧边的侧边方向的距离Side的方法如下:
(1)在字幕对象的侧边轮廓边界上选取直线段(P0,P1),确定直线段(P0,P1)两个端点P0、P1的坐标(P0.x,P0.y)、(P1.x,P1.y)以及侧边的加边向量dx、dy;
侧边的加边向量dx、dy是根据侧边角度A确定的,侧边的加边向量dx、dy与A的关系如下:dx=Cos(A),dy=Sin(A)。
(2)设定沿加边方向逐层计算的距离k、步长s,根据P0、P1的加边向量依次计算P0、P1在加边方向上所对应的点P2、P3、P4、P5的坐标;
P2、P4的坐标根据P0点来计算:
P2.x=P0.x+(k-s)*dx;
P2.y=P0.y+(k-s)*dy;
P4.x=P0.x+k*dx;
P4.y=P0.y+k*dy;
P3、P5的坐标根据P1点来计算:
P3.x=P1.x+(k-s)*dx;
P3.y=P1.y+(k-s)*dy;
P5.x=P1.x+k*dx;
P5.y=P1.y+k*dy。
(3)由P2、P3、P4、P5点围成四边形,遍历四边形内的所有像素点,根据点到直线垂直距离的计算公式,以及侧边的角度和直线段(P0,P1)的角度,计算每个像素点沿侧边加边方向到直线段(P0,P1)的路径长度。
设像素点到直线段(P0,P1)的垂直距离为D,侧边角度为A,直线段(P0,P1)与水平线的夹角为B,则像素点A沿侧边加边方向到直线段(P0,P1)的路径长度为D/Sin(A+B)。
在上述像素空间掩码矩阵模型中,具有相同Border值的点构成了一系列等高线,利用这些等高线,就形成了多个渲染区域。在经过纹理贴图或形态渐变径向色彩填充之后,已经对全边(内边、外边)和侧边进行了基于子像素面积的反走样处理,为了使面与内边、面与外边、面与侧边、内边与内边、外边与外边、外边与侧边的效果更加平滑,需要根据相邻四像素的等高线距离进行进一步的反走样处理。
基于相邻四像素等高线距离的边缘反走样处理的核心思想是:
第一,对于全边,判断像素空间掩码矩阵对应的像素,对距离为Border的全边边界进行反走样:2×2的像素矩阵正好在Border的等高线上,以四点的距离值与Border的差值作为权值,做加权平均。
第二,对于侧边,与全边反走样一样对2×2的矩阵做加权平均,所不同的是根据侧边距离Side进行计算。
基于相邻四像素等高线距离的边缘反走样处理的步骤如下:
假设当前边界对应的等高线的值为Radius(R),像素空间掩码矩阵为MASK(M),需要进行处理的图像为PICTURE(P),那么,针对P的一个像素P[i][j],进行反走样的运算如下:
(1).将P[i][j]记为P0,P[i][j]的上、下、左、右四个相邻像素为P[i-1][j]、P[i+1][j]、P[i][j-1]、P[i][j+1]。这四个像素的色彩RGBA的值分别为:
C[0]=RGBA(P[i][j])
C[1]=RGBA(P[i-1][j])
C[2]=RGBA(P[i+1][j])
C[3]=RGBA(P[i][j-1])
C[4]=RGBA(P[i][j+1])
(2).将M[i][j]记为M0,M[i][j]的上、下、左、右四个相邻掩码为M[i-1][j]、M[i+1][j]、M[i][j-1]、M[i][j+1]。对于全边(内边或外边),这四个掩码的Border值分别为:
R[0]=M[i][j].Border
R[1]=M[i-1][j].Border
R[2]=M[i+1][j].Border
R[3]=M[i][j-1].Border
R[4]=M[i][j+1].Border
对于侧边,这四个掩码的Border值分别为:
R[0]=M[i][j].Side
R[1]=M[i-1][j].Side
R[2]=M[i+1][j].Side
R[3]=M[i][j-1].Side
R[4]=M[i][j+1].Side
(3).对像素P[i][j]进行反走样处理的算法是:根据上述四个像素的RGBA和掩码的Border值或者Side值,进行加权平均。处理后的像素P[i][j]的RGBA为:
本发明所述的方法并不限于具体实施方式中所述的实施例,本领域技术人员根据本发明的技术方案得出其他的实施方式,同样属于本发明的技术创新范围。