本发明涉及视频监控技术领域,具体而言,涉及一种水印嵌入方法、装置及编解码器。
背景技术:
在视频监控系统中,尤其在公安行业系统中,视频监控画面防泄漏一直是一个很重要的课题。通常地,为了保障信息安全,防止解码器渲染显示的视频图像被手机之类设备偷拍,会在视频监控画面中添加水印,这样手机拍摄的时候,就会把水印拍摄进去,然后通过查看偷拍的视频或者照片上的可见水印,就可以查出是哪个客户端登录者泄漏出去的,起到信息安全溯源的目的。
现有技术中,主要在解码客户端对视频码流解码后得到视频图像,在显示器上渲染前,叠加可见水印;而叠加水印可以通过直接在解码的图像上上根据水印图像内容,逐个像素点的修改像素值。也就是说,可见显示水印都是在视频图像码流解码后,就是说实现信息安全的可见水印内容都是在客户端后期叠加上的,同时,可见水印内容无法带有从视频码流源端、视频码流在整个视频监控系统中的一个或者多个转发路径上的信息,如若视频是在传输过程中泄露的,则根本无法起到溯源的作用。
技术实现要素:
有鉴于此,本发明的目的在于提供一种水印嵌入方法、装置及编解码器,以解决上述问题。
为了实现上述目的,本发明实施例采用的技术方案如下:
第一方面,本发明实施例提供了一种水印嵌入方法,所述水印嵌入方法包括:
获取透明平面;
将获取的安全信息添加至所述透明平面以形成水印平面;
利用获取的编码参数对所述水印平面进行编码操作以生成第一水印码流;
基于所述第一水印码流及获取的输入数据生成输出码流。
第二方面,本发明实施例还提供了一种水印嵌入装置,所述水印嵌入装置包括:
透明平面获取单元,用于获取透明平面;
水印添加单元,用于将获取的安全信息添加至所述透明平面以形成水印平面;
编码单元,用于利用获取的编码参数对所述水印平面进行编码操作以生成第一水印码流;
所述编码单元还用于基于所述第一水印码流及获取的输入数据生成输出码流。
第三方面,本发明实施例还提供了一种编解码器,所述编解码器包括
存储器;
处理器;及
水印嵌入装置,所述水印嵌入装置安装于所述存储器并包括一个或多个由所述处理器执行的软件功能模块,所述水印嵌入装置包括:
透明平面获取单元,用于获取透明平面;
水印添加单元,用于将获取的安全信息添加至所述透明平面以形成水印平面;
编码单元,用于利用获取的编码参数对所述水印平面进行编码操作以生成第一水印码流;
所述编码单元还用于基于所述第一水印码流及获取的输入数据生成输出码流。
本发明实施例提供的水印嵌入方法、装置及编解码器,通过获取透明平面,并将获取的安全信息添加至透明平面以形成水印平面,接着利用获取的编码参数对水印平面进行编码操作以生成第一水印码流,然后基于第一水印码流及获取的输入数据生成输出码流。从而在视频码流的传输过程中,可以通过在透明平面添加传输路径信息及视频图像的使用者信息以形成水印,从而达到显示视频码流从源端到目的端,整个传输路径上的完备信息的效果,进一步达到视频图像泄露时溯源的作用。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本发明实施例提供的编解码器的方框示意图。
图2示出了本发明第二实施例提供的水印嵌入方法的流程图。
图3示出了本发明第三实施例提供的水印嵌入方法的流程图。
图4示出了本发明第三实施例提供的水印嵌入方法的应用示意图。
图5示出了本发明第四实施例提供的水印嵌入方法的流程图。
图6示出了本发明第四实施例提供的水印嵌入方法的一种应用示意图。
图7示出了本发明第四实施例提供的水印嵌入方法的另一种应用示意图。
图8示出了本发明第五实施例提供的水印嵌入方法的流程图。
图9示出了本发明第五实施例提供的水印嵌入方法的一种应用示意图。
图10示出了本发明第六实施例提供的水印嵌入装置功能模块图。
图11示出了本发明第七实施例提供的水印嵌入装置功能模块图。
图12示出了本发明第八实施例提供的水印嵌入装置功能模块图。
图标:100-编解码器;111-存储器;112-处理器;113-通信单元;200-水印嵌入装置;210-透明平面获取单元;220-水印添加单元;230-编码单元;240-分辨率获取单元;250-解码单元。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,术语“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
第一实施例
请参照图1,是编解码器100的方框示意图。所述编解码器100包括水印嵌入装置200、存储器111、处理器112及通信单元113。
所述存储器111、处理器112以及通信单元113各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。所述水印嵌入装置200包括至少一个可以软件或固件(firmware)的形式存储于所述存储器111中或固化在所述编解码器100的操作系统(operatingsystem,os)中的软件功能模块。所述处理器112用于执行所述存储器111中存储的可执行模块,例如所述水印嵌入装置200所包括的软件功能模块及计算机程序等。
其中,所述存储器111可以是,但不限于,随机存取存储器(randomaccessmemory,ram),只读存储器(readonlymemory,rom),可编程只读存储器(programmableread-onlymemory,prom),可擦除只读存储器(erasableprogrammableread-onlymemory,eprom),电可擦除只读存储器(electricerasableprogrammableread-onlymemory,eeprom)等。其中,存储器111用于存储程序或者数据。所述通信单元113用于通过所述网络建立所述编解码器100与其它通信终端之间的通信连接,并用于通过所述网络收发数据。
应当理解的是,图1所示的结构仅为编解码器100的结构应用示意图,所述编解码器100还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。图1中所示的各组件可以采用硬件、软件或其组合实现。
第二实施例
本发明实施例提供了一种水印嵌入方法,用于实现在视频监控系统中,视频图像在整个系统中传输的过程中,使用可见水印的方式,记录视频图像的使用者的信息,以及视频图像传输路径信息。请参阅图2,为本发明实施例提供的水印嵌入方法的流程图。该水印嵌入方法包括:
步骤s201:获取透明平面。
一般地,输入图像通常为ycbcr格式,即输入视频信号包括亮度平面y、色度平面cb和色度平面cr;若输入图像的分辨率为w*h,则亮度平面y的分辨率为w*h,色度平面cb和色度平面cr的分辨率为w/2*h/2。
而为了后续基于透明平面获得的水印平面具备较高的清晰度,该透明平面的分辨率与输入图像的亮度平面y的分辨率一致。
步骤s202:将获取的安全信息添加至透明平面以形成水印平面。
该安全信息主要包括当前用户端的地址信息、使用者信息等。从而,一旦视频码流泄露,可以通过该安全信息查询到泄露处,以起到溯源的作用。
具体地,安全信息与编解码器100所在的载体有关。例如,该编解码器100的载体为摄像机,则安全信息包括摄像机ip地址、摄像机的登录用户名等信息。再例如,该编解码器100的载体为转发服务器,则安全信息包括转发服务器的ip地址、转发服务器登录用户名、视频码流经过的转发路由节点以及转发路由路径等信息。
此外,在本实施例中,该安全信息为预存储的,需要时直接读取即可。
步骤s203:利用获取的编码参数对水印平面进行编码操作以生成第一水印码流。
需要说明的是,水印平面采用帧内预测模式进行编码,从而在对形成的第一水印码流进行解码操作时,无需依赖于其他帧/平面便能完成解码。
具体地,水印平面包括第一区域以及第二区域。其中,第一区域即为安全信息所在的字体区域,而第二区域即为不包含字体区域的透明区域。
在一种可选的实施例中,仅仅对第一区域采用帧内预测模式进行编码,而对第二区域则采用跳过(skip)模式编码,由于跳过模式不将参考索引、运动矢量以及残差等信息写入码流,仅仅写入宏块模式信息或直接通过游程编码将连续的跳过模式宏块数量写入码流,从而得到的第一水印码流的字节数很小,减小对后续得到的输出码流的码率影响。
步骤s204:基于第一水印码流及获取的输入数据生成输出码流。
需要说明的是,生成输出码流依据输入数据的类型不同而有所不同,具体方式在后续内容中具体说明。
但可以理解地,形成的输出码流应当包括第一水印码流以及图像码流。此外,为减小第一水印码流对输出码流的码率影响,第一水印码流应当设置于与图像码流的i帧相邻的位置。
一般地,由于i帧包括亮度平面y、色度平面cb和色度平面cr,第一水印码流则应当紧挨着亮度平面y或者色度平面cr。
还需要说明的是,由于输出码流还包括第一水印码流,因此,可应用本发明实施例提供的水印嵌入方法的编解码器100,均需扩展一种帧/条带(slice)类型,以定义水印码流,方便解码以及编码。
例如,在h.264型编解码器100中,当帧编码为i帧/条带时,nal_unit_type取值为5。此时附加在与i帧相邻的水印码流的nal_unit_type取值可以采用“unspecified”类型的取值范围(24~31)中的值。
比如在h.265型编解码器100中,当帧编码为i帧/条带时,nal_unit_type取值为19(idr_w_radl)或者20(idr_n_lp),此时与i帧相邻的水印码流的nal_unit_type取值可以采用“unspecified”类型的取值范围(48(unspec48)~63(unspec63))中的值。
而对于还未正式发布的h.266/vvc视频编解码器100来说,采用类似的“unspecified”类型nal_unit_type取值传输透明平面码流。
第三实施例
请结合参阅图3及图4,分别为本发明实施例提供的水印嵌入方法的流程图以及应用示意图。需要说明的是,本实施例所提供的水印嵌入方法,应用于一包含第一实施例所述的编解码器100的摄像机。其基本原理及产生的技术效果和上述实施例相同,为简要描述,本实施例部分未提及之处,可参考上述的实施例中相应内容。
步骤s301:获取输入图像亮度平面的分辨率。
直接从摄像机拍摄获得的输入图像获取该输入图像的亮度平面的分辨率。因而可以理解地,在本实施例所述的输入数据包括输入图像。
步骤s302:基于分辨率从预建立的透明平面库中选取透明平面。
一般地,一个摄像机的编解码器100的数量是固定的,且每个编解码器100可处理的输入图像的分辨率是一定的,因此用户可以实现依据编解码器100的参数建立多个不同尺寸的透明平面,以形成透明平面库。然后在依据输入图像获取到的实际分辨率,从透明平面库从选取与该实际分辨率相同的透明平面。
步骤s303:将获取的安全信息添加至透明平面以形成水印平面。
在本实施例中,该安全信息为预存储的,需要时直接读取即可。
步骤s304:利用获取的编码参数对水印平面进行编码操作以生成第一水印码流。
在本实施例中,该编码参数是预存储的,在需要对水印平面进行编码操作时直接获取即可。
步骤s305:利用编码参数对输入图像进行编码操作以形成图像码流。
由于摄像机获取的是输入图像,而非视频码流,因此需要对输入图像也进行编码操作以形成图像码流。
步骤s306:将第一水印码流插入与图像码流的i帧相邻的位置以形成输出码流。
第四实施例
请结合参阅图5及图6,分别为本发明实施例提供的水印嵌入方法的流程图以及应用示意图。需要说明的是,本实施例所提供的水印嵌入方法,应用于一包含第一实施例所述的编解码器100的转发服务器。其基本原理及产生的技术效果和上述实施例相同,为简要描述,本实施例部分未提及之处,可参考上述的实施例中相应内容。
步骤s501:对获取的输入码流包含的i帧进行解码操作以获取输入图像及编码参数。
由于本发明提供的水印嵌入方法,应用于一包含第一实施例所述的编解码器100的转发服务器。而转发服务器通常的输入信号通常为输入码流。因此,在本实施例的输入数据包括输入码流。
此外,由于确定透明平面的尺寸只需得知输入图像亮度平面的分辨率,而亮度平面y的信息位于i帧内,同时,编码参数也存储于i帧内,因此对i帧解码便能直接获取输入图像及编码参数,无需对其他帧进行解码,以减小计算量,提高嵌入水印的速度。
步骤s502:获取输入图像亮度平面的分辨率。
步骤s503:基于分辨率从预建立的透明平面库中选取透明平面。
步骤s504:将获取的安全信息添加至透明平面以形成水印平面。
在本实施例中,该安全信息为预存储的,需要时直接读取即可。
步骤s505:利用获取的编码参数对水印平面进行编码操作以生成第一水印码流。
在本实施例中,该编码参数通过对i帧进行解码操作获得的。
步骤s506:将第一水印码流插入与输入码流包含的图像码流的i帧相邻的位置以形成输出码流。
由于转发服务器接收到的直接为输入码流,因此无需再对输入图像进行编码操作,直接将第一水印码流插入与输入码流包含的图像码流的i帧相邻的位置以形成输出码流即可,可以节约运算时间。
还需要说明的是,在本实施例中,无论转发服务器接收到的输入码流是否已经包含水印码流,均是按照步骤s501~步骤s505的方法生成第一水印码流,但当输入码流已经包含水印码流时,不仅可以将第一水印码流插入与输入码流包含的图像码流的i帧相邻的位置以形成输出码流,还可以将第一水印码流插入与输入码流包含的水印码流相邻的位置以形成输出码流;即第一水印码流既可以与图像码流相邻,也可以与已经存在的水印码流相邻(如图7所示)。可以理解地,此时的输出码流应当包含两段相互独立的水印码流,以显示传输路径的前一级和当前级。
第五实施例
请结合参阅图8及图9,分别为本发明实施例提供的水印嵌入方法的流程图以及应用示意图。需要说明的是,本实施例所提供的水印嵌入方法,应用于一包含第一实施例所述的编解码器100的转发服务器。其基本原理及产生的技术效果和上述实施例相同,为简要描述,本实施例部分未提及之处,可参考上述的实施例中相应内容。
步骤s801:对获取的输入码流包含的i帧参数集进行解码操作以获取编码参数。
需要说明的是,本发明实施例所述的输入码流,包括图像码流以及第二水印码流,即已经预先由其他转发服务器或摄像机嵌设有水印。
由于在本发明实施例中无需利用输入图像亮度平面的分辨率选取透明平面,因此,无需对整个i帧解码,仅仅对i帧参数集进行解码获取编码参数即可。
步骤s802:基于编码参数对输入码流包含的第二水印码流进行解码操作以获取透明平面及第一安全信息。
对第二水印码流进行解码获得的透明平面,其分辨率必然是与输入图像亮度平面的分辨率一致的,因此在输入码流已经包含第二水印码流的情况下,直接对第二水印码流进行解码,获得透明平面及本来携带的第一安全信息。
步骤s803:将第一安全信息及预存储的第二安全信息添加至透明平面以形成水印平面。
其中,第一安全信息为在视频图像传输过程中,前一个或前几个转发节点的安全信息;而预存储的第二安全信息即为当前的转发服务器的安全信息。
通过将第一安全信息及预存储的第二安全信息均添加至透明平面,可以真正实现在视频图像整个传输过程中的溯源问题。
步骤s804:利用获取的编码参数对水印平面进行编码操作以生成第一水印码流。
在本实施例中,该编码参数通过对i帧进行解码操作获得的。
步骤s805:将第一水印码流插入与输入码流包含的图像码流的i帧相邻的位置以形成输出码流。
由于转发服务器接收到的直接为输入码流,因此无需再对输入图像进行编码操作,直接将第一水印码流插入与输入码流包含的图像码流的i帧相邻的位置以形成输出码流即可,可以节约运算时间。
第六实施例
请参阅图10,为本发明实施例提供的水印嵌入装置200的功能模块图。需要说明的是,本实施例所提供的水印嵌入装置200,其基本原理及产生的技术效果和上述实施例相同,为简要描述,本实施例部分未提及之处,可参考上述的实施例中相应内容。该水印嵌入装置200包括:透明平面获取单元210、水印添加单元220、编码单元230。
其中,透明平面获取单元210用于获取透明平面。
可以理解地,在一种可选的实施例中,该透明平面获取单元210可用于执行步骤s201。
水印添加单元220用于将获取的安全信息添加至透明平面以形成水印平面。
可以理解地,在一种可选的实施例中,该水印添加单元220可用于执行步骤s202。
编码单元230用于利用获取的编码参数对水印平面进行编码操作以生成第一水印码流。
可以理解地,在一种可选的实施例中,该编码单元230可用于执行步骤s203。
编码单元230还用于基于第一水印码流及获取的输入数据生成输出码流。
可以理解地,在一种可选的实施例中,该编码单元230可用于执行步骤s204。
第七实施例
请参阅图11,为本发明实施例提供的水印嵌入装置200的功能模块图。需要说明的是,本实施例所提供的水印嵌入装置200,其基本原理及产生的技术效果和上述实施例相同,为简要描述,本实施例部分未提及之处,可参考上述的实施例中相应内容。该水印嵌入装置200还包括分辨率获取单元240。
其中,分辨率获取单元240用于获取输入图像亮度平面的分辨率。
可以理解地,在一种优选的实施例中,分辨率获取单元240可用于执行步骤s301。
透明平面获取单元210用于基于分辨率从预建立的透明平面库中选取透明平面。
可以理解地,在一种可选的实施例中,该透明平面获取单元210可用于执行步骤s302。
编码单元230用于利用获取的编码参数对水印平面进行编码操作以生成第一水印码流。
可以理解地,在一种可选的实施例中,该编码单元230可用于执行步骤s303。
编码单元230还用于利用获取的编码参数对水印平面进行编码操作以生成第一水印码流,并用于利用编码参数对输入图像进行编码操作以形成图像码流,以及将第一水印码流插入与图像码流的i帧相邻的位置以形成输出码流。
可以理解地,在一种可选的实施例中,该编码单元230可用于执行步骤s304、步骤s305以及步骤s306。
第八实施例
请参阅图12,为本发明实施例提供的水印嵌入装置200的功能模块图。需要说明的是,本实施例所提供的水印嵌入装置200,其基本原理及产生的技术效果和上述实施例相同,为简要描述,本实施例部分未提及之处,可参考上述的实施例中相应内容。该水印嵌入装置200还包括解码单元250。
在一种可选的实施例中,解码单元250用于对获取的输入码流包含的i帧进行解码操作以获取输入图像及编码参数。
可以理解地,在一种可选的实施例中,该解码单元250可用于执行步骤s501。
在另一种可选的实施例中,解码单元250用于对获取的输入码流包含的i帧参数集进行解码操作以获取编码参数,并用于基于编码参数对输入码流包含的第二水印码流进行解码操作以获取透明平面及第一安全信息。
可以理解地,在一种可选的实施例中,该解码单元250可用于执行步骤s801及s802。
编码单元230还用于将第一安全信息及预存储的第二安全信息添加至透明平面以形成水印平面。
可以理解地,在一种可选的实施例中,该解码单元250可用于执行步骤s803。
综上所述,本发明实施例提供的水印嵌入方法、装置及编解码器,通过获取透明平面,并将获取的安全信息添加至透明平面以形成水印平面,接着利用获取的编码参数对水印平面进行编码操作以生成第一水印码流,然后基于第一水印码流及获取的输入数据生成输出码流。从而在视频码流的传输过程中,可以通过在透明平面添加传输路径信息及视频图像的使用者信息以形成水印,从而达到显示视频码流从源端到目的端,整个传输路径上的完备信息的效果,进一步达到视频图像泄露时溯源的作用。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,编解码器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。