主要内容

特征匹配

这个例子展示了如何生成CUDA®墨西哥人从MATLAB®代码和执行功能两个图像之间的匹配。下面的例子使用了matchFeatures(计算机视觉工具箱)从图像处理工具箱™函数匹配的特征描述符两个图像之间的旋转和缩放。两幅图像的特征描述符检测和提取使用骗健壮的特性(冲浪)算法。

第三方的先决条件

要求

这个示例中生成CUDA墨西哥人,有以下第三方的要求。

  • CUDA启用NVIDIA GPU®和兼容的驱动程序。

可选

等non-MEX构建静态、动态库或可执行文件,这个例子有以下额外的需求。

验证GPU环境

验证所需的编译器和库运行这个示例设置正确,使用coder.checkGpuInstall函数。

envCfg = coder.gpuEnvConfig (“主机”);envCfg。BasicCodegen = 1;envCfg。安静= 1;coder.checkGpuInstall (envCfg);

特征检测与提取

对于这个示例,特征匹配上执行两个图像旋转和缩放彼此。前两张图片可以匹配,必须为每个图像特征点检测和提取。以下featureDetectionAndExtraction函数使用冲浪(detectSURFFeatures(计算机视觉工具箱))当地检测特征点和特征检测器extractFeatures(计算机视觉工具箱)提取特征。

这个函数featureDetectionAndExtraction返回refPoints,其中包含的特征坐标参考图像,qryPoints,包含功能查询图像的坐标,refDesc矩阵包含图像特征描述符和引用qryDesc矩阵包含查询图像特征描述符。

  • refPoints =参考图像特征坐标。

  • qryPoints =查询图像特征坐标。

  • refDescFeat =参考图像特征描述符。

  • qryDescFeat =查询图像特征描述符。

K = imread (“cameraman.tif”);refImage = imresize (K, 3);规模= 0.7;J = imresize (refImage、规模);θ= 30.0;qryImage = imrotate (J,θ);[refPoints, refDescFeat qryPoints qryDescFeat] = featureDetectionAndExtraction (refImage,qryImage);

feature_matching入口点函数

feature_matching函数从两幅图像提取的特征点和特征描述符以及它们之间找到一个匹配。

类型feature_matching
函数[matchedRefPoints matchedQryPoints] = feature_matching (refPoints,……refDesc、qryPoints qryDesc) % # codegen % 2018 - 2021版权MathWorks, inc . coder.gpu.kernelfun;% %特性匹配[indexPairs matchMetric] = matchFeatures (refDesc qryDesc);matchedRefPoints = refPoints (indexPairs (: 1):);matchedQryPoints = qryPoints (indexPairs (:, 2):);

特征匹配的代码生成

因为在主机系统上运行的例子中,使用缺省参数创建一个MEX-call配置对象。为了避免异常终止MATLAB如果有运行时生成的代码中的错误,选择safe-build选项。

cfg = coder.gpuConfig;cfg.GpuConfig。SafeBuild = 1;输入= {refPoints, refDescFeat、qryPoints qryDescFeat};codegen配置cfgarg游戏输入feature_matching
代码生成成功。
[matchedRefPoints_gpu, matchedQryPoints_gpu] = feature_matching_mex (refPoints,refDescFeat、qryPoints qryDescFeat);

显示特性匹配

图;showMatchedFeatures (refImage qryImage、matchedRefPoints_gpu matchedQryPoints_gpu);标题(“推定地匹配点(包括异常值)”);

另请参阅

功能

对象

相关的话题