在yuv帧上叠加水印的方法及水印叠加装置与流程

文档序号:12133823阅读:1830来源:国知局
在yuv帧上叠加水印的方法及水印叠加装置与流程

本发明涉及一种视频图像处理方法,具体的说,是涉及一种在yuv帧上叠加水印的方法及水印叠加装置。



背景技术:

在实际直播业务环境中,需要在现有的视频流(摄像头摄像以后返回的帧数据)中加入水印,比如新闻类的电视台的台标、节目本身的节目名称、字幕条。传统的一些方案,是把这些视频流的帧数据(YUV420格式,以后简称yuv)转成argb图片格式,然后通过opengl的相关函数来做图片滤镜效果来实现叠加水印,这种方案带来的弊端:1.yuv转argb图片格式再转回yuv步骤较多,多次转换运算代价较大;2.yuv转argb图片以后,通过opengl处理滤镜,实现叠加台标,这个运算步骤也会严重影响性能,opengl的glReadPixels函数效率很低,在android低端手机实际测试中,能看到明显的卡顿。



技术实现要素:

针对上述现有技术中的不足,本发明提供一种提高图像叠加质量,提高图像叠加效率,降低图像叠加成本的视频图像透明水印叠加方法。

本发明所采取的技术方案是:

在yuv帧上叠加水印的方法,包括:

根据水印逐行生成帧替换索引;

所述替换索引由所述水印的逐行的透明数据的起始位置和宽度以及非透明数据的起始位置和宽度构成;

根据所述替换索引对每个所述yuv帧进行叠加,

其中,逐行或者并行读取所述替换索引,在所述替换索引数据值为透明数据时直接跳转到非透明数据处并根据非透明数据宽度值替换所述yuv帧的相应数据直至所述替换索引的所述行的数据处理完毕;显示所述yuv帧。

所述水印为RGB格式,在读取所述替换索引后,进行RGB和yuv格式的标准变换。

根据所述水印替换索引对每个所述yuv帧进行叠加是并行的。

数据叠加时,透明区的宽度,通过指针跳动,即:指针值+透明宽度值直接到需要复制的不透明区;yuv帧需要叠加的帧都跳动同样的透明宽度,直接复制不透明的数据;按块复制,复制量为不透明的宽度值。

水印的yuv帧数据的不透明区域与yuv帧数据进行叠加时,多行数据分别计算,多行数据同时叠加。

yuv帧数据叠加水印的yuv帧数据;水印的yuv帧数据在yuv帧数据上的位置在预先设定的位置。

替换索引与水印的yuv帧数据保存在同一个文件或者替换索引作为单独文件保存。

yuv帧数据叠加水印的yuv帧数据时,叠加两组或两组以上的水印的yuv帧数据。

叠加两组或两组以上的水印的yuv帧数据同时进行或设定一个时间函数,随着时间函数的改变,依次叠加相应的水印的yuv帧数据或者设定一个时间函数,随着时间函数改变,在数据库中任意选取水印的yuv帧数据进行叠加;数据库中存储水印的yuv帧数据文件以及相应的水印的yuv帧数据文件的替换索引文件。

一种在yuv帧上叠加水印的方法的水印叠加装置,包括:

对输入需要叠加的argb图片数据进行处理的数据处理装置;

对需要叠加的Argb图片数据转换为yuv数据的数据转换装置;

对需要叠加的yuv帧数据的每一行前端添加索引字节的数据添加装置;

对输入原始图像数据进行处理的数据处理装置;

将原始图像数据转换为yuv帧数据的数据转换装置;

确定需要叠加数据所在原始数据指定位置的位置确定装置;

将读取需要叠加的yuv帧数据每一行前端的索引字节进行保存的数据保存装置;

确定需要叠加的yuv帧数据每行的透明区域和不透明区域的数据确立装置,建立地址指针的地址指针建立装置;

根据地址指针将需要叠加的yuv帧数据的不透明区域与原始图像数据的yuv帧数据进行叠加的数据叠加装置;

保存叠加后数据的数据存储装置。

本发明相对现有技术的有益效果:

