OpenCV 4.10.0
开源计算机视觉库
加载中...
搜索中...
无匹配项
公共类型 | 公共成员函数 | 静态公共成员函数 | 公共属性 | 所有成员列表

用于从图像中提取加速稳健特征 (SURF) 的类:更多...

#include <opencv2/xfeatures2d/cuda.hpp>

cv::cuda::SURF_CUDA 的协作图

公共类型

枚举 KeypointLayout {
  X_ROW = 0 ,
  Y_ROW ,
  LAPLACIAN_ROW ,
  OCTAVE_ROW ,
  SIZE_ROW ,
  ANGLE_ROW ,
  HESSIAN_ROW ,
  ROWS_COUNT
}
 

公共成员函数

 SURF_CUDA ()
 默认构造函数
 
 SURF_CUDA (double _hessianThreshold, int _nOctaves=4, int _nOctaveLayers=2, bool _extended=false, float _keypointsRatio=0.01f, bool _upright=false)
 接受所有必要参数的完整构造函数
 
int defaultNorm () const
 返回默认规范类型
 
int descriptorSize () const
 返回描述符大小(以浮点数表示,64 或 128)
 
void detect (const GpuMat &img, const GpuMat &mask, GpuMat &keypoints)
 使用 SURF 中使用的快速 Hessian 检测器查找关键点。
 
void detectWithDescriptors (const GpuMat &img, const GpuMat &mask, GpuMat &keypoints, GpuMat &descriptors, bool useProvidedKeypoints=false)
 使用 SURF 中使用的快速 Hessian 检测器查找关键点并计算其描述符。
 
void downloadDescriptors (const GpuMat &descriptorsGPU, std::vector< float > &descriptors)
 将描述符从设备下载到主机内存
 
void downloadKeypoints (const GpuMat &keypointsGPU, std::vector< KeyPoint > &keypoints)
 将关键点从设备下载到主机内存
 
void operator() (const GpuMat &img, const GpuMat &mask, GpuMat &keypoints)
 
void operator() (const GpuMat &img, const GpuMat &mask, GpuMat &keypoints, GpuMat &descriptors, bool useProvidedKeypoints=false)
 
void operator() (const GpuMat &img, const GpuMat &mask, std::vector< KeyPoint > &keypoints)
 
void operator() (const GpuMat &img, const GpuMat &mask, std::vector< KeyPoint > &keypoints, GpuMat &descriptors, bool useProvidedKeypoints=false)
 
void operator() (const GpuMat &img, const GpuMat &mask, std::vector< KeyPoint > &keypoints, std::vector< float > &descriptors, bool useProvidedKeypoints=false)
 
void 释放内存 ()
 
void uploadKeypoints (const std::vector< KeyPoint > &keypoints, GpuMat &keypointsGPU)
 将主机关键点上传到设备内存
 

静态公共成员函数

static Ptr< SURF_CUDAcreate (double _hessianThreshold, int _nOctaves=4, int _nOctaveLayers=2, bool _extended=false, float _keypointsRatio=0.01f, bool _upright=false)
 

公共属性

GpuMat det
 
bool extended
 
double hessianThreshold
 
float keypointsRatio
 最大关键点数 = min(keypointsRatio * img.size().area(), 65535)
 
GpuMat mask1
 
GpuMat maskSum
 
GpuMat maxPosBuffer
 
int nOctaveLayers
 
int nOctaves
 
GpuMat sum
 
GpuMat trace
 
bool upright
 

详细描述

用于从图像中提取加速稳健特征 (SURF) 的类。

SURF_CUDA 类实现加速稳健特征描述符。它有一个快速多尺度 Hessian 关键点检测器,可用于查找关键点(这是默认选项)。但也可以为用户指定的关键点计算描述符。仅支持 8 位灰度图像。

SURF_CUDA 类可以在 GPU 和 CPU 内存中存储结果。它提供函数来转换 CPU 和 GPU 版本之间的结果(uploadKeypoints、downloadKeypoints、downloadDescriptors)。CPU 结果的格式与 SURF 结果相同。GPU 结果存储在 GpuMat 中。关键点矩阵是 \(\texttt{nFeatures} \times 7\) 矩阵,类型为 CV_32FC1。

