信号処理

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

1
画像データのFFT:境界効果を回避するための「ミラーリング」
Matlabに米の画像を読み込んで表示します。 g = imread('rice.png'); imshow(g); この画像のFFTを取り、シフトします。 G = fft2(g); imshow(log(abs(fftshift(G)) + 1), []); 画像の中心を介してax軸とy軸を配置すると、画像が対称であることがわかりましたg(-x、-y)= g(x、y)。1D信号の場合、実信号のFFTには対称の実部と非対称の虚部があることがわかります。これが2次元で表示されているものでしょうか。 元の画像は上部より下部の方が暗いため、周期的な境界で強い水平方向の不連続性があり、FFTの垂直線が発生しています。 この境界効果を解消したい。これに対する一般的なアプローチは、ウィンドウ処理のようです。 しかし、私はこの問題を「ミラーリング」と呼ばれる論文で見つけた手法で解決したいと思っています。論文はあまり具体的ではなかったので、このアプローチを理解するには、あなたの助けが必要です:-)。 最初に、元の画像から対称的な「タイル」を作成します。 tile=[flipdim(g,2) g; flipdim(flipdim(g,1),2) flipdim(g,1)]; imshow(tile); 次に、この「タイル」のFFTを使用します。 Tile=fft2(tile); imshow(log(abs(fftshift(Tile)) + 1), []) 縦線は(ほとんど)なくなっているようです。ただし、ミラーリングにより対称性が高まったようです。 正しい結果は何ですか?元の画像のFFTまたは「ミラーリングされた」画像のFFT? 境界効果をなくし、純粋に本物のFFTを取得できるように、「ミラーリング」できる方法はありますか? どんな答えも事前にありがとう!

1
ウェーブレット変換を適用して脳波信号を分析する
Morletウェーブレット変換を適用して私の脳波信号を分析したいと思います。短い信号がたくさんありますが、それぞれ1分しかありません。そしてそれらはすべて30Hzで録音されました。2つの質問があります。 Morletウェーブレットでは、私のケースで使用するのに最適なスケール(アルファ)は何ですか? エッジ効果について:ウェーブレットの「エッジ効果」が原因でデータのどの部分が破損するかを知る/計算するにはどうすればよいですか?

1
ビデオの半一定フレームから固定テンプレート画像を検出する
ビデオのさまざまな「状態」を検出するために、さまざまなビデオゲームを処理しようとしているビデオがいくつかあります。 私が取り組んでいる最初のゲームは、スーパーストリートファイター4のエディションです。 その中で、「vs」のキャラクター画面がいつ表示されるのかを検知したいと思います。ビデオの1フレームの例を次に示します。 (から取ら〜10秒マークのこの動画) 「vs」を検出できた場合、ビデオのフレームが「vs」画面であることを検出できるため、他の情報を探すことができます(今のところ、これを使用して試合が始まる直前の動画のタイムスタンプを検出します)。 とは言っても、ここで私が処理するビデオのフレームについて想定できることはこれです(これが唯一のビデオではなく、数万または数十万とは言わないまでも数千のビデオがありますが、処理におけるスケールの問題)多くのビデオは完全に異なるドメインです): 可能な限り最低解像度の画像を処理して、信頼性の高い結果を得ることが望ましい(低解像度=処理時間の高速化)。上の画像は480 x 270ピクセル(18のYouTubeビデオfmtから取得)ですが、サイズが異なる場合があります(fmt18のYouTubeビデオですが、サイズは640 x 360ピクセルです)。 ほとんどの動画は直接フィードされます ほとんどの動画は16:9のアスペクト比になります 赤みがかった背景はアニメーション化されますが、一般的にはそのオレンジ赤の色(炎)内にあります バージョンを示すために、「vs」の下部にフェードイン/アウトバッジが表示される場合があります(これは重要ですが、現時点では重要ではありません)。 (このビデオの〜3sマークから取得。また、上記は640 x 360ピクセルの解像度であることに注意してください) 「vs」のサイズと位置は、他の直接フィード動画に比例してほぼ同じになります(まだ確認していませんが、動かないことはわかっています)。 キャラクターは、両側に30を超えるプールから選択されます(つまり、フレームの領域は異なります)。 ビデオの長さは通常2〜4分で、4,000〜6,00フレームです。ただし、他のさまざまなゲームやライブアクションがカットされた長いビデオ(おそらく2時間)があるかもしれません。これらのビデオはそれほど重要ではありませんが、解決策から、特定のゲームが全体の大きなビデオのどこにポップアップ表示されるかがわかったら、すばらしいです。 キャプチャのネイティブ解像度は720pなので、「vs」のベースラインイメージは、「ネイティブ」サイズと見なされるサイズで取得できます。 最終的に、私はコードに.NETで、このパイプラインを探していますが、それはありませんスーパー重要なのは、概念実証のは、私が翻訳し、.NETのためにそれを最適化することができるように含まれる技術の理解だけでなく、ここではより重要です同じジャンルの他のゲームの他のビデオ(もし私が重要な弁別器を見つけることができれば、そしてUltimate Marvel対Capcom 3、Street Fighter x Tekken、BlazBlue:Continuum Shiftなど)のビデオも同様です。 私もMathematicaに足を踏み入れており、ホームバージョン8.0を持っているので、その環境での概念実証も歓迎されます。

