if it == 0: codebooks = np.array( [Codebook() for pixel in range(img.shape[0] * img.shape[1])]) for px_row in img: for px_idx, px in enumerate(px_row): R = px[0] G = px[1] B = px[2] X = np.array([R, G, B]) I = sqrt(R**2 + G**2 + B**2) pixel = Pixel(X, I) codebook_empty = True no_match = True for codeword in codebooks[px_idx].codewords: codebook_empty = False if pixel.match(codeword, alpha, beta, epsilon): codeword.update(pixel, it) no_match = False break if codebook_empty or no_match: A = np.array([pixel.I, pixel.I, 1, it, it + 1, it + 1]) new_codeword = Codeword(pixel.X, A) codebooks[px_idx].codewords.append(new_codeword)