1

我正在尝试在 C++ 程序中解码来自三菱 VisiTel 电话图像发送器的图像信号。它被编码为用 ~1764Hz 的正弦波载波调制的模拟音频信号。
我正在从声卡输入中读取 44.1kHz 的有符号 8 位音频,这为载波提供了大约 25 个样本的周期。显然,模拟信号不会很好地落在样本边界上,因此假设这可能会偏移 +/-1 个样本。
我对信号进行解码的第一次尝试是获取信号的峰值并将其分配为像素值。这几乎奏效了,但似乎有一些“异相”像素,图像最终会歪斜。
最终,我通过将像素时钟与峰值解耦并将其与样本联系起来得到了一个信号。我还必须分别对每条扫描线进行计时,因为它不会以某种方式以像素倍数结束。
但这个信号并不完全正确,暗区不知何故倒转了出来。
暗区反转的图像
最终我意识到在明暗过渡处存在相位不连续性。这向我表明调制信号超过零点,导致结果信号中的相位不连续,因为它驱动载波为负,颠倒峰/谷关系。
AM 信号的不连续性 虽然我可以尝试修改我的状态机来检测这种类型的转换,但它似乎有点混乱并且容易出错。
我一直认为必须有一种适当的数学方法来解调调制器穿过零点的 AM 信号。但是我发现的所有示例似乎都只是简单的基于峰值的包络检测器。我发现的产品检测器解释似乎依赖于您的载波和相位完全正确,我不确定这是否仍然可以为我购买过零信号。
在调制器过零的地方解调 AM 信号的正确方法是什么?

4

2 回答 2

0

复杂的(正交或 IQ)产品检测器是可行的方法。即使您的解调载波只是接近且不准确;一个小的频率误差只是意味着结果会有一个直流偏移,可以在处理的后期阶段消除。

于 2019-12-30T16:37:32.887 回答
0

您将需要确定载波的相位,然后您可以使用产品检测器。正交检测器可以让您在事后确定相位,但既然您无论如何都必须这样做,那么您不妨先做。

VisiTel 很可能会在图像之前传输某种同步信号,该信号将用于确定载波相位并指示图像传输的开始到接收器。您可能应该将其用于预期目的。

于 2019-12-30T17:34:49.413 回答