1
アンシャープマスクにラプラシアンはどのように使用されますか?
一部のアンシャープアルゴリズム(Matlabのfspecialなど)では、ラプラシアンカーネルを使用して画像をシャープにします。 私が知っていることから、画像を最初にぼかす必要があります。次に、ぼかした画像を元の画像から差し引いて、より鮮明な画像を取得します。ラプラシアンの部分は、平滑化が行われるとされる場所に正確に到達します。間違っている場合は修正してください。ただし、ラプラシアンは平滑化を行いません。 では、ラプラシアンは画像をシャープにするのにどのように役立ちますか?

2
母音のARモデルに使用する入力は何ですか?
母音の2秒の発音を録音しました。信号の最初の0.12秒程度を以下に示します。 これで、この信号を圧縮するための自己回帰(AR)8次モデルを構築しました。(実際には、160個のサンプルまたは一度に0.02秒をモデル化しているだけです。)arMatlabのSystem Identification Toolboxの関数は、「最適な」スペクトルフィットのパラメーターを推定できます。 私の問題は、モデルフィルターへの確率的入力を選択することです。ホワイトノイズより良いものがあると思います。周期性(0.02秒あたり14周期)は、同じ周期のインパルス列が適切だと思います。 もしそうなら、どのように振幅を選択し、どのように周期性を見つけますか?ACFとPSDの推定はかなりうるさいです。私は正しい軌道に乗っていますか?

3
理想的なLPF BIBOは不安定ですか?
他の議論の1つ:線形システムの周波数応答、安定性、因果関係を見つける方法は? 私は非常に強力なコメントを見つけ、間違いなく私の注意を引いた。 理想的なローパスフィルターは、周波数応答がすべてのfに制限されているにもかかわらず、BIBOが安定していないシステムの例ですfff 私はここhttp://en.wikipedia.org/wiki/BIBO_stabilityの安定性の定義に従っています 理想的なLPFが確かにBIBO不安定になる可能性があることの証明を誰かに教えてもらえますか? もちろん、無限のゲインを持つ理想的なLPFは、無限の出力を生成できます。ゲインが有限の場合、質問はLPFに限定されます。

1
通常のパターンの覆われた部分を再構築するにはどうすればよいですか
私はかなり規則的なパターンからなる画像のセットを持っています-本質的にはほぼ同心円状に歪んだ楕円のセット-円形のディスクで小さな領域(画像領域全体の1%未満)が隠れています。ディスクに隠れていない場合に見えるので、ディスクによって隠されているパターンの部分をデジタルで再構築し、「完全な」イメージを生成できるようにしたいと思います。 パターンは完全に規則的ではありませんが(楕円が歪んでいて、中心が画像から画像へと移動します)、パターンの覆い隠された部分がどのように見えるかは人間の観察者にはかなり明白です-鉛筆でそれを描くことができます瞬間!したがって、これを自動的に行うことができる画像処理アルゴリズムが存在するかどうかを疑問視します。たとえば、画像を円形ディスクをパターンの残りの部分から分離する適切なスペースに変換し、ディスクをフィルタリングしてから、画像を再構築するための逆変換。しかし、この分野の専門家ではないので、何を探しているのか本当にわかりません。誰か提案はありますか?

3
Windowsでリアルタイムの信号処理は可能ですか?
この質問は、リアルタイムオーディオ処理を実装するのに最適なプラットフォームを決定する方法に関連しています。、しかしWindowsに焦点を当てています。 データ取得ボードから入力を取得して(Matlabまたはカスタムプログラムのいずれかで)処理し、そのプログラムの結果を使用してUSB経由で接続されている外部デバイスを駆動できるようにしたいと考えています。私はWindowsでハードリアルタイム応答を取得することはほぼ不可能であることを知っています(3〜15ミリ秒の "ウィグル"(技術用語)があるため)。 この揺れ動く時間を減らす最も効果的な方法は何ですか?これは可能ですか?すぐに組み込みソリューションを探す必要がありますか?

