タグ付けされた質問 「algorithms」

アルゴリズムは、信号を処理するための明確に定義された命令のステップの有限リストで表される方法です。

10
クリッピングせずにオーディオ信号をミックスするアルゴリズム
2つ以上のPCMオーディオチャネル(録音されたサンプルなど)を音響的に忠実に、できればほぼリアルタイム(ピークがほとんどまたはまったくない)でデジタルでミックスしたいと思います。 これを行う物理的に「正しい」方法は、サンプルを合計することです。ただし、2つの任意のサンプルを追加すると、結果の値は最大値の2倍になる可能性があります。 たとえば、サンプルが16ビット値の場合、結果は最大65536 * 2になります。これにより、クリッピングが発生します。 ここでの単純な解決策は、Nで割ることです。ここで、Nは混合されるチャネルの数です。ただし、これにより、各サンプルは1 / Nthの音量になり、完全に非現実的です。現実の世界では、2つの楽器が同時に演奏されると、各楽器の音量は半分になりません。 一般的なミキシング方法は、result = A + B-ABです。ここで、AとBは混合される2つの正規化されたサンプルであり、ABはより大きな音がますます「ソフトクリップ」されることを保証する用語です。 ただし、これにより信号に歪みが生じます。このレベルの歪みは、高品質のオーディオ合成で許容されますか? この問題を解決する他の方法はありますか?効率の悪い低品質のアルゴリズムと、効率の低い高品質のアルゴリズムに興味があります。 複数の楽器トラックを一緒にミキシングするために、デジタル音楽シンセシスのコンテキストで質問をしています。トラックは、合成オーディオ、事前に録音されたサンプル、またはリアルタイムのマイク入力です。

5
エッジ検出アルゴリズムを選択する際に考慮すべき要素は何ですか?
Sobel、Laplacian、Cannyメソッドなどのアルゴリズムを含む、多くのエッジ検出アルゴリズムについて学びました。私には最も人気のあるエッジ検出器はキャニーエッジ検出器であるようですが、これが使用するのに最適なアルゴリズムではない場合はありますか?使用するアルゴリズムを決定するにはどうすればよいですか?ありがとう!

4
録音中の信号クリッピングを検出する良い方法は何ですか?
録音が行われた場合、クリッピングが発生したかどうかを検出する必要があります。 いずれかのサンプルが最大サンプル値に達した場合、クリッピングがあったと安全に結論付けることができますか、または最大レベルで一連の後続のサンプルを検索する必要がありますか? 記録は、16または24ビットA / D変換器から採取することができ、範囲ポイント値フローティングに変換される。この変換が2 15 − 1またはによる除算の形式をとる場合、おそらく負のピークは-1よりやや低くなり、値が-1のサンプルはクリップされませんか?− 1 ... 1−1 ... 1-1...1215− 1215−12^{15}-1223− 1223−12^{23}-1 明らかに、クリッピング検出アルゴリズムを無効にするための信号をいつでも作成できますが、音声、音楽、正弦波、ピンク/ホワイトノイズの録音を見ています。
32 audio  algorithms 

