問題タブ [convolution]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
654 参照

vector - clojureで、カーネルによってベクトルを畳み込む効率的な方法は何ですか?

私はこれを思いつきました:

これは最も洗練されたコードではありませんが、問題なく動作します。私は実際にいくつかの非常にとがった部分を滑らかにするためにそれを使用したい! データ。

これをより美しく、より効率的に、またはより正確にするための提案は歓迎されます (私の場合は決して使用しないため、個人的にはテールが不正確であることは気にしません)。

0 投票する
4 に答える
27562 参照

matlab - Matlabのフィルターと変換の違いは何ですか?

LTI システムの出力を計算しようとしています。仕事に適していると思われる2つの異なるMatlab関数に出くわしました:filterconv. 両者の違いは何ですか?

0 投票する
5 に答える
37713 参照

c - ANSI Cコードの1d線形畳み込み?

車輪を再発明するのではなく、ANSI C の 1D 線形畳み込みコード スニペットを参照してもらえないでしょうか? Google とスタック オーバーフローで検索しましたが、CI で使用できるものは見つかりませんでした。

たとえば、配列 A、B、C の場合、すべて倍精度で、A と B は入力、C は出力で、長さはそれぞれlen_Alen_B、およびlen_C = len_A + len_B - 1です。

私の配列サイズは小さいので、FFT による高速畳み込みの実装で速度を上げる必要はありません。簡単な計算を探しています。

0 投票する
1 に答える
1267 参照

opencv - OpenCVGPU畳み込み関数と欠落している境界

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

実行時:

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

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

ありがとう

0 投票する
1 に答える
274 参照

actionscript-3 - 畳み込み行列を組み合わせて、一度に複数の変換を適用することはできますか?

理論的には、加算または乗算によって、変換またはカラー マトリックスを組み合わせることができるはずです (そのような数学に関しては、私は不自由です)。出来ますか?

0 投票する
1 に答える
371 参照

image-processing - 2Dフィルターアルゴリズム

これをもっと速くする方法はありますか?O(N ^ 2)の複雑さをもっと低くしたいと思います。注:フィルターカーネルは、N/2を中心に回転対称です。

0 投票する
2 に答える
1504 参照

python - scipy.signal.convolve のリーマン和からのアーティファクト

簡単な要約: 2 つの配列の有限畳み込みをすばやく計算するにはどうすればよいですか?

問題の説明

で定義される 2 つの関数 f(x)、g(x) の有限畳み込みを取得しようとしています。

有限畳み込み

これを実現するために、関数の個別のサンプルを取得し、それらを長さの配列に変換しましたsteps

次に、関数を使用して畳み込みを計算しようとしましたscipy.signal.convolveこの関数は、ここでconv提案されているアルゴリズムと同じ結果をもたらします。ただし、結果は分析ソリューションとはかなり異なります。台形規則を使用するようにアルゴリズムを変更すると、望ましい結果が得られます。conv

これを説明するために、

結果は次のとおりです。

ここに画像の説明を入力

ここでRiemannは、単純なリーマン和を表し、trapezoidalは台形規則を使用するようにリーマン アルゴリズムを修正したバージョンであり、scipy.signal.convolveは scipy 関数でanalyticalあり、 は解析的畳み込みです。

結果は次のようg(x) = x^2 * exp(-x)になります。

ここに画像の説明を入力

ここで「比率」は、scipy から取得した値と分析値の比率です。上記は、積分を再正規化しても問題を解決できないことを示しています。

質問

scipy の速度を使用して、台形規則のより良い結果を保持することは可能ですか? または、目的の結果を得るために C 拡張機能を作成する必要がありますか?

以下のコードをコピーして貼り付けるだけで、発生している問題を確認できます。2 つの結果は、変数を大きくすることで、より一致させることができstepsます。積分が増加すると過大評価され、減少すると再び解析解に近づくため、問題は右手リーマン和からのアーティファクトによるものだと思います。

編集:関数と同じ結果を与える比較として、元のアルゴリズム2scipy.signal.convolveを含めました。

お時間をいただきありがとうございます!

0 投票する
2 に答える
2435 参照

ios - Accelerate の vImage と vDSP の比較

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

ありがとう!

0 投票する
3 に答える
7417 参照

matlab - 「conv2」と同様の方法で「normxcorr2」の出力を取得する洗練された方法 - (不要なエッジを削除)

Matlabで、画像のサイズに合わせてトリミングしたり、計算でゼロで埋められたエッジを使用しない行列の一部だけをトリミングしたりするエレガントな方法はありますか?normxcorr2

私の言いたいことを理解するために、conv2コマンドを考えてみましょう。またはshapeに設定できる と呼ばれるオプションのパラメータがあります。samevalid

例えば:

ans =


ans =


ans =

現在、私は次のようなことを行う独自の関数を作成しました。

もっと良いアイデアはありますか?成功する答えの主な基準は、提案されたソリューションの優雅さです。

編集(1)まず、すべての回答に感謝します。それらはすべて優れており、私は支持しています。どれが一番良いかはまだ決めていません。ところで、画像に対してテンプレートが大きい場合について最近考えています。imageその場合、を実行する前に引数をトリミングして計算を高速化することは理にかなっていnormxcorr2ます。

0 投票する
2 に答える
1089 参照

matlab - DFT を使用した相関が直観的ではない結果をもたらすのはなぜですか?

Matlab で DFT (デジタル フーリエ変換) を介して相関を使用して類似の 2 つの信号を比較しようとしましたが、相関関数では実際には予測できない結果が得られます。たとえば、これら 2 組のシグナルを比較すると、次のようになります。

  • 相関1と2
  • 相関 3 および 4 (自己相関)

MATLAB Figure のスクリーンショット

「corr 1 および 2」の場合よりも「corr 3 および 4」の場合の方が高い相関ピークが予想されます。

私も信号を「平均からゼロ」にしようとしましたが、これは役に立ちませんでした。

これは期待どおりの結果ですか、それとも前処理などを見逃していましたか?