このペ,ジの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
浏览を使用した特徴抽出
日后健壮的特性(冲浪)を使用したオブジェクト認識は3つのステップで構成されます。特徴抽出,特徴記述,および特徴マッチングです。この例では,浏览アルゴリズムの最初のステップである特徴抽出を実行します。ここで使用されるアルゴリズムは,OpenSURFラブラリの実装に基づきます。この例では,GPU编码器™を使用し,CUDA®コード生成を通じてこの計算量が多い問題を解く方法を示します。
サ,ドパ,ティの必要条件
必須
この例では,cuda mexを生成します。以下のサ,ドパ,ティ要件が適用されます。
Cuda対応nvidia®gpuおよび互換性のあるドラaapl .バ。
オプション
スタティックライブラリ,ダイナミックライブラリ,または実行可能ファイルなどの墨西哥人以外のビルドについて,この例では以下の要件も適用されます。
Nvidiaルキット。
コンパ▪▪ラおよびラ▪▪ブラリの環境変数。詳細は,サ,ドパ,ティハ,ドウェアと前提条件となる製品の設定を参照してください。
Gpu環境の検証
この例を実行するのに必要なコンパイラおよびライブラリが正しく設定されていることを検証するために,関数coder.checkGpuInstall
を使用します。
envCfg = code . gpuenvconfig (“主机”);envCfg。BasicCodegen = 1;envCfg。安静= 1;coder.checkGpuInstall (envCfg);
特徴抽出
特徴抽出は,オブジェクト認識アルゴリズムの基本的なステップです。これは,入力“特徴”と呼ばれる役立情報を抽出するプロセスを表します。抽出された特徴は代表的な性質を持,。
関数SurfDetect.mはメ▪▪ンエントリポ▪▪ントであり,特徴抽出を実行します。この関数は8ビットのRGBイメージまたは8ビットのグレースケールイメージを入力として受け入れます。返される出力は,抽出された関心点の配列です。この関数は,gpu並列化に適した計算を含む次の関数呼び出しで構成されます。
関数Convert32bitFPGray.mは,8ビットのRGBメジを8ビットのグレスケルメジに変換します。与えられた入力が既に8ビットのグレ,スケ,ル形式の場合,このステップをスキップします。このステップ後,GPUでの高速計算を有効にするために8ビットのグレースケールイメージは32ビットの浮動小数点表現に変換されます。
関数MyIntegralImage.mは,前のステップで取得した32ビットの浮動小数点グレースケールイメージの積分イメージを計算します。積分。ピクセルの和を求めることで,次のステップで実行する畳み込みの速度を改善しやすくなります。
関数FastHessian.mは,さまざまなサイズのボックスフィルターを使用してイメージの畳み込みを実行し,計算された応答を格納します。この例の場合,次のパラメ,タ,を使用します。
八度数:5
间隔数:4
阈值:0.0004
滤波器尺寸:八度音阶1 - 9,15,21,27
八度2 - 15,27,39,51
八度3 - 27,51,75,99
八度4 - 51、99、147、195
八度5 - 99,195,291387
関数NonMaxSuppression_gpu.mは,非最大抑制を実行し,前に取得した応答から有益な関心点のみをフィルタ,で取り出します。
atomicAdd
演算を使用するカ,ネルを生成するには,coder.ceval
構造体を使用します。MATLAB® から直接呼び出す場合はこの構造体に互換性がないため、2 つの異なる関数呼び出しがあります。関数NonMaxSuppression_gpu.mは,gpuコ,ド生成が有効な場合に呼び出され,NonMaxSuppression.mは,matlab内で直接アルゴリズムを実行する場合に呼び出されます。
関数OrientationCalc.mは,前のステップにおける関心点の向きを計算して割り当てます。
最終結果は関心点の配列です。ここで,関心点は次のフィ,ルドで構成される構造体です。
x, y(坐标),标度,方位,拉普拉斯
入力▪▪メ▪▪ジの読み取り
関数imread
を使用して入力转换器メ转换器ジをmatlabに読み取ります。
imageFile =“peppers.png”;inputImage = imread(imageFile);imshow (inputImage);
関数のcuda mexの生成
関数SurfDetect
のCUDA MEXを生成するには,GPU Coder構成オブジェクトを作成し,関数codegen
を実行します。
cfg = code . gpuconfig (墨西哥人的);evalc ('codegen -config cfg SurfDetect -args {inputImage}');
Gpuでのmex関数の実行
次のように,生成されたmex関数SurfDetect_mex
を呼び出してgpu上で実行できます。
disp (运行GPU Coder SURF);interestPointsGPU = SurfDetect_mex(inputImage);流(' GPU Coder SURF发现:%d兴趣点\n'长度(interestPointsGPU));
运行GPU Coder SURF GPU Coder SURF发现:249个兴趣点
抽出された関心点の描写
出力interestPointsGPU
は,抽出された関心点の配列です。これらの関心点は,图ウィンドウの入力。
DrawIpoints (imageFile interestPointsGPU);
参考文献
“OpenSURF库注释”(Christopher Evans著)。
“SURF:加速健壮的功能”(赫伯特·贝,Tinne Tuytelaars,およびLuc Van Gool共著)。
参考
関数
codegen
|coder.gpu.kernel
|coder.gpu.kernelfun
|gpucoder.matrixMatrixKernel
|coder.gpu.constantMemory
|gpucoder.stencilKernel
|coder.checkGpuInstall