使用里德所罗门编码器

时间:2019-05-03 13:31:12

标签: python reed-solomon

我正在尝试使用Reed-Solomon编码器在Python应用程序中编码,发送和放置一些噪声,以及解码图像

我已经将imagage从PIL转换为numpy数组。现在,我尝试对该数组进行编码,然后对其进行解码。但是我对代码字有疑问。它太长了。有谁知道如何解决这个问题。预先谢谢你

错误消息: ValueError:邮件长度最大为223。邮件为226

import unireedsolomon as rs
from PIL import Image
import numpy as np

class REED
  def __init__(self):

    self.img = None
    self.numpyImg = None


  def loadPictureAndConvertToNumpyArray(self):
    self.img = Image.open('PATH')
    self.img.load()
    self.numpyImg = np.array(self.img)

  def reedSolomonEncode(self):

    coder = rs.RSCoder(255,223)
    self.numpyImg = coder.encode(self.numpyImg)

1 个答案:

答案 0 :(得分:0)

ReedSolomon软件包的github页清楚地表明,您不能编码大于k(在您的情况下为223)的数组。这意味着您必须先对图像进行分割,然后再对其进行编码。 您可以将其拆分为223个块,然后对编码后的块进行处理:

k = 223
imgChunks = np.array_split(self.numpyImg, range(k, self.numpyImg.shape[0], k))
encodedChunks = [coder.encode(chunk) for chunk in imgChunks]