6
サンプルから波形のPDFを計算する
しばらく前に、デジタル波形を描画するさまざまな方法を試していましたが、私が試みたのは、振幅エンベロープの標準シルエットではなく、オシロスコープのように表示することでした。これは、正弦波と方形波がスコープ上でどのように見えるかです。 これを行う単純な方法は次のとおりです。 出力画像のオーディオファイルを水平ピクセルごとに1つのチャンクに分割します 各チャンクのサンプル振幅のヒストグラムを計算します ピクセルの列として輝度でヒストグラムをプロットします 次のようなものが生成されます。 これは、チャンクごとに多くのサンプルがあり、信号の周波数がサンプリング周波数と無関係である場合は正常に機能しますが、そうでない場合は機能しません。たとえば、信号周波数がサンプリング周波数の正確な約数である場合、サンプルは各サイクルで正確に同じ振幅で常に発生し、実際の再構成信号がこれらのポイント間に存在しても、ヒストグラムはほんの数ポイントになります。このサインパルスは上記の左と同じくらい滑らかでなければなりませんが、正確に1 kHzであり、サンプルは常に同じポイントの周辺で発生するため、そうではありません。 ポイント数を増やすためにアップサンプリングを試みましたが、問題は解決せず、場合によっては問題を解決するのに役立ちます。 だから、私が本当に欲しいのは、デジタルサンプルから連続的に再構築された信号の真のPDF(確率vs振幅)(振幅vs時間)を計算する方法です。これに使用するアルゴリズムがわかりません。一般に、関数のPDFはその逆関数の導関数です。 sin(x)のPDF:ddバツアークシンx = 11 - x2√ddxarcsin⁡x=11−x2\frac{d}{dx} \arcsin x = \frac{1}{\sqrt{1-x^2}} しかし、逆関数が多値関数である波に対してこれを計算する方法や、それを高速に行う方法はわかりません。それをブランチに分割し、それぞれの逆数を計算し、導関数を取り、それらをすべて合計しますか?しかし、それはかなり複雑で、おそらくもっと簡単な方法があります。 この「補間データのPDF」は、GPSトラックのカーネル密度推定を行う試みにも適用できます。リング状にすべきでしたが、サンプルだけを見て、サンプル間の補間点を考慮していなかったため、KDEはリングというよりもハンプのように見えました。サンプルがわかっているだけであれば、これが最善です。しかし、サンプルは私たちが知っているすべてではありません。また、サンプル間にパスがあることもわかっています。GPSの場合、帯域制限されたオーディオのように完璧なナイキスト再構成はありませんが、補間関数に推測を加えることで基本的な考え方が適用されます。

1
Remez exchangeとParks-McClellanフィルター設計の違いは何ですか?
質問は、最近パークス・マクレランに関する上がってきたコメントのいくつかがあることを指摘パークス・マクレラン上のWikipediaの記事は、述べて ... Parks-McClellanアルゴリズムは、RemezアルゴリズムまたはRemez交換アルゴリズムのバリエーションです。 パフォーマンスに違いはありますか?remezオクターブの関数はMatlab関数と同等firpmですか?

3
距離変換の最速アルゴリズム
距離変換に利用可能な最速のアルゴリズムを探しています。 このサイトhttp://homepages.inf.ed.ac.uk/rbf/HIPR2/distance.htmによると、次のように説明しています。 距離変換は、2つのパス(例、RosenfeldとPfaltz 1968)で巧妙なアルゴリズムを使用して、はるかに効率的に計算できます。 あちこち検索して、「Rosenfeld、A and Pfaltz、J L. 1968. Digital Picturesの距離関数。パターン認識、1、33-61」を見つけました。 しかし、すでに1968年のアルゴリズムよりも優れた高速なアルゴリズムが必要だと思います。実際、1968年のソースを見つけることができなかったので、助けていただければ幸いです。

3
高次フィルターのカスケードバイカッドセクションはどのように機能しますか?
私は8次のIIRフィルターを実装しようとしていますが、これまで読んだすべてのアプリケーションノートと教科書には、2次のセクションとして2を超える次数のフィルターを実装するのが最善であると書かれています。tf2sosMATLABで2次セクションの係数を取得するために使用しましたが、予想どおり、4 2次セクションの6x4係数が得られました。SOSとして実装する前は、8次フィルターには7つの以前のサンプル値を保存する必要がありました(および出力値も)。ここで、2次セクションとして実装するとき、フローが入力から出力までどのように機能するか、2つの前のサンプル値のみを保存する必要がありますか?または、最初のフィルターの出力はx_in2番目のフィルターのように送られますか?
20 filters  filter-design  infinite-impulse-response  biquad  audio  image-processing  distance-metrics  algorithms  interpolation  audio  hardware  performance  sampling  computer-vision  dsp-core  music  frequency-spectrum  matlab  power-spectral-density  filter-design  ica  source-separation  fourier-transform  fourier-transform  sampling  bandpass  audio  algorithms  edge-detection  filters  computer-vision  stereo-vision  filters  finite-impulse-response  infinite-impulse-response  image-processing  blur  impulse-response  state-space  linear-systems  dft  floating-point  software-implementation  oscillator  matched-filter  digital-communications  digital-communications  deconvolution  continuous-signals  discrete-signals  transfer-function  image-processing  computer-vision  3d 

