Advertisement
timdebuyst

Dithering

Mar 20th, 2019
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.62 KB | None | 0 0
  1. # minimized average error
  2. y_dim = self.img_dims[0]
  3.             x_dim = self.img_dims[1]
  4.  
  5.             rgb_coded = np.zeros_like(self.rgb)
  6.             self.color_table_indices = np.zeros((self.rgb.shape[0]), dtype=np.uint8)
  7.  
  8.             for i in range(rgb_coded.shape[0]):
  9.                 self.color_table_indices[i] = self.find_nearest_color(self.rgb[i, :])
  10.                 rgb_coded[i, :] = self.color_table[self.color_table_indices[i]]
  11.  
  12.                 quant_error = self.rgb[i, :] - rgb_coded[i, :]
  13.  
  14.                 if (i + 1 < self.rgb.shape[0] and ((i + 1) % x_dim) != 0):
  15.                     self.rgb[i + 1, :] += ((7 / 48) * (quant_error)).astype(np.uint16)
  16.                 if (i + 2 < self.rgb.shape[0] and ((i + 2) % x_dim) != 0):
  17.                     self.rgb[i + 2, :] += ((5 / 48) * (quant_error)).astype(np.uint16)
  18.                 if (i + x_dim - 2 < self.rgb.shape[0] and ((i - 1) % x_dim) != 0):
  19.                     self.rgb[i + x_dim - 2, :] += ((3 / 48) * (quant_error)).astype(np.uint16)
  20.                 if (i + x_dim - 1 < self.rgb.shape[0] and ((i) % x_dim) != 0):
  21.                     self.rgb[i + x_dim - 1, :] += ((5 / 48) * (quant_error)).astype(np.uint16)
  22.                 if (i + x_dim < self.rgb.shape[0]):
  23.                     self.rgb[i + x_dim, :] += ((7 / 48) * (quant_error)).astype(np.uint16)
  24.                 if (i + x_dim + 1 < self.rgb.shape[0] and ((i + 1) % x_dim) != 0):
  25.                     self.rgb[i + x_dim + 1, :] += ((5 / 48) * (quant_error)).astype(np.uint16)
  26.                 if (i + x_dim + 2 < self.rgb.shape[0] and ((i + 2) % x_dim) != 0):
  27.                     self.rgb[i + x_dim + 2, :] += ((3 / 48) * (quant_error)).astype(np.uint16)
  28.                 if (i + 2*x_dim - 2 < self.rgb.shape[0] and ((i - 1) % x_dim) != 0):
  29.                     self.rgb[i + 2*x_dim - 2, :] += ((1 / 48) * (quant_error)).astype(np.uint16)
  30.                 if (i + 2*x_dim - 1 < self.rgb.shape[0] and ((i) % x_dim) != 0):
  31.                     self.rgb[i + 2*x_dim - 1, :] += ((3 / 48) * (quant_error)).astype(np.uint16)
  32.                 if (i + 2*x_dim < self.rgb.shape[0]):
  33.                     self.rgb[i + 2*x_dim, :] += ((5 / 48) * (quant_error)).astype(np.uint16)
  34.                 if (i + 2*x_dim + 1 < self.rgb.shape[0] and ((i + 1) % x_dim) != 0):
  35.                     self.rgb[i + 2*x_dim + 1, :] += ((3 / 48) * (quant_error)).astype(np.uint16)
  36.                 if (i + 2*x_dim + 2 < self.rgb.shape[0] and ((i + 2) % x_dim) != 0):
  37.                     self.rgb[i + 2*x_dim + 2, :] += ((1 / 48) * (quant_error)).astype(np.uint16)
  38.  
  39.             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