基于shader的视频流图像校正方法、装置和设备与流程

文档序号:31604704发布日期:2022-09-21 10:11阅读:133来源:国知局
基于shader的视频流图像校正方法、装置和设备与流程

1.本技术的实施例涉及图像校正领域,尤其涉及基于shader的gpu加速的视频流图像校正方法、装置、设备和计算机可读存储设备。


背景技术:

2.目前国内的视频流图像校正算法。一种是基于opencv的cuda库实现,这种视频图像的必须依赖于opencv库和nivida显卡才能实现,而且opencv图像校正计算过程是基于像素计算的,实现效率并不是很高;另一种是通过shader的顶点和片元编程计算利用gpu的并行渲染能力实现视频的实时校正的;需要传入数学计算公式和参数,不同的算法需要编写不同shader程序计算和传入不同的参数实现,不具有通用性;如鱼眼畸变校正内参矩阵图像校正等。


技术实现要素:

3.根据本技术的实施例,提供了一种基于shader的视频流图像校正方案。
4.在本技术的第一方面,提供了一种基于shader的视频流图像校正方法。该方法包括:获取待校正图像;对所述待校正图像进行预处理,得到用于描述所述待校正图像中每个像素的位置在校正前后的映射关系;同时将所述待校正图像转换为浮点类型的数据图像;所述映射关系为二维图像矩阵;对所述数据图像进行编码处理,得到与其对应的颜色图像;基于所述映射关系、数据图像和颜色图像,编写shader顶点和片元程序文件;通过gpu加载所述shader顶点和片元程序文件,得到校正后的渲染图像。
5.进一步地,所述对所述数据图像进行编码处理,得到与其对应的颜色图像包括:对所述数据图像中的x方向数据和y方向数据,分别进行编码处理,将一个浮点类型的数据转化为三个三通道的rgb颜色值,得到x方向的三通道颜色图像和y方向的三通道颜色图像。
6.进一步地,所述基于所述映射关系、数据图像和颜色图像,编写shader顶点和片元程序文件包括:将所述数据图像,作为shader的片元着色器的原始纹理;将所述颜色图像,作为shader的片元着色器的2张附加数据纹理;对所述附加数据纹理进行解码还原,将三通道的rgb值转化为浮点值,合并两个单独通道的浮点值,并将合并后的浮点值作为shader片元的原始图像的目标重定位坐标;将所述目标重定位坐标,作为图像采样的输入纹理坐标参数,基于所述映射关系得到校正后的目标颜色值;完成shader顶点和片元程序文件的编写。
7.进一步地,还包括:通过预设的差值算法,对片元程序文件中的图像进行优化。
8.进一步地,所述差值算法包括邻近点差值、双线性插值、双三次插值和/或兰斯索差值算法。
9.进一步地,所述对所述待校正图像进行预处理,得到用于描述所述待校正图像中每个像素的位置在校正前后的映射关系包括:通过opencv或matlab方法,对所述待校正图像进行预处理,得到用于描述所述待校正图像中每个像素的位置在校正前后的映射关系。
10.进一步地,还包括:编码方式包括十六进制、十进制或八进制。
11.在本技术的第二方面,提供了一种基于shader的视频流图像校正装置。该装置包括:获取模块,用于获取待校正图像;处理模块,用于对所述待校正图像进行预处理,得到用于描述所述待校正图像中每个像素的位置在校正前后的映射关系;同时将所述待校正图像转换为浮点类型的数据图像;所述映射关系为二维图像矩阵;编码模块,用于对所述数据图像进行编码处理,得到与其对应的颜色图像;编写模块,用于基于所述映射关系、数据图像和颜色图像,编写shader顶点和片元程序文件;渲染模块,用于通过gpu加载所述shader顶点和片元程序文件,得到校正后的渲染图像。
12.在本技术的第三方面,提供了一种电子设备。该电子设备包括:存储器和处理器,所述存储器上存储有计算机程序,所述处理器执行所述程序时实现如以上所述的方法。
13.在本技术的第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现如根据本技术的第一方面的方法。
14.本技术实施例提供的基于shader的视频流图像校正方法,通过获取待校正图像;对所述待校正图像进行预处理,得到用于描述所述待校正图像中每个像素的位置在校正前后的映射关系;同时将所述待校正图像转换为浮点类型的数据图像;所述映射关系为二维图像矩阵;对所述数据图像进行编码处理,得到与其对应的颜色图像;基于所述映射关系、数据图像和颜色图像,编写shader顶点和片元程序文件;通过gpu加载所述shader顶点和片元程序文件,得到校正后的渲染图像,能够为各种需要校正的视频流图像进行gpu加速校正,不受nivida显卡限制,通用性强,视频校正效率高。
15.应当理解,发明内容部分中所描述的内容并非旨在限定本技术的实施例的关键或重要特征,亦非用于限制本技术的范围。本技术的其它特征将通过以下的描述变得容易理解。
附图说明
16.结合附图并参考以下详细说明,本技术各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标记表示相同或相似的元素,其中:
图1示出了本技术的实施例提供的方法所涉及的系统架构图。
17.图2示出了根据本技术的实施例的基于shader的视频流图像校正方法的流程图;图3示出了根据本技术的实施例的基于shader的视频流图像校正装置的方框图;图4示出了适于用来实现本技术实施例的终端设备或服务器的结构示意图。
具体实施方式
18.为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的全部其他实施例,都属于本公开保护的范围。
19.另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
20.图1示出了能够在其中实现本公开的实施例的示例性系统架构100的示意图。
21.如图1所示,系统架构100可以包括第一终端101、第二终端102、第三终端103,网络104和服务器105。网络104用以在第一终端101、第二终端102、第三终端103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
22.用户可以使用第一终端101、第二终端102、第三终端103通过网络104与服务器105交互,以接收或发送消息等。第一终端101、第二终端102、第三终端103上可以安装有各种通讯客户端应用,例如模型训练类应用、视频识别类应用、网页浏览器应用、社交平台软件等。
23.第一终端101、第二终端102、第三终端103可以是硬件,也可以是软件。当第一终端101、第二终端102、第三终端103为硬件时,可以是具有显示屏的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、mp3播放器(moving picture experts group audio layer iii,动态影像专家压缩标准音频层面三)、mp4(moving picture experts group audio layer iv,动态影像专家压缩标准音频层面四)播放器、膝上型便携计算机和台式计算机等等。当第一终端101、第二终端102、第三终端103为软件时,可以安装在上述所列举的电子设备中。其可以实现成多个软件或软件模块(例如用来提供分布式服务的多个软件或软件模块),也可以实现成单个软件或软件模块。在此不做具体限定。
24.当第一终端101、第二终端102、第三终端103为硬件时,其上还可以安装有视频采集设备。视频采集设备可以是各种能实现采集视频功能的设备,如摄像头、传感器等等。用户可以利用第一终端101、第二终端102、第三终端103上的视频采集设备来采集视频。
25.服务器105可以是提供各种服务的服务器,例如对第一终端101、第二终端102、第三终端103上显示的数据处理的后台服务器。后台服务器可以对接收到的数据进行分析等处理,并可以将处理结果反馈给终端设备。
26.需要说明的是,服务器可以是硬件,也可以是软件。当服务器为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器为软件时,可以实现成多个软件或软件模块(例如用来提供分布式服务的多个软件或软件模块),也可以实现成单个软件或软件模块。在此不做具体限定。
27.应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。特别地,在目标数据不需要从远程获取的情况下,上述系统架构可以不包括网络,而只包括终端设备或服务器。
28.如图2所示,是本技术实施例基于shader的gpu加速的视频流图像校正方法的流程图。从图2中可以看出,本实施例的基于shader的gpu加速的视频流图像校正方法,包括以下步骤:s210,获取待校正图像。
29.在本实施例中,用于基于shader的视频流图像校正方法的执行主体(例如图1所示的服务器)可以通过有线方式或者无线连接的方式获取待校正图像。
30.进一步地,上述执行主体可以获取与之通信连接的电子设备(例如图1所示的终端设备)发送的待校正图像,也可以是预先存储于本地的待校正图像。
31.其中,所述待校正图像通常为视频流图像。
32.s220,对所述待校正图像进行预处理,得到用于描述所述待校正图像中每个像素的位置在校正前后的映射关系;同时将所述待校正图像转换为浮点类型的数据图像;所述映射关系为二维图像矩阵。
33.在一些实施例中,可通过opencv或matlab计算公式、算法,找到每个校正的目标位置,构建描述校正前后每个像素位置关系的映射关系表。
34.具体的,基于将待校正的图像,通过如相机内参、外参矩阵和/或透视变换矩阵等方式,计算得到一个校正到正确位置的偏移值,确定目标位置;其中所述偏移值包括水平和垂直两个方向的偏移。
35.将所述目标位置在内存中存储到与原始像素图像大小一致的映射关系表示,所述映射关系通常为二维图像矩阵。
36.其中,所述二维图像矩阵,是计算机算法常用的计算方法,可以很方便的转换为静态图片和视频流中的一帧,在数据数据输入与输出上,图像矩阵(io)比数据库和图表有更高的速度,特别是gpu的显存输入(图像可作为内存数据块整体输入)。
37.在一些实施例中,需将所述待校正图像转换为浮点类型的数据图像,区别于颜色类型的数据图像,浮点类型的数据上限不受255限制(颜色类型的图像数据最大值是255)。
38.其中,所述浮点类型的数据,存储的数据范围比常规可见光图像数据的数据范围更广,比一个可见光rgb像素(数值范围为0~255)的范围大的多,如作为图像数据位移值为1283.5,数据存储后,浮点数能正确记录,而如果用可见光rgb像素记录,则可能出错。
39.s230,对所述数据图像进行编码处理,得到与其对应的颜色图像。
40.在一些实施例中,将所述数据图像中,x方向和y方向的数据进行提取。对所述x方向和y方向的数据分别进行编码处理,将一个浮点类型的数据转化为三个三通道的rgb颜色值,得到x方向的三通道颜色图像和y方向的三通道颜色图像;所述编码方式包括十六进制、十进制或八进制。
41.具体地,可通过如下方式,将一个浮点类型的数据转化为三个三通道的rgb颜色值:不同进制,存储大小不同,占用显存的数据量不同,而且与解码的计算公式不同,以十进制为例:将一个浮点数编码为一组rgb的三个整形数(ir,ig,ib)
float x=3840.5;编码:int ir=int(x/100);int ig=int(3840.5)-ir*100;float fb=x-int(3840.5);int ib=int(fb*100);解码(为编码的逆过程):在片元shader中,可以在很容易得到一个像素的 r、g、b值:还原解码 float x=r*100+g+b*0.01。
42.s240,基于所述映射关系、数据图像和颜色图像,编写shader顶点和片元程序文件。
43.在一些实施例中,在片元文件中进行如下步骤:将所述数据图像,作为shader的片元着色器的原始纹理;将所述颜色图像,作为shader的片元着色器的2张附加数据纹理;对所述附加数据纹理进行解码还原,将三通道的rgb值转化为浮点值,合并两个单独通道的浮点值,并将合并后的浮点值作为shader片元的原始图像的目标重定位坐标;将所述目标重定位坐标,作为图像采样的输入纹理坐标参数,基于所述映射关系得到校正后的目标颜色值;完成shader顶点和片元程序文件的编写。
44.在一些实施例中,编写shader程序步骤为:varying vec2 coord;
ꢀꢀꢀ
//
ꢀꢀꢀ
void main(void)
ꢀꢀꢀ
{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
//顶点位置
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
gl_position = gl_modelviewprojectionmatrix *gl_vertex;
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
coord = gl_multitexcoord0.xy;
ꢀꢀꢀ
};即,向片元传送纹理坐标;进一步地,//片元中1.传入2个浮点转化为rgb纹理图像 sampx,sampy;2.传入一个原始图像纹理sampsrctex;3.读取图像采样纹理x,并解码还原为像素的校正x方向偏移值,得到每个顶点的x方向校正图像值colorref_x,并按照上述的解码公式进行还原:floatx=colorref_x.r*100+colorref_x.g+colorref_x.b*0.014.读取图像采样纹理y,并解码还原为像素的校正y方向偏移值得到每个顶点的y方向校正图像值colorref_y,并按照上述的解码公式还原:float y=colorref_y.r*100+colorref_y.g+colorref_y.b*0.01;
5.联合每个像素的x、y方向偏移值(x,y),形成每个像素对应的校正偏移后的纹理坐标f。基于所述坐标f(2维偏移坐标)归一化为纹理标准坐标(0~1.0)之间值为(normalx,normaly);6.用归一化为纹理标准坐标(normalx,normaly)对原始图像进行采样,得到每个像素校正后的颜色值;7.对每个像素校正后的颜色值进行渲染,得到每一帧的校正后的图像。
45.通过上述方式还原校正的每个像素图像,通常在空间上是离散和不连续的,因此,在本公开中通过差值算法对整体空间进行连续性进行优化,用于保障整体图像空间的平滑过渡;所述差值算法包括邻近点差值、双线性插值、双三次插值和/或兰斯索差值算法等。
46.s250,通过gpu加载所述shader顶点和片元程序文件,得到校正后的渲染图像。
47.在一些实施例中,通过gpu加载编写完成且已优化的shader顶点和片元程序文件,并行渲染得到整体视频校正效果图。
48.具体地,传入每帧的视频数据到shader片元的关联的视频图像对象纹理;传入关联的校正映射数据图像到对应的shader片元2张附加对象纹理,进行实时渲染和更新,得到校正后的渲染的实时视频流图像。
49.根据本公开的实施例,实现了以下技术效果:结合了opencv在图像校正方面的计算准确性的能力和gpu高效并行运算的能力,能够为各种需要校正的视频流图像进行gpu加速校正,且不受nivida显卡限制,通用性强,视频校正效率高。可适用于各类显卡,目前测试基于4k的单路实时视频图像,校正播放帧率能达到400~500帧/每秒。
50.需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本技术所必须的。
51.以上是关于方法实施例的介绍,以下通过装置实施例,对本技术所述方案进行进一步说明。
52.图3示出了根据本技术的实施例的基于shader的gpu加速的视频流图像校正装置300的方框图,如图3所示,装置300包括:获取模块310,用于获取待校正图像;处理模块320,用于对所述待校正图像进行预处理,得到用于描述所述待校正图像中每个像素的位置在校正前后的映射关系;同时将所述待校正图像转换为浮点类型的数据图像;所述映射关系为二维图像矩阵;编码模块330,用于对所述数据图像进行编码处理,得到与其对应的颜色图像;编写模块340,用于基于所述映射关系、数据图像和颜色图像,编写shader顶点和片元程序文件;渲染模块350,用于通过gpu加载所述shader顶点和片元程序文件,得到校正后的渲染图像。
53.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,所述描述的模块
的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
54.图4示出了适于用来实现本技术实施例的终端设备或服务器的结构示意图。
55.如图4所示,终端设备或服务器包括中央处理单元(cpu)401,其可以根据存储在只读存储器(rom)402中的程序或者从存储部分408加载到随机访问存储器(ram)403中的程序而执行各种适当的动作和处理。在ram 403中,还存储有终端设备或服务器操作所需的各种程序和数据。cpu 401、rom 402以及ram 403通过总线404彼此相连。输入/输出(i/o)接口405也连接至总线404。
56.以下部件连接至i/o接口405:包括键盘、鼠标等的输入部分406;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分407;包括硬盘等的存储部分408;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分409。通信部分409经由诸如因特网的网络执行通信处理。驱动器410也根据需要连接至i/o接口405。可拆卸介质411,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器410上,以便于从其上读出的计算机程序根据需要被安装入存储部分408。
57.特别地,根据本技术的实施例,上文方法流程步骤可以被实现为计算机软件程序。例如,本技术的实施例包括一种计算机程序产品,其包括承载在机器可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分409从网络上被下载和安装,和/或从可拆卸介质411被安装。在该计算机程序被中央处理单元(cpu)401执行时,执行本技术的系统中限定的上述功能。
58.需要说明的是,本技术所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本技术中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本技术中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。
59.附图中的流程图和框图,图示了按照本技术各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,前述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要
注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
60.描述于本技术实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
61.作为另一方面,本技术还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中的。上述计算机可读存储介质存储有一个或者多个程序,当上述前述程序被一个或者一个以上的处理器用来执行描述于本技术的方法。
62.以上描述仅为本技术的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本技术中所涉及的申请范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离前述申请构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本技术中申请的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1