OpenCV 4.13.0
Open Source Computer Vision
読み込み中...
検索中...
見つかりません
🤖 AIによる機械翻訳(非公式) — これは OpenCV 4.13.0 公式リファレンス(英語)を AI (Claude) で自動翻訳したものです。訳に誤りを含む場合があります。正確な情報は 公式英語版(原文) を参照してください。

画像からSURF (Speeded Up Robust Features) を抽出するために使用されるクラス。 : 続きを読む...

#include <opencv2/xfeatures2d/cuda.hpp>

Collaboration diagram for cv::cuda::SURF_CUDA:

公開型

enum  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
 記述子のサイズをfloat単位(64または128)で返す
 
void detect (const GpuMat &img, const GpuMat &mask, GpuMat &keypoints)
 SURFで使用される高速ヘッセ行列検出器を用いてキーポイントを検出する。
 
void detectWithDescriptors (const GpuMat &img, const GpuMat &mask, GpuMat &keypoints, GpuMat &descriptors, bool useProvidedKeypoints=false)
 SURFで使用される高速ヘッセ行列検出器を用いてキーポイントを検出し、その記述子を計算する。
 
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 releaseMemory ()
 
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 (Speeded Up Robust Features) を抽出するために使用されるクラス。 :

SURF_CUDAクラスは、Speeded Up Robust Features記述子を実装する。キーポイントの検出に使用できる高速なマルチスケールのヘッセ行列キーポイント検出器がある(これがデフォルトのオプション)。ただし、記述子はユーザーが指定したキーポイントについても計算できる。8ビットのグレースケール画像のみがサポートされる。

SURF_CUDAクラスは、結果をGPUおよびCPUメモリに保存できる。CPU版とGPU版の間で結果を変換する関数(uploadKeypoints、downloadKeypoints、downloadDescriptors)を提供する。CPU結果の形式はSURF結果と同じである。GPU結果はGpuMatに保存される。キーポイント行列はCV_32FC1型の\(\texttt{nFeatures} \times 7\)行列である。

  • 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番目の特徴の応答を格納する。

記述子行列はCV_32FC1型の\(\texttt{nFeatures} \times \texttt{descriptorSize}\)行列である。

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 )
explicit

必要なすべての引数を取るフルコンストラクタ

メンバ関数詳解

◆ 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 )
static
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で使用されるヘッセ行列キーポイント検出器のしきい値。
_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

記述子のサイズをfloat単位(64または128)で返す

◆ detect()

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

SURFで使用される高速ヘッセ行列検出器を用いてキーポイントを検出する。

引数
img入力画像。現在はCV_8UC1画像のみサポートする。
masksrc と同じサイズで CV_8UC1 型のマスク画像。
keypoints検出されたキーポイント。

◆ detectWithDescriptors()

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

SURFで使用される高速ヘッセ行列検出器を用いてキーポイントを検出し、その記述子を計算する。

引数
img入力画像。現在はCV_8UC1画像のみサポートする。
masksrc と同じサイズで 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で使用される高速ヘッセ行列検出器を用いてキーポイントを検出する。CV_8UC1画像をサポートする。keypointsは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

このクラス詳解は次のファイルから抽出されました: