图片水印添加方法、电子装置及计算机可读存储介质与流程

文档序号:15848944发布日期:2018-11-07 09:32阅读:190来源:国知局
图片水印添加方法、电子装置及计算机可读存储介质与流程

本发明涉及视频编解码技术领域,尤其涉及一种图片水印添加方法、电子装置及计算机可读存储介质。

背景技术

目前,在已经编码的视频中添加水印,常规的做法是把压缩的原视频解码为原始视频格式,叠加水印图片到视频中的某个固定区域,然后重新编码。由于只是为了在原视频中添加水印,重新编码的视频要尽量保持分辨率、码率和帧率与原视频保持一致,因此这种做法实际上是一种解码再完全编码的转码。

采用这种方法存在以下几个缺点:(1)原视频的gop结构被改变,导致视频的某些特性被改变;(2)编码后的视频码率无法与源流时刻保持一致;(3)原视频质量存在较大损失,主要是因为gop结构发生改变以及二次编码损失,导致编码后图像质量下降;(4)完全转码的计算量太大,cpu负载过高或转码时间较长。



技术实现要素:

有鉴于此,本发明提出一种图片水印添加方法、电子装置及计算机可读存储介质,以解决至少一个上述技术问题。

首先,为实现上述目的,本发明提出一种图片水印添加方法,该方法包括步骤:

解码器将源视频流解码为原始视频格式,得到解码后的视频流;

所述解码器将源视频流解码出的视频头信息、slice头信息及宏块信息发送至编码器,所述视频头信息为sps/pps信息;

叠加水印图片到所述解码后的视频流中的预定区域,得到添加水印后的视频流;

所述编码器接收所述视频头信息、slice头信息及宏块信息;及

所述编码器根据所述视频头信息、slice头信息及宏块信息对所述添加水印后的视频流进行编码。

可选地,所述编码器根据所述视频头信息、slice头信息及宏块信息对所述添加水印后的视频流进行编码的步骤包括:

采用与接收到的所述sps/pps信息相同的sps/pps对所述添加水印后的视频流进行编码;

采用与接收到的所述slice头信息相同的slice配置对所述添加水印后的视频流当前slice进行编码;

判断当前宏块是否与水印区域相关;

当相关时,对所述添加水印后的视频流当前宏块进行重新编码;

当不相关时,采用接收到的所述宏块信息对所述添加水印后的视频流当前宏块进行同样配置的编码。

可选地,所述当前宏块与水印区域相关包括两种情况:

当前宏块位于水印覆盖的区域;或

当前宏块为帧间宏块,且参考了水印区域的图像或者运动矢量预测受到相邻的已判为水印相关宏块的影响。

可选地,所述宏块信息包括编码模式、运动矢量和量化参数。

可选地,所述对所述添加水印后的视频流当前宏块进行重新编码的步骤包括:

对当前宏块重新进行编码模式选择;

若所述当前宏块是帧间类型的宏块,则重新进行运动估计选择最佳运动矢量;

根据所述编码模式和运动矢量的选择和从所述解码器接收到的量化参数对所述当前宏块进行编码。

此外,为实现上述目的,本发明还提供一种电子装置,包括存储器、处理器,所述存储器上存储有可在所述处理器上运行的图片水印添加程序,所述图片水印添加程序被所述处理器执行时实现如下步骤:

解码器将源视频流解码为原始视频格式,得到解码后的视频流;

所述解码器将源视频流解码出的视频头信息、slice头信息及宏块信息发送至编码器,所述视频头信息为sps/pps信息;

叠加水印图片到所述解码后的视频流中的预定区域,得到添加水印后的视频流;

所述编码器接收所述视频头信息、slice头信息及宏块信息;及

所述编码器根据所述视频头信息、slice头信息及宏块信息对所述添加水印后的视频流进行编码。

可选地,所述编码器根据所述视频头信息、slice头信息及宏块信息对所述添加水印后的视频流进行编码的步骤包括:

采用与接收到的所述sps/pps信息相同的sps/pps对所述添加水印后的视频流进行编码;

