CN112116641B - 一种基于OpenCL的散斑图像匹配方法 - Google Patents
一种基于OpenCL的散斑图像匹配方法 Download PDFInfo
- Publication number
- CN112116641B CN112116641B CN202010953508.9A CN202010953508A CN112116641B CN 112116641 B CN112116641 B CN 112116641B CN 202010953508 A CN202010953508 A CN 202010953508A CN 112116641 B CN112116641 B CN 112116641B
- Authority
- CN
- China
- Prior art keywords
- matching
- opencl
- kernel
- speckle
- program
- 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
- 238000000034 method Methods 0.000 title claims abstract description 25
- 230000002776 aggregation Effects 0.000 claims abstract description 22
- 238000004220 aggregation Methods 0.000 claims abstract description 22
- 238000004364 calculation method Methods 0.000 claims abstract description 16
- 230000009466 transformation Effects 0.000 claims abstract description 12
- 230000006870 function Effects 0.000 claims description 11
- 238000012935 Averaging Methods 0.000 claims description 5
- 230000005540 biological transmission Effects 0.000 claims description 5
- 238000006243 chemical reaction Methods 0.000 claims description 4
- 238000003491 array Methods 0.000 claims description 3
- 238000013507 mapping Methods 0.000 claims description 2
- 238000005259 measurement Methods 0.000 description 6
- 238000002474 experimental method Methods 0.000 description 2
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/30—Determination of transform parameters for the alignment of images, i.e. image registration
- G06T7/33—Determination of transform parameters for the alignment of images, i.e. image registration using feature-based methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/80—Analysis of captured images to determine intrinsic or extrinsic camera parameters, i.e. camera calibration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20228—Disparity calculation for image-based rendering
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Image Processing (AREA)
Abstract
本发明开了一种基于OpenCL的散斑图像匹配方法,包括以下步骤:通过Census变换计算散斑图像的特征值,并利用特征值计算汉明距离;在已知汉明距离的情况下,通过半全局匹配算法来计算散斑图像之间的匹配聚合代价,利用匹配聚合代价计算散斑图像之间的视差数据;利用所得的匹配聚合代价进行亚像素计算;将上述方法编写为可供OpenCL使用的内核程序;初始化内核启动环境,执行程序,并从OpenCL内核中输出视差数据,释放资源。本发明方法利用OpenCL的并行化计算能力,对散斑匹配算法进行加速,在不影响散斑匹配精度的前提下,有效地提升了散斑匹配算法的计算速度。
Description
技术领域
本发明属于光学测量技术领域,具体涉及一种基于OpenCL的散斑图像匹配方法。
背景技术
近年来,三维测量技术在我们的生活中扮演者越来越重要的角色,无论是在工业检测领域还是人脸识别领域都起着决定性的作用。人类之所以可以看见三维的世界是因为人类的两只眼睛观察到的景物存在一点位移,即视差。通过视差可以让人类产生有空间感的立体视觉效果,我们将其称为双目立体视觉。三维测量技术的原理是基于双目立体视觉的原理,利用两幅或多幅图像提供的信息来计算视差数据并重构出三维信息。因此获得准确的视差数据就是三维测量的关键。为了增加待测物体表面的特征信息,将对待测物体表面投影散斑图像,然后通过对采集到的散斑图像进行匹配,获得物体的视差信息。
半全局匹配(SGM)算法是一种常见的匹配算法,通过设置一个和视差图像相关的全局能量函数,使这个函数最小化,以求获得这个像素最优视差的目的。为了使SGM算法的结果更加准确,需要在计算全局能量函数时计算多个方向上的匹配聚合代价,并对其取平均值来消除能量函数中的误差信息。因为需要进行多次SGM计算,所以会使得算法的计算时间大大增加,为了可以加快算法的计算速度,采用OpenCL对散斑图像匹配算法进行加速。
OpenCL全称为Open Computing Language,是由Khronos Group维护的为异构平台提供编写程序的开放性标准框架。OpenCL可以在多核CPU或者GPU上编译运行,并且利用GPU进行并行化计算。在传统C/C++语言编写的算法使用的是串行操作,而OpenCL是基于GPU的并行化计算方法,因此本专利中所使用的OpenCL技术可以使算法的速度有着大幅度的提升。
发明内容
本发明的主要目的在于提供一种基于OpenCL的散斑图像匹配方法,该方法通过对Census变换和SGM算法进行并行化计算,在不降低匹配精度的情况下实现快速的散斑图像匹配。
本发明的技术方案如下:一种数字全息频谱中心亚像素搜索方法,包括以下步骤:
步骤1:对两幅散斑图像进行Census变换,将散斑图像上的灰度值转化为初始的特征值,并且利用特征值计算汉明距离;
步骤2:通过半全局匹配算法,利用汉明距离来计算和视差图像相关的全局能量函数,将其作为匹配聚合代价,将匹配聚合代价最小值对应的视差数据作为散斑图像的视差数据;
步骤3:利用SGM算法计算得到的匹配聚合代价和整数视差数据进行视差数据的亚像素计算;
步骤4:将上述三个步骤中的算法编写为OpenCL内核程序;
步骤5:初始化OpenCL内核启动环境;
步骤6:执行OpenCL程序,程序结束后,从OpenCL内核中读出两幅散斑图像匹配后的视差数据。
优选的,步骤2中所使用的半全局匹配算法的具体方法为:利用获得的特征信息经过半全局匹配算法,通过对目标散斑图像和参考散斑图像上下左右四个方向的匹配聚合代价进行计算,并将四个方向的匹配聚合代价取平均值,最终获得像素点之间的匹配聚合代价,通过匹配聚合代价的最小值找到两幅图像之间对应的匹配像素点。
优选的,步骤3中将完整的双目立体匹配算法编写为OpenCL内核程序的执行顺序为:对散斑图像进行Census变换;通过Census变换得到的特征数据计算汉明距离;半全局匹配(SGM),分别进行四个方向的SGM变换,并在最后一个方向的SGM变换中将四个方向的匹配聚合代价取平均;通过WTA算法计算视差数据;进行亚像素计算。
步骤4中初始化OpenCL内核启动环境的具体内容为:OpenCL主程序包括设置分块大小优选的,,获取可用平台,获取设备列表并选中目标设备作为运行设备,创建上下文环境,创建内核程序对象并进行编译、创建传输队列和内核执行队列,创建内存空间,设置参数映射,拷贝数据到设备,安排传输队列和内核队列的执行顺序,从目标设备中拷贝执行结果,释放资源。
优选的,步骤4中初始化OpenCL内核启动环境的步骤为:先使用clGetPlatformIDs和clGetPlatformInfo两个命令来获取可用的计算平台;然后通过clCreateContextFromType命令生成context上下文环境和通过clBuildProgram命令生成program编译对象;根据所提到的内核程序和所需要的内存空间,分别使用clCreateKernel命令和clCreateBuffer命令来创建内核对象和创建内存空间;然后设置global_work_size和local_work_size两个参数的值,因为采取二维线程的并行方式,所以两个参数均为二维数组,且根据不同的内核程序两个参数的值会随之变化。
优选的,步骤6中运行OpenCL程序和读出所需要的是视差数据的具体内容为:在程序运行时需要通过clEnqueueNDRangeKernel命令将内核程序和内存空间放入命令队列中执行,再最后通过clEnqueueReadBuffer命令将计算获得的数据从内核中读取。
本发明与传统方法相比,具有如下优点:本方法相比较与在C/C++中串行计算的散斑图像匹配算法,其在计算速度方面有着显著的提升。并且在提升计算速度的同时并没有影响散斑图像匹配算法的匹配精度。
附图说明
图1为基于OpenCL的散斑图像匹配方法步骤流程示意图。
图2为本实施例用于实验的左视角散斑图像。
图3为本实施例用于实验的右视角散斑图像。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
本发明是一种基于OpenCL的散斑图像匹配方法,可进行快速的散斑图像匹配,获得准确的匹配结果(视差数据)。本方法的具体流程如图1所示,本方法包括以下几个步骤:
步骤一:对散斑图像进行Census变换,Census变换的公式如下:
其中p为Census窗口的中心像素,q为窗口中心像素以外的其他像素。通过Census变换将图像的灰度值转化为特征值。然后利用Census变换获得的特征值计算汉明距离(Hamming Distance),根据事先设置好的视差约束范围,计算出视差约束范围内的初始匹配代价。
步骤二:利用SGM算法计算多个方向上的匹配聚合代价,SGM的公式如下:
其中D为视差数据,p和q代表图中的某一个像素点, 为像素p点的相邻像素点,代表当前像素点视差为/>时的匹配代价,/>和/>为惩罚系数(常数),/>函数返回1如果函数中的参数为真,否则返回0。考虑到SGM算法对某个方向进行计算,当沿着r方向时,可以将SGM计算表示为:
其中为沿着当前方向,且视差值为d时最小的匹配聚合代价。通过计算多个方向的匹配聚合代价,并对其取平均则可以获得最终的匹配聚合代价/>:
其中每个像素的匹配聚合代价最小值即为该像素的最佳视差数据,即:
。
步骤三:为了可以进一步提高测量的精度,可以通过视差匹配代价聚合S(p,d)拟合的曲线将整像素的视差数据转化为亚像素的视差数据:
其中为亚像素的视差数据,/>为/>点的整像素视差数据,即/>。
步骤四:将步骤一、步骤二和步骤三的算法写成可以供OpenCL运行的内核程序。通过get_global_id(x)函数可以获取当前执行的工作节点在工作空间中指定维度x上的索引位置。我们采用的时二维线程的并行方式,其中两个维度分别代表图像的分辨率,即图像的宽和高。根据local_work_size参数的值来决定每一次并行计算中工作组的大小。
步骤五:初始化OpenCL内核的启动环境。先使用clGetPlatformIDs和clGetPlatformInfo两个命令来获取可用的计算平台,并选择其中一个环境作为计算平台;然后通过clCreateContextFromType命令生成context上下文环境和通过clBuildProgram命令生成program编译对象;使用clCreateKernel命令和clCreateBuffer命令来创建内核对象和创建内存空间;然后设置global_work_size和local_work_size两个参数的值,因为采取二维线程的并行方式,所以两个参数均为二维数组,且根据不同的内核程序两个参数的值会随之变化;最后使用clCreateCommandQueue命令创建执行内核函数以及执行数据传输的两个命令队列。
步骤六:执行OpenCL程序,通过clEnqueueNDRangeKernel命令将内核程序和内存空间放入命令队列中执行,再最后通过clEnqueueReadBuffer命令将计算获得的数据从内核中读取,并且计算所耗费的时间。
为验证本专利所述方法的有效性,利用两幅图像大小为640x480的左右视角散斑图像进行散斑图像匹配,如图2所示。视差约束的范围为-23~31。本次实例运行环境为:CPU型号为Core i7-8700,内存8G,操作系统为10.1(64位),GPU型号为NVIDIA GTX 1050Ti,显存2G,所使用的SDK版本为CUDA Toolkit 10.0,所使用的集成开发环境为Visual Studio2013。
为了可以最大化的利用GPU的计算能力,我们所设置的local_work_size的数值为[16,16],因为global_work_size数值的大小必须被local_work_size所整除,所以将global_work_size数值的大小设置为[640,480]。
方法 | 用时(ms) | 加速比 |
串行化计算 | 8200 | 1 |
并行化计算 | 46 | 178.26 |
通过比较可以看出并行化计算(本实施例所使用的方法)和串行化计算之间的计算速度的差异,其中并行化计算所需要的时间约为46ms,而串行化计算所需要的时间为8.2s。本发明的方法有着更快的测量速度,这说明本发明的方法可以更加快速,高效地实现散斑图像匹配。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (2)
1.一种基于OpenCL的散斑图像匹配方法,其特征在于,包括以下步骤:
步骤1:对两幅散斑图像进行Census变换,将散斑图像上的灰度值转化为初始的特征值,并且利用特征值计算汉明距离;
步骤2:通过半全局匹配算法,利用汉明距离来计算和视差图像相关的全局能量函数,将其作为匹配聚合代价,将匹配聚合代价最小值对应的视差数据作为散斑图像的视差数据;
步骤3:利用SGM算法计算得到的匹配聚合代价和整数视差数据进行视差数据的亚像素计算;
步骤4:将上述三个步骤中的算法编写为OpenCL内核程序;
步骤5:初始化OpenCL内核启动环境;
步骤6:执行OpenCL程序,程序结束后,从OpenCL内核中读出两幅散斑图像匹配后的视差数据;
步骤2中所使用的半全局匹配算法的具体方法为:利用获得的特征信息经过半全局匹配算法,通过对目标散斑图像和参考散斑图像上下左右四个方向的匹配聚合代价进行计算,并将四个方向的匹配聚合代价取平均值,最终获得像素点之间的匹配聚合代价,通过匹配聚合代价的最小值找到两幅图像之间对应的匹配像素点;
步骤3中将完整的双目立体匹配算法编写为OpenCL内核程序的执行顺序为:对散斑图像进行Census变换;通过Census变换得到的特征数据计算汉明距离;半全局匹配(SGM),分别进行四个方向的SGM变换,并在最后一个方向的SGM变换中将四个方向的匹配聚合代价取平均;通过WTA算法计算视差数据;进行亚像素计算;
步骤4中初始化OpenCL内核启动环境的具体内容为:OpenCL主程序包括设置分块大小,获取可用平台,获取设备列表并选中目标设备作为运行设备,创建上下文环境,创建内核程序对象并进行编译、创建传输队列和内核执行队列,创建内存空间,设置参数映射,拷贝数据到设备,安排传输队列和内核队列的执行顺序,从目标设备中拷贝执行结果,释放资源;
步骤4中初始化OpenCL内核启动环境的步骤为:先使用clGetPlatformIDs和clGetPlatformInfo两个命令来获取可用的计算平台;然后通过clCreateContextFromType命令生成context上下文环境和通过clBuildProgram命令生成program编译对象;根据步骤4中所提到的内核程序和所需要的内存空间,分别使用clCreateKernel命令和clCreateBuffer命令来创建内核对象和创建内存空间;然后设置global_work_size和local_work_size两个参数的值,因为采取二维线程的并行方式,所以两个参数均为二维数组,且根据不同的内核程序两个参数的值会随之变化。
2.根据权利要求1所述的基于OpenCL的散斑图像匹配方法,其特征在于,步骤6中运行OpenCL程序和读出所需要的是视差数据的具体内容为:
在程序运行时需要通过clEnqueueNDRangeKernel命令将内核程序和内存空间放入命令队列中执行,再最后通过clEnqueueReadBuffer命令将计算获得的数据从内核中读取。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010953508.9A CN112116641B (zh) | 2020-09-11 | 2020-09-11 | 一种基于OpenCL的散斑图像匹配方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010953508.9A CN112116641B (zh) | 2020-09-11 | 2020-09-11 | 一种基于OpenCL的散斑图像匹配方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112116641A CN112116641A (zh) | 2020-12-22 |
CN112116641B true CN112116641B (zh) | 2024-02-20 |
Family
ID=73803578
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010953508.9A Active CN112116641B (zh) | 2020-09-11 | 2020-09-11 | 一种基于OpenCL的散斑图像匹配方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112116641B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103236082A (zh) * | 2013-04-27 | 2013-08-07 | 南京邮电大学 | 面向捕获静止场景的二维视频的准三维重建方法 |
CN103268608A (zh) * | 2013-05-17 | 2013-08-28 | 清华大学 | 基于近红外激光散斑的深度估计方法及装置 |
WO2018127007A1 (zh) * | 2017-01-03 | 2018-07-12 | 成都通甲优博科技有限责任公司 | 深度图获取方法及系统 |
CN111563564A (zh) * | 2020-07-20 | 2020-08-21 | 南京理工大学智能计算成像研究院有限公司 | 基于深度学习的散斑图像逐像素匹配方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019061291A1 (zh) * | 2017-09-29 | 2019-04-04 | 深圳市大疆创新科技有限公司 | 生成视差图的方法、系统、存储介质和计算机程序产品 |
-
2020
- 2020-09-11 CN CN202010953508.9A patent/CN112116641B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103236082A (zh) * | 2013-04-27 | 2013-08-07 | 南京邮电大学 | 面向捕获静止场景的二维视频的准三维重建方法 |
CN103268608A (zh) * | 2013-05-17 | 2013-08-28 | 清华大学 | 基于近红外激光散斑的深度估计方法及装置 |
WO2018127007A1 (zh) * | 2017-01-03 | 2018-07-12 | 成都通甲优博科技有限责任公司 | 深度图获取方法及系统 |
CN111563564A (zh) * | 2020-07-20 | 2020-08-21 | 南京理工大学智能计算成像研究院有限公司 | 基于深度学习的散斑图像逐像素匹配方法 |
Non-Patent Citations (3)
Title |
---|
GMAW增材制造堆积熔池表面三维重建及熔宽控制;尹紫秋;《中国优秀硕士学位论文全文数据库 工程科技Ⅰ辑》;20180915;全文 * |
双目立体视觉测距系统关键技术研究;丁欢欢;《中国优秀硕士学位论文全文数据库 信息科技辑》;20160215;全文 * |
吴树森 ; 董小社 ; 王宇菲 ; 王龙翔 ; 朱正东.UPPA:面向异构众核系统的统一并行编程架构.《计算机学报》.2020,全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN112116641A (zh) | 2020-12-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zhou et al. | Voxelnet: End-to-end learning for point cloud based 3d object detection | |
JP6745328B2 (ja) | 点群データを復旧するための方法及び装置 | |
US10929654B2 (en) | Three-dimensional (3D) pose estimation from a monocular camera | |
CN108549873A (zh) | 三维人脸识别方法和三维人脸识别系统 | |
US10872227B2 (en) | Automatic object recognition method and system thereof, shopping device and storage medium | |
US11062471B1 (en) | Neural network system for stereo image matching | |
CN102074015A (zh) | 一种基于二维图像序列的目标对象的三维重建方法 | |
Chang et al. | GPU-friendly multi-view stereo reconstruction using surfel representation and graph cuts | |
WO2021220688A1 (en) | Reinforcement learning model for labeling spatial relationships between images | |
EP3951314B1 (en) | Three-dimensional measurement system and three-dimensional measurement method | |
CN110738730A (zh) | 点云匹配方法、装置、计算机设备和存储介质 | |
WO2024212819A1 (zh) | 一种全景slam方法、装置、计算设备及存储介质 | |
Cao et al. | Fast incremental structure from motion based on parallel bundle adjustment | |
CN112116640B (zh) | 一种基于OpenCL的双目立体匹配方法 | |
CN112116641B (zh) | 一种基于OpenCL的散斑图像匹配方法 | |
Cao et al. | Stable image matching for 3D reconstruction in outdoor | |
US11348261B2 (en) | Method for processing three-dimensional point cloud data | |
CN112232372B (zh) | 一种基于opencl的单目立体匹配及加速的方法 | |
Duckworth et al. | Parallel processing for real-time 3D reconstruction from video streams | |
CN115239559A (zh) | 一种融合视图合成的深度图超分辨率方法及系统 | |
US11430150B2 (en) | Method and apparatus for processing sparse points | |
Goshin et al. | Parallel implementation of the multi-view image segmentation algorithm using the Hough transform | |
Örnhag et al. | Minimal solvers for indoor uav positioning | |
CN111462199A (zh) | 基于gpu的快速散斑图像匹配方法 | |
CN103617622A (zh) | 一种位姿估计的正交迭代优化算法 |
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 |