C++ プログラムで三菱 VisiTel 電話画像送信機からの画像信号をデコードしようとしています。〜1764Hzの正弦波キャリアで変調されたアナログオーディオ信号としてエンコードされます。
サウンド カードの入力からオーディオを 44.1kHz の符号付き 8 ビットとして読み取っています。これは、キャリアに対して約 25 サンプルの期間を提供します。明らかに、アナログ信号はサンプル境界にうまく収まらないため、これが +/-1 サンプル分シフトする可能性があると想定します。
信号をデコードする最初の試みは、信号のピークを取得し、それらをピクセル値として割り当てることでした。それはほとんど機能しましたが、「オフフェーズ」ピクセルがいくつかあるようで、最終的に画像が歪んでしまいました。
最終的に、ピクセル クロックをピークから分離し、それをサンプルに結び付けることで信号を取得しました。また、どういうわけかピクセル倍数で終わらないため、各スキャンラインを個別に時間を計る必要がありました。
しかし、この信号は完全には正しくありませんでした。暗い領域がどういうわけか反転して出てきました。
暗い部分が反転した画像
最終的に、明暗の遷移で位相の不連続があることに気付きました。これは、変調信号がゼロ点を超えて、キャリアを負に駆動し、ピーク/谷の関係を逆転させて、結果の信号に位相の不連続性を引き起こしていることを示していました。
AM 信号の不連続
このタイプの遷移を検出するようにステート マシンを変更しようとすることはできますが、少し面倒でエラーが発生しやすいようです。
変調器がゼロ点を横切る AM 信号を復調するには、適切な数学的な方法が必要であると考え続けています。しかし、私が見つけたすべての例は、単純なピークベースのエンベロープ検出器のようです。私が見つけた製品検出器の説明は、キャリアと位相が正確に正確であることを期待しているように見えますが、それでもゼロクロス信号のために何かを購入できるかどうかはわかりません.
変調器がゼロを横切る AM 信号を復調するための、当事者が承認した正しい方法は何ですか?
質問する
317 次