应用于视频监控***的OSD信息处理方法及其装置
技术领域
本发明涉及通信技术领域中的视频处理技术,特别是涉及一种应用于视频监控***的OSD信息处理方法及其装置。
背景技术
在视频监控的应用中,为便于记录图像场景时间和地点,会在图像中嵌入场名OSD(On Screen Display,即可显式于屏幕的文字信息)和时戳OSD。通过这些OSD信息,可以使该视频的观看者便于了解视频序列中记录的事件发生的时间和地点信息,记录这些信息极大的方便了对图像序列的辨识和图像内容的分析。
目前,在图像序列中添加OSD信息通常是在前端编码前进行,如图1所示,在采集图像中嵌入OSD位图,然后再进行编码。这种实现方案使得OSD位图和采集图像合为一体,成为被编码YUV(YUV为一种颜色编码方法)图像的一部分,视频码流中无法拆离得到OSD信息,码流不经过解码无法得知OSD信息。
可见,目前的OSD信息添加技术,使OSD信息与图像序列的分离性差。
发明内容
本发明提供了一种应用于视频监控***的OSD信息处理方法及其装置,用以解决现有OSD信息添加技术导致OSD信息与图像序列分离性差的问题。
本发明提供的OSD信息处理方法,应用于视频监控***在视频图像中嵌入OSD信息的过程,该方法包括:
生成字符和/或数字形式的OSD信息;
将所述字符和/或数字形式的OSD信息嵌入到编码后的视频码流中;
其中,针对H.264视频流,使用私有网络抽象层单元NALU承载OSD信息,针对MPEG-4视频流和MPEG-2视频流,使用用户数据域user_data()承载OSD信息。
根据本发明的上述方法,所述OSD信息包括数字形式且表示时间的时戳OSD;
将所述OSD信息嵌入到编码后的视频码流中,具体为:将每一帧对应的时戳OSD嵌入到相应帧编码后的视频码流中。
根据本发明的上述方法,所述OSD信息包括字符形式且表示地点的场名OSD;
将所述OSD信息嵌入到编码后的视频码流中,具体为:将每一个I帧对应的场面OSD嵌入到相应I帧编码后的视频码流中。
上述方法中,若P帧和/或B帧所对应的场名OSD发生变化,则还包括:
将场名OSD发生变化的P帧和/或B帧所对应的新的场名OSD嵌入到该P帧和/或B帧编码后的视频码流中。
根据本发明的上述方法,生成所述OSD信息后,还包括:加密所述OSD信息;
将所述OSD信息嵌入到编码后的视频码流中,具体为:将加密后的OSD信息嵌入到编码后的视频码流中。
本发明提供的OSD信息处理装置,应用于视频监控***在视频图像中嵌入OSD信息的过程,该装置包括:
生成单元,用于生成字符和/或数字形式的OSD信息;
嵌入单元,用于将所述生成单元生成的字符和/或数字形式的OSD信息嵌入到编码后的视频码流中;
其中,针对H.264视频流,使用私有网络抽象层单元NALU承载OSD信息,针对MPEG-4视频流和MPEG-2视频流,使用用户数据域user_data()承载OSD信息。
上述装置中,所述OSD信息包括数字形式且表示时间的时戳OSD;
所述嵌入单元,具体用于将每一帧对应的时戳OSD嵌入到相应帧编码后的视频码流中。
上述装置中,所述OSD信息包括字符形式且表示地点的场名OSD;
所述嵌入单元,具体用于将每一个I帧对应的场面OSD嵌入到相应I帧编码后的视频码流中。
上述装置中,所述嵌入单元还用于,若P帧和/或B帧所对应的场名OSD发生变化,则将场名OSD发生变化的P帧和/或B帧所对应的新的场名OSD 嵌入到该P帧和/或B帧编码后的视频码流中。
本发明的上述装置,还包括加密单元;
所述加密单元,用于在所述生成单元生成所述OSD信息后,加密所述OSD信息;
所述嵌入单元具体用于,将所述加密单元加密后的OSD信息嵌入到编码后的视频码流中。
本发明提供的OSD信息处理方法,应用于视频监控***在视频图像中叠加OSD信息的过程,该方法包括:
从视频码流中分离出字符和/或数字形式的OSD信息,其中,针对H.264视频流,使用私有网络抽象层单元NALU承载OSD信息,针对MPEG-4视频流和MPEG-2视频流,使用用户数据域user_data()承载OSD信息;
对所述视频码流进行解码,将分离出的所述字符和/或数字形式的OSD信息叠加到解码后的视频图像数据中。
根据本发明的上述方法,所述OSD信息包括字符形式且表示地点的场名OSD,和/或数字形式且表示时间的时戳OSD;
将所述OSD信息叠加到解码后的视频数据中,具体为:将从每一帧视频码流分离出的场名OSD和时戳OSD叠加到相应帧解码后的视频图像数据中;
或者,将从I帧视频码流分离出的场名OSD和时戳OSD叠加到该I帧解码后的视频数据中,将从该I帧视频码流分离出的场名OSD和从以该I帧为参考帧的P帧或B帧中分离出的时戳OSD分别叠加到该P帧或B帧解码后的视频图像数据中。
根据本发明的上述方法,从视频码流中分离出所述OSD信息后,还包括:解密所述OSD信息;
将所述OSD信息叠加到解码后的视频数据中,具体为:将解密后的OSD信息叠加到解码后的视频图像数据中。
本发明提供的OSD信息处理装置,应用于视频监控***在视频图像中叠加OSD信息的过程,该装置包括:
分离单元,用于从视频码流中分离出字符和/或数字形式的OSD信息,其中,针对H.264视频流,使用私有网络抽象层单元NALU承载OSD信息,针对MPEG-4视频流和MPEG-2视频流,使用用户数据域user_data()承载OSD信息;
叠加单元,用于对所述视频码流进行解码,将所述分离单元分离出的所述字符和/或数字形式的OSD信息叠加到解码后的视频数据中。
根据本发明的上述装置,所述OSD信息包括字符形式且表示地点的场名OSD,以及数字形式且表示时间的时戳OSD;
所述叠加单元具体用于,将从每帧视频码流分离出的场名OSD和时戳OSD叠加到相应帧解码后的视频数据中;或者,将从I帧视频码流分离出的场名OSD和时戳OSD叠加到该I帧解码后的视频数据中,将从该I帧视频码流分离出的场名OSD和从以该I帧为参考帧的P帧或B帧中分离出的时戳OSD分别叠加到该P帧或B帧解码后的视频数据中。
本发明的上述装置,还包括解密单元;
所述解密单元,用于在所述分离单元从视频码流中分离出所述OSD信息后,解密所述OSD信息;
所述叠加单元具体用于,将所述解密单元解密后的OSD信息叠加到解码后的视频数据中。
本发明的有益技术效果包括:
本发明通过在编码后的视频码流中嵌入字符或数字形式的OSD信息,与现有技术中将OSD信息作为图像嵌入到编码前的视频数据中相比,提高了OSD信息与图像序列的分离性。
附图说明
图1为现有技术中OSD信息以位图形式添加到采集图像的示意图;
图2为本发明实施例中OSD信息以字符或数字形式嵌入码流的示意图;
图3为本发明实施例中在每帧码流前面添加场名OSD和时戳OSD的示意图;
图4为本发明实施例中仅在I帧中添加场名OSD的示意图;
图5为本发明实施例中当GOP内部的P帧或B帧的场面OSD发生变化时添加OSD信息的示意图;
图6为本发明实施例中OSD数据结构的示意图;
图7为本发明实施例提供的从码流中分离出OSD信息并叠加到解码后的视频图像数据中的流程示意图;
图8为本发明实施例提供的OSD信息处理装置的结构示意图之一;
图9为本发明实施例提供的OSD信息处理装置的结构示意图之二。
具体实施方式
为解决现有技术存在的上述问题,本发明实施例提供了一种应用于视频监控***的OSD信息处理方案。该技术方案在视频码流语法范围内,采用私有数据形式,将OSD信息嵌入到码流中进行传递,在解码端通过解码器恢复OSD信息,然后再叠加到解码图像中,从而实现了OSD信息与图像信息的分离。
下面结合附图对本发明实施例的实现过程进行详细描述。
如图2所示,本发明实施例中,将OSD信息以字符码或者数字形式由视频编码器***到视频码流中,将OSD信息添加到视频码流之后,可将添加有OSD信息的视频码流进行传输或生成文件保存,从而可以不用解码视频码流,直接从视频码流中拆离得到OSD信息。其中,每帧图像的OSD信息可以以码流语法允许的私***流形式嵌入视频码流。OSD信息的嵌入位置可以是在视频帧码流的前面或中间或其他位置,只要符合相应的编码标准,能够在视频解码过程中识别出来即可。OSD信息可包括场名OSD、时戳OSD或其他OSD信息的一种或多种,其中,场名OSD是指场景地点信息,用于标识相应图像场景发生的地点,如“电梯”、“门口”等;时戳OSD是指时间信息,用于标识相应图像场景发生的时间。优选的,在每帧码流中都要添加时戳OSD。
通常情况下,在每帧视频码流中添加OSD信息。具体的,如图3所示,视频编码器在进行视频编码时,可在每帧视频码流的前面,分别***场名OSD和时戳OSD。
当场名长时间不发生切换的情况下,也可只在I帧的视频码流中添加OSD信息。具体的,如图4所示,视频编码器在一帧编码开始时判断当前帧是否是I帧,如果是I帧,则在该I帧码流前面***场名OSD和时戳OSD;如果当前帧不是I帧(如P帧或B帧),则在当前帧的码流前面***时戳OSD。这样,可以减少嵌入场名OSD的处理操作,还可以减少所嵌入的 OSD信息以便减少最终的视频码流信息量,即减少了冗余信息的传递,从而减小带宽的占用,同时也不会影响P帧或B帧中显示该OSD信息。
当嵌入OSD信息的策略是只在I帧的视频码流中添加OSD信息时,但GOP(Group of Pictures,画面组)内部的某一P帧或B帧的OSD信息发生变化,可在切换帧(即开始使用新的场名的帧)中添加变化后的OSD信息。具体的,如图5所示,当需要在GOP内部的某一P帧或B帧中使用新的场名OSD时,视频编码器在该P帧或B帧编码后的视频码流中***新的场名OSD,并***时戳OSD;否则,按照图4所示流程执行,即,在该P帧或B帧编码后的视频码流中***时戳OSD。
下面结合视频监控中常用的MPEG-2、MPEG-4和H.264三种码流形式,说明在视频流中添加OSD信息的具体实现过程。
针对H.264视频流,可使用私有NALU(网络抽象层单元)承载OSD信息。H.264的NALU用于对编码数据进行打包,NALU由1字节的头、3个定长的字段和一个字节数不定的编码段组成。头标的语法是:NALU类型(5bit)、重要性指示位(2bit)、禁止位(1bit)。其中,NALU类型1~12由H.264使用,24~31可由H.264以外的应用使用。本发明实施例中,可使用H.264标准中未定义的NALU类型[24,31]之间的一个值作为承载OSD信息的NALU的nal_unit_type,即,用该值指示出NALU的净荷部分承载的是OSD信息。具体的,可在I帧前添加承载有场名信息的NALU,在每帧前面添加承载有时戳信息的NALU。当场名在GOP内部发生切换时,在切换帧前添加承载有新场名的NALU和承载有时戳的NALU。
针对MPEG-4视频流,可使用user_data()(即用户数据域)承载OSD信息。具体的,可在I帧前添加承载有场名的user_data(),在每帧前面添加承载有时戳的user_data()。当场名在GOP内部发生切换时,在切换帧前添加承载有新的场名的user_data()和承载有时戳的user_data()。本发明实施例中,可按照ISO/IEC 14496-2标准,使用user_data_start_code(B2)表示user_data()。
针对MPEG-2视频流,可使用user_data()承载OSD信息。具体的,可 在I帧前面添加承载有场名的user_data(),在每帧前添加承载有时戳的user_data()。当场名在GOP内部发生切换时,在切换帧前添加承载有场名的user_data()和承载有时戳的user_data()。本发明实施例中,按照ISO/IEC13381-2标准,可使用user_data_start_code(B2)表示user_data()。
本发明的上述各实施例中,为了提高OSD信息的安全性,防止在传输、存储、解码过程中对OSD信息的篡改,可将OSD信息加密后再嵌入到视频码流中。
承载OSD信息的MPEG-2、MPEG-4的user_data()和H.264的NALU可采用相同的数据结构,所采用的数据结构可定义如下:
typedef struct OSD{
size;/*整个OSD结构的字节数*/
type,/*OSD类型,字符型,“Nam”表示场名,“TC”表示时戳*/
encryption,/*加密方式*/
header;/*OSD头部*/
payload[ ],/*场名数据或时间数据*/
如图6所示,struct OSD(私有数据结构)包括size(尺寸)、type(类型)、encryption(加密方式)、header(头部)和payload(净荷)五部分。其中,header中说明OSD的位置和特征(如透明性、字体),如场名字体可用UTF-8字符表示,时戳可直接用数字表示;payload中承载OSD的内容数据,对于场名OSD可采用字符编码,对于时戳OSD可采用数字;encryption为可选项,如果采用加密算法对OSD信息进行了加密处理,则需要该项以指示出所采用的加密方式,以便在视频解码端可采用相应解密算法处理以得到OSD信息。
当需要播放采用上述方法得到的视频时,如图7所示,可包括如下步骤:
步骤701、从视频码流中分离出字符或数字形式的OSD信息。
步骤702、对所述视频码流进行解码,将所述字符或数字形式的OSD信息叠加到解码后的视频图像数据中。
上述流程中,如果在视频数据编码时,将场名OSD和时戳OSD嵌入每 帧编码数据,则在播放时可从每帧视频码流分离出的场名OSD和时戳OSD叠加到相应帧解码后的视频图像数据中;如果在视频数据编码时,在I帧编码数据中嵌入场名OSD和时戳OSD,在以该I帧为参考帧的P帧或B帧中嵌入时戳OSD,则此时将从I帧视频码流分离出的场名OSD和时戳OSD叠加到该I帧解码后的视频数据中,将从该I帧视频码流分离出的场名OSD和从以该I帧为参考帧的P帧或B帧中分离出的时戳OSD分别叠加到该P帧或B帧解码后的视频图像数据中。
进一步的,如果在视频数据编码中对OSD信息进行了加密处理,则在上述流程中,从视频码流中分离出所述OSD信息后,还要先解密所述OSD信息,再将解密后的OSD信息叠加到解码后的视频图像数据中。
视频解码器的性能通常比较充裕,因此,本发明实施例中,虽然在解码视频码流后需要将OSD信息叠加到解码后的码流中,但不会影响实际显示效果,或者所造成的影响可忽略不计。
通过以上描述可以看出,与现有技术中在视频帧中嵌入OSD位图相比,本发明实施例具有以下优势:
(1)本发明实施例采用字符或数字形式的OSD信息,因此容易与图像信息分离,不对图像解码就可以直接从视频码流中得到OSD信息,从而提高了OSD信息与图像信息的分离性,若要对图像进行尺寸变换等处理也不会影响OSD信息的完整性。而现有技术中,由于OSD信息采用位图直接嵌入编码前的采集图像,并与采集图像一起进行编码,导致OSD与图像无法分离,如果在后期的图像处理和分析中,若想去掉OSD信息,只能采用打马赛克或糊化等方式,使OSD区域图像效果变差,若对图像进行变换处理,如进行下采样变换,会使得OSD信息显示效果很差,甚至无法分辩,达不到信息添加的目的,也会影响OSD信息的完整性。
(2)本发明实施例中,在对添加了OSD信息的码流解码显示时,可不将OSD信息叠加到解码后的图像中,因而原本可能被OSD信息覆盖的图像不会造成损伤,覆盖区域图像可恢复。而现有技术中,OSD信息采用位图直接嵌入编码前的采集图像,导致被OSD位图覆盖的原有图像内容被 破坏,且不可恢复。
(3)通常OSD字体边缘比较锐利,但本发明实施例中无需对OSD信息进行视频编码,因此可以保证OSD字体边缘清晰,不存在蚊式噪声。而现有技术中,由于需要对OSD位图进行视频编码,因此导致OSD字体边缘比较锐利,经过数字编码后会引入明显的蚊式噪声。
(4)本发明实施例中,可通过OSD结构中的header,任意设置或修改SOD信息在视频图像中的显示位置。而现有技术中,一旦在采集图像中嵌入SOD位图,将不可能对其任意改变位置而又不影响采集图像。
(5)由于本发明实施例中,OSD信息不需要前端以位图形式添加到采集图像中,因此可以将节省的处理器性能用于编码器算法处理,从而可提高编码器性能和图像效果。而现有技术中,前端编码器一般采用嵌入式CPU、DSP、或者SOC添加OSD位图,耗费很大性能,同时也减少编码器性能或者CPU性能。
基于相同的技术构思,本发明实施例还提供了一种OSD信息处理装置,可应用于上述实施例的OSD信息嵌入处理流程。
如图8所示,该OSD信息处理装置可包括:生成单元801、嵌入单元802,其中:
生成单元801,用于生成字符和/或数字形式的OSD信息;
嵌入单元802,用于将生成单元801生成的字符和/或数字形式的OSD信息嵌入到编码后的视频码流中。
OSD信息可包括数字形式且表示时间的时戳OSD;嵌入单元802可将每一帧对应的时戳OSD嵌入到相应帧编码后的视频码流中。
OSD信息可包括字符形式且表示地点的场名OSD;嵌入单元802可将每一个I帧对应的场面OSD嵌入到相应I帧编码后的视频码流中。
若P帧和/或B帧所对应的场名OSD发生变化,则嵌入单元802还可将场名OSD发生变化的P帧和/或B帧所对应的新的场名OSD嵌入到该P帧和/或B帧编码后的视频码流中。
上述OSD信息处理装置还可包括加密单元803,该单元可在生成单元 801生成所述OSD信息后,加密所述OSD信息。相应的,嵌入单元802可将加密单元803加密后的OSD信息嵌入到编码后的视频码流中。
基于相同的技术构思,本发明实施例还提供了一种OSD信息处理装置,可应用于上述实施例的OSD信息叠加处理流程。
如图9所示,该OSD信息处理装置可包括:分离单元901、叠加单元902,其中:
分离单元901,用于从视频码流中分离出字符和/或数字形式的OSD信息;
叠加单元902,用于对所述视频码流进行解码,将分离单元901分离出的所述字符和/或数字形式的OSD信息叠加到解码后的视频数据中。具体的,根据在视频码流中嵌入OSD信息的方式,叠加单元902可将从每帧视频码流分离出的场名OSD和/或时戳OSD叠加到相应帧解码后的视频数据中;或者,将从I帧视频码流分离出的场名OSD和时戳OSD叠加到该I帧解码后的视频数据中,将从该I帧视频码流分离出的场名OSD和从以该I帧为参考帧的P帧或B帧中分离出的时戳OSD分别叠加到该P帧或B帧解码后的视频数据中。
上述OSD信息处理装置还包括解密单元903,该单元可在分离单元901从视频码流中分离出所述OSD信息后,解密所述OSD信息。相应的,叠加单元902可将解密单元903解密后的OSD信息叠加到解码后的视频数据中。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。