本发明视频图像透明水印叠加方法,不转换原始的视频流的yuv帧,直接在现有的yuv帧上处理数据;叠加动作只在台标的尺寸里面进行,减少计算量;叠加按块进行,而不是按每个点进行,大量减少计算量;每块叠加没有前后依赖,可以利用多核等并行处理,提高数据转换效率。

本发明视频图像透明水印叠加方法,是把视频流的帧转成argb图片信息,而是反过来,我们把台标等argb图片转换为yuv帧,这种动作只需要做一次,以后的叠加动作,都是把已经转好的台标的yuv帧的数据叠加到视频流里面的yuv帧中;加动作只在台标的尺寸里面进行,减少计算量。

附图说明

图1是本发明视频图像透明水印叠加方法的第一实施例的流程示意图;

图2是本发明视频图像透明水印叠加方法的第二实施例的流程示意图;

图3是本发明视频图像透明水印叠加方法的台标图像示意图;

图4是本发明视频图像透明水印叠加方法的图像叠加示意图。

附图中主要部件符号说明:

图中:

1、透明区域 2、不透明区域

3、台标。

具体实施方式

以下参照附图及实施例对本发明进行详细的说明:

RGB(红绿蓝)是依据人眼识别的颜色定义出的空间,可表示大部分颜色。但在科学研究一般不采用RGB颜色空间,因为它的细节难以进行数字化的调整。它将色调,亮度,饱和度三个量放在一起表示,很难分开。它是最通用的面向硬件的彩色模型。该模型用于彩色监视器和一大类彩色视频摄像。

在YUV空间中,每一个颜色有一个亮度信号Y,和两个色度信号U和V。亮度信号是强度的感觉,它和色度信号断开,这样的话强度就可以在不影响颜色的情况下改变。

YUV使用RGB的信息,但它从全彩色图像中产生一个黑白图像,然后提取出三个主要的颜色变成两个额外的信号来描述颜色。把这三个信号组合回来就可以产生一个全彩色图像。

Y通道描述Luma信号,它与亮度信号有一点点不同,值的范围介于亮和暗之间。Luma是黑白电视可以看到的信号。U(Cb)和V(Cr)通道从红(U)和蓝(V)中提取亮度值来减少颜色信息量。这些值可以从新组合来决定红,绿和蓝的混合信号。

YUV和RGB的转换:

Y=0.299R+0.587G+0.114B

U=-0.1687R-0.3313G+0.5B+128

V=0.5R-0.4187G-0.0813B+128

R=Y+1.402(V-128)

G=Y-0.34414(U-128)-0.71414(V-128)

B=Y+1.772(U-128)

附图1-4可知,实施例1,在附图1中,一种视频图像透明水印叠加方法,包括原始图像数据和需要叠加图片数据,包括如下步骤:

步骤1、开始;

步骤2、输入需要叠加的argb图片数据;

步骤3、将需要叠加的Argb图片数据转换为yuv数据;

步骤4、需要叠加的yuv帧数据的每一行前端添加索引字节;

步骤5、输入原始图像数据;

步骤6、原始图像数据转换为yuv帧数据;

步骤7、确定需要叠加数据所在原始数据指定位置;

步骤8、读取需要叠加的yuv帧数据每一行前端的索引字节;

步骤9、确定需要叠加的yuv帧数据每行的透明区域和不透明区域,建立地址指针;

步骤10、根据地址指针将需要叠加的yuv帧数据的不透明区域与原始图像数据的yuv帧数据进行叠加;

步骤11、保存叠加后的数据;

步骤12、结束。

当需要叠加的yuv帧数据的一点的U分量或V分量为255,确定改点像素为透明。

需要叠加的yuv帧数据的每行的透明区域和不透明区域与原始数据进行叠加步骤为:

遍历每行图像数据,将像素点为255的点的像素数据忽略,否则将像素数据拷贝到原始图像对应的位置,对原始图像始数据和需要叠加图片数据进行叠加;当像素点为255时指针跳转到下一个像素点不是255的点对数据进行叠加,直至此行图像数据处理完毕。

