一种视频数据压缩方法

文档序号:7958794阅读:112来源:国知局
专利名称:一种视频数据压缩方法
技术领域
本发明涉及图像压缩技术领域,特别是一种用于键盘、视频及鼠标(KVM)的视频数据压缩方法。
背景技术
众所周知,键盘、视频及鼠标(Keyboard Video Mouse,KVM)是一种用于服务器远端管理的技术,在KVM技术中,服务器的输入/输出设备(键盘、视频及鼠标)被放在远端。在使用过程中,将键盘、视频和鼠标的信息进行一定的处理后,通过网络传输到一台或多台服务器,实现从远端对于这些服务器的完全控制和管理。
图1为KVM的一种实用模式。图中的远端控制台(Management Station)通过局域网集线器(LAN Hub)与服务器主板(Server Main Board)相连接。在服务器端,通用串行总线接口(USB I/F)将键盘和鼠标数据传输给KVM模块,视频图像阵列接口(VGA I/F)将视频数据传输给KVM模块,KVM模块将这些键盘、视频和鼠标的数据实时传输到远端控制台。在传输过程中,需要由KVM模块和通过智能平台管理总线(IPMB)与KVM模块连接的底板管理控制器(BMC)对视频图像数据进行压缩处理,而控制台会将接收的压缩图像数据解压缩后显示。
对于KVM视频图像数据,可以采用视频高密光盘(VCD)的数据处理方式进行压缩。但是该技术的算法比较复杂,需要专用芯片,并且占用较大存储空间,所以成本比较高。并且VCD技术为有损压缩,会损失原图的细节。因此VCD技术无法与服务器管理领域技术融合,从而无法应用到KVM领域。
另外,还可以采用联合图像专家组(JPEG)图像压缩算法对KVM视频数据进行压缩。JPEG算法是专用于图像处理的压缩算法,图像压缩率很高。但是,这种压缩算法复杂,逻辑实现成本较高。并且JPEG算法为有损压缩,会损失原图的细节。另外,由于JPEG压缩算法复杂,所以压缩时间较长,图像的实时性相对较差。

发明内容
本发明提出了一种针对KVM应用的视频数据压缩方法,用以降低KVM功能实现的成本,提高KVM的图像传输实时性。
根据上述目的,本发明提供了一种视频数据压缩方法,该方法包括对于第一帧图像,执行如下处理A1.将第一帧图像数据进行编码,得到第一帧图像编码数据;A2.将第一帧图像数据和第一帧图像编码数据当中数据长度较小的数据作为结果输出;对于第一帧之后的图像,执行如下处理B1.将当前帧图像数据与前一帧图像数据相比较,获取两者的差异数据;B2.分别对当前帧图像数据和差异数据进行编码,得到当前帧图像编码数据和编码的差异数据;B3.将当前帧图像数据、当前帧图像编码数据、差异数据以及编码的差异数据当中数据长度最小的数据作为结果输出。
步骤B1中所述比较为将当前帧图像数据与前一帧图像数据相减,所述差异数据为将当前帧图像数据与前一帧图像数据相减得到的数据。或者,所述比较为将当前帧图像数据与前一帧图像数据做异或运算,所述图像数据为将当前帧图像数据与前一帧图像数据做异或运算得到的数据。
所述图像数据为第一格式的图像数据;所述步骤A1和/或B1之前进一步包括将从视频接口获取的图像数据转换为第一格式的图像数据。
所述第一格式的图像数据为8比特彩色图像数据,所述从视频接口获取的图像数据为24比特真彩图像数据。
步骤A1和/或步骤B2中所述的编码为行程编码。
所述编码的数据编码方式为用1比特表示是否压缩;用M比特表示数据的长度;用N比特表示数据,其中M和N分别为正整数。
所述表示数据长度的M比特分为k部分,当数据长度用二进制表示的位数小于等于所述k部分中第一部分的比特数时,用第一部分表示数据长度;当数据长度用二进制表示的位数大于前L部分的比特之和且小于等于前L+1部分的比特数之和时,用前L+1部分表示数据长度。其中M、k、L为正整数,且L小于k。
从上述方案中可以看出,由于本发明采用算法简单,便于通过硬件实现,极大节省了硬件成本和印刷电路板(PCB)的空间,降低了KVM功能实现的成本,并且提高了KVM的图像传输实时性。另外,由于算法简单,终端图像数据的恢复也相对简单,便于实现一台终端同时控制多台服务器,从而节省了成本,并提高了效率。


