编码图像,使用 reed-solomon 编码器
Encoding image, using reed-solomon coder
我正在尝试使用 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)
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]
我正在尝试使用 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)
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]