2
ピリオドグラムに櫛のような丘があるのはなぜですか?
私はperiodogramMATLABのと遊んでいます。簡単なスクリプトを作成して、その動作を観察しました。 rng(1); %# initialize the random number generator Fs = 1000; %# Sampling frequency duration = 0.1; %# seconds A = 1; %# Sinusoid amplitude f = 150; %# Sinusoid frequency eps = 0.01; t = 0:1/Fs:duration; x = A * sin(2*pi*f*t) + eps * randn(size(t)); periodogram(x,[],1024,Fs); 私はコードに問題はなくperiodogram、ドキュメントに記載されているアルゴリズムを使用して独自の関数を記述できますが、150 Hzではないくしのような丘の背後にある理論的な理由が気になります。150 Hzを超える単一のスパイクを取得する代わりに、何を取得しますか?これらの丘の山頂の距離に特別なものはありますか?

3
オーディオのダウンサンプリングローパスフィルター:FIRまたはIIR?
私は、リアルタイムのオーディオ処理プロジェクトに取り組んでいます。このプロジェクトでは、計算の複雑さを減らすために、44.1 kHzをまだ決定されていない低いサンプリングレートにダウンサンプリングする必要があります。まともなダウンサンプリングフィルターを探しています。IIR(主に楕円)とFIR(主に最小位相)の両方を示唆する記事を見つけました。線形位相フィルターが必要なため、FIR最小位相フィルターは必ずしも機能しません。したがって、オプションは、かなりのレイテンシが発生する可能性がある線形位相FIRかfiltfilt、最初に前方にフィルター処理してから後方にフィルター処理する二重フィルター処理IIR(MATLAB コマンド)のいずれかです。 ダウンサンプリングフィルターとしてのFIRおよびIIRの長所と短所は何ですか?リアルタイムアプリケーションではどちらがより実用的ですか?

3
ウィンドウサイズ、サンプルレートはFFTピッチ推定にどのように影響しますか?
FFTから得られたパワースペクトルのピークの周波数を抽出するピッチ検出プログラムを作成しようとしています(fftpack)。クインの最初の推定量を使用してビン番号間を補間して、スペクトルからピーク周波数を抽出しています。このスキームは、特定の条件下でうまく機能するようです。たとえば、ウィンドウサイズが1024、サンプルレートが16000の長方形のウィンドウ関数を使用すると、私のアルゴリズムは純粋なA440トーンの周波数を正しく識別します440.06として、880.1の2番目の部分周波数。ただし、他の条件下では、結果が不正確になります。サンプルレート(例:8000)またはウィンドウサイズ(例:2048)を変更しても、最初の部分音は440として正しく識別されますが、2番目の部分音は約892のどこかにあります。このような非調和音の場合、問題はさらに悪化します。ギターまたはピアノによって生成されます。 私の一般的な質問は次のとおりです。サンプルレート、ウィンドウサイズ、およびウィンドウ関数は、FFTピークの周波数推定にどのように影響しますか?私の想定では、スペクトルの分解能を上げるだけでピーク周波数推定の精度が上がると思いましたが、これは明らかに私の経験ではありません(ゼロパディングも役に立たない)。また、スペクトル漏れはピーク位置を変更する必要がないため、ウィンドウ関数の選択はあまり効果がないと想定しています(ただし、今考えてみると、スペクトル漏れは、隣接するビンの大きさがピークは他のピークからの漏れによって人為的に増加します...)。 何かご意見は?
8 fft 

1
BPSK信号の復調用にサンプリングする場所を決定する方法は?
単純なBPSK復調器があります。非常に単純に、信号が入り、1つはIに、もう1つはQに分割されます。 Iブランチはキャリアの正弦波と混合され、Qブランチはキャリアの余弦波と混合されます。 次に、各出力は、マッチドフィルター(この場合は、ルートレイズドコサインで、送信されたビットを最初にパルス整形したもの)とたたみ込まれます。 ここで、両方の出力を組み合わせて、両方の大きさ(I ^ 2 + Q ^ 2)を取ると、エンベロープが得られます。 ここから、ピークを探し、それらのインデックスを選択します。 次に、(4)で取得したものと同じインデックスを使用し、それらの同じインデックスでIとQをサンプリングします。これで、複雑なソフトビット値があり、位相または周波数のオフセットを修正でき、そこから難しい決定を下すことができます。(私は後処理の贅沢があります)。 この手法は、SNRが中程度の場合にうまく機能しました。問題は、SNR(およびマルチパス)が低いため、箇条書き(4)の実行方法がわからないことです。問題は、1ビットに対応するエンベロープの1つのピークではなく、複数のピークがあり、「ピークピッキング」が機能しないため、選択できる数が多いためです。この問題はどのように軽減されますか?「ビット」がどこにあるのかわからなければ前進できないので、これはボトルネックのようです。何かご意見は? どんな助けもありがたいです、数学は良いですが、答えは前もってもっとpesudo-code / concept指向であるようにお願いします。ありがとう! 編集:Dilipからのフィードバックのおかげで、信号があり信号がない場合にエンベロープ内の「エネルギー」を明確に見ることができることも追加する必要があります。(つまり、私の信号が到着する前に)、これは私が同期/復調できるはずであり、それだけでSNRの問題ではないことを信じるようにします...

