CN107527327B - 一种基于gpu的鱼眼校正方法 - Google Patents
一种基于gpu的鱼眼校正方法 Download PDFInfo
- Publication number
- CN107527327B CN107527327B CN201710731255.9A CN201710731255A CN107527327B CN 107527327 B CN107527327 B CN 107527327B CN 201710731255 A CN201710731255 A CN 201710731255A CN 107527327 B CN107527327 B CN 107527327B
- Authority
- CN
- China
- Prior art keywords
- flake
- correction
- algorithm
- gpu
- correcting
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000012937 correction Methods 0.000 claims abstract description 112
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 87
- 238000000034 method Methods 0.000 claims abstract description 55
- 241000251468 Actinopterygii Species 0.000 claims abstract description 50
- 230000008569 process Effects 0.000 claims abstract description 34
- 230000000694 effects Effects 0.000 claims abstract description 23
- 230000004438 eyesight Effects 0.000 claims description 38
- 239000011159 matrix material Substances 0.000 claims description 13
- 238000009966 trimming Methods 0.000 claims description 13
- 230000033001 locomotion Effects 0.000 claims description 10
- 239000013598 vector Substances 0.000 claims description 10
- 238000004364 calculation method Methods 0.000 claims description 9
- 230000015654 memory Effects 0.000 claims description 9
- 238000004091 panning Methods 0.000 claims description 9
- 230000015572 biosynthetic process Effects 0.000 claims description 5
- 230000008859 change Effects 0.000 claims description 5
- 238000011068 loading method Methods 0.000 claims description 5
- 238000004458 analytical method Methods 0.000 claims description 3
- 238000009738 saturating Methods 0.000 claims description 2
- 230000002093 peripheral effect Effects 0.000 claims 1
- 230000005540 biological transmission Effects 0.000 abstract description 2
- 238000013507 mapping Methods 0.000 description 12
- 238000012545 processing Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 6
- 235000013399 edible fruits Nutrition 0.000 description 5
- 230000000007 visual effect Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000007689 inspection Methods 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 238000007796 conventional method Methods 0.000 description 2
- 238000000151 deposition Methods 0.000 description 2
- 238000003384 imaging method Methods 0.000 description 2
- 230000008092 positive effect Effects 0.000 description 2
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 2
- 241001062009 Indigofera Species 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000005452 bending Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000000465 moulding Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
Classifications
-
- G06T5/80—
Landscapes
- Image Processing (AREA)
Abstract
本发明提供了一种基于GPU的鱼眼校正方法,包括:鱼眼模型的建立、鱼眼校正算法的获取、图像获取、UI控制、鱼眼校正范围的确定以及虚拟PTZ等过程,本发明以GPU作为硬件支持,基于opengl以及D3D库开发,对鱼眼图像作为纹理加载到GPU中,建立鱼眼的立体模型,并分别对不同的校正模式推导相对应的校正公式,将校正公式在GPU的着色器中实现,运用GPU的着色器来进行校正运算得到校正后结果,与传统的CPU计算相比,本发明在加载鱼眼图像数据到GPU作为纹理的过程中,采用共享内存方法,可以大大的提高鱼眼图像从CPU到GPU的传输效率,通过在GPU的着色器中进行鱼眼校正,对于鱼眼校正能够达到实时处理的效果。
Description
技术领域
本发明涉及视频监控技术领域,具体涉及一种基于GPU的鱼眼校正方法。
背景技术
鱼眼镜头是模拟水下鱼类仰视水面效果的一种超广角镜头,其典型视场角为180°,还有的超过180°、大于220°,甚至达到270°。鱼眼镜头的好处很多:视角大,可容纳场景多,且可以适应狭小空间拍摄,因此在虚实景技术、机器人导航、视觉监控等许多计算机视觉领域中被广泛应用。从结构上来说,鱼眼镜头确实也是类似于鱼眼的结构,并且鱼眼镜头派生出两种类型,一种称为为Circular Image Fisheye(圆形鱼眼),另外一种称为FullFrame Fisheye(全幅鱼眼),其设计的视角基本是180°。采用鱼眼镜头拍摄的图像由于视角超广,因此其桶形弯曲畸变非常大,画面周边的成像呈现严重变形,直线弯曲,只有镜头中心部分的内容可以保持原来的状态。
在安防监控领域,家庭、公共场所、交通枢钮、商场与娱乐等场合需要使用全景鱼眼摄像机来实现360°×180°的大范围高质量无死角的全景实时监控,通常使用单个鱼眼摄像机可以代替多个安装角度不同的普通摄像头,鱼眼摄像机的优势在于视场角很大但是由于其视场角大会导致严重的畸变,不符合人眼的观察习惯,所以鱼眼较正技术变得尤为重要,传统的鱼眼校正技术多采用CPU进行校正,但是采用CPU进行校正存在很多缺陷:一方面是局限CPU的内存计算法要求,不能对较大图像如4k图像进行校正,另一方面不能保证图像校正的实时性,而且在校正的过正中存在对CPU性能消耗大、校正模式单一、不容易对各个局部进行观测等问题。
公开号为CN103996172A的中国专利申请公开了“一种基于多步校正的鱼眼图像校正方法”,该方法使用校正模型计算出的结果使用表格记录图像像素的位置变动情况,将延拓模型复杂的校正过程同工程实际应用隔离开,最大程度地提高了鱼眼图像校正的实时性,保证了嵌入式设备对实时性的要求,但是该方法的校正的过程中依旧存在对CPU性能消耗大、校正模式单一、不容易对各个局部进行观测等问题。
公开号为CN101783011A的中国专利申请公开了“一种鱼眼镜头的畸变校正方法”,该方法采用修正的球面校正模型,针对不同的鱼眼镜头设置不同的参数值并产生不同的坐标映射表,以此提高鱼眼校正的准确性,将映射表放入存储器内之后,对于该鱼眼镜头获取的所有鱼眼图像,均可采用查表的方式进行目标图恢复,采用这种方法后,图像处理时间将不再受算法的复杂度限制,而主要由存储器的存取时间来决定,大大提升了鱼眼图像畸变校正的速度与效率,具备工业应用中的实时性要求。但是该方法校正模式单一、不能够对各个局部进行观测。
发明内容
针对现有技术的不足,本发明提供了一种基于GPU的鱼眼校正方法,本技术采用GPU(图形图像处理器)对鱼眼图像进行校正,丰富了鱼眼图像的校正模式,可以对各个局部进行观测,并且保证鱼眼校正能够达到实时处理的效果。
为实现上述技术方案,本发明提供了一种基于GPU的鱼眼校正方法,具体包括如下步骤,
S1、鱼眼模型的建立:以GPU作为硬件支持,基于opengl以及D3D库开发,对鱼眼图像作为纹理加载到GPU中,建立鱼眼校正顶点模型以及鱼眼校正范围顶点模型,将鱼眼建立为三维半球顶点模型,三维半球顶点模型上的点与二维鱼眼原图上的点一一对应,并建立顶点缓存以及索引缓存模型,后续的校正过程为由三维球面上的点按照不同的校正模型映射到不同的校正平面,实现透视投射校正、柱面模型校正和经纬度算法校正;
S2、鱼眼校正算法的实现:通过GPU的着色器对步骤S1中建立的鱼眼模型实现透视投射校正算法、柱面模型校正算法、经纬度算法校正算法以及对应的反向推导算法的获取,用来对鱼眼进行不同模式的校正;
S3、图像获取:采用共享内存方法进行纹理加载,将视频流中的图像数据从CPU内存中加载到GPU显存中;
S4、UI控制:通过UI控制模块对步骤S1中鱼眼模型进行参数解析,获取鱼眼模型的组合模式以及控制参数,然后将获取到的组合模式和控制参数传入到GPU的着色器中,并结合步骤S2中得到的鱼眼校正算法实现对不同区域的鱼眼进行校正观测;
S5、鱼眼校正范围的确定:根据步骤S2中得到的反向推导算法反向计算得到鱼眼校正反向校正范围计算公式,然后结合步骤S1中建立的顶点缓存以及索引缓存模型,将观测平台上的校正点分别投影到鱼眼原图或鱼眼全景图上,形成鱼眼在原图或全景图上的校正范围图;
S6、虚拟PTZ:利用PTZ摄像机在三维坐标系旋转变化关系,计算得出PTZ摄像机在三维坐标系旋转矩阵,将矩阵参数输入到GPU的着色器中达到对不同区域的观测,然后通过已经校正的鱼眼图像获取其校正前在鱼眼原图中的范围,将这个范围绘制在原图中形成一个范围框,以获取校正图与原鱼眼图的对应关系,然后通过UI控制这个范围框对不同区域进行校正,达到PTZ的效果。
优选的,所述步骤S2中,透视投射校正算法、柱面模型校正算法、经纬度算法校正算法以及对应的反向推导算法都是在GPU的着色器中进行实现的,用来对鱼眼进行不同模式的校正,以及获取对应校正图的校正范围,其具体步骤如下:
S21、使用鱼眼镜头收集从四面八方照射的光线,鱼眼镜头将光线折射到GPU内二维感应器的靶面上形成鱼眼图像;
S22、以鱼眼图像所在的平面为基础平面建立xoy平面,将二维鱼眼图像映射为一个三维的鱼眼半球面,此鱼眼半球面与光线照射到鱼眼镜头上的图像相同,然后将此鱼眼半球面上的点按照不同的反向传播方式传播到观测平面或是观测体上以实现不同的校正结果;其中,透视投射校正算法就是将鱼眼半球面上的点按照从二维鱼眼发射出来的向量继续发射到观测平面上,从而建立二维平面上的点与观测平面上点的关系,而观测平面就是通过透视投射校正算法校正后得到的鱼眼校正结果;柱面校正算法就是将观测平面改为一个观测柱面,鱼眼半球内切观测柱面,使用等距投影法将鱼眼半球上的点向柱面投影得到的观测面即为通过柱面校正算法校正后得到的鱼眼校正结果;经纬度算法为一个鱼眼圆拉伸为矩形图像的过程,即将鱼眼图建立经纬线,然后将纬线进行差值均匀左右拉伸直,拉伸直后得到的平面即为通过经纬度算法校正后得到的鱼眼校正结果;反向推导算法就是从经过透视投射校正算法、柱面校正算法或者经纬度算法校正后的已知校正平面反向推导得出当前校正平面在原鱼眼图中的校正范围。
优选的,所述步骤S4中,UI控制具体包括如下步骤:
S41、首先根据鱼眼设备所装配的方式,通过UI操作来选择步骤S1中鱼眼模型不同的鱼眼挂机模式,鱼眼支持的挂机模式包括顶挂模式,地装模式,壁挂模式,以及倾斜壁挂模式;
S42、选择不同的观测组合模式,组合模式包括,VR模式,柱面模式,全景模式,4ptz+鱼眼模式,9ptz+鱼眼模式,4ptz+全景模式,9ptz+全景模式;
S43、选择好观测模式后,用户可以通过鼠标或手势点击滑动实现鱼眼分屏漫游校正的效果,分屏漫游校正的具体过程为:首先通过底层算法识别点击点所在的分屏,然后根据鼠标或手势移动的距离计算得出运动向量,将运动向量根据当前选择的挂机以及校正模式,解析为实际可以控制不同观测平面的旋转参数;
S44、将鱼眼半球图固定,通过UI控制模块从不同的角度对这个鱼眼上的数据进行观测,将观测平面的变化解析为观测平面绕三维坐标系的旋转,通过三维坐标系的旋转达到观测平面旋转的效果;
S45、将通过UI控制模块在步骤S41到S44中获得的组合模式以及控制参数输送到GPU的着色器中,然后结合步骤S2中得到的鱼眼校正算法实现对不同区域的鱼眼进行校正观测。
优选的,在步骤S6中,通过UI控制范围框对不同区域进行校正的过程中加入动态或者VR效果。
本发明提供的一种基于GPU的鱼眼校正方法有益效果在于:
1)本发明以GPU作为硬件支持,基于opengl以及D3D库开发,对鱼眼图像作为纹理加载到GPU中,建立鱼眼的立体模型,鱼眼的校正过程理解为鱼眼原图空间的像素到鱼眼校正平面的映射,本发明分别对不同的校正模式推导相对应的校正公式,将校正公式在GPU的着色器中实现,运用GPU的着色器来进行校正运算得到校正后结果,与传统的CPU计算相比,本发明在加载鱼眼图像数据到GPU作为纹理的过程中,采用共享内存方法,可以大大的提高鱼眼图像从CPU到GPU的传输效率,通过在GPU的着色器中进行鱼眼校正,对于鱼眼校正能够达到实时处理的效果;
2)本发明采用GPU(图形图像处理器)对鱼眼图像进行校正,GPU相对于传统的CPU其计算单元更多更适合进行图像方面的处理,而且可以支持多种图像处理算法,可以有效提高鱼眼处理的效果;
3)本发明提供了多种适用于GPU的校正算法,并通过UI控制三维矩阵变化以及校正模型来达到对不同校正范围的漫游观测,可以解决传统鱼眼校正过程中校正模式单一且不容易对各个局部进行观测的缺点;
4)本发明通过已经校正的鱼眼图像获取其校正前在鱼眼原图中的范围,并将这个范围绘制在原图中形成一个范围框,可以获取校正图与原鱼眼图的对应关系,然后通过UI控制这个范围框对不同区域进行校正,可以实现摄像机的PTZ效果;
5)本发明中将鱼眼校正的范围框绘制在鱼眼原图上,用户可以控制校正范围框来对不同区域校正,极大的方便了用户进行鱼眼校正时的操作,并且在校正过程中加入动态或者VR效果增强客户体验。
附图说明
图1为本发明的流程示意图;
图2为本发明的校正结构示意图;
图3为本实施例中鱼眼半球与观测平台的示意图;
图4为本发明UI控制校正效果以及校正范围效果图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。本领域普通人员在没有做出创造性劳动前提下所获得的所有其它实施例,均属于本发明的保护范围。
实施例:一种基于GPU的鱼眼校正方法。
参照图1至图3所示,一种基于GPU的鱼眼校正方法,具体包括如下步骤,
S1、鱼眼模型的建立:以GPU作为硬件支持,基于opengl以及D3D库进行开发,对鱼眼图像作为纹理加载到GPU中,建立鱼眼校正顶点模型以及鱼眼校正范围顶点模型,其中鱼眼校正顶点模型以及鱼眼校正范围顶点模型是由opengl以及D3D库内的公式编写程序自动生成;然后通过GPU处理将鱼眼建立为三维半球顶点模型,此时三维半球顶点模型上的点与二维鱼眼原图上的点一一对应,并建立顶点缓存以及索引缓存模型,鱼眼模型主要包括校正模型和范围模型,校正模型为三维球面顶点模型,通过该模型将鱼眼二维图像看做为一个三维结构,输入到GPU的着色器中结合不同校正模型的算法公式,得到不同模式鱼眼的校正结果,范围模型为三维球面顶点的逆向顶点模型,其作用在于已知鱼眼校正的结果,反向推导出其在鱼眼原图中的范围;鱼眼的校正过程理解为鱼眼原图空间的像素到鱼眼校正平面的映射,如图3所示,后续的校正过程为由三维球面上的点按照不同的校正模型映射到不同的校正平面,可以实现透视投射校正、柱面模型校正和经纬度算法校正,鱼眼校正范围模型实质为校正平面上的点与三维半球顶点模型对应的过程,通过该模型能够在已知校正平面的情况下反向推导得出当前校正平面在原鱼眼图中的校正范围;本实施例中采用GPU(图形图像处理器)对鱼眼图像进行校正,相较于通常使用的CPU进行鱼眼校正,处理速度快效果好,具有对系统的性能消耗低的优势,同时利用跨平台的框架opengl以及D3D进行开发,方便程序对各种平台的兼容性以及可移植性,而且GPU相对于传统的CPU其计算单元更多更适合进行图像方面的处理,而且可以支持多种图像处理算法,可以有效提高鱼眼处理的效果;
S2、鱼眼校正算法的实现:通过GPU的着色器对步骤S1中建立的鱼眼模型实现透视投射校正算法、柱面模型校正算法、经纬度算法校正算法以及对应的反向推导算法的获取,用来对鱼眼进行不同模式的校正;
其中,透视投射校正算法、柱面模型校正算法、经纬度算法校正算法以及对应的反向推导算法都是在GPU的着色器中进行实现的,用来对鱼眼进行不同模式的校正,以及获取对应校正图的校正范围,其具体步骤如下:
S21、使用鱼眼镜头收集从四面八方照射的光线,鱼眼镜头将光线折射到GPU内二维感应器的靶面上形成鱼眼图像,鱼眼成像的过程可以根据光线传播原理进行分析,而采用的校正过程与光线传播是一个逆过程;
S22、以鱼眼图像所在的平面为基础平面建立xoy平面,如图3所示,xoy平面为鱼眼图像所在的平面,首先将二维鱼眼图像映射为一个三维的鱼眼半球面,即图中p0点单映射到p1点的过程,这个半球面可以近似的理解为与光线照射到鱼眼镜头上的图像相同,然后将这个鱼眼半球面上的点按照不同的反向传播方式传播到观测平面或是观测体上就能实现不同的校正结果,即通过p1点到观测平面p2点的过程;其中,透视投射校正算法,就是光线的直线传播对应过程,将鱼眼半球面上的点按照从二维鱼眼发射出来的向量(二维鱼眼与三维鱼眼球面一一对应)继续发射到观测平面,如图3中p2点的位置是通过op1向量向外延伸与观测平面交点,从而建立二维平面上的点与观测平面上点的关系,也就是p0点与p2点直接的关系,而由此建立的观测平面就是就是通过透视投射校正算法校正后得到的鱼眼校正结果;柱面校正算法就是将观测平面改为一个观测柱面,鱼眼半球内切观测柱面,使用等距投影法将鱼眼半球上的点向柱面投影得到的观测面即为通过柱面校正算法校正后得到的鱼眼校正结果,其中使用等距投影算法可以防止鱼眼球面上的点被投影到无穷高的柱面上;经纬度算法为一个鱼眼圆拉伸为矩形图像的过程,即将鱼眼图建立经纬线,然后将纬线进行差值均匀左右拉伸直,拉伸直后得到的平面即为通过经纬度算法校正后得到的鱼眼校正结果,经纬度算法主要用于壁挂模式校正被扭曲的部分;反向推导算法就是从经过透视投射校正算法、柱面校正算法或者经纬度算法校正后的已知校正平面反向推导得出当前校正平面在原鱼眼图中的校正范围;
传统的鱼眼畸变校正技术如opencv中需要通过相机内参以及畸变参数计算出对应映射图,输入鱼眼原图通过映射图查找最终得出鱼眼校正的结果,该方法的缺点在于如果需要以不同模式对鱼眼进行观测,就要建立不同的映射图内存消耗较大,而且如果需要对不同区域进行观测映射关系发生变化需要重新计算映射图,并且运用映射图进行校正如果不使用GPU运算其对CPU的性能消耗较大;本技术以GPU作为硬件支持,基于opengl以及D3D库开发,对鱼眼图像作为纹理加载到GPU中,建立鱼眼的立体模型,鱼眼的校正过程可以理解为鱼眼原图空间的像素到鱼眼校正平面的映射,分别对不同的校正模式推导相对应的校正公式,将校正公式在GPU的着色器中实现,运用GPU的着色器来进行校正运算得到校正后结果,与传统相比本技术由于校正过程通过公式在GPU的着色器中校正,减少传统方法的内存消耗较大的问题;
S3、图像获取:采用共享内存方法进行纹理加载,将视频流中的图像数据从CPU内存中加载到GPU显存中,由于ARM平台下CPU与GPU数据传输的带宽较小,因此采用ARM下CPU与GPU的内存共享机制,可以提高GPU的纹理加载效率,而PC平台带宽充足,使用普通的纹理加载方法进行加载;
S4、UI控制:通过UI控制模块对步骤S1中鱼眼模型进行参数解析,获取鱼眼模型的组合模式以及控制参数,然后将获取到的组合模式和控制参数传入到GPU的着色器中,并结合步骤S2中得到的鱼眼校正算法实现对不同区域的鱼眼进行校正观测;其中UI控制具体包括如下步骤:
S41、首先根据鱼眼设备所装配的方式,通过UI操作来选择步骤S1中鱼眼模型不同的鱼眼挂机模式,鱼眼支持的挂机模式包括顶挂模式,地装模式,壁挂模式,以及倾斜壁挂模式;
S42、选择不同的观测组合模式,组合模式主要包括,VR模式,柱面模式,全景模式,4ptz+鱼眼模式,9ptz+鱼眼模式,4ptz+全景模式,9ptz+全景模式等模式;
S43、选择好观测模式后,用户可以通过鼠标或手势点击滑动实现鱼眼分屏漫游校正的效果,分屏漫游校正的具体过程为:首先通过底层算法识别点击点所在的分屏,然后根据鼠标或手势移动的距离计算得出运动向量,将运动向量根据当前选择的挂机以及校正模式,解析为实际可以控制不同观测平面的旋转参数;具体可以表述为:令鼠标或手势起止点分别为(x0,y0)、(x1,y1),运动位移表示为Vec=(x1-x0,y1-y0);则解析的旋转参数中(x1-x0)代表鱼眼在三维坐标系中绕Z轴旋转的角度,(y1-y0)代表鱼眼在三维坐标系中绕X轴旋转的角度,由此获得不同观测平面的旋转参数;
S44、将鱼眼半球图固定,从不同的角度对这个鱼眼上的数据进行观测,将观测平面的变化解析为观测平面绕三维坐标系的旋转,通过控制三维坐标系的旋转可以达到控制观测平面旋转的效果,从而实现鱼眼漫游;鱼眼漫游的过程直观可以理解为将鱼眼半球图固定,从不同的角度对这个鱼眼上的数据进行观测,假定初始的观测平面为鱼眼的正上方,那么想要将这个观测平面进行改变来对鱼眼上其他位置进行观测,需要将观测平面的变化解析为观测平面绕三维坐标系的旋转,在数学层面即通过三维坐标系的旋转矩阵进行运算达到观测平面旋转的效果;
S45、结合通过UI控制模块在步骤S41到S44中获得的解析参数,将对应的参数传递到三维坐标系进行运算,并将运算得到的结果送入到GPU的着色器中,然后结合步骤S2中得到的鱼眼校正算法实现对不同区域的鱼眼进行校正观测;其具体过程如图3所示,通过UI控制模块解析到P0(x0,y0)为原鱼眼图上的一点,P0(x0,y0)与Z轴的夹角为α,与X轴的夹角为β,半径为r,鱼眼原图上的点P0到观测平面上的点P2之间的关系为校正过程,令坐标P2为(x,y),R为鱼眼原图半径,根据步骤S22中的校正算法,参照图3所示,则
鱼眼原图直角坐标公式:
透视投射校正公式为:
全景校正公式为:
经纬度校正公式为:
通过鱼眼校正公式2、公式3、公式4可以实现对鱼眼图像进行对应的透视投射校正、全景校正或者经纬度校正观测,然后结合上述鱼眼校正公式实现鱼眼漫游效果即可实现对不同区域的鱼眼进行校正观测;
S5、鱼眼校正范围的确定:根据步骤S2中得到的反向推导算法反向计算得到鱼眼校正反向校正范围计算公式,其具体过程为:如图3所示,鱼眼校正范围求解的过程为通过观测面P2(x,y)求取鱼眼原图上P0(x0,y0)的过程,结合步骤S45中的公式,可以得到公式如下:
透视投射校正范围公式:
全景校正范围公式:
经纬度壁挂范围公式:
上述公式中,P0(x0,y0)为原鱼眼图上的一点,P0(x0,y0)与Z轴的夹角为α,与X轴的夹角为β,坐标P2(x,y)为观测平面上的校正点,R为鱼眼原图半径;
根据上述反向校正范围计算公式5、公式6、公式7可将观测平面上的校正点分别投影到鱼眼原图或鱼眼全景图上,然后结合步骤S1中建立的顶点缓存以及索引缓存模型,形成鱼眼在原图或全景图上的校正范围图,如此一来,当在多分屏模式情况下,选择某一分屏时这个分屏会被一个带颜色的框框住,同时在原图、360全景图、壁挂全景(与组合模式有关),会出现一个对应颜色的范围框,该框所框选的范围与分屏中校正后的范围图一致,以方便用户可以知道目前这个分屏是在对什么范围进行校正,如图4所示;
S6、虚拟PTZ:PTZ是Pan/Tilt/Zoom的简写,代表云台全方位(上下、左右)移动及镜头变倍、变焦控制,即通过锁定(例如通过鼠标点击来锁定目标)或预置位自动触发锁定某个运动目标,来触发PTZ摄像机进行自主自动的PTZ跟踪,并自动控制PTZ摄像机的云台进行全方位旋转,针对被锁定的运动目标进行视觉导向的自动跟踪,以确保跟踪目标持续出现在镜头中央。
本实施例中的虚拟PTZ通过如下方法实现:首先利用PTZ摄像机在三维坐标系旋转变化关系,计算得出PTZ摄像机在三维坐标系旋转矩阵,在三维直角坐标系中,令PTZ摄像机绕X、Y、Z轴三个方向进行旋转角度θx、θy、θz的旋转,则PTZ摄像机在三维坐标系内的旋转矩阵可以分别用Rx、Ry、Rz表示为,具体计算公式如下:
虚拟PTZ漫游过程是由绕X、Y、Z轴的复合旋转运动完成,得到漫游过程的旋转矩阵为R=RzRyRx,其中θx为PTZ摄像机绕X轴旋转的角度,θy为PTZ摄像机绕Y轴旋转的角度;θz为PTZ摄像机绕Z轴旋转的角度,Rx为PTZ摄像机在三维坐标系内关于X轴的旋转矩阵,Ry为PTZ摄像机在三维坐标系内关于Y轴的旋转矩阵,Rz为PTZ摄像机在三维坐标系内关于Z轴的旋转矩阵,R为PTZ摄像机的漫游旋转矩阵;
将矩阵参数输入到GPU的着色器中达到对不同区域的观测,然后通过已经校正的鱼眼图像获取其校正前在鱼眼原图中的范围,将这个范围绘制在原图中形成一个范围框,以获取校正图与原鱼眼图的对应关系,最后通过UI控制这个范围框对不同区域进行校正,达到PTZ的效果(即摄像机会以范围框的移动为追踪目标进行视觉导向的自动跟踪),如此一来可以方便对不同鱼眼校正范围的观测和控制实现PTZ效果。
其中将对不同区域的观测理解为从不同的观测点对三维物体进行观测,利用三维坐标系旋转变化关系,计算得出三维坐标系旋转矩阵,将矩阵参数输入到GPU的着色器中达到对不同区域的观测,与传统方法比较不需要重新计算映射图这一过程,减少了计算量随之就减少了性能消耗,而建立一套反向校正过程,其作用在于通过已经校正的鱼眼图像能够知道其校正前在鱼眼原图中的范围,将这个范围绘制在原图中形成一个范围框,这样就方便用户知道校正图与原鱼眼图的对应关系,同时方便用户可以通过UI控制这个范围框对不同区域进行校正。具体过程如图4所示,分屏2为鱼眼原图同时具有红(框3)、绿(框1)、蓝(框2)框校正范围框,分屏1、3、4为校正图,点击某个分屏时如点击分屏3,分屏3被红色框(框3)凸显,同时校正范围框3与其对应红色框加粗,分屏3校正的图像是由校正框所覆盖的范围校正所得,如点击分屏4,分屏4被绿色框(框1)凸显,同时校正范围框1与其对应绿色框加粗,分屏4校正的图像是由校正框所覆盖的范围校正所得,如点击分屏1,分屏1被蓝色框(框2)凸显,同时校正范围框2与其对应蓝色框加粗,分屏1校正的图像是由校正框所覆盖的范围校正所得;用户可以通过鼠标或手势事件滑动分屏的校正范围,或可以拖动分屏2中的框,达到对不同鱼眼区域的校正。
本实施例中,不同模式间之间的动态效果理解为校正算法公式的渐变过程,通过将不同校正公式进行叠加控制叠加系数能够得到一系列的校正公式,这一系列的校正公式就是代表这两种模型之间的动态效果,利用这一特性可以在鱼眼模式切换时加入多种动画效果,特别是在鱼眼校正模式中增加一种VR模式,该模式为鱼眼原图与鱼眼校正图动态效果,该模式的操作流程为对鱼眼原图进行双击操作,显示画面从鱼眼图像渐变为对双击点范围的鱼眼校正图,可以方便用户操作提升用户体验。
以上所述为本发明的较佳实施例而已,但本发明不应局限于该实施例和附图所公开的内容,所以凡是不脱离本发明所公开的精神下完成的等效或修改,都落入本发明保护的范围。
Claims (3)
1.一种基于GPU的鱼眼校正方法,其特征在于具体包括如下步骤,
S1、鱼眼模型的建立:以GPU作为硬件支持,基于opengl以及D3D库开发,对鱼眼图像作为纹理加载到GPU中,建立鱼眼校正顶点模型以及鱼眼校正范围顶点模型,将鱼眼建立为三维半球顶点模型,三维半球顶点模型上的点与二维鱼眼原图上的点一一对应,并建立顶点缓存以及索引缓存模型,后续的校正过程为由三维球面上的点按照不同的校正模型映射到不同的校正平面,实现透视投射校正、柱面模型校正和经纬度算法校正;
S2、鱼眼校正算法的实现:通过GPU的着色器对步骤S1中建立的鱼眼模型实现透视投射校正算法、柱面模型校正算法、经纬度算法校正算法以及对应的反向推导算法的获取,用来对鱼眼进行不同模式的校正;
S3、图像获取:采用共享内存方法进行纹理加载,将视频流中的图像数据从CPU内存中加载到GPU显存中;
S4、UI控制:通过UI控制模块对步骤S1中鱼眼模型进行参数解析,获取鱼眼模型的组合模式以及控制参数,然后将获取到的组合模式和控制参数传入到GPU的着色器中,并结合步骤S2中得到的鱼眼校正算法实现对不同区域的鱼眼进行校正观测,UI控制具体包括如下步骤:
S41、首先根据鱼眼设备所装配的方式,通过UI操作来选择步骤S1中鱼眼模型不同的鱼眼挂机模式,鱼眼支持的挂机模式包括顶挂模式,地装模式,壁挂模式,以及倾斜壁挂模式;
S42、选择不同的观测组合模式,组合模式包括,VR模式,柱面模式,全景模式,4ptz+鱼眼模式,9ptz+鱼眼模式,4ptz+全景模式,9ptz+全景模式;
S43、选择好观测模式后,用户可以通过鼠标或手势点击滑动实现鱼眼分屏漫游校正的效果,分屏漫游校正的具体过程为:首先通过底层算法识别点击点所在的分屏,然后根据鼠标或手势移动的距离计算得出运动向量,将运动向量根据当前选择的挂机以及校正模式,解析为实际可以控制不同观测平面的旋转参数;
S44、将鱼眼半球图固定,通过UI控制模块从不同的角度对这个鱼眼上的数据进行观测,将观测平面的变化解析为观测平面绕三维坐标系的旋转,通过三维坐标系的旋转达到观测平面旋转的效果;
S45、将通过UI控制模块在步骤S41到S44中获得的组合模式以及控制参数输送到GPU的着色器中,然后结合步骤S2中得到的鱼眼校正算法实现对不同区域的鱼眼进行校正观测;
S5、鱼眼校正范围的确定:根据步骤S2中得到的反向推导算法反向计算得到鱼眼校正反向校正范围计算公式,然后结合步骤S1中建立的顶点缓存以及索引缓存模型,将观测平台上的校正点分别投影到鱼眼原图或鱼眼全景图上,形成鱼眼在原图或全景图上的校正范围图;
S6、虚拟PTZ:利用PTZ摄像机在三维坐标系旋转变化关系,计算得出PTZ摄像机在三维坐标系旋转矩阵,将矩阵参数输入到GPU的着色器中达到对不同区域的观测,然后通过已经校正的鱼眼图像获取其校正前在鱼眼原图中的范围,将这个范围绘制在原图中形成一个范围框,以获取校正图与原鱼眼图的对应关系,然后通过UI控制这个范围框对不同区域进行校正,达到PTZ的效果。
2.如权利要求1中所述的基于GPU的鱼眼校正方法,其特征在于:所述步骤S2中,透视投射校正算法、柱面模型校正算法、经纬度算法校正算法以及对应的反向推导算法都是在GPU的着色器中进行实现的,用来对鱼眼进行不同模式的校正,以及获取对应校正图的校正范围,其具体步骤如下:
S21、使用鱼眼镜头收集从四面八方照射的光线,鱼眼镜头将光线折射到GPU内二维感应器的靶面上形成鱼眼图像;
S22、以鱼眼图像所在的平面为基础平面建立xoy平面,将二维鱼眼图像映射为一个三维的鱼眼半球面,此鱼眼半球面与光线照射到鱼眼镜头上的图像相同,然后将此鱼眼半球面上的点按照不同的反向传播方式传播到观测平面或是观测体上以实现不同的校正结果;其中,透视投射校正算法就是将鱼眼半球面上的点按照从二维鱼眼发射出来的向量继续发射到观测平面上,从而建立二维平面上的点与观测平面上点的关系,而观测平面就是通过透视投射校正算法校正后得到的鱼眼校正结果;柱面校正算法就是将观测平面改为一个观测柱面,鱼眼半球内切观测柱面,使用等距投影法将鱼眼半球上的点向柱面投影得到的观测面即为通过柱面校正算法校正后得到的鱼眼校正结果;经纬度算法为一个鱼眼圆拉伸为矩形图像的过程,即将鱼眼图建立经纬线,然后将纬线进行差值均匀左右拉伸直,拉伸直后得到的平面即为通过经纬度算法校正后得到的鱼眼校正结果;反向推导算法就是从经过透视投射校正算法、柱面校正算法或者经纬度算法校正后的已知校正平面反向推导得出当前校正平面在原鱼眼图中的校正范围。
3.如权利要求1或2中所述的基于GPU的鱼眼校正方法,其特征在于,在步骤S6中,通过UI控制范围框对不同区域进行校正的过程中加入动态或者VR效果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710731255.9A CN107527327B (zh) | 2017-08-23 | 2017-08-23 | 一种基于gpu的鱼眼校正方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710731255.9A CN107527327B (zh) | 2017-08-23 | 2017-08-23 | 一种基于gpu的鱼眼校正方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107527327A CN107527327A (zh) | 2017-12-29 |
CN107527327B true CN107527327B (zh) | 2018-05-15 |
Family
ID=60682292
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710731255.9A Active CN107527327B (zh) | 2017-08-23 | 2017-08-23 | 一种基于gpu的鱼眼校正方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107527327B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108769808B (zh) * | 2018-05-24 | 2021-01-29 | 浙报融媒体科技(浙江)有限责任公司 | 交互式视频播放方法和系统 |
CN109388455B (zh) * | 2018-09-14 | 2022-05-10 | 浩云科技股份有限公司 | 一种基于Opengl es支持多平台的鱼眼图像展开监控方法 |
TWI727352B (zh) * | 2019-06-26 | 2021-05-11 | 國立臺灣海洋大學 | 以非還原校正方式及人工智慧處理擷取影像的方法、裝置及系統 |
CN112150554B (zh) * | 2019-06-28 | 2023-08-04 | 杭州海康威视数字技术股份有限公司 | 画面显示方法、装置、终端和存储介质 |
CN111294580B (zh) * | 2020-03-12 | 2022-05-03 | 佳都科技集团股份有限公司 | 基于gpu的摄像头视频投影方法、装置、设备及存储介质 |
CN111935410B (zh) * | 2020-09-11 | 2021-03-19 | 视见科技(杭州)有限公司 | 用于多机位摄像的快速取景方法和系统 |
CN113473104A (zh) * | 2021-07-12 | 2021-10-01 | 广州浩传网络科技有限公司 | 一种基于裸眼vr的视频播放方法、播放器和播放设备 |
CN115082356B (zh) * | 2022-07-20 | 2022-12-09 | 北京智汇云舟科技有限公司 | 基于shader的视频流图像校正方法、装置和设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104766270A (zh) * | 2015-03-20 | 2015-07-08 | 北京理工大学 | 一种基于鱼眼镜头的虚实光照融合方法 |
CN105208343A (zh) * | 2015-09-25 | 2015-12-30 | 珠海安联锐视科技股份有限公司 | 可用于视频监控设备的智能监控系统和方法 |
-
2017
- 2017-08-23 CN CN201710731255.9A patent/CN107527327B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104766270A (zh) * | 2015-03-20 | 2015-07-08 | 北京理工大学 | 一种基于鱼眼镜头的虚实光照融合方法 |
CN105208343A (zh) * | 2015-09-25 | 2015-12-30 | 珠海安联锐视科技股份有限公司 | 可用于视频监控设备的智能监控系统和方法 |
Non-Patent Citations (1)
Title |
---|
"基于嵌入式CPU-GPU的高清鱼眼视频实时校正系统";公维理;《计算机工程与应用》;20160510;第52卷(第14期);第172-201页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107527327A (zh) | 2017-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107527327B (zh) | 一种基于gpu的鱼眼校正方法 | |
US10957011B2 (en) | System and method of capturing and rendering a stereoscopic panorama using a depth buffer | |
CN106570938A (zh) | 基于opengl 的全景监控方法及系统 | |
TWI397317B (zh) | 廣角影像使用圓柱形座標模型並以透視投影法輸出影像的方法 | |
CN107145224B (zh) | 基于三维球面泰勒展开的人眼视线跟踪方法和装置 | |
WO2017206325A1 (zh) | 全局光照的计算方法及装置 | |
CN105243637B (zh) | 一种基于三维激光点云进行全景影像拼接方法 | |
CN101783011A (zh) | 一种鱼眼镜头的畸变校正方法 | |
CN105957048A (zh) | 鱼眼镜头拍摄图像的3d全景显示方法和系统 | |
CN104463859B (zh) | 一种基于跟踪指定点的实时视频拼接方法 | |
CN101132535A (zh) | 基于转台的多投影大屏拼接方法 | |
CN106920210B (zh) | 一种基于球面展开模型的鱼眼视频实时全景校正方法 | |
WO2017128887A1 (zh) | 全景图像的校正3d显示方法和系统及装置 | |
CN109741456A (zh) | 基于gpu并行运算的3d环视车辆辅助驾驶方法及系统 | |
CN106558017B (zh) | 球形显示图像处理方法及系统 | |
CN109388455B (zh) | 一种基于Opengl es支持多平台的鱼眼图像展开监控方法 | |
CN106780389A (zh) | 一种基于坐标转换的鱼眼图像校正方法及装置 | |
CN106910173A (zh) | 基于鱼眼图像校正实现鱼眼视频小窗口实时漫游的方法 | |
CN113989105B (zh) | 一种单相机球面镜反射成像投影装置 | |
CN105956996B (zh) | 基于二次折射投影模型的鱼眼图像校正方法、装置和系统 | |
CN108510433B (zh) | 空间展示方法、装置及终端 | |
CN110060349A (zh) | 一种扩展增强现实头戴式显示设备视场角的方法 | |
WO2022116194A1 (zh) | 一种全景呈现方法及其装置 | |
CN109961395A (zh) | 深度图像的生成及显示方法、装置、系统、可读介质 | |
Vámossy et al. | PAL Based Localization Using Pyramidal Lucas-Kanade Feature Tracker |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |