Class cv::cuda::SURF_CUDA#
Class used for extracting Speeded Up Robust Features (SURF) from an image. : View details
#include <opencv2/xfeatures2d/cuda.hpp>Collaboration diagram for cv::cuda::SURF_CUDA:
Public Types#
enum KeypointLayout {
X_ROW = 0,
Y_ROW,
LAPLACIAN_ROW,
OCTAVE_ROW,
SIZE_ROW,
ANGLE_ROW,
HESSIAN_ROW,
ROWS_COUNT
}Detailed Description#
Class used for extracting Speeded Up Robust Features (SURF) from an image. :
The class SURF_CUDA implements Speeded Up Robust Features descriptor. There is a fast multi-scale Hessian keypoint detector that can be used to find the keypoints (which is the default option). But the descriptors can also be computed for the user-specified keypoints. Only 8-bit grayscale images are supported.
The class SURF_CUDA can store results in the GPU and CPU memory. It provides functions to convert results between CPU and GPU version ( uploadKeypoints, downloadKeypoints, downloadDescriptors ). The format of CPU results is the same as SURF results. GPU results are stored in GpuMat. The keypoints matrix is \(\texttt{nFeatures} \times 7\) matrix with the CV_32FC1 type.
keypoints.ptr<float>(X_ROW)[i] contains x coordinate of the i-th feature.
keypoints.ptr<float>(Y_ROW)[i] contains y coordinate of the i-th feature.
keypoints.ptr<float>(LAPLACIAN_ROW)[i] contains the laplacian sign of the i-th feature.
keypoints.ptr<float>(OCTAVE_ROW)[i] contains the octave of the i-th feature.
keypoints.ptr<float>(SIZE_ROW)[i] contains the size of the i-th feature.
keypoints.ptr<float>(ANGLE_ROW)[i] contain orientation of the i-th feature.
keypoints.ptr<float>(HESSIAN_ROW)[i] contains the response of the i-th feature.
The descriptors matrix is \(\texttt{nFeatures} \times \texttt{descriptorSize}\) matrix with the CV_32FC1 type.
The class SURF_CUDA uses some buffers and provides access to it. All buffers can be safely released between function calls.
See also
SURF
Note
An example for using the SURF keypoint matcher on GPU can be found at opencv_source_code/samples/gpu/surf_keypoint_matcher.cpp
Member Enumeration Documentation#
enum KeypointLayout
|
|
|
|
|
|
|
|
Constructor & Destructor Documentation#
SURF_CUDA()#
cv::cuda::SURF_CUDA::SURF_CUDA()
the default constructor
SURF_CUDA()#
cv::cuda::SURF_CUDA::SURF_CUDA(
double _hessianThreshold,
int _nOctaves = 4,
int _nOctaveLayers = 2,
bool _extended = false,
float _keypointsRatio = 0.01f,
bool _upright = false )
the full constructor taking all the necessary parameters
Member Function Documentation#
defaultNorm()#
int cv::cuda::SURF_CUDA::defaultNorm()
returns the default norm type
descriptorSize()#
int cv::cuda::SURF_CUDA::descriptorSize()
returns the descriptor size in float’s (64 or 128)
detect()#
void cv::cuda::SURF_CUDA::detect(
const GpuMat & img,
const GpuMat & mask,
GpuMat & keypoints )
Finds the keypoints using fast hessian detector used in SURF.
Parameters
img— Source image, currently supports only CV_8UC1 images.mask— A mask image same size as src and of type CV_8UC1.keypoints— Detected keypoints.
detectWithDescriptors()#
void cv::cuda::SURF_CUDA::detectWithDescriptors(
const GpuMat & img,
const GpuMat & mask,
GpuMat & keypoints,
GpuMat & descriptors,
bool useProvidedKeypoints = false )
Finds the keypoints and computes their descriptors using fast hessian detector used in SURF.
Parameters
img— Source image, currently supports only CV_8UC1 images.mask— A mask image same size as src and of type CV_8UC1.keypoints— Detected keypoints.descriptors— Keypoint descriptors.useProvidedKeypoints— Compute descriptors for the user-provided keypoints and recompute keypoints direction.
downloadDescriptors()#
void cv::cuda::SURF_CUDA::downloadDescriptors(
const GpuMat & descriptorsGPU,
std::vector< float > & descriptors )
download descriptors from device to host memory
downloadKeypoints()#
void cv::cuda::SURF_CUDA::downloadKeypoints(
const GpuMat & keypointsGPU,
std::vector< KeyPoint > & keypoints )
download keypoints from device to host memory
operator()()#
void cv::cuda::SURF_CUDA::operator()(
const GpuMat & img,
const GpuMat & mask,
GpuMat & keypoints )
finds the keypoints using fast hessian detector used in SURF supports CV_8UC1 images keypoints will have nFeature cols and 6 rows keypoints.ptr
operator()()#
void cv::cuda::SURF_CUDA::operator()(
const GpuMat & img,
const GpuMat & mask,
GpuMat & keypoints,
GpuMat & descriptors,
bool useProvidedKeypoints = false )
finds the keypoints and computes their descriptors. Optionally it can compute descriptors for the user-provided keypoints and recompute keypoints direction
operator()()#
void cv::cuda::SURF_CUDA::operator()(
const GpuMat & img,
const GpuMat & mask,
std::vector< KeyPoint > & keypoints )
operator()()#
void cv::cuda::SURF_CUDA::operator()(
const GpuMat & img,
const GpuMat & mask,
std::vector< KeyPoint > & keypoints,
GpuMat & descriptors,
bool useProvidedKeypoints = false )
operator()()#
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 )
upload host keypoints to device memory
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 )
Parameters
_hessianThreshold— Threshold for hessian keypoint detector used in SURF._nOctaves— Number of pyramid octaves the keypoint detector will use._nOctaveLayers— Number of octave layers within each octave._extended— Extended descriptor flag (true - use extended 128-element descriptors; false - use 64-element descriptors)._keypointsRatio— Limits a maximum number of features_upright— Up-right or rotated features flag (true - do not compute orientation of features; false - compute orientation).
Member Data Documentation#
det#
extended#
bool cv::cuda::SURF_CUDA::extended
hessianThreshold#
double cv::cuda::SURF_CUDA::hessianThreshold
keypointsRatio#
float cv::cuda::SURF_CUDA::keypointsRatio
max keypoints = min(keypointsRatio * img.size().area(), 65535)
mask1#
maskSum#
maxPosBuffer#
nOctaveLayers#
int cv::cuda::SURF_CUDA::nOctaveLayers
nOctaves#
int cv::cuda::SURF_CUDA::nOctaves
sum#
trace#
upright#
bool cv::cuda::SURF_CUDA::upright
Source file#
The documentation for this class was generated from the following file:
opencv2/xfeatures2d/cuda.hpp