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

Pythonは、高水準の解釈された汎用プログラミング言語です。Pythonには、人気のある数値および科学ライブラリ/パッケージ、特にnumpyとscipyがあります。scipy.signalパッケージは、強力な信号処理ソフトウェアコレクションです。このタグは、SPの計算によく使用されるnumpy、scipy、およびその他のPythonパッケージの使用をカバーしています。

7
画像内の正方形を見つける
OpenCVを使用して画像内の正方形を見つける必要があります(matlabやその他の問題はありません。一般的に、私はいくつかのアイデアを期待しています)。 以下のテスト画像を検討してください。 上の画像で色の付いた正方形を正確に見つける必要があります(白い長いストリップではありません)。 私がしたこと : 一般的な方法(OpenCVサンプルに付属)を適用しました。つまり、すべてのカラープレーンで輪郭を見つけ、近似し、要素数= 4をチェックします。いくつかの四角形、特に暗い四角形が検出されると、ある程度拡張されます。 次のステップは予測でした。すなわち、この配置は固定されています。そのため、いくつかが取得された場合、残りのものを予測できます。また、さらに拡張されました。しかし、精度は非常に悪かった。 しかし、ここでは予測は良い方法ではなく、最初のステップで与えられたように正確な答えを常に提供するとは限りません。 必要なもの: 1)これらの正方形をより正確に検出する他のより良い方法はありますか?または複数の方法? 1つの重要なポイントは、ここでは時間は問題ではないということです。アルゴリズムは遅くなる可能性がありますが、問題ではありません。しかし、精度が主要な基準です。 時々、画像がはるかにぼやけることがあります。 そして、私が直面した主要な問題の1つは、いくつかの正方形が背景の色とほぼ同じ色を持つことです(3列目の1番目と2番目の正方形を確認してください)。 アイデアを探して、事前に感謝します 更新: 以下は、私が得た最大の正確な結果です: もちろん、結果画像のサイズは少し変更されます。 更新2: 私は以下の回答でより良いソリューションを提供しました:https : //dsp.stackexchange.com/a/7526/818

3
加速度計データの正しいフィルターを選択する
私はDSPにかなり慣れていないので、Pythonで加速度計データを平滑化するためのフィルターの可能性について調査しました。発生するデータのタイプの例を次の画像に示します。 基本的に、このデータを平滑化して最終的に速度と変位に変換するためのアドバイスを探しています。携帯電話の加速度計は非常にうるさいことを理解しています。 データによって生成されたノイズを参照するためにデバイスを取得できないため、現時点ではカルマンフィルターを使用できるとは思わない(デバイスを平らに配置し、それらの読み取り値からノイズの量を見つけることが不可欠であると読んだか?) FFTは興味深い結果をもたらしました。私の試みの1つは、加速度信号をFFTし、次に低周波数をレンダリングして絶対FFT値を0にすることでした。次に、オメガ演算と逆FFTを使用して速度のプロットを得ました。結果は次のとおりです。 これは物事を進める良い方法ですか?信号の全体的なノイズ特性を削除しようとしていますが、約80秒などの明らかなピークを識別する必要があります。 また、元の加速度計データでローパスフィルターを使用するのも大変でした。これは、データを平滑化するのに非常に役立ちましたが、ここからどこに進むべきかわかりません。ここからどこへ行くかについてのガイダンスは本当に役立つでしょう! 編集:少しのコード: for i in range(len(fz)): testing = (abs(Sz[i]))/Nz if fz[i] < 0.05: Sz[i]=0 Velfreq = [] Velfreqa = array(Velfreq) Velfreqa = Sz/(2*pi*fz*1j) Veltimed = ifft(Velfreqa) real = Veltimed.real 本質的に、iveは加速度計データに対してFFTを実行し、シンプルなブリックウォールフィルターを使用して高周波数をフィルター処理してSzを出力しました(理想的ではないことを知っています)。次に、データのFFTでオメガ演算を使用します。また、私の画像を私の投稿に追加してくれたdatageistにも感謝します:)
28 fft  python 

1
Pythonの初心者向けのローパスフィルターとFFT
私は信号処理、特にFFTが初めてなので、ここで正しいことをしているかどうかはわかりませんが、結果に少し混乱しています。 離散的な実関数(測定データ)があり、その上にローパスフィルターを設定したい。選択するツールは、numpyパッケージを備えたPythonです。私はこの手順に従います: 私の関数のfftを計算する 高周波を遮断 逆fftを実行します 私が使用しているコードは次のとおりです。 import numpy as np sampling_length = 15.0*60.0 # measured every 15 minutes Fs = 1.0/sampling_length ls = range(len(data)) # data contains the function freq = np.fft.fftfreq(len(data), d = sampling_length) fft = np.fft.fft(data) x = freq[:len(data)/2] for i in range(len(x)): if x[i] > 0.005: # …


