发明内容
本发明实施例的一个目的旨在提供一种压缩方法、UVC视频设备及电子设备,其解决了现有技术未能够有效地降低在传输过程中的图像数据流的帧数据量大小。
为解决上述技术问题,本发明实施例提供以下技术方案:
在第一方面,本发明实施例公开一种压缩方法,所述压缩方法包括:获取图像数据流及量化系数;根据所述量化系数将所述图像数据流压缩成第一MJPEG数据流,其中,所述量化系数是根据位于所述第一MJPEG数据流之前的第二MJPEG数据流的帧数据量大小确定的。
可选地,所述量化系数是根据位于所述第一MJPEG数据流之前的第二MJPEG数据流的帧数据量大小确定的,包括:获取预设的参考帧数据量;根据所述参考帧数据量及第二MJPEG数据流的帧数据量确定量化系数。
可选地,所述方法还包括:获取间隔帧数采样系数;所述根据所述量化系数将所述图像数据流压缩成第一MJPEG数据流,包括:根据所述量化系数及间隔帧数采样系数,将所述图像数据流压缩成第一MJPEG数据流。
可选地,所述图像数据流包括YUYV数据流。
可选地,在所述根据所述量化系数将所述图像数据流压缩成第一MJPEG数据流的之后,所述方法还包括:根据UVC协议将第一MJPEG数据流进行UVC包的组装,生成UVC数据流。
可选地,在生成UVC数据流之后,所述方法还包括:通过初始化USB1.1控制器,向UVC设备传输所述UVC数据流。
可选地,所述预设的参考帧数据量为30KByte/秒。
在第二方面,本发明实施例提供一种UVC视频设备,所述UVC视频设备包括:摄像头,用于输出图像数据流;MJPEG控制器,用于获取图像数据流及量化系数,并且根据所述量化系数将所述图像数据流压缩成第一MJPEG数据流,其中,所述量化系数是根据位于所述第一MJPEG数据流之前的第二MJPEG数据流的帧数据量大小确定的;USB控制器,所述USB控制器用于根据UVC协议将第一MJPEG数据流进行UVC包的组装,生成UVC数据流。
可选地,在确定量化系数时,所述MJPEG控制器具体用于:获取预设的参考帧数据量;根据所述参考帧数据量及第二MJPEG数据流的帧数据量确定量化系数。
可选地,所述MJPEG控制器还具体用于:获取间隔帧数采样系数;根据所述量化系数及间隔帧数采样系数,将所述图像数据流压缩成第一MJPEG数据流。
可选地,所述摄像头为VGA数字摄像头。
可选地,所述USB控制器为USB1.1控制器。
可选地,初始化所述USB1.1控制器,通过所述USB1.1控制器向UVC设备传输所述UVC数据流。
可选地,所述预设的参考帧数据量为30KByte/秒。
在第三方面,本发明实施例提供一种电子设备,所述电子设备包括:至少一个处理器;以及与所述至少一个处理通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够用于执行上述的压缩方法。
在本发明各个实施例中,通过获取图像数据流及量化系数,并且根据量化系数将图像数据流压缩成第一MJPEG数据流,其中,量化系数是根据位于第一MJPEG数据流之前的第二MJPEG数据流的帧数据量大小确定的。由于图像越复杂,量化精度越高,压缩后的图像数据量越大,因此,为了降低压缩后的图像数据量大小,可以采用可变量化控制,即可以根据第二MJPEG数据流的帧数据量大小确定量化系数,在压缩第一MJPEG数据流时,可以利用量化系数灵活压缩第一MJPEG数据流,从而能够输出占用低带宽的第一MJPEG数据流,从而降低对后续传输带宽的依赖性。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
UVC视频设备是一种使用USB接口传输视频流的视频设备,其能够通过各类USB协议标准的接口将视频流传输给配置对应USB接口的UVC设备。例如,其能够通过USB2.0传输视频流,亦或,通过USB1.1传输视频流。其中,采用USB2.0接口传输数据的最大带宽为48MByte/s,采用USB1.1接口传输数据的最大带宽为1.5M Byte/s。然而,使用USB2.0在满足可靠性传输的条件下传输距离不足2m,而使用USB1.1在满足可靠性传输的条件下传输距离可以达到5M。
UVC视频设备可以为行车记录仪、网络VGA摄像头、数码相机、类比影像转换器、电视棒、静态影像相机及等等。
在一些实施例中,如图2所示,该UVC视频设备200包括摄像头201、MJPEG控制器202及USB控制器203,MJPEG控制器202分别与摄像头201和USB控制器203连接。其中,MJPEG(Motion Joint Photographic Experts Group)是一种国际标准视频编码格式,MJPEG控制器可以对图像数据流进行标准的MJPEG压缩。
UVC视频设备开始工作时,初始化摄像头201,摄像头201开始拍摄图像并且输出图像数据流。MJPEG控制器202获取图像数据流及量化系数,在对该图像数据流进行压缩时,根据量化系数将图像数据流压缩成第一MJPEG数据流。其中,量化系数是根据位于第一MJPEG数据流之前的第二MJPEG数据流的帧数据量大小确定的。USB控制器根据UVC协议将第一MJPEG数据流进行UVC包的组装,生成UVC数据流。UVC数据流是以包为单位,满足UVC格式标准的ISO数据包。
其中,将图像数据流压缩成第一MJPEG数据流的过程中,量化系数可以选择40%、45%、50%、65%以及等等。此处根据量化系数将图像数据流压缩成第一MJPEG数据流的工作过程具有普遍性,被本领域技术人员所熟知的,在此不赘述。
由于量化系数是根据位于所述第一MJPEG数据流之前的第二MJPEG数据流的帧数据量大小确定的,因此,在一些实施例中,每次MJPEG控制器对当前图像数据流进行压缩成当前的第一MJPEG数据流之后,均根据第一MJPEG数据流的帧数据量大小在量化表中确定下一次进行MJPEG压缩时所需的量化系数。
值得注意的是:上述或者下述各个实施例提到的第一MJPEG数据流中的“第一”是用于区分实施例中的第二MJPEG数据流,并不对各个实施例提到的MJPEG数据流的解释造成限制。在一些实施例中,“第一MJPEG数据流”的解释可以作为“第二MJPEG数据流”,“第二MJPEG数据流”的解释可以作为“第一MJPEG数据流”。例如,MJPEG控制器202总共完成了对位于同一时间轴的t1、t2及t3的图像数据流的MJPEG压缩,其中,t1<t2<t3。
MJPEG控制器202压缩位于时间点t1的图像数据流,输出第一MJPEG数据流M1。进一步的,MJPEG控制器202通过判断出第一MJPEG数据流M1的帧数据量大小,从而在下一次压缩位于时间点t2的图像数据流时,将所需的量化系数反馈至位于时间点t2的图像数据流的压缩过程。例如,若第一MJPEG数据流M1的帧数据量为85KByte/秒,此时的量化系数可以为40%,在压缩位于时间点t2的图像数据流时,MJPEG控制器202根据量化系数40%压缩该图像数据流。注意到:此处的第一MJPEG数据流M1在压缩位于时间点t2的图像数据流时,可以被认为是第二MJPEG数据流。同理可得,为了确定压缩位于时间点t3的图像数据流的量化系数,MJPEG控制器202需要判断压缩位于时间点t2的图像数据流而输出的第一MJPEG数据流M2,此处的第一MJPEG数据流M2对于位于时间点t3的图像数据流来言,可以被认为是第二MJPEG数据流。
由于图像越复杂,量化精度越高,压缩后的图像数据量越大,因此,为了降低压缩后的图像数据量大小,可以采用可变量化控制,即可以根据第二MJPEG数据流的帧数据量大小确定量化系数,在压缩第一MJPEG数据流时,可以利用量化系数灵活压缩第一MJPEG数据流,从而能够输出占用低带宽的第一MJPEG数据流。
在一些实施例中,MJPEG控制器202在确定量化系数时,MJPEG控制器202可以将第二MJPEG数据流的帧数据量与预设的参考帧数据量进行比较,从而根据比较的结果确定量化系数。其中,在一些实施例中,用户可以根据业务需求,将量化系数及第二MJPEG数据流的帧数据量与预设的参考帧数据量之间的关系预先构建量化表,并且将构建后的量化表预存于MJPEG控制器202的存储模块中。量化表是MJPEG压缩采用的对图像每个样点的取值范围分成若干区间,并仅用一个数值代表每个区间中的所有取值,量化表是控制MJPEG压缩比的关键,是MJPEG定义的标准数据格式。
MJPEG控制器202在确定量化系数的具体过程如下:在确定量化系数时,MJPEG控制器202获取预设的参考帧数据量,并且根据参考帧数据量及第二MJPEG数据流的帧数据量查询量化表,从而从量化表确定量化系数。表1是本发明实施例提供一种量化控制的示意图。
表1
量化系数 |
JPG图像大小KByte/秒 |
45% |
大于30K |
50% |
大于15K<30K |
62% |
大于10K<15K |
75% |
小于10K |
如表1所示,当MJPEG控制器202判断出第二MJPEG数据流大于30KByte/秒时,确定压缩下一次的图像数据流所需的量化系数为45%。当判断出第二MJPEG数据流位于15KByte/秒和30KByte/秒之间时,确定压缩下一次的图像数据流所需的量化系数为50%。同理可得出第二MJPEG数据流的帧数据量大小处于不同情况所对应的量化系数。
在本实施例中,通过根据第二MJPEG数据流的帧数据量的大小,选择对应的量化系数对图像数据流进行压缩,从而能够有效地、灵活地降低图像数据流传输过程中的帧数据量大小,从而降低对后续传输带宽的依赖性。
为了降低图像压缩时的调节频率,并且使人眼能够适合图像变化的平滑过渡,在一些实施例中,MJPEG控制器202还获取间隔帧数采样系数,在压缩时,根据量化系数及间隔帧数采样系数,将图像数据流压缩成第一MJPEG数据流。例如,MJPEG控制器202需要压缩位于同一时间轴上的时间点t1、t2、t3、t4、t5及t6,MJPEG控制器202确定位于时间点t1的图像数据流对应的量化系数为50%,并且还确定间隔帧数采样系数为5,即(t1,50%,5)。MJPEG控制器202在压缩时间点t2、t3及t4的图像数据流时,根据量化系数50%及间隔帧数采样系数5,分别依次压缩位于时间点t2、t3、t4、t5及t6的图像数据流。
在一些实施例中,摄像头201为VGA数字摄像头,USB控制器为USB1.1控制器。摄像头201能够输出YUYV(PAL)格式的图像数据流,上述各个实施例提到的图像数据流为YUYV数据。YUYV是一种国际标准颜色编码方法(PAL制),具备YUV422,YUV420两种基本格式。USB1.1控制器为符合USB1.1的协议规范,并且用于实现USB1.1传输的控制逻辑。
UVC视频设备200向UVC设备传输图像时,UVC设备要求图像传输的帧率为30帧/秒,而USB1.1的UVC传输带宽为1MByte/秒,因此,为了满足USB1.1的传输带宽,传输给UVC设备的每帧图像的大小应限制为30KByte/秒,并且,如上述各个实施例所提到的预设的参考帧数据量为30KByte/秒。由于传输给UVC设备的图像大小与图像的复杂程度和量化系数关联,即:图像越复杂,量化系数越高,压缩后的图像数据量越大。为了同时满足USB1.1的传输带宽和标准帧率的传输要求,需要对经过MJPEG压缩后的图像大小作出限制,该限制的方法为可变量化控制。如图3所示,MJPEG控制器接收YUYV数据,并且根据量化系数压缩YUYV数据,输出第一MJPEG数据流。进一步的,MJPEG控制器还判断第一MJPEG数据流的帧数据量大小在量化表中确定下一次进行MJPEG压缩时所需的量化系数。表2是本发明实施例提供另一种量化控制的示意图。
表2
如表2所示,“X”为未压缩图像的大小。MJPEG控制器将X与参考帧数据量(30KByte/秒)进行差值比较,根据比较的结果确定量化系数及间隔帧数采样系数,从而得到下一次压缩时需要的量化系数及间隔帧数采样系数,从而使MJPEG控制器调节压缩比,以使其压缩后的图像数据量大小接近或等于30KByte/秒。
在上述各个实施例中,当UVC视频设备200向UVC设备传输UVC数据流时,初始化USB1.1控制器,通过USB1.1控制器203向UVC设备传输UVC数据流。表3是本发明实施例提供一种采用USB1.1控制器的与采用USB2.0控制器的UVC视频设备在传输数据的区别示意图。
表3
如表3所示,较于USB2.0方式,由于USB1.1方式的成本低、传输距离长及图像传输清晰,该UVC视频设备能够替代行车记录仪后置的VGA摄像头。进一步的,USB1.1方式还存在传输数据量小的特点,其能够替代传统网络VGA摄像头。当然,该UVC视频设备还可以根据目的需求,应用在其它技术领域。
作为本发明实施例的另一方面,本发明实施例提供一种压缩方法。如图4所示,该压缩方法包括:
步骤40、获取图像数据流及量化系数;
步骤41、根据量化系数将图像数据流压缩成第一MJPEG数据流,其中,量化系数是根据位于第一MJPEG数据流之前的第二MJPEG数据流的帧数据量大小确定的。
由于压缩方法的实施例和UVC视频设备的实施例是基于同一构思,在内容不互相冲突的前提下,压缩方法的实施例的内容可以引用UVC视频设备的各个实施例,在此不赘述。
在本实施例中,由于图像越复杂,量化精度越高,压缩后的图像数据量越大,因此,为了降低压缩后的图像数据量大小,可以采用可变量化控制,即可以根据第二MJPEG数据流的帧数据量大小确定量化系数,在压缩第一MJPEG数据流时,可以利用量化系数灵活压缩第一MJPEG数据流,从而能够输出占用低带宽的第一MJPEG数据流。
在一些实施例中,量化系数是根据位于所述第一MJPEG数据流之前的第二MJPEG数据流的帧数据量大小确定的,包括:获取预设的参考帧数据量,根据参考帧数据量及第二MJPEG数据流的帧数据量确定量化系数。
在一些实施例中,该压缩方法还包括:获取间隔帧数采样系数,根据量化系数及间隔帧数采样系数,将图像数据流压缩成第一MJPEG数据流。
在一些实施例中,图像数据流包括YUYV数据流。
在一些实施例中,如图5所示,在步骤41之后,该压缩方法还包括:
步骤42、根据UVC协议将第一MJPEG数据流进行UVC包的组装,生成UVC数据流。
在一些实施例中,如图6所示,在步骤42之后,该压缩方法还包括:
步骤43、通过初始化USB1.1控制器,向UVC设备传输UVC数据流。
在一些实施例中,预设的参考帧数据量为30KByte/秒。
作为本发明实施例的又一方面,本发明实施例提供一种电子设备。如图7所示,该电子设备700包括:一个或多个处理器71以及存储器72。其中,图7中以一个处理器71为例。
处理器71和存储器72可以通过总线或者其他方式连接,图7中以通过总线连接为例。
存储器72作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本发明实施例中的压缩方法对应的程序指令/模块。处理器71通过运行存储在存储器72中的非易失性软件程序、指令以及模块,从而执行压缩方法的各种功能应用以及数据处理,即实现上述方法实施例的压缩方法的各个模块的功能。
存储器72可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器72可选包括相对于处理器71远程设置的存储器,这些远程存储器可以通过网络连接至处理器71。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述程序指令/模块存储在所述存储器72中,当被所述一个或者多个处理器71执行时,执行上述任意方法实施例中的压缩方法,例如,执行以上描述的图4至6所示的各个步骤的功能。
本发明实施例的电子设备700以多种形式存在,在执行以上描述的图4至6所示的各个步骤的功能时,上述电子设备700包括但不限于:
(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iPhone)、多媒体手机、功能性手机,以及低端手机等。
(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。
(3)便携式娱乐设备:这类设备可以显示和播放视频内容,一般也具备移动上网特性。该类设备包括:视频播放器,掌上游戏机,以及智能玩具和便携式车载导航设备。
(4)其他具有视频播放功能和上网功能的电子设备。
本发明实施例还提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,例如图7中的一个处理器71,可使得上述一个或多个处理器可执行上述任意方法实施例中的压缩方法,例如,执行上述任意方法实施例中的压缩方法,例如,执行以上描述的图4至图6所示的各个步骤的功能。
以上所描述的装置或设备实施例仅仅是示意性的,其中所述作为分离部件说明的单元模块可以是或者也可以不是物理上分开的,作为模块单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络模块单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。