使用相机闪光灯的摩尔码的Android应用程序

时间:2013-03-22 17:37:33

标签: android opencv android-camera

我正在尝试开发一款使用手机上的相机闪光灯传输莫尔斯电码的应用。我的发送部分工作正常。我基于DOT或DASH开启闪光灯并基于GAP,LETTER_GAP和WORD_GAP关闭。所有DOT,DASH,GAP,LETTER_GAP和WORD_GAP都有不同的持续时间,可以打开或关闭。

我很难弄清楚如何在接收器端解码这个......我正在使用opencp二进制阈值来查看图像中是否存在亮点而不是。基于相机fps,我可以计算连续闪烁的帧数,这决定了点/破折号/间隙。这是一个例子。

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

- #。 - * # - * - 。 - 。 * - # - * - - # - - *。*。其中,

“”。 - DOT “ - ” - DASH “*” - GAP “#” - LETTER GAP “” - WORD GAP

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

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

2 个答案:

答案 0 :(得分:1)

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

很棒的工作,希望你能用它制作应用程序。

答案 1 :(得分:1)

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

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