2
Pythonでスペクトログラムの解像度を改善しますか?
specgram()関数を使用matplotlibしてPythonで音声波形ファイルのスペクトログラムを生成していますが、出力は常に、通常の文字起こしソフトウェアPraatが生成できる品質よりも非常に劣っています。たとえば、次の呼び出し: specgram( fromstring(spf.readframes(-1), 'Int16'), Fs=framerate, cmap=cm.gray_r, ) これを生成します: Praatが次の設定で同じオーディオサンプルに取り組んでいる間: 表示範囲:0-8000Hz ウィンドウの長さ:0.005s ダイナミックレンジ:70dB 時間ステップ:1000 周波数ステップ:250 ウィンドウ形状:ガウス これを生成します: 私は何を間違えていますか?すべてのspecgram()パラメーターをいじってみましたが、解像度を改善できるものはありません。FFTの経験はほとんどありません。

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 …

1
ホワイトノイズの位相および振幅応答とは何ですか?
周波数領域でホワイトノイズを作成し、Pythonを使用して時間領域に変換します。問題を理解するために、時間領域でホワイトノイズを生成し、それを周波数領域に変換しました。 import scipy.signal as sg import numpy as np import matplotlib.pyplot as plt e = np.random.normal(0,1,1e3) E = sg.fft(e) plt.figure("Bode plot") plt.subplot(211) plt.title("Magitude") plt.plot(abs(E)) plt.subplot(212) plt.title("Phase") plt.plot(np.angle(E)) plt.show() 私は期待したようにまったく見ていない: 質問: ホワイトノイズの振幅応答はフラットになるはずではありませんか?(すべての周波数で等しい量) 標準偏差(私の例では1)と振幅と位相の関係は何ですか? 前もって感謝します!
16 fft  noise  python 

5
Pythonでサンプリングされた信号のローパスフィルタを書く方法は?
1 ns(1e-9秒)ごとにサンプリングした信号があり、たとえば1e4ポイントがあります。この信号から高周波をフィルタリングする必要があります。10 MHzより高い周波数をフィルタリングする必要があるとしましょう。カットオフ周波数より低い周波数では、信号は変更されずに渡されます。これは、カットオフ周波数より低い周波数ではフィルターのゲインが1になることを意味します。フィルター次数を指定できるようにしたいと思います。つまり、カットオフ周波数後の1次フィルターには20 db / decadeの勾配(電源ロールオフ)があり、カットオフ周波数後の2次フィルターには40 db / decの勾配があります。コードの高性能が重要です。

4
numpy.arrayのブールマップで1のグループの数を数える
現在、PIL(Python Image Library)を介してPythonで画像処理を行っています。私の主な目的は、免疫組織化学画像内の有色細胞の数を数えることです。関連するプログラム、ライブラリ、関数、チュートリアルが存在することを知っており、それらのほとんどすべてをチェックしました。私の主な目標は、可能な限りゼロから手動でコードを書くことです。したがって、私は多くの外部ライブラリと関数の使用を避けようとしています。ほとんどのプログラムを作成しました。そのため、次の手順を順を追って説明します。 プログラムは画像ファイルを取り込みます: そして、赤のセルに対してそれを処理します(基本的に、赤の特定のしきい値を下回るRGB値をオフにします)。 そして、それのブールマップを作成します(それは大きいので、その一部を貼り付けます)。基本的に、上の処理された2番目の画像の赤いピクセルに出会う場所に1を置くだけです。 22222222222222222222222222222222222222222 20000000111111110000000000000000000000002 20000000111111110000000000000000000000002 20000000111111110000000000000000000000002 20000000011111100000000000000000001100002 20000000001111100000000000000000011111002 20000000000110000000000000000000011111002 20000000000000000000000000000000111111002 20000000000000000000000000000000111111102 20000000000000000000000000000001111111102 20000000000000000000000000000001111111102 20000000000000000000000000000000111111002 20000000000000000000000000000000010000002 20000000000000000000000000000000000000002 22222222222222222222222222222222222222222 そのブールマップ内の1のグループの数を数えるのに役立つように、2の境界でフレームのようなものを意図的に生成しました。 皆さんへの私の質問は、どうしてそのようなブールマップのセル(1のグループ)の数を効率的に数えることができるのでしょうか?私はhttp://en.wikipedia.org/wiki/Connected-component_labelingを見つけましたが、これは非常に関連性があり、似ているように見えますが、見た限りではピクセルレベルです。私のものはブールレベルです。1と0だけです。 どうもありがとう。
16 python 

