我正在尝试使用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)
答案 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]