問題タブ [dft]
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.
c++ - C++でOpenCVを使用してgpu::dftによって実行されるスケーリング
GPUで高速化されたアルゴリズムを使用して、高速でメモリを節約するdftを実行したいと思います。しかし、を実行すると、ドキュメントgpu::dft
で説明されているように、宛先マトリックスがスケーリングされます。幅をにスケーリングすることでこの問題を回避するにはどうすればよいですか?また、なぜこのようにスケーリングされるのですか?DFTの私のコードはこれです:dft_size.width / 2 + 1
ここで、は512x512in
のCV_32FC1
行列です。
最良の解決策は、サイズd_in.size
とタイプがである宛先マトリックスCV_32FC2
です。
java - 正弦サンプルの離散フーリエスペクトル分析からの予期しない結果
http://jvalentino2.tripod.com/dft/index.html
私のコードは実際には上記のコピーにすぎません。
このサンプルで実行すると:http://vigtig.it/sin440.wav
私はこの結果を得る:
440 hzで最高の応答が期待できますが、そうではありません。誰かがバグを見つけたり、結果をどのように誤解しているのかを教えてくれますか?
編集
バイト/整数変換を調べた後、代わりにByteBufferを使用するようにスクリプトを変更しました。現在、意図したとおりに機能しているようです。作業コピーは次のとおりです。
c++ - C++ での DFT の実装
画像を処理するためにC++言語でDFT (離散フーリエ変換)を実装したいと考えています。
理論を勉強していると、2D DFT を2 つの 1D DFT部分に分割できることがわかりました。まず、行ごとに 1D DFT を実行し、次に列ごとに実行します。もちろん、複素数の演算を行う必要があります。
ここでいくつかの問題が発生します。これは、複素数の実部と虚部をどこで使用するかわからないためです。入力画像ピクセルの値は、虚数部を 0 に設定した実数部として扱う必要があることをどこかで見つけました。
私はそれを実装しましたが、結果の画像が間違っていると思います。
誰かが私を助けてくれたら幸いです。
画像の読み取りと保存には、CImg ライブラリを使用します。
c++ - 周波数範囲のある DFT
GSL の標準 DFT 実装を変更/再実装する必要があります。
この実装では、GSL はサンプル/入力サイズに対して入力ベクトルを 2 回繰り返します。ただし、異なる周波数ビンを構築する必要があります。たとえば、4096 個のサンプルがありますが、128 の異なる周波数について DFT を計算する必要があります。必要な DFT の動作を定義または実装するのを手伝ってもらえますか? 前もって感謝します。
m
編集: 最初の周波数は検索しません。
実際、与えられた周波数ビン番号でDFT結果を見つけるための以下のアプローチは正しいですか? N = サンプル サイズ B = 頻度ビン サイズ
編集:DFTの問題を詳しく説明していない可能性がありますが、以下の回答を提供させていただきます:
image - JPEG符号化画像のブロックサイズの調べ方
dftでjpegエンコードした画像のブロックサイズを知りたいです。dft アルゴリズムを実装しました。dft には別の場所にスパイクがあります。アルゴリズムでは、ブロックサイズはそれらのスパイク位置の倍数になると言われています。画像のブロック サイズやスパイクの位置を特定する方法を教えてください。
python - 3D DFT の実装時に結果を一致させることができない
3D DFT を実装しようとしていますが、問題が発生しています。私がすべきことは、各方向に 1 つずつ、3 つの連続した 1D DFT を実行することです。1D DFT が正しいと仮定すると、このコードの問題点がわかります。
Python にこれのバージョンが組み込まれていることは知っていますが、それらを使用することはできません。アルゴリズムと組み込みのアルゴリズムの結果を比較できるように、Python でアルゴリズムをテストしているだけです。私が知る限り、1D と 2D の両方の変換で問題なく動作しましたが、3D に拡張すると、結果が一致しなくなりました。誰が何が悪いのか知っていますか?
c - OpenCVおよびFFTW3ライブラリを使用して画像の離散フーリエスペクトル(DFT)を表示する方法は?
単純な画像のフーリエスペクトルを生成しようとしています。しかし、私が得るのはノイズだけです。間の値を縮小することを提案する多くのリンクをたどろうとしました[0, 255]
が、このように拡大縮小した後でも、黒い画像しか表示されません。
スケーリングコード:
dft
配列の最初の値は大きすぎるため(DC値であるため)、取得していないことに注意してください。つまりk=1
、上のforloop
画像から始めています。
後でスケーリングのためにこれを行います
スケーリングなしのコード:
出力:
しかし、私がそのようなスケーリングを導入した場合:スケーリング 後のコード
スケーリング後の出力
私が間違っていることを教えてください。そして、画像の正しいスペクトルを得るために、どのようにスケーリングを行うと思いますか。
image - OpenCVでガウスフィルタをDFT出力に適用する方法
正しいパディング サイズを決定した後、ガウス ハイパス フィルターを作成したいと考えています (たとえば、画像の幅と高さが 10X10 の場合、20X20 にする必要があります)。
OpenCV に移植しようとしている Matlab コードがありますが、適切に移植するのが困難です。私のMatlabコードは以下のとおりです:
OpenCV で DFT を使用する方法を知っており、そのイメージを生成できますが、ガウス フィルターを作成する方法がわかりません。上記のようなハイパス ガウス フィルターを作成する方法を教えてください。
c++ - OpenCV の空間ドメインへの DFT が機能しない
画像の dft を作成しました。フィルターを使用して調整した後、実際の画像に変換したいのですが、そのたびに間違った結果が得られます..元に変換していないようです。
ForierTransform
そしてcreateGaussianHighPassFilter
、実際の画像に戻すために以下のように使用しているコードの残りの部分は、私自身の関数です。
フィルターを適用しなくても、dft結果を元に戻すことはできません...これが私のdftコードです.dftを通常の画像に戻すサンプルが見つかりませんでした..
親切に助けて
[編集: メバトロンの助けを借りて解決策を見つけた後] (以下は正しいコードです)
指の隆起谷を表示できるようになり、しきい値に関してもより最適化できるようになりました
c# - AForge.Math の DFT が機能しないのはなぜですか?
次のコードを使用して、fft を取得してから、波の dft を取得しようとしました。
SourceToDouble(s)
:
ToPowerOfTwo(ref source)
:
DoubleToComplex(source)
:
DoPlaySound(sou)
:
問題はこれです: 一般的なコードに wav ファイルを与えると、メソッドは最終的な wav (tmp.wav) を再生しようとしますが、一般的なファイルとは異なります。
更新 1:
私も試してみFourierTransform.DFT(sou, FourierTransform.Direction.Backward);
ましたが、うまくいきませんでした!