信号処理

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

4
遷移帯域が狭いデジタルフィルターの出力にリンギングが見られるのはなぜですか?
オーディオを使用したスペクトルマングリングタイプエフェクトの「極端な」eqを実行しています。私はレンガの壁フィルターと非常に狭い帯域通過フィルターとリジェクトフィルター(vstプラグイン)を使用しています。 。残念ながら、急勾配のeq勾配を使用する必要があります。プリリングを回避するため、最小フェーズを使用する準備ができています。 具体的には、私は疑問に思っています: 最小位相フィルターで、入力直後のインパルス応答に振動が発生する原因は何ですか? これらの振動は、急勾配スロープフィルタリングでパスバンドに追加される可聴プリおよびポスト「リンギング」音の原因ですか? 振動、したがってリンギング周波数は常に同じ周波数ですか、またはリンギング周波数は何らかの方法で入力信号に依存していますか? あなたの専門知識をありがとう。返事をお待ちしております。デール。

1
複数行にわたるアラビア語の詩の検出
コーランアプリを構築する必要があり、ユーザーがそれに触れたときに詩を読みたいです。私が直面している問題は、一部の詩が1.5行に拡大する場合があります(ハイライトされた赤色の詩)または1/4行にちょうど収まることです(強調された緑色の詩)。したがって、各詩をtextviewまたは他のビューに追加しても機能しないようです。 2番目の画像の赤い部分のような詩を検出したい。詩の音声ファイルがあるので、テキストを音声に変換する必要はありません

4
FFTを使用した自己相関の効率的な計算
私が利用できる唯一の加速プリミティブが(I)FFTであるプラットフォームで自己相関を計算しようとしています。でも問題があります。 MATLABでプロトタイプを作成しました。しかし、私は少し混乱しています。私はそれが次のように単純に機能すると仮定しました(これはメモリからのものですので、少し間違っている場合はおologiesびします)。 autocorr = ifft( complex( abs( fft( inputData ) ), 0 ) ) ただし、xcorr関数を使用した場合とは異なる結果が得られます。今、私は完全に自己相関の左側を取得しないことを期待しています(それは右側の反映であり、したがってとにかく必要ないため)。ただし、問題は、右側が中間点の周りに反映されているように見えることです。これは事実上、私が期待しているデータの約半分の量を取得することを意味しています。 だから私は非常に単純な間違ったことをしなければならないと確信していますが、私は何を理解できないのです。

2
ラベルを貼る正しい場所を特定する
以下の画像では、というラベルの付い[0,1,2,3]た4つのクラスターを特定した2Dデータセットがあります。各形状に対してラベルを自然な方法で配置するアルゴリズムを探しています。私の最初の推測は、それらを以下に示すクラスターの「重心」に配置することでした。連続したクラスターの場合、これは正常に機能します。0ただし、クラスターのような形をとるクラスターの場合、アプローチは失敗します。凡例を使用せずに、この画像にラベルを配置するより良い方法は何でしょうか? * ここでの自然はある程度主観的ですが、ラベルのポイントは、視聴者がxy平面内の特定の領域を数値に関連付けるのを助けることです。


2
GLCMを使用してテクスチャを取得し、SVM Classifierを使用して分類するにはどうすればよいですか?
私は肝臓腫瘍のセグメンテーションと分類のプロジェクトをしています。肝臓と腫瘍のセグメンテーションにはそれぞれRegion GrowingとFCMを使用しました。次に、テクスチャフィーチャの抽出にグレーレベルの共起行列を使用しました。分類にはサポートベクターマシンを使用する必要があります。しかし、特徴ベクトルをSVMへの入力として与えることができるように、特徴ベクトルを正規化する方法がわかりません。誰でもMatlabでそれをプログラムする方法を教えてもらえますか? GLCMプログラムに、入力として腫瘍のセグメント化された画像を与えました。私は正しかったですか?もしそうなら、私の出力も正しいと思う。 私のglcmコーディングは、私が試した限りでは、 I = imread('fzliver3.jpg'); GLCM = graycomatrix(I,'Offset',[2 0;0 2]); stats = graycoprops(GLCM,'all') t1= struct2array(stats) I2 = imread('fzliver4.jpg'); GLCM2 = graycomatrix(I2,'Offset',[2 0;0 2]); stats2 = graycoprops(GLCM2,'all') t2= struct2array(stats2) I3 = imread('fzliver5.jpg'); GLCM3 = graycomatrix(I3,'Offset',[2 0;0 2]); stats3 = graycoprops(GLCM3,'all') t3= struct2array(stats3) t=[t1,t2,t3] xmin = min(t); xmax = max(t); …

