一种基于矩形分割隔列扫描的图像传输方法及系统的制作方法
【技术领域】
[0001]本发明属于计算机网络通信技术领域,尤其涉及一种基于矩形分割隔列扫描的图像传输方法及系统。
【背景技术】
[0002]随着网络技术的发展,远程计算机教学,远程网络监控,视频会议等工程得到了广泛应用,而在这些应用中,都需要实时传输计算机屏幕位图。因此,为了保证给用户提供良好的屏幕图像传输服务的同时不影响其他应用程序提供服务,实时屏幕图像传输系统应当满足以下条件:低CPU使用率,低带宽占用率,尽量避免延时、抖动和花屏现象的发生等。为了满足这项条件,通常采用两种方法:一是提高网络的带宽;二是减少传输的数据量。由于网络带宽很大程度上受限于网络硬件,因此,通过优化压缩和传输算法,减少数据传输量成为解决问题的关键。
[0003]计算机屏幕图像不是时刻全部发生变化,大部分时间里只有部分图像在变化,若仅对发生改变的部分图像进行传输,则将大大减少屏幕数据传输量。专利201210264229. 7将桌面图像的当前帧进行分块,并构建分层索引,依据分层索引检测当前帧相对图像块缓存的变化图像块及未变化图像块,将变化图像块压缩后与未变化图像块在图像块缓存中的标签一起封装成最终的传输数据;专利201310318030. 2首先将图像划分为X列Y行的多个区域,对每个区域的内容与上一帧图像的相同区域作比较,如果这一区域的内容有发生变化,则对该区域的数据填上标识区域信息的头信息,再进行压缩传输;专利201210544289. 4通过在编码处理之前对待传输的源数据进行格式类型识别,针对不同格式类型的源数据选择不同的压缩算法。
[0004]目前屏幕图像传输系统中常用的图像传输算法为固定分块图像传输算法,该算法基于矩形将屏幕进行分块,并对每个分块进行编号,每个分块的大小和分块的数量是固定的,然后将前后相邻两幅位图的数据保存下来,并分别按照对应的编号块来进行对比,若图像有变化则压缩发送当前块中的图像。判断前后两帧屏幕是否变化的方法有直接比较法和CRC比较法。直接比较法对前后两帧格屏幕的内存数据逐个字节进行比较;CRC比较法计算图像数据的CRC值,通过比较两帧图像的CRC值判断图像是否发生改变。由于固定分块图像传输算法每次只发送变化块中的图像数据,所以能够降低数据的传输量。
[0005]固定分块图像传输算法屏幕分块的个数难以确定,若个数过多将会导致分块处理时间的总和超过整屏数据的传输时间,这样虽然网络带宽占用小,但实时性可能下降;若个数过少,则较整屏处理占用的网络带宽下降幅度不大,速度提高效果不明显,存在减少传输数据量依赖于图像分块数目而分块数目又难以设定的缺陷;固定分块图像传输算法屏幕分块的个数与屏幕的分辨率密切相关,如果分辨率改变,为保证网络带宽占用小必须要调整算法屏幕分块的个数,其适应性差;固定分块图像传输算法对屏幕分块的大小和数量是固定的,当屏幕图像变化区域正好位于多个矩形分块的临界点时,就会出现图像变化的分块过多的现象,不能有效的减少传输数据量。
【发明内容】
[0006]本发明的目的在于提供一种基于矩形分割隔列扫描的图像传输方法及系统,旨在解决固定分块图像传输算法中屏幕分块个数难以确定和适应性差、当屏幕图像变化区域正好位于多个矩形分块临界点,不能有效减少传输数据量的的问题。
[0007]本发明是这样实现的,一种基于矩形分割隔列扫描的图像传输方法,该基于矩形分割隔列扫描的图像传输方法首先比较相邻两帧图像,找出所有图像变化的区域,然后根据变化像素点的坐标得到面积最小的不重叠矩形区域的集合;每次只发送矩形区域集合所包含的图像数据和对应坐标信息;
[0008]根据像素点的坐标得到变化矩形区域,式(I)和式(2)是根据变化像素点来判断矩形R范围的算式;
[0009]R1S Px AND Rt= Pyi (I)
[0010]Rr^ Px AND Rb多 Py (2)
[0011]其中札和Rt代表矩形左上角的横坐标和纵坐标,RdP Rb代表矩形右下角的横坐标和纵坐标,匕和P ,代表变化像素点的横坐标和纵坐标,P y(l代表第一次变化像素点的纵坐标;根据式(I)和式(2)求得变化矩形区域的范围;先将前后相邻两幅位图的数据保存下来,并判断前后两帧屏幕所对应像素的值是否变化;当第一次检测到变化的采样点时,会将变化采样点的坐标(Pxtl, P?)进行记录,作为变化矩形区域的左上角坐标(RuRt),并且将行无变化标识为false ;继续对比,当再次检测到不同采样点时,先将行无变化标识为false,接着将采样点的横坐标匕同矩形左上角的横坐标1进行比较并取最小值,同时矩形右下角的坐标(Rr,Rb)会和点的坐标(Px,Py)比较并取最大值;即:
[0012]R1= min(P xi, R1) (i>l) Rt=PyiQ = I)
[0013]Rr= max (R xi, Rr) (i>l) Rb= max (R yi, Rb) (i>l)
[0014]当检测到某行采样点值全部都相同时,得到一个变化的矩形区域块。
[0015]进一步,在一个扫描区域中对变化区域进行矩形分割算法采用隔列直接比较法判断前后图像缓冲区中两帧屏幕图像所对应像素是否变化从而找出变化的矩形区域;按照从上到下,从左到右的原则,基于矩形分割隔列扫描的图像传输方法找出后一帧图像相对于前一帧图像所有变化区域并基于矩形分割算法得到面积最小的不重叠矩形区域的集合。
[0016]进一步,采用隔列直接比较法判断前后两帧屏幕图像所对应像素是否变化,先以行为单位隔N列从左到右开始提取前后两幅图像对应的像素为采样点,比较对应像素点的值是否相同;根据应用场景的不同和带宽的要求,可以对间隔列数N做调整,N的值越小,隔列直接比较法检测所需的时间越长。
[0017]进一步,在一个扫描区域中对变化区域进行矩形分割算法具体方法如下:
[0018]步骤一,图像发送端首先获得屏幕的分辨率,得到列扫描的范围O?C和行扫描的范围O?R ;
[0019]步骤二,发送端将当前帧图像保存区的数据保存到前一帧图像缓冲区;截获当前的屏幕位图数据并保存在当前帧图像缓冲区;
[0020]步骤三,发送端首先初始化变化矩形区域左上角坐标和右下角坐标为(0,O),下次扫描起点坐标为(0,0),行无变化标识为true,更新列扫描的范围和行扫描的范围;
[0021]步骤四,判断是否在行扫描范围内,不在,跳转到步骤十;
[0022]步骤五,判断是否在列扫描范围内,不在,跳转到步骤八;在列扫描范围内采用隔列直接比较法对当前采样点进行检测;值不同,首先将行无变化标识设置为false,然后判断是否是检测到的第一个变化采样点,是将采样点坐标作为变化矩形区域的左上角坐标,不是第一个变化采样点,将矩形右下角的坐标和该点的坐标比较并取最大值作为新的矩形右下角坐标,再判断该采样点是否是本行第一个变化采样点,是就将该采样点的纵坐标同矩形左上角的纵坐标进行比较并取最小值更新变化矩形区域的左上角坐标;值相同,需要判断行无变化标识是否为false,如果是false,记录坐标作为下次扫描的起点,检测到是最后一列采样点,将最后一列采样点坐标作为下次扫描的起点,跳转到步骤七;
[0023]步骤六,把列坐标右移N列,跳转到步骤五检测下一个采样点;
[0024]步骤七,本行检测完毕,将本行的下次扫描起点坐标与上一行记录的下次扫描起点坐标比较,并取最大值作为新的下次扫描起点坐标,行号加1,跳转到步骤四从下一行从头开始从左到右检测;
[0025]步骤八,判断行无变化标识是否为true且变化矩形区域左上角坐标不为(0,0),不是true,行号加1,跳转到步骤四;是廿1^,则表明整行无不同像素点,得到了一个变化的矩形区域块;得到的变化矩形区域块左上角纵坐标向左移动N列,右下角纵坐标向右移动N列以包含图像边界信息;
[0026]