3

iOS の Accelerate フレームワークを使用して、iOS の Core Image がカスタム フィルター/カーネルをサポートしていないという事実を回避しようとしています。Sobel カーネルで 2 つの畳み込みを使用してエッジ検出フィルターを開発しています。、しかし、コツをつかむために単純なガウスぼかしから始めます。vImage は行列としての画像操作を対象としており、vDSP はフーリエ変換を使用したデジタル信号の処理に重点を置いています。しかし、私は vImage 関数 (vImageConvolve_XXXX など) を使い始めましたが、多くの人が vDSP の関数 (vDSP_conv、vDSP_imgfir など) を使用して畳み込みなどを行うことについて議論しているのを耳にします。それで、目前の質問につながります。いつ、一方を他方よりも使用する必要がありますか? 畳み込み演算に関して、それらの違いは何ですか? 私はどこでも見ましたが、明確な答えを見つけることができませんでした。誰かがそれに光を当てたり、正しい方向に向けたりできますか?

ありがとう!

4

2 に答える 2

2

vImage が必要な操作を提供する場合、通常はそれを使用するのが最も簡単です。vImage はキャッシュのブロックとスレッド化を行いますが、vDSP は行いません。vImage は、画像処理に役立つことが多い、インターリーブ形式および整数形式の操作を提供します。

于 2012-01-29T03:05:51.090 に答える
2

前回私が実験したとき、これらのフレームワークはどちらもカーネルの分離可能性を利用していませんでした。これにより、空間領域での畳み込みの際にパフォーマンスが大幅に向上します。ベクトル化された命令よりもはるかに大きなパフォーマンスの向上が得られます。特に Sobel カーネルは分離可能です。そのため、vDSPまたはvImage(の代わりにOpenCV) を使用している場合は、必ず自分でカーネルを分離してください。

于 2012-01-29T04:23:30.520 に答える