2
言葉で説明されている逆短時間フーリエ変換アルゴリズム
順方向および逆方向の短時間フーリエ変換(STFT)が離散時間領域信号に適用されたときに何が起こっているかを概念的に理解しようとしています。Allen and Rabiner(1977)による古典的な論文とWikipediaの記事(link)を見つけました。ここにも良い記事があると思います。 Gabor変換の計算に興味がありますが、これはGaussianウィンドウを使用したSTFTに他なりません。 これは私がフォワード STFT について理解していることです: サブシーケンスは、時間領域要素から構成される、信号から選択されます。 サブシーケンスは、時間領域におけるポイントごとの乗算を用いて窓関数が乗算されます。 乗算されたサブシーケンスは、FFTを使用して周波数領域に取り込まれます。 連続する重複するサブシーケンスを選択し、上記の手順を繰り返すことにより、m行n列のマトリックスを取得します。各列は、特定の時間に計算されたサブシーケンスです。これを使用してスペクトログラムを計算できます。 ただし、逆 STFTについては、重複する分析セクションの合計について説明しています。ここで実際に何が起こっているのかを視覚化することは非常に難しいと感じています。逆 STFT を計算できるようにするために何をする必要がありますか(上記のステップバイステップ順)? フォワードSTFT 私はフォワードSTFTのために何が起こっていると思うかを示す図面を作成しました。私が理解していないのは、各サブシーケンスをどのように組み立てて元のタイムシーケンスを取り戻すかということです。誰かがこの図面を修正するか、サブシーケンスがどのように追加されるかを示す方程式を与えることができますか? 逆変換 これが逆変換について私が理解していることです。連続する各ウィンドウは、IFFTを使用して時間領域に戻されます。次に、各ウィンドウがステップサイズ分シフトされ、前のシフトの結果に追加されます。次の図は、このプロセスを示しています。合計出力は時間領域信号です。 コード例 次のMatlabコードは、合成時間領域信号を生成し、STFTプロセスをテストして、数値丸め誤差内で逆変換が順変換の双対であることを示します。ウィンドウの中心を時間領域信号の最初と最後の要素に配置できるように、信号の開始と終了にはゼロが埋め込まれます。 Allen and Rabiner(1977)によると、周波数応答を変更するために周波数ドメインで乗算が発生する場合、分析ウィンドウの長さはポイント以上でなければなりませんはフィルター応答です。長さはゼロパディングによって拡張されます。テストコードは、逆変換が順変換の双対であることを示しています。循環畳み込みを防ぐために、長さを延長する必要があります。N 0N+ N0− 1N+N0−1N + N_0 - 1N0N0N_0 % The code computes the STFT (Gabor transform) with step size = 1 % This is most useful when …

5
区分的線形データを近似
区分的に線形だがノイズの多いデータに適合する堅牢な方法は何ですか? いくつかのほぼ線形のセグメントで構成される信号を測定しています。遷移を検出するために、データに複数の行を原子的に適合させたいと思います。 データセットは1〜10個のセグメントを持つ数千のポイントで構成されており、セグメントの数はわかっています。 これは自動的にやりたいことの例です。
18 algorithms 

7
FFTを高速化するDFTとFFTの違いは何ですか?
私はFFTを理解しようとしていますが、ここに私が持っているものがあります: 波形内の周波数の大きさを見つけるには、2つの異なる位相(sinとcos)で、波形に検索対象の周波数を掛け、それぞれを平均化することにより、周波数を調べる必要があります。フェーズは2つとの関係によって検出され、そのためのコードは次のようなものです。 //simple pseudocode var wave = [...]; //an array of floats representing amplitude of wave var numSamples = wave.length; var spectrum = [1,2,3,4,5,6...] //all frequencies being tested for. function getMagnitudesOfSpectrum() { var magnitudesOut = []; var phasesOut = []; for(freq in spectrum) { var magnitudeSin = 0; var magnitudeCos …
16 fft  dft  algorithms 

3
輪郭の一致-輪郭の変位を見つける
同じオブジェクトの2つの画像で輪郭を見つけ、このオブジェクトの変位と回転を見つけたいです。私はこの輪郭の回転した境界ボックスとその角度と中心点を試しましたが、境界ボックスの回転は、角度a + 0、a + 90、a + 180などで同じであるため、輪郭の回転を正しく認識しません度。輪郭の回転と変位を見つける他の良い方法はありますか?たぶん凸包、凸欠陥のいくつかの使用?等高線のマッチングについてOpenCvの学習で読みましたが、助けにはなりませんでした。誰かが例を挙げることができますか? 例: たとえば、ピンクの四角や、2番目のケースのペンを検出したい。他の例は、いくつかの穴や星などのある正方形です。私が言ったように、私はいくつかの普遍的なものを作りたいです。可能な限り多くのメソッドをテストしたいので、提案はありがたいです。