描述符矩阵是 \(\texttt{nFeatures} \times \texttt{descriptorSize}\) 矩阵,类型为 CV_32FC1。

SURF_CUDA 类使用一些缓冲区并提供对其的访问。所有缓冲区可以在函数调用之间安全释放。

另请参见
SURF
注意
  • 在 GPU 上使用 SURF 关键点匹配器的示例可以在 opencv_source_code/samples/gpu/surf_keypoint_matcher.cpp 中找到。

成员枚举文档

◆ KeypointLayout

枚举器
X_ROW 
Y_ROW 
LAPLACIAN_ROW 
OCTAVE_ROW 
SIZE_ROW 
ANGLE_ROW 
HESSIAN_ROW 
ROWS_COUNT 

构造函数和析构函数文档

◆ SURF_CUDA() [1/2]

cv::cuda::SURF_CUDA::SURF_CUDA ( )

默认构造函数

◆ SURF_CUDA() [2/2]

cv::cuda::SURF_CUDA::SURF_CUDA ( double  _hessianThreshold,
int  _nOctaves = 4,
int  _nOctaveLayers = 2,
bool  _extended = false,
float  _keypointsRatio = 0.01f,
bool  _upright = false 
)
显式

接受所有必要参数的完整构造函数

成员函数文档

◆ create()

static Ptr< SURF_CUDA > cv::cuda::SURF_CUDA::create ( double  _hessianThreshold,
int  _nOctaves = 4,
int  _nOctaveLayers = 2,
bool  _extended = false,
float  _keypointsRatio = 0.01f,
bool  _upright = false 
)
静态
Python
cv.cuda.SURF_CUDA.create(_hessianThreshold[, _nOctaves[, _nOctaveLayers[, _extended[, _keypointsRatio[, _upright]]]]]) -> retval
cv.cuda.SURF_CUDA_create(_hessianThreshold[, _nOctaves[, _nOctaveLayers[, _extended[, _keypointsRatio[, _upright]]]]]) -> retval
参数
_hessianThresholdSURF 中使用的 Hessian 关键点检测器的阈值。
_nOctaves关键点检测器将使用的金字塔八度数。
_nOctaveLayers每个八度内的八度层数。
_extended扩展描述符标志(true - 使用扩展的 128 元素描述符;false - 使用 64 元素描述符)。
_keypointsRatio限制最大特征数
_upright正向或旋转特征标志(true - 不计算特征的方向;false - 计算方向)。

◆ defaultNorm()

int cv::cuda::SURF_CUDA::defaultNorm ( ) const
Python
cv.cuda.SURF_CUDA.defaultNorm() -> retval

返回默认规范类型

◆ descriptorSize()

int cv::cuda::SURF_CUDA::descriptorSize ( ) const
Python
cv.cuda.SURF_CUDA.descriptorSize() -> retval

返回描述符大小(以浮点数表示,64 或 128)

◆ detect()

void cv::cuda::SURF_CUDA::detect ( const GpuMat img,
const GpuMat mask,
GpuMat keypoints 
)
内联
Python
cv.cuda.SURF_CUDA.detect(img, mask[, keypoints]) -> keypoints

使用 SURF 中使用的快速 Hessian 检测器查找关键点。

参数
img源图像,目前仅支持 CV_8UC1 图像。
mask与 src 大小相同且类型为 CV_8UC1 的掩码图像。
keypoints检测到的关键点。

◆ detectWithDescriptors()

void cv::cuda::SURF_CUDA::detectWithDescriptors ( const GpuMat img,
const GpuMat mask,
GpuMat keypoints,
GpuMat descriptors,
bool  useProvidedKeypoints = false 
)
内联
Python
cv.cuda.SURF_CUDA.detectWithDescriptors(img, mask[, keypoints[, descriptors[, useProvidedKeypoints]]]) -> keypoints, descriptors

使用 SURF 中使用的快速 Hessian 检测器查找关键点并计算其描述符。

参数
img源图像,目前仅支持 CV_8UC1 图像。
mask与 src 大小相同且类型为 CV_8UC1 的掩码图像。
keypoints检测到的关键点。
descriptors关键点描述符。
useProvidedKeypoints计算用户提供的关键点的描述符并重新计算关键点的方向。

