【问题标题】:Image transfer through radio on limited packet size在有限的数据包大小上通过无线电传输图像
【发布时间】:2020-12-01 22:57:14
【问题描述】:

我在通过无线电模块传输图像时遇到了很多问题,在接收端重建图像时会出现问题。

该模块允许我们在每个数据包中传输 256 个字节,其中 16 个字节保留用于标头(地址+AES128 加密),这给我们留下了 240 个字节的 ASCII 编码字符串。

到目前为止,我所做的是将彩色图像转换为 base64 编码流(在 Python 中导入 base64),然后将其拆分为多个不同的行,以将其合并到 240 字节限制内,然后发送到发送器。但是,在接收端,我发现在一定数量的数据包之后,很少有数据包丢失,导致整个图像不完整且无用。我也尝试过其他形式的编码,例如十六进制,结果类似。

有问题的图像是 320x240 像素、24 位深度的 JPG 格式彩色图像(PNG 图像尺寸更大)。

如果有人知道将图像转换为字符串的其他方法或任何允许我将图像转换为 ASCII 流甚至二进制流的开源工具,请告诉我。

Image:

编辑: 在更深入地研究了这个问题之后,一个可能的想法是创建一个系统,在该系统中,接收器向发送器发送反馈,表明丢失了特定的数据包。是否有现有的软件或代码可以让我检查它。

谢谢。

【问题讨论】:

  • 我不认为解决方案是改变编码格式。最好选择一种能够检测和重传丢失数据包的传输协议(二进制会是最紧凑的)。
  • 如第一条评论所述,您的问题与协议有关。如果接收方无法回传任何 ack 或消息,您可以搜索“纠错码”
  • 请提及收音机是什么(制造商/型号)。谢谢。
  • 非常感谢您的意见,但是关于图像转换的问题仍然存在,有没有更好的方法将图像转换为字符串?由于当前设置导致图像已损坏或完全损坏,有没有办法实现如果某些数据包丢失,图像仍会显示为空格?
  • @MarkSetchell 我正在以 115200 波特率使用 LoRa RYLR869

标签: python image-processing radio file-transfer packet


【解决方案1】:

我认为问题在于 JPEG 和 Base64 都不能容忍任何数据丢失,因为一切都取决于以前发生的事情。

更好的方法可能是使用可以容忍缺失数据的方法。因此,也许您可​​以一次传输一条或多条图像的扫描线,并识别它是哪条线,然后将其放入由扫描线标识的位置的空白图像中。如果缺少一两行,您将得到一条黑线,您可以通过插值或inpainting 修复它。

问题就变成了大小。您的图像当前为 11kB。如果您发送 320x240 RGB 文件的原始像素,则为 230kB,即大 20 倍。你可以转换成 YCbCr,subsamples the chroma 像 JPEG,只占用一半的带宽,这样你就可以达到 115kB。

您还应该调查是否可以传输二进制而不是 ASCII - 这将有很大帮助,因为 Base64 编码会使数据膨胀约 30%。

还在考虑中...顺便说一下,您可能会通过阅读Slow Scan TVRaspberry Pi High Altitude Ballooninghere 获得一些想法。

【讨论】:

  • 非常感谢您的意见!我会调查的!
  • 请您提供更具代表性的图片,以便更好地测试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-16
  • 2020-10-11
  • 2014-03-18
  • 2013-10-29
  • 1970-01-01
相关资源
最近更新 更多