5
相互相関を使用したオシロスコープ信号の時間遅延推定
スコープから2つの信号を記録しました。次のようになります。 Matlabでそれらの間の時間遅延を測定したい。各信号には、サンプリング周波数が2001000.5の2000個のサンプルがあります。 データはcsvファイルにあります。これは私がこれまで持っているものです。 電圧レベルのみがcsvファイルに含まれるように、csvファイルから時間データを消去しました。 x1 = csvread('C://scope1.csv'); x2 = csvread('C://scope2.csv'); cc = xcorr(x1,x2); plot(cc); これにより、次の結果が得られます。 私が読んだことから、これらの信号の相互相関を取る必要があり、これは時間遅延に関連するピークを与えるはずです。しかし、これらの信号の相互相関を取ると、2000年にピークが得られますが、これは正しくないことがわかります。これらの信号を相互相関させる前に、これらの信号に対して何をすべきですか?ある方向を探しています。 編集:DCオフセットを削除した後、これは私が今得ている結果です: より明確な時間遅延を得るためにこれをクリーンアップする方法はありますか? 編集2:ファイルは次のとおりです 。http://dl.dropbox.com/u/10147354/scope1col.csv http://dl.dropbox.com/u/10147354/scope2col.csv

2
適応フィルターは何をしますか?
私はインターネット上の適応フィルターについて少し勉強しましたが、その特別なフィルターが進行するとすぐにフィルター値を更新し続けることがわかりました。入力と出力の差を見つけ、エラー関数と以前の係数を使用して新しいフィルター係数を見つけます。 しかし、これは意味がありません。常に入力と出力の差を最小化しようとします。したがって、すべての信号をそのまま渡そうとすると、どのように使用されますか。 誰もが実際のアプリケーションでどのように使用されているか説明できますか。 また、アダプティブデジタルフィルターの実装に役立つリンクを介して助けていただければ幸いです。 私の疑問を表現するのがはっきりしない場合はコメントしてください!

3
デジタルフィルターのフィルター係数は何を表していますか?
matlabのfdatoolを使用してデジタルフィルターを設計し、ツールからフィルター係数を取得しました。 問題は、4次フィルターを設計したことです。これは私に5つのフィルター値を与えました h[] = {0.1930,0.2035,0.2071,0.2035,0.1930} x[k] = Discrete time input signal 公式を使用して Output = h[k]*x[n-k]; 出力は最終的なフィルター処理された値を表しますが、結果はうまくいきますが、これらの係数がmatlabによってどのように取得され、単なる乗算(畳み込み)がサンプルの最終的なフィルター処理された応答をどのように与えるかはわかりません。 任意のリンクまたは説明が行います。フィルター係数計算の完全なバックエンド動作を知りたい。 どこかに疑問がある場合は、コメントしてください。 ありがとう:)
12 filters  matlab 

