著录项信息
专利名称 | 一种基于C/S模式实时传输大数据量图像的方法 |
申请号 | CN200810119622.0 | 申请日期 | 2008-09-04 |
法律状态 | 权利终止 | 申报国家 | 中国 |
公开/公告日 | 2010-03-10 | 公开/公告号 | CN101668192 |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | H04N21/236 | IPC分类号 | H;0;4;N;2;1;/;2;3;6;;;H;0;4;N;2;1;/;4;3;4查看分类表>
|
申请人 | 新奥特(北京)视频技术有限公司 | 申请人地址 | 北京市海淀区西草场1号北京硅谷电脑城15层1501-1506室
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 新奥特(北京)视频技术有限公司 | 当前权利人 | 新奥特(北京)视频技术有限公司 |
发明人 | 罗坤;李涛;龚浩 |
代理机构 | 北京天悦专利代理事务所(普通合伙) | 代理人 | 田明;任晓航 |
摘要
本发明涉及计算机图像处理技术,具体涉及一种基于C/S模式实时传输大数据量图像的方法。本发明所述的方法:在图像发送端将需要实时传输的图像分割成多个数据块,由发送线程发送给图像接收端,图像接收端的接收线程接收数据块,然后将数据块重新组合成原图像,并根据事先确定的传输时间间隔发送同步信息给图像发送端,继续传输图像,直到传输完毕。采用本发明所述的方法对于实时的图像传输而言,特别是数据量大的图像,不需要压缩,不需要借助硬件,完全可以通过网络通信来实现图像的实时传输,特别是广播电视领域中的节目制作播出系统,该优势更为明显。
1.一种基于C/S模式实时传输大数据量图像的方法,包括如下步骤:
(1)在图像发送端创建2个或2个以上的发送线程,在图像接收端创建2个或2个以上的接收线程,并将发送线程与接收线程之间建立一一对应的关系,使之能够相互通信,其中,发送线程与接收线程的数量是相同的;
(2)在图像发送端确定将每一幅图像分割成数据块时应分割的数量,所述的数量为2个或2个以上的数量,并且该数量与发送线程和接收线程的数量是相同的;
(3)在图像接收端设置相邻两幅图像之间传输的时间间隔,以确定同步信息的发送时间;
(4)开始实时传输图像时,首先图像发送端向图像接收端发出传输图像的请求,图像接收端收到请求后,启动接收线程,将同意发送图像的命令发回给图像发送端;图像发送端收到图像接收端的发送命令后启动发送线程,图像发送端按照步骤(2)中所述的数量,将第一幅图像分割成2个或2个以上的数据块,然后由发送线程将数据块发送给图像接收端,图像接收端通过对应的接收线程接收数据块,接收线程接收完所有的数据块后,由图像接收端将接收到的数据块重新组合成原图像,并根据步骤(3)中事先确定的时间间隔更新同步信息,并将同步信息发送给图像发送端;
(5)如果图像传输完毕则处理结束,如果需要继续传输图像,则图像发送端收到来自图像接收端的同步信息后,图像发送端将第二幅图像分割成2个或2个以上的数据块,按照步骤(4)所述的方法传输和接收第二幅图像;
(6)重复步骤(4)和步骤(5),直至所有的图像传输完毕。
2.如权利要求1所述的一种基于C/S模式实时传输大数据量图像的方法,其特征在于:
步骤(1)中,发送线程与接收线程之间建立一一对应的关系时,将发送线程与接收线程的端口设置为相同的端口。
3.如权利要求1所述的一种基于C/S模式实时传输大数据量图像的方法,其特征在于:
对于2M及2M以上的图像而言,发送线程和接收线程均为4个或4个以上,将一幅图像分割为4个数据块或4个以上。
4.如权利要求3所述的一种基于C/S模式实时传输大数据量图像的方法,其特征在于:
数据块之间的数据量是相同的。
5.如权利要求1所述的一种基于C/S模式实时传输大数据量图像的方法,其特征在于:
步骤(3)中,相邻两幅图像之间传输的时间间隔为≥16ms。
6.如权利要求5所述的一种基于C/S模式实时传输大数据量图像的方法,其特征在于:
对于电视图像而言,相邻两幅图像之间传输的时间间隔为25fps或者30fps。
7.如权利要求1所述的一种基于C/S模式实时传输大数据量图像的方法,其特征在于:
步骤(4)、(5)、(6)中,每个发送线程/接收线程只发送/接收一个数据块。
8.如权利要求7所述的一种基于C/S模式实时传输大数据量图像的方法,其特征在于:
为保证每个发送线程/接收线程只发送/接收一个数据块,采用的方法为:步骤(1)中创建发送线程和接收线程时,每一个发送线程/接收线程会同时获得一个序号,序号从0开始,后续累加1,相互通信的发送线程与接收线程之间其序号是相同的;图像接收端将图像划分成数据块时,每一个数据块也会获得一个序号,序号从0开始,后续累加1;当图像发送端发送数据块时,特定序号的发送线程只发送和自己序号相同的数据块;同理,图像接收端的接收线程和接收到的数据块也有这种对应关系。
9.如权利要求7或8所述的一种基于C/S模式实时传输大数据量图像的方法,其特征在于:为了使图像发送时严格按照图像接收端事先设置好的相邻两幅图像之间传输的时间间隔,同时保证每一个发送线程/接收线程只发送/接收一个数据块,本发明采用了多锁和互斥对象方法,具体如下:
对于图像发送端,当一幅图像的所有数据块发送完毕后,会进入一个多锁等待,该多锁由一个自动触发的全局退出事件和一个手动触发的是否更新图像数据块的事件组成,后者在所有的发送线程均收到图像接收端发送的回传信号后被手动触发;
对于图像接收端,创建完所有的接收线程后,进入一个多锁等待,该多锁由一个自动触发的全局退出事件和一个手动触发的图像数据块重组事件组成,后者在所有的接收线程均接收完各自的数据块后被手动触发。
10.如权利要求9所述的一种基于C/S模式实时传输大数据量图像的方法,其特征在于:图像发送端的多锁,具体工作流程为:在每一个发送线程里,先要执行数据块的发送,之后等待图像接收端发送的回传信号,当收到回传信号后,在互斥对象的保护下共享计数器加1,此后该线程进入一个多锁等待,当某个线程发现共享计数器的计数与发送线程的数量相同时,手动触发更新图像数据块事件,同时共享计数器清零,由此进入新一轮的数据块发送;
图像接收端的多锁,具体工作流程为:在每一个接收线程里,先要执行数据块的接收,接收完毕后在互斥对象的保护下共享计数器加1,并向图像发送端发送回传信号,此后进入一个多锁等待,当某个接收线程发现共享计数器的计数与接收线程的数量相同时,手动触发重组图像数据块重组事件,由图像接收端将所有接收到的数据块重新组合成原来的图像,并根据事先确定的时间间隔同时更新同步信息,并将同步信息发送给图像发送端。
一种基于C/S模式实时传输大数据量图像的方法\n技术领域\n[0001] 本发明涉及计算机图像处理技术,具体涉及一种基于C/S模式实时传输大数据量图像的方法。\n背景技术\n[0002] 在TCP/IP网络应用中,通信的两个进程间相互作用的主要模式是客户端/服务器模式,即C/S(Client/Server)模式。在这种模式中,客户端向服务器提出请求,服务器接收到请求后,提供相应的服务。它主要用于消息通信、文件传输、图像传输等领域。图像传输又分压缩域和非压缩域两种,前者先将图像做压缩等预处理,使数据量减少,然后将压缩后的图像进行传输,以达到实时进行图像传输的目的;后者则直接将图像进行传输,当图像的数据量比较小时,实时进行图像的传输没有问题,但是当图像的分辨率较大、图像的数据量较大如达到1M以上时,由于数据量很大,很难做到图像的实时传输,而在有时又非常需要进行图像的实时传输,如电视图像的传输,或者技术人员希望进行图像的实时传输。\n[0003] 基于上述情况,如何实时高效地传输图像信息是图像通信领域研究的一个热点。\n目前,为了实现图像的实时传输,常采用如下方法:\n[0004] (1)借助于硬件编解码器,通过增加硬件编码器完全可实现高分辨率、大数据量的图像的实时传输,但是该方法不足之处在于增加了硬件编码器,即大大增加了成本,而且没有完全利用现有的网络环境;\n[0005] (2)完全通过网络传输,优点在于没有增加硬件,完全利用现有的网络,成本很低,而且应用方便,但是也有缺点,该方法是通过单个线程来进行图像的传输,只适用于数据量比较小的图像传输,如小于1M的图像,这种情况下可以实时传输图像,但是当图像数据量比较大如大于1M时,通过单个线程来进行图像的传输时,为了实现图像的实时传输,通常需要预先对图像信息进行量化压缩,去冗余,减少传输数据量,提高传输效率,但是对图像时行压缩必然会损伤图像质量,也必然会占用CPU资源,使传输效率降低,因此,该方案主要适合较低分辨率的图像通信。\n[0006] 因此,如何充分利用现有的通信网络,快速高效地实时传输大数据量的图像是本发明所要解决的问题。\n发明内容\n[0007] 本发明的目的是利用现在的通信网络,能够实现图像的实时传输,特别是大数据量的图像的实时传输,完全不需要借助于外加的图像硬件,应用方便,图像传输高效快速,成本低廉。\n[0008] 为实现上述发明目的,本发明采用的技术方案为:一种基于C/S模式实时传输大数据量图像的方法,包括如下步骤:\n[0009] (1)在图像发送端创建2个或2个以上的发送线程,在图像接收端创建2个或2个以上的接收线程,并将发送线程与接收线程之间建立一一对应的关系,使之能够相互通信,其中,发送线程与接收线程的数量是相同的;\n[0010] (2)在图像发送端确定将每一幅图像分割成数据块时应分割的数量,所述的数量为2个或2个以上的数量,并且该数量与发送线程和接收线程的数量是相同的;\n[0011] (3)在图像接收端设置相邻两幅图像之间传输的时间间隔,以确定同步信息的发送时间;\n[0012] (4)开始实时传输图像时,首先图像发送端向图像接收端发出传输图像的请求,图像接收端收到请求后,启动接收线程,将同意发送图像的命令发回给图像发送端;图像发送端收到图像接收端的发送命令后启动发送线程,图像发送端按照步骤(2)中所述的数量,将第一幅图像分割成2个或2个以上的数据块,然后由发送线程将数据块发送给图像接收端,图像接收端通过对应的接收线程接收数据块,接收线程接收完所有的数据块后,由图像接收端将接收到的数据块重新组合成原图像,并根据步骤(3)中事先确定的时间间隔更新同步信息,并将同步信息发送给图像发送端;\n[0013] (5)如果图像传输完毕则处理结束,如果需要继续传输图像,则图像发送端收到来自图像接收端的同步信息后,图像发送端将第二幅图像分割成2个或2个以上的数据块,按照步骤(4)所述的方法传输和接收第二幅图像;\n[0014] (6)重复步骤(4)和步骤(5),直至所有的图像传输完毕。\n[0015] 进一步,为使本发明获得更好的发明效果,步骤(1)中,发送线程与接收线程之间建立一一对应的关系时,将发送线程与接收线程的端口设置为相同的端口,即可实现;\n[0016] 进一步,为使本发明获得更好的发明效果,对于2M及2M以上的图像而言,发送线程和接收线程均为4个或4个以上,将一幅图像分割为4个数据块或4个以上,数据块之间的数据量是相同的;\n[0017] 进一步,为使本发明获得更好的发明效果,步骤(3)中,相邻两幅图像之间传输的时间间隔为≥16ms;更进一步,对于电视图像而言,相邻两幅图像之间传输的时间间隔为\n25fps或者30fps;\n[0018] 进一步,为使本发明获得更好的发明效果,步骤(4)、(5)、(6)中,每个发送线程/接收线程只发送/接收一个数据块;\n[0019] 更进一步,为保证每个发送线程/接收线程只发送/接收一个数据块,采用的方法为:步骤(1)中创建发送线程和接收线程时,每一个发送线程/接收线程会同时获得一个序号,序号从0开始,后续累加1,相互通信的发送线程与接收线程之间其序号是相同的;图像接收端将图像划分成数据块时,每一个数据块也会获得一个序号,序号从0开始,后续累加\n1;当图像发送端发送数据块时,特定序号的发送线程只发送和自己序号相同的数据块;同理,图像接收端的接收线程和接收到的数据块也有这种对应关系;\n[0020] 更进一步,为了使图像发送时严格按照图像接收端事先设置好的相邻两幅图像之间传输的时间间隔,同时保证每一个发送线程/接收线程只发送/接收一个数据块,本发明采用了多锁和互斥对象方法,具体如下:\n[0021] 对于图像发送端,当一幅图像的所有数据块发送完毕后,会进入一个多锁等待,该多锁由一个自动触发的全局退出事件和一个手动触发的是否更新图像数据块的事件组成,后者在所有的发送线程均收到图像接收端发送的回传信号后被手动触发;\n[0022] 对于图像接收端,创建完所有的接收线程后,进入一个多锁等待,该多锁由一个自动触发的全局退出事件和一个手动触发的图像数据块重组事件组成,后者在所有的接收线程均接收完各自的数据块后被手动触发;\n[0023] 再更进一步,图像发送端的多锁,具体工作流程为:在每一个发送线程里,先要执行数据块的发送,之后等待图像接收端发送的回传信号,当收到回传信号后,在互斥对象的保护下共享计数器加1,此后该线程进入一个多锁等待,当某个线程发现共享计数器的计数与发送线程的数量相同时,手动触发更新图像数据块事件,同时共享计数器清零,由此进入新一轮的数据块发送;\n[0024] 图像接收端的多锁,具体工作流程为:在每一个接收线程里,先要执行数据块的接收,接收完毕后在互斥对象的保护下共享计数器加1,并向图像发送端发送回传信号,此后进入一个多锁等待,当某个接收线程发现共享计数器的计数与接收线程的数量相同时,手动触发重组图像数据块重组事件,由图像接收端将所有接收到的数据块重新组合成原来的图像,并根据事先确定的时间间隔同时更新同步信息,并将同步信息发送给图像发送端。\n[0025] 本发明的有益效果在于:采用本发明所述的方法,对于图像传输而言,特别是数据量大的图像,不需要压缩,不需要借助硬件,完全可以通过网络通信来实现图像的实时传输,而且图像的质量没有损失,应用方便,图像传输高效快速,成本低廉,特别是广播电视领域中的节目制作播出系统,该优势更为明显。\n附图说明\n[0026] 图1为本发明所述方法的流程示意图。\n[0027] 图2为本发明所述方法中图像发送端多锁的工作示意图。\n[0028] 图3为实施例中将本发明所述方法应用于电视图像实时传输的示意图。\n[0029] 图4为发送线程与接收线程的对应关系。\n具体实施方式\n[0030] 下面结合附图对本发明进行详细的描述。\n[0031] 本实施例以电视的图像传输为例,如在虚拟演播室系统中,主控端的设计器(相当于图像发送端)需要和播出端(相当于图像接收端)联调,以便实时编辑修改场景,此时设计器一方面渲染3D图形,一方面将生成的2D图像发送到播出端显示,这就需要预监视器呈现出来的视频图像达到实时、高保真,对图像的实时传输提出了高的要求,对于电视图像的传输,我国目前多采用标清24位动态位图以25fps的帧率进行传输的,采用本发明所述的方法可以轻松实现上述图像的实时传输,如图3所示,具体而言:\n[0032] 如图1所示,一种基于C/S模式实时传输大数据量图像的方法,包括如下步骤:\n[0033] (1)在图像发送端创建2个或2个以上的发送线程,在图像接收端创建2个或2个以上的接收线程,并将发送线程与接收线程建立一一对应的关系,使之能够相互通信,其中,发送线程与接收线程的数量是相同的;\n[0034] 本实施例中,图像发送端为设计器,图像接收端为播出端,在图像发送端创建4个发送线程,每个发送线程会同时获得一个序号,序号从0开始,后续累加1;在图像接收端创建4个接收线程,每个接收线程会同时获得一个序号,序号从0开始,后续累加1,相互通信的发送线程与接收线程之间其序号是相同的;发送线程与接收线程的创建均是通过socket方法来实现的,并将发送线程与接收线程建立一一对应的关系,使之能够相互通信,本实例施中通过指定相同的端口来建立发送线程与接收线程之间的一一对应关系,线程及对应关系如图4所示;\n[0035] (2)在图像发送端确定将每一幅图像分割成数据块时应分割的数量,所述的数量为2个或2个以上的数量,并且该数量与图像发送线程和图像接收线程的数量是相同的;\n[0036] 我国目前电视领域中常用的电视图像为未压缩的标清24位动态位图,该图像的数据量一般都在2M以上,本实施例中,将一幅图像分割成4个数据块,4个数据块之间的数据量可以相同,也可以不同,本实例中为相同;\n[0037] (3)在图像接收端设置相邻两幅图像之间传输的时间间隔;\n[0038] 在电视领域,通常相邻两幅图像之间传输的时间间隔都集成在I/O卡中,目前我国一般都采用25fps的帧率传输电视图像,因此本实施例中,相邻两幅图像之间传输的时间间隔设置为25fps;\n[0039] (4)开始实时传输电视图像时,首先图像发送端向图像接收端发出传输图像的请求,图像接收端收到请求后,启动4个接收线程,将同意发送图像的命令发回给图像发送端;图像发送端收到图像接收端的发送命令后启动4个发送线程,图像发送端根据步骤(2)中事先确定好的数量,将第一幅图像分割成4个数据量相同的数据块,每一个数据块同时还会获得一个序号,序号从0开始,后续累加1,即得到数据块0,数据块1,数据块2和数据块3共计4个数据块;然后由4个发送线程将该4个数据块发送给图像接收端,在发送数据块时,特定序号的发送线程只发送和自己序号相同的数据块,如发送线程1只发送与自己序号相同的数据块1,同理,接收端的接收线程和接收到的数据块也有这种对应关系,这样可以保证每个发送线程只发送一个数据块;图像接收端通过对应的4个接收线程接收4个数据块,由于事先发送线程与接收线程之间已经建立了一一对应的关系,因此很容易实现数据块的接收,即接收线程0接收来自发送线程0的数据块0,接收线程1接收来自发送线程1的数据块1,接收线程2接收来自发送线程2的数据块2,接收线程3接收来自发送线程3的数据块,接收线程接收完所有的数据块后,由图像接收端将接收到的4个数据块重新组合成原图像,并根据I/O卡中集成的图像传输的时间间隔信息(即图像的传输帧率为\n25fps)更新同步信息,并将同步信息发送给图像发送端;发送线程和接收线程的具体工作流程如图2所示;\n[0040] 在上述由图像分割而成的数据块的传输过程中,为了保证图像的传输严格按照\n25fps的帧率进行,各个数据块的发送线程/接收线程之间互斥使用共享资源,为此本发明采用了多锁和互斥对象方法,具体而言如下:\n[0041] 对于图像发送端,当一帧图像的所有数据块发送完毕后,会进入一个多锁等待,该多锁由一个自动触发的全局退出事件和一个手动触发的是否更新图像数据块的事件组成,后者在所有的发送线程均收到图像接收端发送的回传信号后被手动触发,即:在每一个发送线程里,先要执行数据块的发送,之后等待图像接收端发送的回传信号,当收到回传信号后,在互斥对象的保护下共享计数器加1,此后该线程进入一个多锁等待,当某个线程发现共享计数器为4时,手动触发更新图像数据块事件即可以更新数据块的数据了,同时共享计数器清零,图像数据块的更新意味着新一幅图像发送的开始,由此进入新一轮的数据块发送,具体过程如图2所示;\n[0042] 在图像接收端,创建完所有的接收线程后,进入一个多锁等待,该多锁由一个自动触发的全局退出事件和一个手动触发的图像数据块重组事件组成,后者在所有的接收线程均接收完各自的数据块后被手动触发,即:在每一个接收线程里,先要执行数据块的接收,接收完毕后在互斥对象的保护下共享计数器加1,并向图像发送端发送回传信号,此后进入一个多锁等待,当某个接收线程发现共享计数器为4时,手动触发重组图像数据块重组事件,由图像接收端将所有接收到的数据块重新组合成原来的图像,并更新I/O卡同步信息,并将同步信息发送给图像发送端。\n[0043] (5)如果还有图像需要传输,则图像发送端收到来自图像接收端的同步信息后,图像发送端将第二帧图像分割成4个数据量相同的数据块,按照步骤(4)所述的方法传输和接收第二帧图像;\n[0044] (6)重复步骤(4)和步骤(5),直至所有的图像传输完毕。\n[0045] 本发明所述的方法并不限于具体实施方式中所述的实施例,本领域技术人员根据本发明的技术方案得出其他的实施方式,同样属于本发明的技术创新范围。
法律信息
- 2018-08-17
未缴年费专利权终止
IPC(主分类): H04N 21/236
专利号: ZL 200810119622.0
申请日: 2008.09.04
授权公告日: 2013.05.01
- 2013-05-01
- 2011-09-07
实质审查的生效
IPC(主分类): H04N 7/24
专利申请号: 200810119622.0
申请日: 2008.09.04
- 2010-03-10
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2002-12-11
|
2001-05-06
| | |
2
| |
2007-08-01
|
2006-12-31
| | |
3
| |
2008-01-09
|
2007-07-26
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |