GPUアクセラレーションを使用したOpenCVの畳み込み機能について質問があります。GPUを使用すると、畳み込みの速度が約3.5速くなります。
実行時:
convolve(src_32F, kernel, cresult, false, cbuffer);
ただし、画像の境界線がありません(cresultで)
それ以外の場合、結果は優れています(カーネルサイズは60x60です)
ありがとう
GPUアクセラレーションを使用したOpenCVの畳み込み機能について質問があります。GPUを使用すると、畳み込みの速度が約3.5速くなります。
実行時:
convolve(src_32F, kernel, cresult, false, cbuffer);
ただし、画像の境界線がありません(cresultで)
それ以外の場合、結果は優れています(カーネルサイズは60x60です)
ありがとう
これが畳み込みの仕組みです。
すべてのピクセルの値を、周囲のピクセルの加重平均として計算します。したがって、各辺が30ピクセルであることを考慮すると、30ピクセルよりも画像の境界に近いすべてのピクセルについて、畳み込みは定義されません。
フィルタリング機能のCPU実装では、これらの欠落しているピクセルは、特定の戦略(コピー、ミラー、ブランクなど)に基づいて偽の値で補完されます。
できることは、大きなマトリックスに目的の値を手動でマトリックスに埋め込み、大きなマトリックスをフィルター処理してから、元に戻すことです。そのためには、gpu :: copyMakeBorder()関数を使用できます。