我正在尝试用C++程序解码来自三菱VisiTel电话图像发送器的图像信号。它被编码为用~1764 as的正弦波载波调制的模拟音频信号。
我正在以44.1 the的频率读取声卡输入的带符号8位的音频,这为载波提供了大约25个样本的周期。显然,模拟信号不会很好地落在样本边界上,因此假设这可能会偏移+/-1个样本。
我第一次尝试解码信号是通过获取信号的峰值并将其指定为像素值。这几乎是有效的,但似乎有一些“反相位”像素和图像最终会倾斜。
最终,我通过将像素时钟与峰值解耦并将其与样本绑定来获得信号。我还必须对每一条扫描线分别计时,因为它不会以某种方式以像素倍数结束。
但这个信号并不完全正确,暗区不知何故出现了反转。
Image with dark areas inverted
最终,我意识到在明/暗转换处有一个相位不连续。这向我表明,调制信号超过了零点,导致结果信号中的相位不连续,因为它驱动载波为负,颠倒了峰/谷关系。
Discontinuity in AM signal虽然我可以尝试修改我的状态机来检测这种类型的转换,但它看起来有点混乱,很容易出错。
我一直在想,在调制器穿过零点的地方,必须有一种适当的数学方法来解调AM信号。但我发现的所有例子似乎都是简单的基于峰值的包络检测器。我找到的产品检测器解释似乎依赖于你的载波和相位完全正确,我不确定这仍然能为我买到过零信号的任何东西。
在调制器过零处解调AM信号的正确方式是什么?
发布于 2019-12-31 00:37:33
复数(正交或IQ)积检测器是一种可行的方法。即使您的解调载波很接近并且不精确;一个很小的频率误差只是意味着您的解调结果将会有直流偏移,可以在以后的处理阶段将其消除。
发布于 2019-12-31 01:34:49
你需要确定载体的相位,然后你就可以使用产品检测器了。正交检测器可以让你在事后确定相位,但既然你无论如何都要这样做,你最好先做它。
VisiTel很可能在图像之前发送某种类型的同步信号,该信号将用于确定载波相位并向接收器指示图像传输的开始。您可能应该将其用于预期的目的。
https://stackoverflow.com/questions/59526803
复制相似问题