1

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

我已将图像从 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)
4

1 回答 1

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]
于 2019-05-03T16:06:55.577 回答