一种多路图像并行解码处理方法技术

技术编号:28558218 阅读:30 留言:0更新日期:2021-05-25 17:52
本发明专利技术公开了一种多路图像并行解码处理方法,适用于使用C++编译的程序对导弹的多路图像解码的场景。具体方法为:a.通过主程序,将含有解码函数的动态链接库复制出n份,得到n个复制的含有解码函数的动态链接库,分别命名为decode1.dll、decode2.dll、...、decoden.dll,其中,n等于需要进行解码的图像的路数;b.在主程序需要进行n路图像解码时,将每一路图像都交给一个复制的含有解码函数的动态链接库进行图像解码。本方法减少了软件开发成本以及软件验证时间,同时保证了软件的可靠性,有利于多线程调用,提高解码效率,可以根据需要灵活快速地扩容图像解码能力。

【技术实现步骤摘要】
一种多路图像并行解码处理方法
本专利技术属于导弹图像数据处理
,具体涉及一种多路图像并行解码处理方法。
技术介绍
随着图像制导和监视评估等导弹技术的发展,在导弹研制、试验和应用中对视频图像信号的传输与遥测越来越多,视频图像不仅对分析图像制导导弹在飞行过程中导引头出现的异常状态非常必要,而且对有些导弹的故障分析和定位比依靠现有的遥测数据分析容易得多,并且视频图像信息相对更为直观。但是,导弹图像数据量较为庞大,而且遥测无线信道容量有限,必须对图像进行压缩后传输,图像压缩往往包括数据变换、系数编码、抗干扰编码等一些列复杂的算法,接收端的windows平台在接收到压缩图像后需要进行对应的一系列逆运算才能将图像数据还原。在初始阶段,导弹图像数据只有一路数据,研究人员使用C++语言构建了整个图像数据的接收、解码处理系统,而随着导弹图像数据传输的需求与技术的发展,研究人员开始想要传输并接收多路导弹图像数据,在进行多路导弹图像数据的传输、接收与处理时,需要克服之前处于一路数据时碰不到想不到的技术问题。在之前一路数据接收处理时,整个系统的主程序的进程调用含有解码模块的动态链接库对接收到的图像数据解码,解码模块中含有解码函数,解决方法、函数复用的问题,使得整个系统的代码执行效率尽可能高,而所需存储空间尽可能小,同时,为了动态链接库在被主程序的进程调用后能够配合主程序正常使用,解码模块中含有公用的全局变量,但是,当面对多路图像数据的接收处理时,假设共n路图像数据,假如还是用原来的方法,由于动态链接库的特性,当动态链接库被主程序即宿主程序的进程调用加载到进程空间后,CPU对n路图像进行处理,过程中,需要使用动态链接库中的解码模块对n路图像进行解码,可以n路图像按顺序进行解码处理,也可以使用多线程技术对n路图像同时进行解码处理,从图像数据需要具有时效性角度来看,一定是选用多线程同时处理n路图像的方式,但需要注意的是,一旦动态链接库被正确加载,主程序进程中的多线程都会来使用同一个解码模块,而解码模块中含有公用的全局变量,这就导致多线程处理任务时会使用同一地址的公用全局变量,从而n路图像的解码数据出现混淆,导致无法正确解码。假如直接对动态链接库进行修改,需要对解码模块进行重写,难度大、验证周期长,且难以适应图像路数不断发生变化的情况,只要图像路数发生变化就去重新编写解码模块是不现实的,工作量与工作难度、验证周期都太大太长。
技术实现思路
为了解决
技术介绍
中提出的问题,本专利技术给出了一种多路图像并行解码处理方法。一种多路图像并行解码处理方法,适用于使用C++编译的程序对导弹的多路图像解码的场景,a.通过主程序,将含有解码函数的动态链接库复制出n份,得到n个复制的含有解码函数的动态链接库,分别命名为decode1.dll、decode2.dll、...、decoden.dll,其中,n等于需要进行解码的图像的路数;b.在主程序需要进行n路图像解码时,将每一路图像都交给一个复制的含有解码函数的动态链接库进行图像解码。进一步地,在步骤b中,需要首先在主程序中动态加载decode1.dll、decode2.dll、...decoden.dll共n个复制的含有解码函数的动态链接库,还需要在主程序中定义与解码函数相对应的函数指针类型,并声明函数指针变量的类型为与解码函数相对应的函数指针类型,然后将n个函数指针变量分别指向共n个复制的含有解码函数的动态链接库中的解码函数的地址,从而实现在进行n路图像解码时,将每一路图像都交给一个复制的含有解码函数的动态链接库进行图像解码。进一步地,动态加载n个复制的含有解码函数的动态链接库时,使用LoadLibrary()函数最终实现n个复制的含有解码函数的动态链接库的动态加载。通过对n个复制的含有解码函数的动态链接库的动态加载,使得n个动态链接库映射在不同的地址中,互不干扰。进一步地,在主程序中定义与解码函数相对应的函数指针类型是指,函数指针类型的返回值类型、所需参数类型、所需参数的数量与解码函数的返回值类型、所需参数类型、所需参数的数量一致。进一步地,在将n个函数指针变量分别指向共n个复制的含有解码函数的动态链接库中的解码函数的地址时,使用GetProcAddress()函数获取动态链接库中的解码函数的地址。与现有技术相比,本专利技术公开的技术方案具有以下有益效果:1.无需对原来只能解码一路图像的动态链接库进行修改,采用将原来的动态链接库直接复制为多份,并在主程序中动态加载的方式,从而使主程序将多个动态链接库映射到不同的地址空间,减少了软件开发成本以及软件验证时间,同时保证了软件的可靠性。2.只需向C++编译的主程序中添加少量代码即可完成各路图像可以并行解码,互不影响,其中任一路图像的任何解码操作对其他路图像的解码都没有影响,有利于多线程调用,提高解码效率。3.可以根据需要灵活快速地扩容图像解码能力。具体实施方式下面说明本专利技术的具体实施方式,公开实施方式的目的在于对本专利技术进行说明解释,而非是对本专利技术的限制,一切在本专利技术的基础上进行简单替换、组合和发展得到的技术方案,都应落入本专利技术保护范围。实施例一以两路图像为例,一种多路图像并行解码处理方法,适用于使用C++编译的程序对导弹的多路图像解码的场景,a.通过主程序,将含有解码函数的动态链接库复制出2份,得到2个复制的含有解码函数的动态链接库,分别命名为decode1.dll、decode2.dll;b.首先在主程序中,使用LoadLibrary()函数动态加载decode1.dll、decode2.dll共2个复制的含有解码函数的动态链接库:HINSTANCEhIns1=::LoadLibrary(“decode1”);HINSTANCEhIns2=::LoadLibrary(“decode2”);接下来需要在主程序中定义与解码函数相对应的函数指针类型,即函数指针类型的返回值类型、所需参数类型、所需参数的数量与解码函数的返回值类型、所需参数类型、所需参数的数量一致:假设解码函数类型为:intGetImage(unsignedchar*pCh,intnSize);那么,相对应的函数指针类型为:typedefint(*PGetImage)(unsignedchar*pCh,intnSize);即定义了一种函数指针类型,并定义这种类型为指向某种函数的指针,这种函数的参数为unsignedchar*pCh、intnSize,返回类型为int,而在本实施例中,这种指针就是与解码函数相匹配的,即这种指针是指向解码函数的。然后声明函数指针变量的类型为与解码函数相对应的函数指针类型:PGetImagepFn1,pFn2;从而实质上pFn1、pFn2为两个函数指针变量,其类型为与解码函数相对应的函数指针类型。然后将2个函数指针变量分别指向共2个复制的含有解码函数本文档来自技高网
...

