Функция декодирования LZW - PullRequest
0 голосов
/ 01 июня 2019

Вот функция декодирования lzw, она декодирует входное изображение. я не понимаю, как это происходит, я буду признателен, если кто-нибудь сможет мне это объяснить

def lzw_decode(encoded_img, decoded_img):
    with open(encoded_img, "rb") as f:
        code_arr, shape = pickle.load(f)
    dictionary = dict()
    dict_size = 256
    for i in range(256):
        dictionary[i] = chr(i) 
     
    img = ""
    s = chr(code_arr.pop(0))
    img += s
    for k in code_arr:
        if k in dictionary.keys():
            entry = dictionary[k]
        elif k == dict_size:
            entry = s + s[0]
        img += entry    
        
        dictionary[dict_size] = s + entry[0]
        dict_size += 1
        s = entry
        
    img = [ord(x) for x in img]
    img = np.array(img, dtype=np.uint16).reshape(shape)
    cv2.imwrite(decoded_img, img)
...