使用冲浪的特征提取
使用加速鲁棒功能(SURF)的对象识别由三个步骤组成:功能提取,功能描述和功能匹配。此示例执行特征提取,这是冲浪算法的第一步。此处使用的算法基于OpenSurf库实现。此示例显示了如何使用GPU CODER™通过CUDA®代码生成来解决此密集问题。
第三方先决条件
必需的
此示例生成CUDA MEX,并具有以下第三方要求。
启用CUDA的NVIDIA®GPU和兼容驱动程序。
可选的
对于非MEX构建,例如静态,动态库或可执行文件,此示例具有以下其他要求。
NVIDIA工具包。
编译器和库的环境变量。有关更多信息,请参阅第三方硬件和设置先决条件下载188bet金宝搏。
验证GPU环境
要验证正确设置此示例所需的编译器和库是否正确设置Coder.CheckgPuinstall
功能。
envcfg = coder.gpuenvconfig('主持人');envcfg.basiccodegen = 1;envcfg.quiet = 1;coder.checkgpuinstall(envcfg);
特征提取
特征提取是任何对象识别算法中的基本步骤。它是指提取有用信息的过程特征从输入图像。提取的特征必须具有代表性,具有图像的重要和独特的属性。
这SurfDetect.M功能是执行特征提取的主要入口点。此功能接受8位RGB或8位灰度图像作为输入。返回的输出是提取的兴趣点的数组。此函数由以下函数调用组成,其中包含适合GPU并行化的计算:
这convert32bitfpgray.m功能将8位RGB图像转换为8位灰度图像。如果所提供的输入已经以8位灰度格式为单位,请跳过此步骤。在此步骤之后,将8位灰度图像转换为32位浮点表示,以在GPU上启用快速计算。
这myintegralimage.m函数计算上一步中获得的32位浮点灰度图像的积分图像。积分图像可用于简化查找图像的任何矩形区域内包含的像素之和。找到像素的总和有助于提高下一步中执行的卷积速度。
这Fasthessian.m功能用不同尺寸的框过滤器进行卷积,并存储计算的响应。对于此示例,使用以下参数:
八度数:5
间隔数:4
阈值:0.0004
滤波器尺寸:八度1-9、15、21、27
八度2-15、27、39、51
八度3-27、51、75、99
八度4-51、99、147、195
八度5-99、195、291、387
这nonmaxsuppression_gpu.m功能执行非最大抑制作用,以仅滤除前面获得的响应中的有用兴趣点。生成使用的内核
原子
操作,使用CODER.CEVAL
构造。因为直接从MATLAB®调用时,此构建体不兼容,所以有两个不同的函数调用。这nonmaxsuppression_gpu.m当启用GPU代码生成时,调用函数nonmaxsuppression.m当您直接在MATLAB中执行该算法时,请调用。
这entientationcalc.m功能在上一步中计算并分配给兴趣点的方向。
最终结果是一系列的兴趣点,其中利益点是由这些字段组成的结构:
x,y(坐标),比例,方向,laplacian
读取输入图像
通过使用imread
功能。
ImageFile ='peppers.png';inputImage = imread(imageFile);imshow(inputimage);
生成CUDA MEX的功能
为了生成Cuda Mex冲浪搜索
函数,创建GPU编码器配置对象,然后运行代码根
功能。
cfg = coder.gpuconfig('Mex');evalc('codegen -config cfg surfdetect -args {inputImage}');
在GPU上运行MEX功能
您可以调用生成的MEX功能surfdetect_mex
在GPU上运行:
disp(“运行GPU编码器冲浪”);兴趣点= surfdetect_mex(inputImage);fprintf('GPU编码员冲浪发现:%d兴趣点\ n',长度(兴趣点));
发现GPU编码器冲浪GPU编码器冲浪发现:249兴趣点
描述提取的利息点
输出兴趣点SGPU
是一系列提取的兴趣点。这些兴趣点在图形窗口中的输入图像上描绘。
drawipoints(imageFile,iNesivePointsgpu);
参考
克里斯托弗·埃文斯(Christopher Evans)在《打开图书馆》上的注释。
冲浪:赫伯特湾,Tinne Tuytelaars和Luc van Gool加快了强大的功能。
也可以看看
功能
代码根
|coder.gpu.kernel
|coder.gpu.kernelfun
|gpucoder.matrixmatrixkernel
|coder.gpu.constantmemory
|gpucoder.stencilkernel
|Coder.CheckgPuinstall