特征匹配
这个例子展示了如何从MATLAB代码生成CUDA®MEX,并在两个图像之间执行特征匹配。本例使用matchFeatures
(计算机视觉工具箱)函数从图像处理工具箱™来匹配两个图像之间的特征描述符,这两个图像相互旋转和缩放。利用SURF算法检测和提取两幅图像的特征描述符。
第三方的先决条件
要求
本例生成CUDA MEX,第三方需求如下。
CUDA支持NVIDIA®GPU和兼容的驱动程序。
可选
对于非mex构建,例如静态、动态库或可执行文件,此示例具有以下附加要求。
英伟达工具包。
编译器和库的环境变量。有关更多信息,请参见第三方硬件而且设置必备产品2022世界杯八强谁会赢?.
检查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);标题(假定匹配点(包括异常值));
另请参阅
功能
codegen
|coder.gpu.kernel
|coder.gpu.kernelfun
|gpucoder.matrixMatrixKernel
|coder.gpu.constantMemory
|gpucoder.stencilKernel
|coder.checkGpuInstall