Кодирование изображения с использованием кодера Рида-Соломона - PullRequest
1 голос
/ 03 мая 2019

Я пытаюсь кодировать, отправлять и помещать некоторый шум и декодировать приложение Image в Python, используя кодер Рида-Соломона

Я преобразовал изображение из PIL в массив numpy.Теперь я пытаюсь кодировать этот массив, а затем декодировать его.Но у меня проблема с кодовым словом.Слишком длинное.Кто-нибудь знает, как решить эту проблему.Заранее спасибо

Сообщение об ошибке: Ошибка ошибки: Максимальная длина сообщения - 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 голосов
/ 03 мая 2019

На странице github пакета ReedSolomon четко указано, что вы не можете кодировать массивы, превышающие 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]
...