1

我正在尝试开发一个使用手机上的相机闪光灯传输莫尔斯电码的应用程序。我的传输部分工作正常。我根据 DOT 或 DASH 打开闪光灯,并根据 GAP、LETTER_GAP 和 WORD_GAP 关闭闪光灯。所有 DOT、DASH、GAP、LETTER_GAP 和 WORD_GAP 都有不同的持续时间,它们将在其打开或关闭的时间段内。

我很难弄清楚如何在接收器端对此进行解码......我正在使用 opencp 二进制阈值来查看图像中是否存在亮点。根据相机 fps,我可以计算有多少帧连续打开或关闭闪光灯,这决定了点/破折号/间隙。这是示例。

从发射机电话说我正在发送“abc xyz”作为字符串。在接收器电话上,我得到了这些字符串

. -#- .*. .#- .*- . - .*. -#- .*- -#- -*.*. 在哪里,

“。” - 点“-” - 破折号“*” - 间隔“#” - 字母间隔“” - 单词间隔

这个字符串正好代表“abc xyz”。问题是我想不出一种方法来接收电话从哪里开始寻找新消息以及何时停止,因为一切都是使用光信号发送的。发送和接收之间没有同步。我的意思是接收器无法识别开始和结束信号,因为我只是处理 opencv 提供的原始相机帧。有什么办法可以强加这些吗?或进行检测/解码的替代解决方案?

如果我不清楚,请告诉我。谢谢你!

4

2 回答 2

1

嗯,可以有多个答案。首先,您可以要求接收器手动输入并分析前几秒的所有帧。也许您可以随时监控并设置光模式强度的阈值。您还可以进行重新同步序列,其中发送方将灯点亮一秒钟并开始传输。这将是握手,其余的是消息。

伟大的工作,希望你用它制作一个应用程序。

于 2014-10-15T02:46:01.183 回答
1

查看 Shivam Kalra 在这里使用的方法:http: //www.codeproject.com/Articles/46174/Computer-Vision-Decoding-a-Morse-Code-Flashing-LED

tldr:允许用户在图片框架中设置一个坐标并监控坐标下方像素的亮度。

于 2015-07-08T17:49:03.503 回答