使用Android相机进行可见光通信

时间:2013-05-17 13:45:49

标签: android opencv image-processing android-camera javacv

我有一个根据数据编码方案改变颜色的圆圈。例如,我想在该圆的颜色变化中编码消息“Hello”。这意味着类似从红色到绿色的过渡(实心圆的颜色从红色变为绿色)可以解码为二进制1,从绿色到蓝色的过渡可以解码为0.所以我的信息可以是以这种格式编码。这部分是我的发射器准备就绪。

现在我希望能够使用Android相机通过图像处理算法接收此编码数据。我是图像处理的新手,经过一些研究后我发现我可以将OpenCV或JavaCV用于我的应用程序。你建议我应该使用哪一个,我应该遵循的是什么?我已经能够创建一个可以实时检测圆圈的应用程序。但是我无法想到下一步该怎么做。 我遵循opencv示例中的color_blob_detection示例,我知道如何检测帧中的特定颜色。

在这里,我感到困惑。

  1. 我应该继续检查所有画面中的红,绿,蓝三种颜色吗?有没有办法确定每个帧中相同的百分比,以便我可以将百分比与两个连续的帧进行比较,并说有一个过渡?**

  2. 我应该在一个500帧的帧缓冲区中缓冲几个帧,然后从缓冲区开始逐个处理我的帧。这可以考虑为了提高帧速率,因为在此case我的onPreviewFrame()方法代码将减少到最小。**

  3. 请建议我该怎么办?发送器将一次又一次地发送相同的消息,我不介意修复我发送的位/字节数。我只需要识别以这种方式传输的“ID”。

1 个答案:

答案 0 :(得分:0)

我对你的第一个问题感到困惑。是否计算某些颜色的百分比而不是图像处理?为什么你认为检查这三种颜色可能会更贵?

关于第二个问题,所需的帧速率取决于您的协议。如果转换发生在10 Hz,则只需10 FPS即可解密它们。

另一方面,可以将帧数据复制到一边并在一个单独的线程中的队列中处理它,这样onPreviewFrame()循环(这是Android应用程序主线程)就不会卡住。