信号処理

信号、画像およびビデオ処理の芸術および科学の実務家のためのQ&A

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 

7
Parks-McClellan最適FIRフィルター設計アルゴリズムのオープンソース実装はどこで入手できますか?
背景:私はしばしば、独自のフィルターを必要とする何らかの信号処理タスクを行っています。通常、この時点でMATLABに行き、firpm()firpm()\tt firpm()を使用して新しい一意のフィルターを生成します。MATLAB firpm()関数は、そのParks-McClellanアルゴリズムを実装します。これでフィルターができたので、フィルターをハードコーディングされた配列に入れました。しかし、1つのシナリオでのみ機能するハードコードされたフィルターがあるという問題があります。 問題:信号処理の問題を解決できるようになりましたが、非常に特定のシングルサンプルレートまたは特定のシナリオの場合のみです。 目標: Cコードまたは他の言語からfirpm()firpm()\tt firpm()を呼び出して、信号処理コードをより汎用的にしたい。のオープンソース実装が見つかりませんfirpm()! Parks-McClellan最適FIRフィルター設計アルゴリズム(MATLABでは別名firpm()firpm()\tt firpm()オープンソース実装はどこで入手できますか? PS私は、ウィンドウ処理などを使用してフィルタを異なる方法で設計できることを認識しています...コメントでそれらを自由に言及してください。しかし、この質問のポイントは、「他のフィルター設計手法とは何ですか?」ポイントは、非常に便利なfirpm()firpm()\tt firpm() ...または類似のもののオープンソース実装を見つけることです。 PPSこの質問の目標の1つは、最初にコードを見て、Parks-McClellanアルゴリズムがどのように機能するかを学習することです。その後、背景理論を読む予定です。

3
ホワイトガウスノイズの分散
それは簡単な質問に思えるし、それがあるが、私はどんな結果なし白色ガウス雑音の分散を計算しようとしている任意の疑いのないことができます。 加法性ホワイトガウスノイズ(AWGN)のパワースペクトル密度(PSD)はN02N02\frac{N_0}{2}自己相関がN02δ(τ)N02δ(τ)\frac{N_0}{2}\delta(\tau)、分散が無限であるので?

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 …


3
デジタル発振器を実装する方法は?
x86-64プロセッサを使用して実装されたサンプル/秒の固定サンプルレートで動作する浮動小数点デジタル信号処理システムがあります。DSPシステムが重要なものに同期してロックされていると仮定すると、ある周波数でデジタル発振器を実装する最良の方法は何ですか?fs=32768fs=32768f_s = 32768fff 具体的には、信号を生成したい: ここで 、サンプル番号です。y(t)=sin(2πft)y(t)=sin⁡(2πft)y(t) = \sin(2\pi f t)t=n/fst=n/fst=n/f_snnn 1つのアイデアは、各クロックサイクルで角度だけ回転するベクトルを追跡することです。(x,y)(x,y)(x,y)Δϕ=2πf/fsΔϕ=2πf/fs\Delta\phi = 2\pi f/f_s Matlab擬似コード実装として(実際の実装はCで行われます): %% Initialization code f_s = 32768; % sample rate [Hz] f = 19.875; % some constant frequency [Hz] v = [1 0]; % initial condition d_phi = 2*pi * f / f_s; % change in …

4
誰かの声を模倣/コピー/偽造する方法は?
サンプル誰かの声に、既存のアプリケーションはありますし、任意の他の音声を調節したり、元の1に似ているために、テキストを合成するためにそれを使うのか? たとえば、このAT&Tの音声合成デモでは、サンプリングされた人間の声に基づいていると思われるプリセットから音声と言語を選択できます。 このプロセスをどのように呼びますか?音声変調ですか?音声合成?
19 modulation  voice 

2
Goertzelアルゴリズムを使用すると、実際により良い周波数分解能が得られますか?
私はこの記事を読んでいますが、著者がGoertzelアルゴリズムに関して「周波数分解能」を自由に使用していることに少し混乱しています。 基本的な質問:Goertzelアルゴリズムを使用すると、実際に特定の対象帯域でより多くの周波数分解能が得られますか、それとも特定の対象帯域のみでFFTを効率的に計算しますか?サンプルの? たとえば、が100 KHz(固定)であり、データサンプル数が10000であるとしう(また固定)。FFTの長さもである通常のFFTを計算する場合、周波数分解能は予想どおりであり、10 Hzに等しくなります。これは、私のビンが-50,000 Hz〜50,000 Hzの10 Hzで区切られていることを意味します。FsFsF_sNNNNNNFsNFsN\frac{F_s}{N} 次に、Geortzelアルゴリズムを使用して、たとえば20,000〜21,000 Hzの範囲の周波数のみを表示したいとします。サンプル数に同じを使用し、FFTサイズに同じを使用する場合、周波数分解能はどうなりますか?まだ10 Hzですか?それとも Hzですか?NNNNNN21,000−20,00010000=0.121,000−20,00010000=0.1\frac{21,000-20,000}{10000} = 0.1 0〜50,000の場合と同じ inを使用して21,000〜20,000の周波数を評価することにより、メインローブ上のポイントを単純に補間するだけでは、周波数分解能を実際に向上させていないように感じます。NNN これは正しい理解ですか?

4
Spectrogramからのオーディオ信号の再構築
50%オーバーラップしたハミングウィンドウを使用してマグニチュードスペクトログラムを抽出した曲のセットがあります。スペクトログラムを抽出した後、主成分分析(PCA)を使用していくつかの次元削減を行いました。それを低次元に減らした後、低次元からスペクトログラムを再構築しました。そのため、元のスペクトログラムと再構成されたスペクトログラムの間にエラーが発生します。私はオーディオの音をどうするか、下の次元から再構築するとき、私は知ることができるだろうだから、オーディオ信号に、このスペクトログラムの背中を変換し、それを再生したいと思います。 Matlabなどで利用可能な機能はありますか?マグニチュードスペクトログラムをオーディオ信号に変換するには??

3
カルマンフィルターの入力は常に信号とその微分値である必要がありますか?
このような入力データで使用されるカルマンフィルターは常に表示されます。たとえば、入力は通常、位置と対応する速度です。 (x 、dバツdt)(x,dxdt) (x, \dfrac{dx}{dt}) 私の場合、サンプル時間ごとに2Dの位置と角度しかありません。 P私(x私、y私)そして(α1、α2、α3)Pi(xi,yi)and(α1,α2,α3) P_i(x_i, y_i) \qquad \text{and} \qquad (\alpha_1, \alpha_2, \alpha_3) カルマンフレームワークに適合できるように、各ポイントおよび各角度の速度を計算する必要がありますか?

6
ウォルシュアダマール変換とは何ですか?
私はWHTについて自分自身を学ぼうとしていますが、どこでもオンラインでそれについて多くの良い説明があるようには見えません。WHTを計算する方法を理解したと思いますが、画像認識ドメイン内でWHTが有用であると考えられる理由を本当に理解しようとしています。 それについて特別なことは何ですか?また、古典的なフーリエ変換や他のウェーブレット変換では現れない信号にどのような特性をもたらしますか?ここで指摘したように、なぜオブジェクト認識に役立つのですか?

3
ハフ変換の理解を支援
MATLABでハフ変換を機能させようとしていますが、問題があります。修正する必要のあるピークを検出する方法は非常に悪いですが、その前にハフ変換を逆にしてラインを正しく作成できるようにする必要があります。これは私が今得ているもののタイプです: 90度回転しているように見えますが、その理由はわかりません。私のハフのスペースが間違っているのか、それとも私がハフを解いて線を引くのかがわかりません。また、誰かが私のピーク検出を改善するのを助けることができますか?コードで使用されている画像はこちら %% load a sample image; convert to grayscale; convert to binary %create 'x' image (works well) a = eye(255); b = flipud(eye(255)); x = a + b; x(128,128) = 1; %image = rgb2gray(imread('up.png')) < 255; %image = rgb2gray(imread('hexagon.png')) < 255; %image = rgb2gray(imread('traingle.png')) < 255; %%% these work …


3
フーリエ法による断層再構成のこのコードの何が問題になっていますか?
私は最近、断層撮影再構成アルゴリズムで遊んでいます。私はすでに、FBP、ART、SIRT / SARTのような反復スキーム、および直線線形代数(遅い!)を使用した素晴らしい実装を持っています。 この質問はそれらのテクニックのどれについてもありません ; 「誰がそのようにするのか、代わりにいくつかのFBPコードがある」という形式の答えは、私が探しているものではありません。 このプログラムで次にやりたいことは、「セットを完了し」、いわゆる「フーリエ再構成法」を実装することでした。これについての私の理解は、1D FFTをサイノグラムの「露出」に適用し、それらを2Dフーリエ空間の放射状の「車輪のスポーク」として配置することです(これは、中央スライス定理から直接従うのが便利なことです) 、それらのポイントからその2D空間の通常のグリッドに内挿し、逆フーリエ変換して元のスキャンターゲットを復元できるようにする必要があります。 簡単に聞こえますが、元のターゲットのように見える再構築を得ることができなかったのです。 以下のPython(numpy / SciPy / Matplotlib)コードは、私がやろうとしていることを思いつくことができる最も簡潔な表現です。実行すると、次が表示されます。 図1:ターゲット 図2:ターゲットのサイノグラム 図3:FFT処理されたサイノグラムの行 図4:一番上の行は、フーリエ領域のサイノグラムの行から補間された2D FFT空間です。一番下の行は(比較のため)ターゲットの直接2D FFTです。これが、私が疑わしくなり始めた時点です。サイノグラムFFTから補間されたプロットは、ターゲットを直接2D-FFTすることによって作成されたプロットに似ていますが、まだ異なっています。 図5:図4の逆フーリエ変換。これが実際よりもターゲットとしてもう少し認識できることを望んでいました。 私が間違っていることは何ですか?フーリエ法の再構築に関する私の理解が根本的に不備なのか、コードにバグがあるのか​​はわかりません。 import math import matplotlib import matplotlib.pyplot as plt import numpy as np import scipy.interpolate import scipy.fftpack import scipy.ndimage.interpolation S=256 # Size of target, and resolution of Fourier …

5
画像のグレアと明るさを除去する方法(画像の前処理)
画像があります 明るい白い斑点を取り除く方法はありますか?助けてください 編集: gaussianで操作し、imagescを使用して表示すると、次の出力が得られます。これは、明るい赤色の斑点を明確に示しています。 レッドチャンネル: グリーンチャンネル: 青チャンネル: 編集2: ガボールフィルターを使用した欠陥検出 そのヒストグラム: 適切なしきい値を適応的に計算する方法。

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