图1为KVM的实用模式图。
图2为KVM图像处理系统的结构示意图。
图3为根据本发明实施例的视频数据压缩方法的流程示意图。
具体实施例方式
为使本发明的目的、技术方案和优点更加清楚,以下举实施例对本发明进一步详细说明。
为了便于理解本发明,首先分析服务器管理功能和计算机图像显示特点。在KVM应用中, 图像大多为简单窗口和菜单界面,因此图像的色彩比较简单,并且图像的变化较少,即使有变化也比较简单,例如窗口的切换、鼠标的移动等。本发明就是针对KVM应用中视频图像的特点而提出的一种简单的图像压缩方法。
通常的KVM图像处理系统的结构如图2所示,包括数字视频接口(DVI)、由现场可编程门阵列(FPGA)实现的图像处理逻辑、由BMC实现的图像传输控制部件以及远端计算机(PC)。
如图2所示,DVI将显示器的模拟视频信号数字化后,转换为红绿蓝(RGB)格式的计算机图像数据格式,输入图像处理逻辑,在逻辑电路中进行图像压缩处理后,由图像传输控制部件将压缩后的图像数据传输到远端计算机,而远端计算机将图像数据恢复后显示出来。
图3所示的是根据本发明实施例的图像压缩的流程示意图。参照图3,该方法包括以下步骤步骤S1由于在服务器管理的场合,视频图像都是简单的界面,这些界面的色彩比较简单,所以在步骤S1中将从DVI输入的图像数据格式转换为色彩数据较少的图像数据格式。
如果DVI输入的是24比特(bit)真彩图像数据,可以将24bit真彩图像转换为8bit彩色图像。24bit图像数据中RGB每个基色都具有8bit数据,这里将其转换为R基色取2bit数据、G基色取3bit数据、B基色取3bit数据。
步骤S2将当前帧图像数据与前一帧图像数据进行比较,比较的方法可以是相减或做异或(XOR)运算,从而得到当前帧图像数据与前一帧图像数据的差异数据。本实施例以异或运算为例说明,那么得到的是当前帧图像数据与前一帧图像数据的异或的图像数据。
在该步骤中,还可以进一步将前一帧图像数据更新为当前帧图像数据,从而为处理下一帧做准备。
步骤S3将当前帧图像数据和异或的图像数据分别进行编码压缩。编码压缩的方法有多种,这里可以采用常见的行程编码方法。
步骤S4BMC根据处理后的图像数据长度,控制图像数据传输。具体地,BMC根据现有的数据当前帧图像数据、编码后的当前帧图像数据、差异数据、编码后的差异数据,以其中数据长度最小的数据作为结果输出,传输给远程PC。
需要注意的是,第一次传输数据,由于没有前一帧,所以输出的是当前帧图像数据和编码后的当前帧图像数据两者中数据长度较小的数据。另外,如果在传输过程中发生传输出错,那么BMC也选择输出当前帧图像数据和编码后的当前帧图像数据中数据长度较小的数据。
在上述图像处理过程中,由于同时总共需要存储4幅图像,所以对RAM只需求同时存储4幅图像的存储空间。例如,当图像尺寸为800×600时,需要800×600×4=1920kByte的存储空间;当图像尺寸为1024×768时,需要1024×768×4=3146kByte的存储空间。
下面具体介绍步骤S3中的一种图像数据编码方法,该方法仅采用比较和计数的简单算法,便于逻辑电路的硬件实现。

表1 行程编码的图像数据编码