2
異なる(音楽的?)トーンの識別に使用する方法論
私はこの問題をどのように攻撃するのが最善かを研究し、解明しようとしています。音楽処理、画像処理、信号処理にまたがるので、それを見る方法は無数にあります。純粋なsig-procドメインでは複雑に見えるかもしれないことは、画像や音楽の処理を行う人々によって簡単に(そしてすでに解決されているので)アプローチするための最良の方法について尋ねたかったのです。とにかく、問題は次のとおりです。 問題の私の手描きを許せば、次を見ることができます: 上の図から、3つの異なる「タイプ」の信号があります。最初のパルスは、からまで周波数を「ステップアップ」して、繰り返すパルスです。特定のパルス持続時間と特定のパルス繰り返し時間を持っています。f 4f1f1f_1f4f4f_4 2番目のものはにのみ存在しますが、パルス長が短く、パルス繰り返し周波数が高速です。f1f1f_1 最後に、3番目はトーンです。f1f1f_1 問題は、信号1、信号2、および信号3を区別できる分類器を作成できるように、どのようにこの問題に取り組むかです。つまり、シグナルの1つをフィードすると、このシグナルがそうであることがわかります。対角線混同行列を与える最適な分類子は何ですか? いくつかの追加のコンテキストと私がこれまで考えてきたこと: 私が言ったように、これは多くの分野にまたがっています。私が座ってこれと戦争に行く前に、どの方法論がすでに存在しているのかを尋ねたかった。ホイールを誤って再発明したくありません。さまざまな視点から見た考えをいくつか紹介します。 信号処理の観点: 私が検討したことの1つは、ケプストラム分析を行い、ケプストラムのGabor Bandwidthを他の2と区別するために使用し、次にケプストラムの最高ピークを測定することでした。シグナル-2から1。それが私の現在の信号処理作業ソリューションです。 画像処理の観点:ここでは、スペクトログラムに対して実際に画像を作成できるので、その分野の何かを活用できるのではないかと考えています。私はこの部分に精通していませんが、ハフ変換を使用して「ライン」検出を行い、ラインを「カウント」(ラインとブロブではない場合はどうですか?)してそこから行くのはどうですか?もちろん、スペクトログラムを撮影する任意の時点で、表示されるすべてのパルスが時間軸に沿ってシフトする可能性がありますので、これは問題になりますか?わからない... 音楽処理の観点:確かに信号処理のサブセットですが、signal-1には特定の、おそらく反復的な(音楽的?)品質があり、music-procの人々は常に見ており、すでに解決済みです多分楽器を区別する?確かではありませんが、考えは私に起こりました。おそらく、この立場はそれを見る最良の方法であり、時間領域の塊を取り、それらのステップレートをからかいますか?繰り返しますが、これは私の分野ではありませんが、これは以前に見られたものだと強く疑っています... 3つの信号すべてを異なる種類の楽器として見ることができますか? また、かなりの量のトレーニングデータがあることも付け加える必要があります。そのため、これらの方法のいくつかを使用すると、特徴抽出を行うことができ、K-Nearest Neighborを使用できますが、それは単なる考えです。 とにかく、これは私が今立っている場所です、どんな助けも感謝しています。 ありがとう! コメントに基づく編集: はい、、、、はすべて事前に知られています。(いくつかの差異が、は非常に少ない。例えば、私たちがいることを知っていると言うことができます = 400kHzには、それは401.32 kHzででてくるかもしれません。しかしまでの距離ので、高いです比較して500 kHzであるかもしれない。)信号-1常にこれらの4つの既知の周波数を踏むことになります。Signal-2には常に1つの周波数があります。f 2 f 3 f 4 f 1 f 2 f 2f1f1f_1f2f2f_2f3f3f_3f4f4f_4f1f1f_1f2f2f_2f2f2f_2 信号の3つのクラスすべてのパルス繰り返し率とパルス長もすべて事前にわかっています。(ある程度の分散がありますが、非常にわずかです)。ただし、信号1と2のパルス繰り返し率とパルス長は常にわかっていますが、それらは範囲です。幸いなことに、これらの範囲はまったく重複していません。 入力はリアルタイムで入力される連続時系列ですが、信号1、2、および3は相互に排他的であると仮定できます。つまり、信号の1つだけが任意の時点で存在するということです。また、任意の時点で処理するためにどれだけの時間チャンクを使用するかについて、多くの柔軟性があります。 データはノイズを含む可能性があり、既知の、、、ない帯域に偽のトーンなどがある可能性があります。これはかなり可能です。ただし、問題を「始める」ために、中程度のSNRを想定できます。f 2 f 3 f 4f1f1f_1f2f2f_2f3f3f_3f4f4f_4

1
実離散フーリエ変換
私は、実際のDFTとDFT、およびその違いが存在する理由を理解しようとしています。 私が知っていることから、これまでにDFTが使用する基底ベクトルおよび得られる表現X [ N ] = N - 1 、Σ K = 0 Xを[ k個] E I 2 π K N / N和歴史的な理由からk = 0からN − 1に書かれていますが、k =eI 2個のπk n / Ne私2πkn/Ne^{i2\pi kn/N}x [ n ] = ∑k = 0N− 1バツ[ k ] eI 2個のπk n / Nバツ[n]=∑k=0N−1バツ[k]e私2πkn/Nx[n]=\sum_{k=0}^{N-1}X[k]e^{i2\pi kn/N}k = …
12 dft 

2
ノイズの多い.wavファイルでドラムbpmを検出する
次の問題を解決するためのアルゴリズムを探しています:ノイズの多い.wavサウンドキャプチャ(マイクの風+摩擦音)がある場合、ソフトドラムビートのBPMを検出する方法は? 対象をグーグルで検索しようとしましたが、分析と指紋ID生成の両方のためのmp3関連ソフトウェアが大量にあるため、結果はかなり貧弱です。それらのどれも実際にそれを行う方法に関する情報を提供しません。 ノイズを除去するアルゴリズムは知っていますが、それでもBPMを検出する問題が残ります。また、BPMの問題の解決方法によっては、ノイズを除去する必要さえない可能性があります(ドラムは低周波数になり、ノイズは高周波数になる傾向があるため、単純なローパスで十分な前処理が可能です)。