1
バイナリロバスト独立基本機能(「BRIEF」)の理解
Briefアルゴリズムの記述子はどのように相互に一致しますか? テンプレート画像は別の画像でどのように見つかりますか?記述子をどのように比較しますか?私はその記事を読みましたが、彼らがそれをどのように行ったか理解していませんでした。 彼らは、ハミング距離を使用して記述子を比較したと書いていますが、照明、サイズなどの変化に対する不変性はどのように達成されますか?

2
ビットマップアルファベベルアルゴリズム?
アルファをバンプマップとして使用して、ビットマップにベベル効果を追加するアルゴリズムを作成したいと考えています。 このようなことをどのようにすればいいですか?鏡面照明を試しましたが、ハイライトのみが得られ、シェードは得られません。 これが私が話している効果です(Photoshopを使用して作成): これらの全てを用いて行ったsize: 30px(ビットマップの輪郭からベベルの深さ)をangle 130、altitude 50。 左から右、上から下: チゼルハードベベル チゼルソフトベベル 滑らかなベベル チゼルハードでsoften: 16px-ぼやけた面取り? これらのエフェクトをそれぞれ作成しようとしていますが、基本的なベベルを作成するにはどうすればよいですか?そして、その斜面からこれらのそれぞれに到達するには何が必要ですか

1
ノイズでのトーンバーストの開始時間の推定
ノイズの多い信号で正弦波トーンバーストの開始時間を推定するために、どのような手法を使用できますか? トーンバーストは既知の固定周波数(ただし未知の位相)と非常に鋭い立ち上がり時間を持ち、目標は立ち上がり時間の半分、および/またはトーンの周波数の1周期以内で開始時間を推定することです、 可能なら。S / N比が非常に低い(1未満)場合、推定手法はどのように変化しますか? 追加:トーンバーストの長さは不明ですが、立ち上がり時間と周波数周期の小さな倍数よりも長いと仮定します。 追加:DFT / FFTは、トーンの存在の可能性が非常に高いことを示しています。問題は、FFTウィンドウ内のトーン(またはおそらく同じ周波数の複数のトーンバースト)がFFTウィンドウ内で開始した場所を正確に把握すること、または現在のトーンがそのDFTウィンドウ外で開始したかどうかを判断することです。追加の時間領域データ。 レーダーパルスの検出精度は、トーンの長さが不明であり、既知の立ち上がり時間以外は変調されていないため、エッジのみがあることを除いて、必要な解像度に近くなります。狭帯域パスフィルターは立ち上がり時間を歪め、したがってエッジ到着推定の解像度を低下させます。

1
FPGAで固定小数点atan2を計算する方法
atan2(x,y)データの連続入出力ストリームを備えたFPGA での計算が必要です。展開されたパイプライン化されたCORDICカーネルを使用して実装できましたが、必要な精度を得るために、32回の反復を実行する必要がありました。これにより、この1つのタスク専用のかなり大量のLUTが作成されました。部分的に展開されたCORDICカーネルを使用するようにフローを変更しようとしましたが、連続した入出力フローを維持しながら繰り返しループを実行するには逓倍クロック周波数が必要でした。これで、タイミングを合わせることができませんでした。 だから今、私はコンピューティングの代替方法を求めていますatan2(x,y)。 補間でブロックRAMルックアップテーブルを使用することを考えましたが、2つの変数があるため、ルックアップテーブルの2次元が必要になります。これは、ブロックRAMの使用に関して非常にリソースを消費します。 次に、象限調整にatan2(x,y)関連する事実を使用することを考えましたatan(x/y)。これに関する問題は、定数ではないx/yため真の除算が必要であり、yFPGAでの除算は非常にリソースを消費することです。 atan2(x,y)LUTの使用量を削減する一方で、優れた精度を提供するFPGA に実装する新しい方法はありますか?
12 algorithms 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.