4
Scipy-オーディオ処理
オーディオ信号処理に適したツールを探しています。例:音声と音楽の分析、自動言語識別など。 Scipyライブラリはオーディオ処理のための機能を提供しますか?オーディオ信号処理に適したツールはありますか? このためのツールを提案していただけますか?

3
画像処理コーディング
画像処理に最適な言語はどれかと思っていましたか?MATLABには優れたライブラリとユーザーコミュニティがあることがわかっています。私はそれをチェックアウトしていませんが、Pythonにもあります。 これに最も効率的な言語は何ですか?

3
STFTおよびDWT(ウェーブレット)
STFTは、いくつかの周波数領域の変更(例:ノイズ除去)を行うために、サウンドデータ(たとえば、.wavサウンドファイル)で正常に使用できます。(すなわち、10秒サンプリングレートで)、 、、STFTは近似的生成(:時間枠を、第2座標:周波数ビンを第1の座標)配列。この配列に対して変更を行うことができ、オーバーラップ加算(*)を使用して再構成を行うことができます。N=441000fs=44100windowsize=4096overlap=4430x4096 ウェーブレットで同様のことをどのように行うことができますか?(DWT)、つまりa x b、a時間フレームとb周波数ビンを備えた同様の形状の配列を取得し、この配列に何らかの変更を加え、最後に信号を復元しますか?どうやって ?overlay-addと同等のウェーブレットとは何ですか?ここに含まれるPython関数は何ですか(オーディオの変更の簡単な例は見つかりませんでしたpyWavelets...)? (*):使用できるSTFTフレームワークは次のとおりです。 signal = stft.Stft(x, 4096, 4) # x is the input modified_signal = np.zeros(signal.shape, dtype=np.complex) for i in xrange(signal.shape[0]): # Process each STFT frame modified_signal[i, :] = signal[i, :] * ..... # here do something in order to # modify the signal in frequency …
12 fft  wavelet  dft  python  stft 

3
実世界の録音でFastICAによる音声信号の分離に失敗する
Python MDP FastICAのコードを使用して、ステレオWAVファイルでFastICAを実行するプログラムを作成しました。 オーディオの例私は非常に良い結果を得ます。 次に、マイク1をLチャンネルに、マイク2をRチャンネルに接続して、PCのステレオマイク入力に接続された2つのコンピューターモノラルマイクを使用して、現実世界の録音を試みます。静かな部屋で話している間に、バックグラウンドで音楽を再生してテストします。 ただし、FastICAを実行しても信号はまったく分離されません。マイクの品質が低すぎる可能性はありますか?FastICAを実行する前に、記録されたWAVファイル(16ビット、署名付きPCM、44100Hz)に対して何かする必要がありますか? こちらから録画をダウンロードできます。
12 ica  python 

2
離散ウェーブレット変換-分解された詳細係数と信号間の関係の可視化
離散ウェーブレット変換(DWT)詳細係数と元の信号/その再構成との関係を直接視覚化しようとしています。目標は、それらの関係を直感的な方法で示すことです。質問したい(下記の質問を参照):私が思いついたアイデアとプロセスがこれまでに正しいかどうか、そして関係を視覚化する前に元の信号から第1レベルの近似値を差し引くほうがよいと私が正しい場合。 最小限の例 これは、1024の値を持つPythonのECGサンプルデータを単純な1D信号として使用して、私が説明の基にした最小限の例です。pywavelets import pywt import pywt.data import numpy as np import matplotlib.pyplot as plt x = pywt.data.ecg() plt.plot(x) plt.legend(['Original signal']) 分解は、合計6レベルのSymmlet 5を使用して行われます。 w = pywt.Wavelet('sym5') plt.plot(w.dec_lo) coeffs = pywt.wavedec(x, w, level=6) (不可逆)信号の再構成は、意図的に高レベルの詳細係数を除外したときに期待どおりに機能します(信号は、便宜上、均一なxスケール[0,1]にプロットされています)。 def reconstruction_plot(yyy, **kwargs): """Plot signal vector on x [0,1] independently of amount of values it contains.""" plt.plot(np.linspace(0, …

1
形状にクラスター化されたデータの認識
鳥のさえずりを検出して分類するためにPythonでプロジェクトに取り組んでおり、waveファイルを周波数対時間データに変換する必要がある状況にいます。これはそれほど問題ではありませんでしたが、さまざまな音節をグループに分類できるようにするには、データが特定の形にクラスター化されるときに検出する何かを書く必要があります。データがどのように見えるかを理解するために、プロットしたときにデータがどのように見えるかのイメージを次に示します。 SciPyを使用してそれらの間のピアソン相関を実行できるように、個々の音節(両側に分離がある各形状)を取得して変数または独自のファイルに保存する方法が必要です。 また、私はPythonを好みますが、別の方法でコーディングできる場合は、他の言語でコーディングすることもできます。 ありがとう!

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