2
感情的なコンテンツを削除するために、音声をパラメトリックに劣化させます
RまたはMatlabで提案を受け入れますが、以下に示すコードはRのみです。 以下に添付されている音声ファイルは、2人の間の短い会話です。私の目標は、感情的な内容が認識できなくなるように、彼らのスピーチを歪めることです。難点は、この歪みのために1〜5のパラメトリックスペースが必要なことです。1〜5は「非常に認識可能な感情」、5は「認識できない感情」です。Rでそれを達成するために使用できると思った3つの方法があります。 ここから「ハッピー」オーディオウェーブをダウンロードします。 ここから「怒っている」オーディオウェーブをダウンロードします。 最初のアプローチは、ノイズを導入して全体的な明瞭度を低下させることでした。このソリューションを以下に示します(彼の提案に対して@ carl-witthoftに感謝します)。これにより、音声の明瞭度と感情的な内容の両方が低下しますが、非常に「汚い」アプローチです-パラメトリック空間を取得するのが正しいことは困難です。 require(seewave) require(tuneR) require(signal) h <- readWave("happy.wav") h <- cutw(h.norm,f=44100,from=0,to=2)#cut down to 2 sec n <- noisew(d=2,f=44100)#create 2-second white noise h.n <- h + n #combine audio wave with noise oscillo(h.n,f=44100)#visualize wave with noise(black) par(new=T) oscillo(h,f=44100,colwave=2)#visualize original wave(red) 2番目のアプローチは、特定の周波数帯域でのみ音声を歪めるために、何らかの方法でノイズを調整することです。元のオーディオ波から振幅エンベロープを抽出し、このエンベロープからノイズを生成してから、オーディオウェーブにノイズを再適用することでそれができると考えました。以下のコードはその方法を示しています。ノイズ自体とは異なる何かをし、音が割れますが、同じポイントに戻ります-ここでノイズの振幅を変更することしかできません。 n.env <- setenv(n, h,f=44100)#set envelope of …
12 matlab  audio  noise 

1
ICAは信号の避けられない遅延をどのように処理しますか?
私は現在、多くの優れた情報源からICAを読み、自分自身に教えています。(過去のコンテキストについては、この投稿も参照してください)。私は基本的な心構えを持っていますが、はっきりしないことがあります。 複数の信号が複数の空間センサーに衝突するシナリオの場合(もちろん、センサーの数> =信号の数)、1つのセンサーについて、そこに到着するすべての信号が異なる遅延/位相を持つことは避けられません異なるセンサーに到着するオフセットと比較した、それらに関連するオフセット。 今、私が知る限り、ICAの信号モデルは単純な混合行列であり、1つのセンサーに到達する総エネルギーは、関心のある他のすべての信号の単純な線形結合にすぎないものとしてモデル化されています。すべてのセンサーには、関連する線形結合係数の異なる配列があります。ここまでは順調ですね。 私は理解していないこと、ということである必然的に存在していることが実際にに行くいくつかの遅延/位相オフセット互いに異なる個々のセンサに到着する個々の信号のうち。すなわち、に到達するかもしれない同じながら、ある時間0で到着のS EのN 、S 、OのR 2減衰が、また、いくつかの遅延又は位相差に。私の見方では、これは物理的に避けられません。s1(n )s1(n)s_1(n) s 1(n )s en s o r1sensor1sensor_1s1(n )s1(n)s_1(n)s e n s o r2sensor2sensor_2 ...これがミキシングマトリックスでモデル化されていないのはどうしてですか?遅延が大きな違いを生むようです。単純な線形結合についてはもう話していない。ICAはこれをどのように処理しますか?ここで何か見逃していませんか? ICAが実際に遅延を処理できない場合は、補遺として追加する必要があります。その場合、どのアプリケーションで有用であるとわかりますか?センサー付きの明らかに空間的なものが出ています! ありがとう
12 ica 

1
周波数領域で畳み込みカーネルを見つける方法は?
空間データの2つのベクトル(それぞれ約2000要素の長さ)があります。1つは他の畳み込みバージョンです。このような畳み込みを生成するカーネルを決定しようとしています。出力ベクトルと入力ベクトルのフーリエ変換の比の逆フーリエ変換を見つけることでこれができることを知っています。実際、これを行うと、私が期待していた形になります。ただし、実際には畳み込みがポイントの約5分の1(約300〜400)しか使用していない場合、私のカーネルベクトルは2つの入力ベクトルと同じ次元を持ちます。正しい形状を取得しているが、ポイントの数が間違っているという事実から、ifftおよびfft関数をまったく正しく使用していないと思うようになります。私が本当に正しいことをしていれば、これは自然に起こるはずです。現時点では、私は単にやっています。 FTInput = fft(in); FtOutput = fft(out); kernel = ifft(FtOutput./FTInput). これは正しいですか、出力ベクトルを正しく解釈するのは私次第ですか、それともタスクを単純化しすぎましたか?私はそれが後者だと確信しています、私はただどこにあるのか分かりません。

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