表2 长度编码及数据如表1所示,在行程编码的图像数据编码中,数据可以分为4个部分,第一部分占4byte,用来表示图像数据的长度;第二部分占2byte,其中1bit用来表示该数据是否为差异值,例如用1表示是和0表示否,其余15bit用来表示图像点阵宽度;第三部分占2byte,用来表示图像点阵高度;第四部分占N byte,为具体图像数据。
表2所示为图像数据中的长度编码以及数据。Byte1中的第一bit表示数据是否为压缩数据,例如1表示是而0表示否。而byte1中的其余7bit和byte2、byte3来表示长度编码。而byte4表示这些数据的图像点颜色。
在长度编码中,采用多级的方式实现长度编码。如表2所示,如果长度小于等于63,则长度=长度1;如果长度大于63而小于等于8191,则长度=(长度1×128)+长度2;如果长度大于8191,则长度=(长度1×32768)+(长度2×256)+长度3在表2所示的长度编码中,最大可表示的长度为2097151。
换言之,将表示数据长度的M比特分为k部分,当数据长度用二进制表示的位数小于等于第一部分的比特数时,用第一部分表示数据长度;当数据长度用二进制表示的位数大于前L部分的比特之和且小于等于前L+1部分的比特数之和时,用前L+1部分表示数据长度。其中M、k、L为正整数,且L小于k。以表2为例,其中M=23,k=3,那么第一部分为7bit,第二部分为8bit,第三部分为8bit。
在表2所示的数据中,在数据为压缩的情况下,即“是否压缩”bit=1,则数据编码格式为长度编码+1byte数据;在数据不是压缩的情况下,即“是否压缩”bit=0,则数据编码格式为长度编码+nbyte数据。
例如,原始数据为0x01,0x01,0x01,0x01,0x01,由于数据相同,所以采取压缩,因此“是否压缩”bit=1。由于数据长度为5,小于63,所以采用长度1表示长度,因此表2中byte1的后7个bit为0000101。在此后面加上1byte的数据,因此该数据的编码为0x85,0x01。
再例如,原始数据为0x01,0x02,0x03,0x04,0x05,则编码为0x05,0x01,0x02,0x03,0x04,0x05,其中“0x05”表示不压缩以及长度为5,“0x01,0x02,0x03,0x04,0x05”为数据。原始数据为0x01,0x01,0x01,0x01,0x01,0x04,0x05,则编码为0x85,0x01,0x02,0x04,0x05,其中“0x85,0x01”表示压缩的5个“0x01”,长度为5;“0x02,0x04,0x05”表示未压缩的“0x04,0x05”,长度为2。
如果,800×600的一幅纯白图像的编码为0xce,0xd3,0x00,0xff,那么它的长度为长度=((0xce&0x3f)<<15)+((0xd3&0x7f)<<8)+0x00=480000=800×600以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种视频数据压缩方法,其特征在于,该方法包括对于第一帧图像,执行如下处理A1.将第一帧图像数据进行编码,得到第一帧图像编码数据;A2.将第一帧图像数据和第一帧图像编码数据当中数据长度较小的数据作为结果输出;对于第一帧之后的图像,执行如下处理B1.将当前帧图像数据与前一帧图像数据相比较,获取两者的差异数据;B2.分别对当前帧图像数据和差异数据进行编码,得到当前帧图像编码数据和编码的差异数据;B3.将当前帧图像数据、当前帧图像编码数据、差异数据以及编码的差异数据当中数据长度最小的数据作为结果输出。
2.根据权利要求1所述的方法,其特征在于,步骤B1中所述比较为将当前帧图像数据与前一帧图像数据相减,所述差异数据为将当前帧图像数据与前一帧图像数据相减得到的数据;或者所述比较为将当前帧图像数据与前一帧图像数据做异或运算,所述图像数据为将当前帧图像数据与前一帧图像数据做异或运算得到的数据。
3.根据权利要求1所述的方法,其特征在于,所述图像数据为第一格式的图像数据;所述步骤A1和/或步骤B1之前进一步包括将从视频接口获取的图像数据转换为第一格式的图像数据。
4.根据权利要求3所述的方法,其特征在于,所述第一格式的图像数据为8比特彩色图像数据,所述从视频接口获取的图像数据为24比特真彩图像数据。
5.根据权利要求1所述的方法,其特征在于,步骤A1和/或步骤B2中所述的编码为行程编码。
6.根据权利要求5所述的方法,其特征在于,所述编码的数据编码方式为用1比特表示是否压缩;用M比特表示数据的长度;用N比特表示数据,其中M和N分别为正整数。
7.根据权利要求6所述的方法,其特征在于,所述表示数据长度的M比特分为k部分,当数据长度用二进制表示的位数小于等于所述k部分中第一部分的比特数时,用第一部分表示数据长度;当数据长度用二进制表示的位数大于所述k部分中前L部分的比特之和且小于等于前L+1部分的比特数之和时,用前L+1部分表示数据长度,其中M、k、L为正整数,且L小于k。
全文摘要
本发明公开了一种针对KVM应用的视频数据压缩方法,在该方法中对于第一帧图像,将该图像数据进行编码,得到图像编码数据,然后将该图像数据和图像编码数据当中数据长度较小的数据作为结果输出;对于第一帧之后的图像,将当前帧图像数据与前一帧图像数据相比较,获取两者的差异数据,并分别对当前帧图像数据和差异数据进行编码得到当前帧图像编码数据和编码的差异数据,然后输出当前帧图像数据、当前帧图像编码数据、差异数据以及编码的差异数据当中数据长度最小的数据。本发明采用算法简单,便于以硬件实现,极大节省了硬件成本和PCB的空间,降低了KVM功能实现的成本,同时也提高了KVM图像传输的实时性。
文档编号H04L29/06GK101046735SQ20061006694
公开日2007年10月3日 申请日期2006年3月30日 优先权日2006年3月30日
发明者谢建斌 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1