1

行列畳み込みを行うために、iPhone (iOS 5.1) で Accelerate フレームワークを使用しようとしています。ただし、関数を実行すると

    double *dst = calloc(2*3,sizeof(double));
    double A[6*7]={1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
    double B[5*5]={2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2};
    vDSP_imgfirD(A, 6, 7, B, dst, 5, 5);

結果ポインターで0を取得します。なぜこれが起こるのでしょうか?同様の問題はどこにも見つかりませんでした。

どうもありがとうございました!

4

1 に答える 1

1

畳み込みの理解が不足していると思います。ウィキペディアで調べることをお勧めします。行列をカーネルでたたみ込むと、結果は元の行列と同じサイズの別の行列になります。上記では、入力行列が 42 要素の場合、dst は 6 要素のみを割り当てています。dst も 42 要素にする必要があります。

畳み込みについては、vImageConvolve_Planar8 または vImageConvolve_PlanarF を見ることをお勧めします。それははるかに優れた構築であり、多くのコーナー エッジ シナリオを処理します。

お役に立てれば

于 2013-02-15T03:41:07.443 に答える