数据叠加时,透明区的宽度,通过指针跳动,即:指针值+透明宽度值直接到需要复制的不透明区;原始视频帧、需要叠加的帧都跳动同样的透明宽度,直接复制不透明的数据;按块复制,复制量为不透明的宽度值。

需要叠加的yuv帧数据的不透明区域与原始图像数据的yuv帧数据进行叠加时,多行数据分别计算,多行数据同时叠加。

在向原始图像yuv帧数据叠加需要叠加的yuv帧数据;需要叠加的yuv帧数据在向原始图像yuv帧数据上的位置根据预先设定的位置而改变。需要叠加的yuv帧数据可以在叠加的过程中任意改变,在开始的一段时间内,叠加需要叠加的yuv帧数据在原始图像yuv帧数据的左上角,进过一段时间后可以改变为右上角,也可以设定一个时间函数,随着时间函数的改变,位置随时改变。

实施例2,在如图2中,一种视频图像透明水印叠加方法,包括原始图像数据和需要叠加图片数据,包括如下步骤:

步骤1、开始;

步骤2、输入需要叠加的argb图片数据;

步骤3、将需要叠加的Argb图片数据转换为yuv数据;

步骤4、需要叠加的yuv帧数据的每一行添加索引字节,添加索引字节作为单独文件保存;

步骤5、输入原始图像数据;

步骤6、原始图像数据转换为yuv帧数据;

步骤7、确定需要叠加数据所在原始数据指定位置;

步骤8、读取需要叠加的yuv帧数据的索引字节文件;

步骤9、确定需要叠加的yuv帧数据每行的透明区域和不透明区域,建立地址指针;

步骤10、根据地址指针将需要叠加的yuv帧数据的不透明区域与原始图像数据的yuv帧数据进行叠加;

步骤11、保存叠加后的数据;

步骤12、结束。

在向原始图像yuv帧数据叠加需要叠加的yuv帧数据时,叠加两张或两张以上的需要叠加的yuv帧数据。

叠加两张或两张以上的需要叠加的yuv帧数据同时进行或设定一个时间函数,随着时间函数的改变,依次叠加相应的需要叠加的yuv帧数据或者设定一个时间函数,随着时间函数改变,在数据库中任意选取叠加需要叠加的yuv帧数据进行叠加;数据库中存储需要叠加的yuv帧数据文件以及相应的需要叠加的yuv帧数据文件的索引字节文件。

一种视频图像透明水印叠加装置,包括:

对输入需要叠加的argb图片数据进行处理的数据处理装置;

对需要叠加的Argb图片数据转换为yuv数据的数据转换装置;

对需要叠加的yuv帧数据的每一行前端添加索引字节的数据添加装置;

对输入原始图像数据进行处理的数据处理装置;

将原始图像数据转换为yuv帧数据的数据转换装置;

确定需要叠加数据所在原始数据指定位置的位置确定装置;

将读取需要叠加的yuv帧数据每一行前端的索引字节进行保存的数据保存装置;

确定需要叠加的yuv帧数据每行的透明区域和不透明区域的数据确立装置,建立地址指针的地址指针建立装置;

根据地址指针将需要叠加的yuv帧数据的不透明区域与原始图像数据的yuv帧数据进行叠加的数据叠加装置;

保存叠加后数据的数据存储装置。

本发明视频图像透明水印叠加方法,不转换原始的视频流的yuv帧,直接在现有的yuv帧上处理数据;叠加动作只在台标的尺寸里面进行,减少计算量;叠加按块进行,而不是按每个点进行,大量减少计算量;每块叠加没有前后依赖,可以利用多核等并行处理,提高数据转换效率。

本发明视频图像透明水印叠加方法,是把视频流的帧转成argb图片信息,而是反过来,我们把台标等argb图片转换为yuv帧,这种动作只需要做一次,以后的叠加动作,都是把已经转好的台标的yuv帧的数据叠加到视频流里面的yuv帧中;加动作只在台标的尺寸里面进行,减少计算量。

当输入需要叠加图像数据为argb图片数据,将argb图片数据转换为yuv帧,并进行保存。

RGB转YUV420的计算公式为:

Y=0.299R+0.587G+0.114B;

