主要内容

特征匹配

这个例子展示了如何从MATLAB®代码生成CUDA®MEX和执行两个图像之间的特征匹配。本示例使用matchFeatures(计算机视觉工具箱)函数,以匹配相互旋转和缩放的两幅图像之间的特征描述符。采用加速鲁棒特征(SURF)算法对两幅图像的特征描述子进行检测和提取。

第三方的先决条件

要求

本例生成CUDA MEX,并具有以下第三方需求。

  • CUDA支持NVIDIA®GPU和兼容驱动程序。

可选

对于非mex构建,如静态、动态库或可执行文件,本例有以下附加要求。

验证GPU环境

要验证运行此示例所需的编译器和库是否正确设置,请使用coder.checkGpuInstall函数。

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

特征检测与提取

在这个例子中,特征匹配是对两幅相互旋转和缩放的图像进行的。在匹配两幅图像之前,必须对每幅图像进行特征点的检测和提取。以下featureDetectionAndExtraction功能使用SURF (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
function [matchedRefPoints,matchedQryPoints] = feature_matching(refPoints,…Copyright 2018-2021 The MathWorks, Inc. coder.gpu.kernelfun;%% Feature Matching [indexPairs,matchMetric] = matchFeatures(refDesc, qryDesc);matchedRefPoints = refPoints (indexPairs (: 1):);matchedQryPoints = qryPoints (indexPairs (:, 2):);

特征匹配代码生成

因为示例运行在主机系统上,所以创建一个带有默认参数的MEX-call配置对象。为了避免在生成的代码中存在运行时错误时异常终止MATLAB,请选择安全构建选项。

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);标题(“假定匹配点(包括异常值)”);

另请参阅

功能

对象

相关的话题