問題タブ [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 投票する
1 に答える
1089 参照

python - n 倍の FFT 畳み込みと循環オーバーラップ

問題の説明

畳み込みを効率的に計算するために、畳み込み定理を採用しました。2 つの実信号がs1あり、それぞれs2の長さが異なるとしNます。次に、畳み込みを取得できます

ただし、信号がある場合は、k読み取るfft_sizeように変更する必要があります

円形の重なりを避けるため。

k残念ながら、私は先験的に知りません。1 つのオプションは最大値を選択することですk_maxが、絶対に必要でない場合は大量のメモリを使用する必要がなく、k が変更されるたびに FT を再度評価しないことを好みます。

質問

次のいずれかを行うことは可能ですか

  • k=1必要に応じて「フーリエ空間のゼロ パッド」の信号の FFT を実行しますか?
  • FFT での循環ラップを防止しますか?
0 投票する
2 に答える
446 参照

c# - 画像レンダリング技術 - 既存の写真にリアルなテキストを追加するため

画像の元の部分として表示されるように歪んだテキスト (またはその他の要素) を含む画像を作成するための一般的なツールがあるかどうかに興味があります。ビルボードに独自の画像やテキストを配置できるこれらの「実際の」ビルボード写真は、その一例です。もう 1 つの例は、zazzle でテキストやグラフィックを歪ませて生地の曲線に合わせてわずかに変形させて、T シャツのデザインをプレビューできるようにする方法です。

私は .Net の専門家ですが、この種のプロジェクトの一般的な解決策や、このトピックに関する他の議論へのポインタだけでも知りたいと思っています。

明確化 - 技術の説明は良いですが、最終的には、これの一部を自動化するのに役立ち、動的な環境でオンデマンドの画像生成に使用できる可能性のあるツールキットがあるかどうかに興味があります.

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

python - 複数の基準に基づいてnumpy配列を処理するより効率的な方法は何ですか?

私は、ある範囲 (例: 15 年) の間、ndimage.filters.convolve配列 (例: array1) をたたみ込むために使用されるいくつかのコードを書きました。その後、結果の配列 (例: array2) は、ランダムに生成された数値の上にあり、別の配列 ( array3 に値 1 が割り当てられると、毎年カウントアップされ、最終的に特定の値 (例: 5) に達すると、array1 はこの場所で更新されます。

これが少し混乱している場合は申し訳ありません。実際に を使用してスクリプトを動作させましたnumpy.where(boolean expression, value, value)が、複数の式 (例: where array2 == 1 and array3 == 0) が必要な場合は、for ループを使用して配列内の各値を反復処理しました。これはここの例ではうまく機能しますが、配列をより大きな配列に置き換えると (完全なスクリプトは GIS グリッドをインポートして配列に変換します)、この for ループは毎年の処理に数分かかります。モデルを 60 年以上にわたって 1000 回実行する必要があるため、これらの配列を処理するためのより効率的な方法を見つける必要があります。

numpy.where 内で複数の式を使用しようとしましたが、それを機能させる方法がわかりませんでした。また、配列を一緒に圧縮するために zip(array) を試しましたが、配列要素のタプルが作成されたため、それらを更新できませんでした。

スクリプトのコピーを添付しました。前述のとおり、必要に応じて正確に機能します。ただし、これをより効率的に行う必要があります。誰かが何か提案があれば、それは素晴らしいでしょう。これは Python に関する私の最初の投稿なので、私はまだ自分自身を初心者だと考えています。

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

python - 方形パルスによる正弦波信号の畳み込み

scipyで正弦波信号と矩形パルスの畳み込み演算を行いたいと思います。余弦信号で正弦信号を畳み込み、それをグラフにプロットしましたが、このmatlab式に似た矩形パルスで配列を作成する方法を知りたいです

私はそれらを畳み込むことができます。これを使用して、正弦波と余弦波の信号を作成します

だから私は nu.zeros(50) を作成しようとし、0.0 から 15-25 の位置からゼロを手動で変更しました。0.9に変更すると、長方形のように見えますが、正弦波配列の畳み込みとこの「長方形」配列は奇妙です。交差がない場合はゼロになるはずですが、正弦波信号が返されます。コードは次のとおりです。

事前にお詫び申し上げます。これが最も簡単なことだと思いますが、矩形パルスの作成方法に関する参考文献が見つかりませんでした。

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

android - アンドロイドの画像をフィルタリングしますか?

私はこのアルゴリズムを使用して、Androidの画像をフィルタリングしています。

http://xjaphx.wordpress.com/2011/06/22/image-processing-convolution-matrix/

しかし、画像は期待どおりではありません。他の方法でこれを行うことができます。あなたは、アプリケーションがすでにこれを行って、それを速くしているのを見るでしょう、このアルゴリズムはあまりにも遅いです。

よろしく

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

python - ジェネリックプログラミング:ログFFTまたは高精度畳み込み(python)

少し変わった問題がありますが、FFTの再コーディングを避けようとしています。

一般的に、私はこれを知りたいです:タイプに対して実装されたアルゴリズムがあるが、特定の操作のセットが定義されている場所(たとえば、、、、 ...floatも定義する複素数)で機能する+場合、*それらの操作をサポートする別のタイプでそのアルゴリズムを使用する最良の方法は?一般的に数値アルゴリズムは一般性ではなく速度のために書かれているため、実際にはこれは注意が必要です。

具体的
には、ダイナミックレンジが非常に高い値を処理しているため、ログスペースに保存したいと思います(主にアンダーフローを回避するため)。

私が欲しいのは、いくつかのシリーズのFFTのログです。

これでも、かなりのアンダーフローが発生します。私が欲しいのは、ログ値を保存し、の代わりに、などの代わりに使用することです+*logaddexp+

これを行う方法についての私の考えは、これらのプリミティブ操作を定義する(ただし、ログスペースで動作する)単純なLogFloatクラスを実装することでした。次に、ログに記録された値を使用させることで、FFTコードを実行することができます。

次に、のリストを作成し、LogFloatそれをFFTで使用するというアイデアがあります。

これは、FFTを再実装すれば間違いなく実行できます(以前LogFloatはどこでも使用できfloatますが、アドバイスを求めたいと思いました。これはかなり繰り返し発生する問題です。ログスペースで操作したいストックアルゴリズムがあります。 (そして、'+'、'-'、' '、'/'などの少数の操作のみを使用します)。

これは、テンプレートを使用してジェネリック関数を作成することを思い出させます。そのため、戻り引数、パラメーターなどは同じ型から構築されます。たとえば、floatのFFTを実行できる場合は、複素数値に対して簡単にFFTを実行できるはずです(複素数値に必要な操作を提供するクラスを使用するだけです)。

現在のところ、すべてのFFT実装は最先端の速度で作成されているように見えるため、あまり一般的ではありません。したがって、現時点では、ジェネリック型のFFTを再実装する必要があるようです...

私がこれを行っている理由は、非常に高精度の畳み込みが必要なためです(そして、N ^ 2ランタイムは非常に遅いです)。アドバイスをいただければ幸いです。

*注:の三角関数を実装する必要があるかもしれませんが、それでLogFloat問題ありません。

編集: これはLogFloat可換環であるため機能します(そして、の三角関数の実装を必要としませんLogFloat)。これを行う最も簡単な方法はFFTを再実装することでしたが、@ JFSebastianは、FFTのコーディングを回避する一般的な畳み込みの使用方法も指摘しましたPython(これもDSP教科書またはウィキペディア擬似コードを使用すると非常に簡単でした)。

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

java - 画像畳み込みのコードが画像を正しく表示しない?

取引は次のとおりです。畳み込みの実行方法を(ユーザーに)単純化しようとしました。これを使用して Sobel フィルターを実行しようとしましたが、(jfram と画像アイコンを介して) 画像を表示しようとすると、画像アイコンがポップアップせず、大きな灰色の四角形になります。

このフィルターの結果の出力を表示しようとするまで、jframe/imageicon は問題なく動作しました。

コードが更新されました

次のようにすると、GUI は画像のないプレーン グレーのフレームを表示します。1 つのコマンドを実行し、他のコマンドを実行しない場合、画像は完全に表示されます。BufferedImage testImage = ImageIO.read(ファイルパス);

グレースケールに変換するだけで正しい結果が得られ、フィルターを適用するだけで正しい結果が得られます。これをそのまま完了すると、ポップアップする空白の GUI 画面が表示されます。それらが実行される順序を入れ替えると(最初にフィルタしてからグレースケールに変換する)、結果が得られます。

グレースケール変換プロセスの何かが畳み込みを台無しにしていると思います

toGrayscale は画像をグレースケールに変換する必要があります

convolutionFilter は 2D 画像フィルターを取得し、それを 1D 配列に展開してから、processedImage を畳み込み、結果を返す必要があります。

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

python - Richardson–Lucy アルゴリズムはどのように機能しますか? コード例?

デコンボリューションがどのように機能するかを理解しようとしています。私はその背後にある考え方を理解していますが、それを実装する実際のアルゴリズムのいくつかを理解したいと思っています.ポイントサンプル関数(ぼかしカーネル)を使用してぼやけた画像を入力として受け取り、出力として潜像を生成するアルゴリズムです。

これまでのところ、数学はそれほど難しくないように見えるRichardson-Lucyアルゴリズムを見つけましたが、実際のアルゴリズムがどのように機能するかはわかりません。ウィキペディアには次のように書かれています。

これにより、反復的に解くことができる方程式が得られます...

ただし、実際のループは表示されません。実際のアルゴリズムが説明されているリソースを教えてください。Google では、Richardson-Lucy をステップの 1 つとして使用するメソッドのみを見つけることができましたが、実際の Richardson-Lucy アルゴリズムは見つかりませんでした。

任意の言語または疑似コードでのアルゴリズムは優れていますが、Python で使用できる場合、それは素晴らしいことです。

事前にサンクス。

編集

基本的に、私が把握したいのは、ぼやけた画像 (nxm) です。

ぼやけた画像を取得するために使用されたカーネル (ixj):

元の画像を理解するためのリチャードソン・ルーシー アルゴリズムの正確な手順は何ですか?

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

python - Python/NumPy: 実行中の合計を実装します (完全ではありません)

同じ長さの 2 つの配列があり、1 つはデータを保持し、もう 1 つは結果を保持しますが、最初はゼロに設定されています。

a の 3 つの隣接する要素のすべての可能なサブセットの合計を計算したいと思います。合計が 0 または 1 の場合、b の対応する 3 つの要素は変更されません。合計が 1 を超える場合にのみ、b の対応する 3 つの要素が 1 に設定されるため、計算後に b は次のようになります。

単純なループでこれを実現します。

この後、b は目的の形式になります。

大量のデータに対してこれを行う必要があるため、速度が問題になります。上記の操作をNumPyで実行するためのより高速な方法はありますか?

(これは畳み込みに似ていることは理解していますが、まったく同じではありません)。

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

c++ - FFT畳み込みを使用したローパスFIRフィルター-オーバーラップ加算、理由、および方法

まず、ここにコードを投稿しなかったことをお詫びします。どういうわけか、私がこのページに持っていたコードを入力しようとすると、すべてのコードが台無しになりました。おそらく、投稿するには多すぎて受け入れられませんでした。これが私のコードです:http://pastebin.com/bmMRehbd

言われていることから、このコードから良い結果が得られない理由は、オーバーラップ加算を使用していないためです。オーバーラップ加算を使用する必要がある理由について、インターネット上のいくつかのソースを読み込もうとしましたが、理解できません。実際のフィルターが機能し、指定されたカットオフを超えるものが発生すると、実際にカットオフが発生するようです。

これはvst2-sdkで機能するように作成されたコードです。

誰かがそれを追加する必要がある理由と、指定されたコードにオーバーラップ加算コードを実装する方法を教えてもらえますか?

また、アルゴリズムと数学に関しては、私はかなり愚かです。私は自分がしていることを視覚的に把握する必要がある人の一人です。それまたはコードで説明されているものを取得する:)そして私は実際の重複を意味します。

Overlad add理論: http: //en.wikipedia.org/wiki/Overlap%E2%80%93add_method

あなたが与えることができるすべての助けをありがとう!