U=-0.147R-0.289G+0.436B;

V=0.615R-0.515G-0.100B。

当U分量或V分量为255,确定改点像素为透明。

每行的透明区域和不透明区域与原始数据进行叠加步骤为:

遍历每行图像数据,将像素点为255的点的像素数据不拷贝到原始图像对应的位置,否则将像素数据拷贝到原始图像对应的位置;当像素点为255时指针跳转。当像素点小于255时,将像素数据拷贝到原始图像对应的位置。

数据叠加时,透明区的宽度,通过指针跳动,即:指针值+透明宽度值直接到需要复制的不透明区;原始视频帧、需要叠加的帧都跳动同样的透明宽度,直接复制不透明的数据;按块复制,复制量为不透明的宽度值,达到按块复制的结果。

如图2所示:第一行产生的信息:120,16,120,0;

第一块透明区,宽度为120个像素,后面对应的不透明宽度为16个像素。

第二块透明区,宽度为120个像素,后面没有不透明块,记录宽度为0;

第二行,产生的信息:115,26,115,0;

第一块透明区,宽度为115个像素,后面对应的不透明宽度为26个像素;

第二块透明区,宽度为115个像素,后面没有不透明块,记录宽度为0。

每块叠加没有前后依赖,可以利用多核等并行处理。

叠加台标时,每一块不透明块的位置的开始位置以及复制的量,这些值是固定不变的,以后每帧视频的处理都可以按照这个信息来并行快速处理。

实施例3:

台标尺寸:(宽256像素,高256像素);

视频流每帧:1024*720(720p格式,宽1024像素,高720像素);

叠加位置:第二行,第二列;

Y分量:1024*行数+当前叠加行偏移位,为1024*1+1为1025;

U分量:1024*720+1;

V分量:1024*720+(1024/2)*(720/2)+1。

在产生YUV帧数据时,同步产生每行像素的透明块、不透明块信息(信息指每块的宽度),透明块宽度、不透明宽度成对出现,透明块宽度能指示YUV分量指针的跳转距离,不透明块能指明需要复制的YUV分量的字节数,达到快速的指针前进以及按块复制。

实施例4,是在实施例1的基础上进一步改进。

台标尺寸:(宽256像素,高256像素);

视频流每帧:xxxx*yyyy(视频可以是任意格式,宽:xxxx为任意像素,yyyy为任意像素)

叠加位置:任意行v,任意列u;

Y分量:xxxx*行数+当前叠加行偏移位v;

U分量:xxxx*yyyy+u;

V分量:xxxx*yyyy+(xxxx/2)*(yyyy/2)+v。

在台标Argb图片数据转换为YUV帧数据后,向需要叠加的yuv帧数据的每一行添加索引字节时,添加的索引字节可以保存在yuv帧数据的每一行的前端,即:添加的索引字节嵌入需要叠加的yuv帧数据中,与需要叠加的yuv帧数据构成一个不可分割的完整数据;同时,添加的索引字节可以单独保存,即:需要叠加的yuv帧数据文件以及关于需要叠加的yuv帧数据文件的索引字节文件。

在进行图像叠加时,根据地址指针可以任意跳转,对任意位置的图像进行覆盖。

在进行图像叠加时,能够实现并行计算,多行数据分别计算,可以同时修改数据。

实施例5

本发明实施例5是实施例1的一种变形,在实施例1的其他手段没有变化的情况下,可根据水印图像数据,预先生成水印索引,水印索引单独存放在一个数组中,在进行yuv格式的帧图像覆盖时,逐行读取水印索引数组中的信息,根据各标准的RGB与yuv数据的转换标准,发现是透明数据时,不对yuv帧对应的相关数据进行替换,而是跳转到对应行的非透明数据处,再替换相应长度的非透明数据,并循环该过程,直到逐行的索引处理完毕。

本发明实施例5还可以对水印索引数据根据计算环境进行并行处理,例如多线程或多CPU的计算环境下,使得处理速度更加快速。

以上所述,仅是本发明的较佳实施例而已,并非对本发明的结构作任何形式上的限制。凡是依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均属于本发明的技术方案范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1