采用与接收到的所述slice头信息相同的slice配置对所述添加水印后的视频流当前slice进行编码;

判断当前宏块是否与水印区域相关;

当相关时,对所述添加水印后的视频流当前宏块进行重新编码;

当不相关时,采用接收到的所述宏块信息对所述添加水印后的视频流当前宏块进行同样配置的编码。

可选地,所述当前宏块与水印区域相关包括两种情况:

当前宏块位于水印覆盖的区域;或

当前宏块为帧间宏块,且参考了水印区域的图像或者运动矢量预测受到相邻的已判为水印相关宏块的影响。

可选地,所述宏块信息包括编码模式、运动矢量和量化参数。

可选地,所述对所述添加水印后的视频流当前宏块进行重新编码的步骤包括:

对当前宏块重新进行编码模式选择;

若所述当前宏块是帧间类型的宏块,则重新进行运动估计选择最佳运动矢量;

根据所述编码模式和运动矢量的选择和从所述解码器接收到的量化参数对所述当前宏块进行编码。

进一步地,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有图片水印添加程序,所述图片水印添加程序可被至少一个处理器执行,以使所述至少一个处理器执行如上述的图片水印添加方法的步骤。

相较于现有技术,本发明所提出的图片水印添加方法、电子装置及计算机可读存储介质,可以利用解码器解码源视频流时得到的解码信息,并且根据具体宏块的位置决定是否利用这部分信息来简化编码器的决策过程。由于通常水印区域相对于整个视频图像来说很小,大部分宏块都是与水印区域无关的,这部分与水印无关的宏块的编码决策过程被省略掉,可以带来巨大的计算量的节省。

并且,使用本发明,上述现有技术在实际应用中的四个缺陷都可以得到解决,即存在以下有益效果:(1)编码后的视频的gop结构与原视频完全一致,不会改变视频的属性;(2)编码后的视频的码率与原视频基本时刻保持一致,也不需要原视频携带码率相关的信息;(3)可以大幅提升添加水印后的视频质量;(4)可以大幅降低添加水印转码的计算量,降低计算过程中的cpu负载。

附图说明

图1是本发明电子装置较佳实施例的架构示意图;

图2是本发明电子装置另一种形式的架构示意图;

图3是本发明中解码器和编码器之间信息传递的示意图;

图4是本发明图片水印添加方法较佳实施例的流程示意图;

图5是图4中步骤s50的具体细化流程示意图;

图6是本发明中与水印区域不相关的宏块转码的示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。

参阅图1所示,是本发明实现图片水印添加方法的电子装置1较佳实施例的示意图。

在本实施例中,电子装置1可以是服务器、智能手机、平板电脑、个人电脑、便携计算机以及其它具有运算功能的电子设备。

所述电子装置1包括:存储器11、处理器13、网络接口15及通信总线17。其中,网络接口15可选地可以包括标准的有线接口、无线接口(如wi-fi接口)。通信总线17用于实现这些组件之间的连接通信。

存储器11至少包括一种类型的可读存储介质。所述至少一种类型的可读存储介质可为如闪存、硬盘、多媒体卡、卡型存储器等的非易失性存储介质。在一些实施例中,所述存储器11可以是所述电子装置1的内部存储单元,例如该电子装置1的硬盘。在另一些实施例中,所述存储器11也可以是所述电子装置1的外部存储单元,例如所述电子装置1上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。

在本实施例中,所述存储器11可以用于存储安装于所述电子装置1的应用软件及各类数据,例如图片水印添加程序10的程序代码及其运行过程中产生的相关数据。

处理器13在一些实施例中可以是一中央处理器(centralprocessingunit,cpu)、微处理器或其它数据处理芯片,用于运行存储器11中存储的程序代码或处理数据。

图1仅示出了具有组件11-17以及图片水印添加程序10的电子装置1,但是应理解的是,图1并未示出电子装置1的所有组件,可以替代实施更多或者更少的组件。

进一步参阅图2,图2所示是所述电子装置1另一种形式的架构示意图。

在图2中,所述电子装置1包括解码器100、水印添加单元200及编码器300。