◆ downloadDescriptors()

void cv::cuda::SURF_CUDA::downloadDescriptors ( const GpuMat descriptorsGPU,
std::vector< float > &  descriptors 
)

将描述符从设备下载到主机内存

◆ downloadKeypoints()

void cv::cuda::SURF_CUDA::downloadKeypoints ( const GpuMat keypointsGPU,
std::vector< KeyPoint > &  keypoints 
)
Python
cv.cuda.SURF_CUDA.downloadKeypoints(keypointsGPU) -> keypoints

将关键点从设备下载到主机内存

◆ operator()() [1/5]

void cv::cuda::SURF_CUDA::operator() ( const GpuMat img,
const GpuMat mask,
GpuMat keypoints 
)

使用SURF中使用的快速Hessian检测器查找关键点,支持CV_8UC1图像,关键点将具有nFeature列和6行。keypoints.ptr<float>(X_ROW)[i]将包含第i个特征的关键点的x坐标。keypoints.ptr<float>(Y_ROW)[i]将包含第i个特征的关键点的y坐标。keypoints.ptr<float>(LAPLACIAN_ROW)[i]将包含第i个特征的关键点的拉普拉斯符号。keypoints.ptr<float>(OCTAVE_ROW)[i]将包含第i个特征的关键点的八度。keypoints.ptr<float>(SIZE_ROW)[i]将包含第i个特征的关键点的尺寸。keypoints.ptr<float>(ANGLE_ROW)[i]将包含第i个特征的关键点的方向。keypoints.ptr<float>(HESSIAN_ROW)[i]将包含第i个特征的响应。

◆ operator()() [2/5]

void cv::cuda::SURF_CUDA::operator() ( const GpuMat img,
const GpuMat mask,
GpuMat keypoints,
GpuMat descriptors,
bool  useProvidedKeypoints = false 
)

查找关键点并计算它们的描述符。它可以选择为用户提供的关键点计算描述符并重新计算关键点的方向。

◆ operator()() [3/5]

void cv::cuda::SURF_CUDA::operator() ( const GpuMat img,
const GpuMat mask,
std::vector< KeyPoint > &  keypoints 
)

◆ operator()() [4/5]

void cv::cuda::SURF_CUDA::operator() ( const GpuMat img,
const GpuMat mask,
std::vector< KeyPoint > &  keypoints,
GpuMat descriptors,
bool  useProvidedKeypoints = false 
)

◆ operator()() [5/5]

void cv::cuda::SURF_CUDA::operator() ( const GpuMat img,
const GpuMat mask,
std::vector< KeyPoint > &  keypoints,
std::vector< float > &  descriptors,
bool  useProvidedKeypoints = false 
)

◆ releaseMemory()

void cv::cuda::SURF_CUDA::releaseMemory ( )

◆ uploadKeypoints()

void cv::cuda::SURF_CUDA::uploadKeypoints ( const std::vector< KeyPoint > &  keypoints,
GpuMat keypointsGPU 
)

将主机关键点上传到设备内存

成员数据文档

◆ det

GpuMat cv::cuda::SURF_CUDA::det

◆ extended

bool cv::cuda::SURF_CUDA::extended

◆ hessianThreshold

double cv::cuda::SURF_CUDA::hessianThreshold

◆ keypointsRatio

float cv::cuda::SURF_CUDA::keypointsRatio

最大关键点数 = min(keypointsRatio * img.size().area(), 65535)

◆ mask1

GpuMat cv::cuda::SURF_CUDA::mask1

◆ maskSum

GpuMat cv::cuda::SURF_CUDA::maskSum

◆ maxPosBuffer

GpuMat cv::cuda::SURF_CUDA::maxPosBuffer

◆ nOctaveLayers

int cv::cuda::SURF_CUDA::nOctaveLayers

◆ nOctaves

int cv::cuda::SURF_CUDA::nOctaves

◆ sum

GpuMat cv::cuda::SURF_CUDA::sum

◆ trace

GpuMat cv::cuda::SURF_CUDA::trace

◆ upright

bool cv::cuda::SURF_CUDA::upright

此类的文档是从以下文件生成的