【技术保护点】
1.一种多路图像并行解码处理方法,适用于使用C++编译的程序对导弹的多路图像解码的场景,其特征在于:/na.通过主程序,将含有解码函数的动态链接库复制出n份,得到n个复制的含有解码函数的动态链接库,分别命名为decode1.dll、decode2.dll、...、decoden.dll,其中,n等于需要进行解码的图像的路数;/nb.在主程序需要进行n路图像解码时,将每一路图像都交给一个复制的含有解码函数的动态链接库进行图像解码。/n

【技术特征摘要】
1.一种多路图像并行解码处理方法,适用于使用C++编译的程序对导弹的多路图像解码的场景,其特征在于:
a.通过主程序,将含有解码函数的动态链接库复制出n份,得到n个复制的含有解码函数的动态链接库,分别命名为decode1.dll、decode2.dll、...、decoden.dll,其中,n等于需要进行解码的图像的路数;
b.在主程序需要进行n路图像解码时,将每一路图像都交给一个复制的含有解码函数的动态链接库进行图像解码。


2.如权利要求1所述的一种多路图像并行解码处理方法,其特征在于:在步骤b中,需要首先在主程序中动态加载decode1.dll、decode2.dll、...decoden.dll共n个复制的含有解码函数的动态链接库,还需要在主程序中定义与解码函数相对应的函数指针类型,并声明函数指针变量的类型为与解码函数相对应的函数指针类型,然后将n个函数指针变量分别指向共n个复制的含有解码函数的...

【专利技术属性】
技术研发人员:贾丕军姚长虹李亚孙江辉陈飞张聪颖常树龙李宇刘亚南戴虹冯玉洁王玉昊代延村
申请(专利权)人:中国空空导弹研究院
类型:发明
国别省市:河南;41

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1