-1

我目前正在实施一个消息传递系统。我想向接收者发送一个受错误保护的消息,但我在基础知识方面失败了,即计算纠错码。我使用以下进行纠错。
考虑以下 MWE:

from reedsolo import RSCodec

with open("imageToSend.png", "rb") as pic:
  picContent = pic.read()

correctionLength = int((len(picContent)/100)*20)
rs = RSCodec(correctionLength)

rs.encode(picContent)

如您所见,我想保护图像免受可能发生的 20% 错误的影响。这里的问题?编码的字节数组为空。我的问题是:是否可以保护大文件免受错误影响,而不会将它们分成小块然后计算纠错码?

4

1 回答 1

2

是否可以保护大文件免受错误影响,而无需将它们分成小块

取决于代码。使用 bytewise RS,块是必要的(但是这个库可以为你工作)。

如您所见,我想保护图像免受可能发生的 20% 错误的影响。这里的问题?

是的。首先,这个数字并不意味着类似于百分比的东西。您应该真正阅读 lib 的示例,并了解一下 RS 的工作原理。
该数字是 255 个字节中应该使用多少个字节进行纠错。例如。40 表示每 215 字节的数据,会有 40 字节的 RS 码(约占 20%),在这 255 字节中最多可以纠正 20 字节的错误。

最后,LDPC 原理可能是您想要研究的东西。在纠正错误方面比 RS 差一点,但是差很多,而且速度快得多。

评论中的补充:
是否可以纠正取决于错误的位置,是的。如果完整的 255 块消失了,它就无法纠正它。为了使跨度更大,可以使用更高阶的 RS 代码(例如,一个独立的块可以有 65536 字节而不是 255),但是a)这再次比(已经很慢的)255-RS 慢得多,并且 b)我知道 RS 库做不到(包括你的)。你必须自己写。

同样,LDPC 可以提供帮助,如果它不打扰你,它是一个完全不同的事情。例如。它没有明确的值有多少错误需要纠正/检测,这也取决于错误模式。而且由于它比 RS 更新,因此在线代码/库较少,可能没有适合您的情况。

((嗯,它也很老了,但几十年来没有人对它感兴趣,直到有人意识到它很有用))。

于 2017-01-26T22:00:14.623 回答