2
逆フィルターを使用して空間的にたたみ込まれた画像を補正する(デコンボリューション)
宿題の一環として、逆フィルターを実装しています。画像を劣化させ、逆フィルターで回復します。 5x5ボックスフィルターを使用して空間領域で画像をたたみ込みます。IフィルターをFFT、劣化画像をFFTし、劣化画像をフィルターで除算します。結果を画像に逆FFTすると、ゴミが発生します。 画像をFFTする場合、フィルターをFFTし、2つを乗算し、その結果をFFTフィルターで除算すると、元の画像に非常に近くなります。((X * Y)/ Y〜== X) 数学は「空間畳み込み== FFT乗算」ほど単純ではありません。 逆フィルターを使用する正しい方法は何ですか?使用されている正確なカーネルでイメージを劣化させています。ノイズを加えていません。 Bovikの教科書「画像処理の基本ガイド」では、ほぼ完全に逆フィルターを無視しています。Gonzalez&Woodsはもう少し希望がありますが、ほとんどすぐにウィーナーフィルターにスキップします。 私はstackoverflow.comで同様の質問をしてい ます/programming/7930803/inverse-filter-of-spatially-convolved-versus-frequency-convolved-image (この質問にも[宿題]のタグを付ける必要がありますが、タグはまだ存在せず、作成する担当者もいません。) 編集。以下のいくつかの素晴らしい提案について。@ dipan-mehta FFTを行う前に、畳み込みカーネルを画像と同じサイズにパディングしています。カーネルを左上に配置しています。次にifft(ifftshift())を画像に保存すると、良い結果が得られます。カーネルとイメージの両方でifft(ifftshift())を実行しました。良い(ish)結果。(画像は私の/programming/7930803/inverse-filter-of-spatially-convolved-versus-frequency-convolved-image質問にあります。) @ jason-rはおそらく正しいでしょう。基礎となる畳み込み+変換の数学を理解していません。「デコンボリューション」は私にとって新しい言葉でした。まだ学ぶべきことがたくさんあります。助けてくれてありがとう! 宿題の私の解決策は、周波数領域ですべてを行うことです。教授と話をした。私は必要以上に割り当てを難しくしていました。彼女は、ノイズを追加してから、逆フィルター、ウィーナーフィルター、および制約付き最小二乗フィルターを試してみたかったのです。演習のポイントは、フィルターがノイズをどのように処理するかを確認することでした。

2
YV12からRGB-アルゴリズムの何が問題になっていますか?
次のフラグメントシェーダーを使用してYV12をRGBに変換しようとしています。 precision mediump float; uniform sampler2D tex0, tex1, tex2; varying vec2 v_texCoord; void main(void) { float r, g, b, y, u, v; y = texture2D(tex0, v_texCoord).x; u = texture2D(tex1, v_texCoord).x; v = texture2D(tex2, v_texCoord).x; y = 1.1643 * (y - 0.0625); u = u - 0.5; v = v - …

4
複素共役とIFFT
スタックオーバーフローについて質問しました。 しかし、少し問題があります。Paul RIが示唆しているように、私の下位のビンを上位のn / 2ビンにミラーリングしています。n/2n/2n/2n/2n/2n/2 ただし、いくつか質問があります。 私はが2 f f t O r d e rですか?したがって、オーダー10のIFFTの場合、下位の512個の周波数ビンを上位の512にミラーリングしますか?これにより、最終的に1024の実際のサンプルも生成されますか?nnn2fftOrder2fftOrder2^{fftOrder} ミラーリングすると、これは、ビン0がビン、ビン1がビンn − 2にというように続くということですか?n−1n−1n - 1n−2n−2n - 2 サンプリング周波数の4分の1でなんらかの反射が発生しているようです。これは、私の周波数範囲の上半分が実際には下半分の上に表示されていることを意味します。なぜ誰かアイデアはありますか? ある大きさの512サンプルと別の大きさの次の512サンプルを取得するストライピング効果が発生する理由を誰かが知っていますか?(これは私の「ミラーリング」がどこから来ているのか) 今のところはそれでいいと思います。どんな助けも大いに役立つでしょう!! 編集:あなたに反射のイメージを与えることは、非常に見るのが難しいので十分に不可能です!基本的に私は22 kHzでサンプリングしていて、11 kHzを超えると「ノイズ」しか出ません。11 kHzを超えると(当然私は何か間違ったことをしているのですが)11 kHzから0に反射するように見えます。これは非常に奇妙です。 縞模様の画像はこちらでご覧いただけます 各ストライプは、512サンプル幅だと思います。

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