0

GPUアクセラレーションを使用したOpenCVの畳み込み機能について質問があります。GPUを使用すると、畳み込みの速度が約3.5速くなります。

実行時:

convolve(src_32F, kernel, cresult, false, cbuffer);

ただし、画像の境界線がありません(cresultで)

それ以外の場合、結果は優れています(カーネルサイズは60x60です)

ありがとう

4

1 に答える 1

1

これが畳み込みの仕組みです。

すべてのピクセルの値を、周囲のピクセルの加重平均として計算します。したがって、各辺が30ピクセルであることを考慮すると、30ピクセルよりも画像の境界に近いすべてのピクセルについて、畳み込みは定義されません。

フィルタリング機能のCPU実装では、これらの欠落しているピクセルは、特定の戦略(コピー、ミラー、ブランクなど)に基づいて偽の値で補完されます。

できることは、大きなマトリックスに目的の値を手動でマトリックスに埋め込み、大きなマトリックスをフィルター処理してから、元に戻すことです。そのためには、gpu :: copyMakeBorder()関数を使用できます。

于 2011-12-19T08:20:12.070 に答える