主要内容

特征匹配

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

第三方的先决条件

要求

本例生成CUDA MEX,第三方需求如下。

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

可选

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

检查GPU环境

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

envCfg = code . 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,scale);= 30.0;qryImage = imrotate(J,theta);[refPoints,refDescFeat,qryPoints,qryDescFeat] = featuredetectionanddextraction (refImage,...qryImage);

feature_matching入口点函数

feature_matching函数获取从两张图像中提取的特征点和特征描述符,并在它们之间找到匹配。

类型feature_matching
function [matchedRefPoints,matchedQryPoints] = feature_matching(refPoints,…版权所有:The MathWorks, Inc. code .gpu.kernelfun;%%特征匹配[indexPairs,matchMetric] = matchFeatures(refDesc, qryDesc);matchedRefPoints = refPoints(indexPairs(:,1),:);matchedQryPoints = qryPoints(indexPairs(:,2),:);

特征匹配代码生成

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

cfg = code . gpuconfig;cfg. gpconfig . safebuild = 1;input = {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);标题(假定匹配点(包括异常值));

另请参阅

功能

对象

相关的话题

Baidu
map