解码器100用于对源视频流进行解码,水印添加单元200用于在解码后的视频流的预定区域添加图片水印,编码器300用于对添加水印后的视频流进行编码。

在图1和图2所示的电子装置1实施例中,作为一种计算机存储介质的存储器11中存储图片水印添加程序10的程序代码,处理器13执行所述图片水印添加程序10的程序代码时,实现所述解码器100、水印添加单元200及编码器300的功能,从而实现如下步骤:

(1)解码器100将源视频流解码为原始视频格式。

(2)解码器100将源视频流解码出的视频头信息、slice头信息及宏块信息发送至编码器300。其中,所述视频头信息为sps/pps信息。

(3)水印添加单元200叠加水印图片到解码后的视频流中的预定区域。

(4)编码器300接收所述视频头信息、slice头信息及宏块信息。

(5)编码器300根据所述视频头信息、slice头信息及宏块信息对添加水印后的视频流进行编码。具体包括:

采用与接收到的sps/pps信息相同的sps/pps对添加水印后的视频流进行编码;采用与接收到的slice头信息相同的slice配置对添加水印后的视频流当前slice进行编码;判断当前宏块是否与水印区域相关;当相关时,对添加水印后的视频流当前宏块进行重新编码;当不相关时,采用接收到的宏块信息对添加水印后的视频流当前宏块进行同样配置的编码。

参阅图3所示,为所述解码器100和编码器300之间信息传递的示意图。上述步骤的详细说明请参阅下述图4和图5及相关描述,在此不再赘述。

参阅图4所示,是本方案提供的图片水印添加方法较佳实施例的流程示意图。在本实施例中,根据不同的需求,图4所示的流程图中的步骤的执行顺序可以改变,某些步骤可以省略。所述图片水印添加方法包括以下步骤:

步骤s10,解码器100将源视频流解码为原始视频格式。

具体地,为了在视频中添加水印,需要由解码器100先对源视频流(图3中输入流)进行解码。此步骤可以采用现有的解码方法将源视频流解码为原始视频格式,在此不再赘述。

步骤s20,解码器100将源视频流解码出的视频头信息、slice头信息及宏块信息发送至编码器300。

具体地,所述视频头信息为sps/pps信息,包含视频宽高等基本特征数据,通常在编码器300初始化时需要用这些参数。在本实施例中,解码器100直接将源视频流解码出来的sps/pps信息传递给编码器300,使得编码器300可以采用与源视频流相同的sps/pps去进行编码。

slice头信息包含每个视频slice所用到的一些编码配置信息,例如帧显示顺序poc和参考帧数等。所述slice是h.264编码的图像划分单位,一帧图像可以划分为多个slice,也可以作为一个slice。很多情况下为了简化编解码,一帧图像只对应一个slice。在本实施例中,在每个slice进行解码时,同样将源视频流中对应该slice的头信息解码出来直接传递给编码器300,以使编码器300可以进行相同配置的编码。

宏块(macroblock,mb)是视频编码的基本单位,在h.264标准中,原始数字图像按照光栅扫描顺序(从左到右,然后从上到下)划分成多个的16x16像素的宏块,以宏块为单位进行帧内、帧间预测、dct变换和量化,对变换量化后的残差系数进行游程扫描,最后进行熵编码。通常,编码器300在宏块层编码时的工作就是进行决策,选择最合适的宏块编码模式等信息进行宏块的预测变换和熵编码。在本实施例中,在每个宏块进行解码时,需要向编码器300传递宏块编码的一些相关参数,例如编码模式(intramode,im)、运动矢量(motionvector,mv)、量化参数(quantificationparametric,qp)等等。

步骤s30,叠加水印图片到解码后的视频流中的预定区域。

具体地,当解码器100将源视频流解码为原始视频格式后,水印添加单元200叠加水印图片到解码后的视频流中的预定区域,实现水印添加。

步骤s40,编码器300接收所述视频头信息、slice头信息及宏块信息。所述视频头信息、slice头信息及宏块信息在所述解码器100和编码器300之间的具体传递过程参阅图3所示。

