Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # minimized average error
- y_dim = self.img_dims[0]
- x_dim = self.img_dims[1]
- rgb_coded = np.zeros_like(self.rgb)
- self.color_table_indices = np.zeros((self.rgb.shape[0]), dtype=np.uint8)
- for i in range(rgb_coded.shape[0]):
- self.color_table_indices[i] = self.find_nearest_color(self.rgb[i, :])
- rgb_coded[i, :] = self.color_table[self.color_table_indices[i]]
- quant_error = self.rgb[i, :] - rgb_coded[i, :]
- if (i + 1 < self.rgb.shape[0] and ((i + 1) % x_dim) != 0):
- self.rgb[i + 1, :] += ((7 / 48) * (quant_error)).astype(np.uint16)
- if (i + 2 < self.rgb.shape[0] and ((i + 2) % x_dim) != 0):
- self.rgb[i + 2, :] += ((5 / 48) * (quant_error)).astype(np.uint16)
- if (i + x_dim - 2 < self.rgb.shape[0] and ((i - 1) % x_dim) != 0):
- self.rgb[i + x_dim - 2, :] += ((3 / 48) * (quant_error)).astype(np.uint16)
- if (i + x_dim - 1 < self.rgb.shape[0] and ((i) % x_dim) != 0):
- self.rgb[i + x_dim - 1, :] += ((5 / 48) * (quant_error)).astype(np.uint16)
- if (i + x_dim < self.rgb.shape[0]):
- self.rgb[i + x_dim, :] += ((7 / 48) * (quant_error)).astype(np.uint16)
- if (i + x_dim + 1 < self.rgb.shape[0] and ((i + 1) % x_dim) != 0):
- self.rgb[i + x_dim + 1, :] += ((5 / 48) * (quant_error)).astype(np.uint16)
- if (i + x_dim + 2 < self.rgb.shape[0] and ((i + 2) % x_dim) != 0):
- self.rgb[i + x_dim + 2, :] += ((3 / 48) * (quant_error)).astype(np.uint16)
- if (i + 2*x_dim - 2 < self.rgb.shape[0] and ((i - 1) % x_dim) != 0):
- self.rgb[i + 2*x_dim - 2, :] += ((1 / 48) * (quant_error)).astype(np.uint16)
- if (i + 2*x_dim - 1 < self.rgb.shape[0] and ((i) % x_dim) != 0):
- self.rgb[i + 2*x_dim - 1, :] += ((3 / 48) * (quant_error)).astype(np.uint16)
- if (i + 2*x_dim < self.rgb.shape[0]):
- self.rgb[i + 2*x_dim, :] += ((5 / 48) * (quant_error)).astype(np.uint16)
- if (i + 2*x_dim + 1 < self.rgb.shape[0] and ((i + 1) % x_dim) != 0):
- self.rgb[i + 2*x_dim + 1, :] += ((3 / 48) * (quant_error)).astype(np.uint16)
- if (i + 2*x_dim + 2 < self.rgb.shape[0] and ((i + 2) % x_dim) != 0):
- self.rgb[i + 2*x_dim + 2, :] += ((1 / 48) * (quant_error)).astype(np.uint16)
- self.img_coded = rgb_coded.reshape((self.img_dims[0], self.img_dims[1], 3))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement