信号処理

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

4
ブックの推奨事項-CでのDSPコードの作成
私は、すべての主要なDSPメソッドを実行するために、実際にCでコードを記述する方法を示すだけの良い本を探しています。 FFT。 ローパスおよびハイパスフィルター。 自己相関。 ノイズ処理。 そして、理論からCの実際のコードまで、DSPのすべての基礎。 たとえば、1000個のサンプルがありますが、そのFFTを計算し、ノイズを除去してから時間軸に戻したいと思います。 これらすべてをカバーする良いものはありますか?

3
2台のコンピューター間で音声でデータを送信します(非常に近い距離)
私は、2台のコンピューター間でサウンドを介してデータを送信する例を作成しています。いくつかの要件: 距離が非常に近い。つまり、2台のコンピューターは基本的に互いに隣接している ノイズが非常に少ない(先生がノイズソースとしてロックソングをオンにするとは思わない) エラーは許容されます。たとえば、「無線通信」を送信した場合、他のコンピューターが「RadiQ通信」を受信した場合も同様に問題ありません。 可能であれば:ヘッダー、フラグ、チェックサムなどはありません。サウンドを介してデータを送信する基本を示す非常に基本的な例が必要なためです。派手になる必要はありません。 このリンクに従って、オーディオ周波数シフトキーイングを使用してみました。 ラボ5 APRS(自動パッケージレポートシステム) そしていくつかの結果を得ました: 私のGithubページ しかし、それだけでは十分ではありません。クロックリカバリ、同期の方法がわかりません...(リンクにはタイミングリカバリメカニズムとしてフェーズロックループがありますが、明らかに十分ではありませんでした)。 だから私はもっと簡単なアプローチを見つけるべきだと思う。ここにリンクを見つけました: データを音声に変換して戻します。ソースコードによる変調/復調 しかし、OPは回答で提案されたメソッドを実装していなかったため、非常に複雑になる可能性があります。また、私は答えで提案されているデコード方法を明確に理解していません: デコーダはもう少し複雑ですが、概要は次のとおりです。 必要に応じて、サンプリングされた信号を11Khz付近でバンドパスフィルターします。これにより、ノイズの多い環境でパフォーマンスが向上します。FIRフィルターは非常にシンプルで、フィルターを生成するオンラインデザインアプレットがいくつかあります。 信号をしきい値処理します。最大振幅の1/2を超える値はすべて1で、以下の値はすべて0です。これは、信号全体をサンプリングしたことを前提としています。これがリアルタイムの場合は、固定のしきい値を選択するか、一定の時間にわたって最大信号レベルを追跡する何らかの自動ゲイン制御を行います。 ドットまたはダッシュの開始をスキャンします。サンプルをドットと見なすために、ドット期間に少なくとも一定数の1を表示することをお勧めします。次に、スキャンを続けて、これがダッシュかどうかを確認します。完全な信号を期待しないでください。1の真ん中にいくつかの0が表示され、0の真ん中にいくつかの1が表示されます。ノイズがほとんどない場合、「オン」期間と「オフ」期間を区別するのはかなり簡単です。 次に、上記のプロセスを逆にします。ダッシュが1ビットをバッファにプッシュする場合、ドットが0をプッシュする場合。 ドットとして分類する前に1がいくつあるのかわかりません。そのため、今のところわからないことがたくさんあります。プロセスを理解できるように、音声でデータを送信する簡単な方法を提案してください。どうもありがとうございました :) 更新: (ある程度)動作しているように見えるMatlabコードをいくつか作成しました。まず、振幅シフトキーイング(サンプリング周波数48000 Hz、F_on = 5000 Hz、ビットレート= 10ビット/秒)を使用して信号を変調し、次にヘッダーと終了シーケンスを追加します(もちろん変調もします)。ヘッダーと終了シーケンスはアドホックベースで選択されました(そう、ハックでした)。 header = [0 0 1 0 1 1 1 1 1 0 0 0 0 0 0 1 1 0 0 0 …
12 audio  modulation  sound  fsk 

2
同じシーンの一部のJPEGファイルが他のJPEGファイルよりもはるかに大きいのはなぜですか?
Foscam FI8910W ipカメラを使用して、一定の照明条件下で静的なシーンを表示しています。フレームグラブを引き戻すと、サイズは約35 KBです。これは何度も行うことができ、常に約35 KBですが、電子画像キャプチャに固有のさまざまなノイズのために多少変動します。このランダムな変動は、せいぜい1 KB程度です。 2500フレームごとに、フレームの画像サイズは突然70 KBのオーダーになります。カメラのウォームアップ中に熱ノイズが発生すると考えている場合、上向きの緩やかなクリープはありません。1フレームは70 KB(ish)になり、35 KBサイズのフレームに戻ります。 これは前に別の実行で別のシーンを見ているときに起こりました。当時の一般的なファイルサイズは39 KBで、10,000フレームのうち4個は77 KB程度でした。画像サイズのヒストグラムは次のようになりました。 質問する前に、これらのフレームの1つを保存することができましたが、他のすべてのフレームが予想されるノイズ変動を妨げるように見えます。彼らは約23,000でほぼ同じ数のユニークな色を持っています。したがって、正確に1フレームの間レンズにランダムに着地してから飛び立つmothではありません。完全を期すために、別の画像を実行しましたが、これは典型的な画像の例です(反射はIRイルミネータです): これは異常画像です:- 違いはありません。カバを失礼します。私はJPEGアルゴリズムにかなり精通しており、Foscamの実装でのコーディングエラー以外にこれがどのように起こるかはわかりません。しかし、いくつかのJPEG変換関数(離散コサイン変換や量子化など)には本質的に混chaとしたものがありますか?統計的には、ファイルサイズの正規分布が予想されますが、これは約39 KBです。次に、77 KBにいくつかの外れ値があります。したがって、確率論的には見えません。 これがハードウェアではなくCSにある理由は、これがJPEGエンコーディングアルゴリズムに関連するプログラミングコード現象である可能性があると私が尋ねているからですか?可能性は低いようですが、異常はランダムでまれであり、デバイスとの人間のやり取りはありません。JPEGエンコーディングは安定していますか? この現象に慣れていないのは、画像が同じように見えるので、ファイルサイズを実際に見ている人がいないためです。ファイルサイズは私にとって非常に重要なので、気づきました。およそ2500フレームごとにこれをどのように行うことができますか? 補足:- imgurソフトウェアがアップロードされたファイルを再サンプリングするため、これらの画像の投稿はうまくいきません。37Kと73Kのファイルを投稿している間、imgurは両方を35Kに再サンプリングしました。これはStack Exchangeの問題のようで、画像処理、データ圧縮、分析を扱うサイトにとって皮肉なようです。 これが私の画像処理です。これは、通常の画像と異常の間の正規化された差です。画像は予想どおり、高周波数領域にJPEGノイズがあります。モノクロに見えても、これはRGB画像です。カラーキューブには8000個の一意の色があります(ノイズを表します)。 補足2:- 要求に応じて、4つの正常なフレームと2つの異常なフレームをサンプルフレームからダウンロードできます。これは別のシーンですが、異常な動作がまだ発生しているため、これは一貫性があることを証明しています。
12 jpeg 

2
信号のサンプリングレートを高くする利点は何ですか?
非信号処理科学の学生であるため、概念の理解は限られています。 周波数がおよび48 kHzでサンプリングされた、連続的な周期的なベアリング障害信号(時間振幅)があります。機械学習技術(畳み込みニューラルネットワーク)を使用して、障害のある信号を非障害の信号に分類しました。12 kHz12 kHz12\textrm{ kHz}48 kHz48 kHz48\textrm{ kHz} を使用している場合、分類精度97 ± 1.2 %の精度を達成できます。同様に、同じ信号で同じ手法を適用し、センサーで同じRPM、負荷、記録角度で記録したにもかかわらず、48 kHzでサンプリングした場合、95 %の精度を達成できます。12 kHz12 kHz12\textrm{ kHz}97 ± 1.2 %97±1.2%97 \pm 1.2 \%95 %95%95\%48 kHz48 kHz48\textrm{ kHz} この誤分類率の増加の原因は何でしょうか? 信号の違いを見つける技術はありますか? より高い解像度の信号はより高いノイズになりやすいですか? 信号の詳細については、第3章を参照してください。

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

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 



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 

2
単純なFFT振幅スペクトルの代わりにPSDを計算する必要があるのはいつですか?
44.1 kHzでサンプリングされた32秒の音声信号があります。ここで、音声の周波数を示したいと思います。しかし、私はそれを行うための最良の方法が何であるかわからない。フーリエ変換の絶対値を計算することもあれば、パワースペクトル密度を計算することもあります。正しく理解できれば、後者が機能するため、信号を部分に分割し、FFTを部分ごとに実行し、何らかの方法でこれらを合計します。ウィンドウ関数は何らかの形で関与しています。これを少し明確にできますか?DSPは初めてです。

3
Waveletsの使用を開始するにはどうすればよいですか
現在のプロジェクトでは、ウェーブレット変換を使用して何らかの分析を行う必要があります。できればMATLABまたはCの例を使って、誰でも私に実用的な本を提案できますか?現在、いくつかのチュートリアルを読んでいますが、フーリエ変換のように感じられません。ソースコードを含む多くの実用的な例を含む本が必要です。 あなたの提案を本当に感謝します。

7
周波数が2つのビンの中心の間にある場合、信号のピーク値を取得する
以下を想定してください: 信号の基本周波数は、FFTといくつかの周波数推定法を使用して推定されており、2つのビン中心の間にあります サンプリング周波数は固定です 計算努力は問題ではありません 周波数がわかっている場合、基本的な信号の対応するピーク値を推定する最も正確な方法は何ですか? 1つの方法は、ビンの中心が推定周波数に近くなるように、FFT分解能を高めるために時間信号をゼロで埋めることです。このシナリオで、私が確信していない点の1つは、必要なだけゼロパッドできるか、そうすることでいくつかの欠点があるかどうかです。もう1つは、ピーク値を取得するものとしてゼロパディング後に選択するビン中心です(ゼロパディングの後でも対象の周波数に正確にヒットしない可能性があるため)。 しかし、周囲の2つのビンの中心のピーク値を使用して目的の周波数でのピーク値を推定する推定器など、より良い結果を提供できる別の方法があるかどうかも疑問に思っています。

2
離散信号が周期的かどうかを判断するにはどうすればよいですか?
一連のデータが定期的かどうかを判断する方法を知りたい。 フーリエ変換/シリーズを使用したい。データが非周期的に見える [111100001111000110010101010000101] または定期的に [11001100110011001100] そして、それが自動的にどちらであるかを決定する必要があります。信号が周期的かどうかを判断するために、どのような種類の分析または計算を実行できますか?

2
DFTを使用したサブピクセル画像シフトは実際にどのように機能しますか?
サブピクセルシフト画像の生成を伴うアプリケーションのいくつかの画像補間方法の品質を評価しようとしています。これらすべての補間バリアントを使用してサブピクセルシフトの結果を完全にシフトした画像と比較できると思いましたが、おそらくそれを取得することはできません(補間の必要性はどうなりますか?)。 私は、周波数領域でDFT +シフトを使用することを考えていましたが、画像を明示的に補間する(バイリニア、バイキュービックなどを使用する)場合と比較して、実際にどのように機能するのかわかりません。完全にシフトした画像を生成することはできないと確信していますが、指を置くことはできません。DFTを使用したサブピクセルシフトは、補間の適用と同等ですか?この方法を使用して取得した画像のピクセル値のバイアスはどのくらいですか?ありがとう! 編集: 問題を考えた後、FFTは高調波(正弦関数)の観点から元の関数の近似(さらにはDFT)であるため、何らかの三角補間に相当すると考えました。離散データの「フーリエ級数補間」式は三角補間でしたが、接続されているかどうかはわかりません。

1
葉に覆われた木の枝の再構築
枝の一部が葉で覆われている木の写真で、どのように枝をほぼ再構成しますか? スレッシュホールドして、いくつかの異なる角度で線分で開くことで、枝の可視部分を抽出できます。しかし、葉で覆われたスペースをどのように(およそ)埋めるのでしょうか? このツリーの描画から開始するとします。 画像をグレースケールとしてロードします uu = mmreadgray( 'tree2.jpg') 暗い色のしきい値。バイナリに変換します。200pxエリアの下の接続された領域を削除します vv = mmareaopen(mmbinary(mmthreshad(mmneg(uu)、200))、20) 90度、180度、135度、45度の10pxラインセグメントでvvを開きます。これらの画像を追加して、マーカー画像zzを形成します zz = mmaddm(mmaddm(mmaddm(mmopen(vv、mmseline(10、90))、mmopen(vv、mmseline(10、180)))、mmopen(vv、mmseline(10、135)))、mmopen(vv、 mmseline(10、45))) マーカー画像zzからvvの可視の四肢部分を再構成します aa = mminfrec(zz、vv) 元の画像uuの上に結果aaを表示します。手足の合理的な抽出が達成されます mmshow(uu、aa) 今、手足全体をほぼ再構築する方法についての考えをいただければ幸いです。(または上記の手順の改善)。ありがとうございました!

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