步骤s50,编码器300根据所述视频头信息、slice头信息及宏块信息对添加水印后的视频流进行编码。

具体地,参阅图5,图5所示为步骤s50的具体细化流程图。在本实施例中,步骤s50具体包括:

步骤s500,采用与接收到的sps/pps信息相同的sps/pps对添加水印后的视频流进行编码。

具体地,sps/pps信息通常在编码器300初始化时需要用到,当编码器300接收到解码器100发送的sps/pps信息后,在对添加水印后的视频流编码时,采用与源视频流相同的sps/pps去进行编码。

步骤s502,采用与接收到的slice头信息相同的slice配置对添加水印后的视频流当前slice进行编码。

具体地,当编码器300接收到解码器100发送的每个slice的头信息后,在对添加水印后的视频流中每个slice编码时,采用与源视频流相同的slice配置对当前slice进行编码。

步骤s504,判断当前宏块是否与水印区域相关。当相关时,执行步骤s506;当不相关时,执行步骤s508。

具体地,当编码器300接收到解码器100发送的每个宏块的信息后,在编码时需不需要使用这些信息,以及具体使用哪些信息,取决于当前宏块与水印区域是否相关。在本实施例中,根据宏块的位置来判断是否与水印区域相关。其中,宏块与水印区域相关分为两种情况:(1)当前宏块位于水印覆盖的区域;(2)当前宏块为帧间宏块,且参考了水印区域的图像或者运动矢量预测受到相邻的已判为水印相关宏块的影响。

针对以上两种情况,具体判断方式为:(1)根据运动矢量计算当前宏块所参考的区域的位置,判断该区域是否与水印矩形区域重叠,若重叠,则相关;(2)当前编码宏块是p或者bskip宏块,且其相邻宏块(左侧、左上、上方、右上)被重新进行模式选择和运动估计后再编码。其中,第(2)种情况是由于相邻宏块重新进行模式选择和运动估计后运动矢量可能发生变化,当前宏块skip模式的运动矢量是通过这些相邻宏块的运动矢量预测出来的,因而可能会被改变。

步骤s506,对添加水印后的视频流当前宏块进行重新编码。

具体地,若当前编码的宏块被判断出与水印区域相关,则由编码器300重新编码。此时,仅仅使用解码器100传递过来的量化参数qp,其他如编码模式和运动矢量等信息需要重新计算和选择。所述重新编码指的是对当前编码宏块重新进行编码模式选择,如果是帧间类型的宏块,还需要重新进行运动估计选择最佳运动矢量,但量化参数qp仍然使用与源视频流相同的参数。编码器300根据所述编码模式和运动矢量的选择和从所述解码器100接收到的量化参数对所述当前宏块进行编码。

步骤s508,采用接收到的宏块信息对添加水印后的视频流当前宏块进行相同配置的编码。

具体地,若当前编码的宏块被判断出与水印区域不相关,则由编码器300直接采用解码器100解码并传递过来的宏块信息进行相同配置的编码,即使用接收到的当前宏块的所有信息进行预测、dct变换量化和熵编码。

参阅图6所示,为与水印区域不相关的宏块转码的示意图。在图6中,粗线部分表示的就是在熵解码(vld)之后需要从解码器100传递给编码器300的数据,解码器100解码得到这些数据之后除了解码使用之外,还传递给编码器300,使其可以使用这些数据直接对当前宏块进行编码,而不需要重新进行模式选择和运动估计等。实际应用中需要传递的数据不止这些语法元素相关的数据,还包括一些通过这些语法元素计算出来的中间变量。

经过上述编码过程,可以得到完成水印添加的视频进行输出(图3中的输出流),在实现水印添加的同时尽量保证编码后的视频与原视频一致,且可以提高输出的视频的图像质量。

本发明还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有图片水印添加程序10,所述图片水印添加程序10可被至少一个处理器执行,以使所述至少一个处理器执行如上述的图片水印添加方法的步骤。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台客户端(可以是手机,计算机,电子装置,空调器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

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