code: 
  
  
  '''simple docstring'''
  
  
  
  import numpy as np
  from cva import destroyAllWindows, imread, imshow, waitKey
  
  
  
  
  
  class 							__UpperCamelCase       :
  
  
  
  
  	def __init__(     self		,       __a		,       __a							):
  
  						'''simple docstring'''
  
  
  
  
  
  						__a    : Optional[int]      					=						0
  						# max greyscale value for #FFFFFF
  						__a    : Tuple      					=						int(self.get_greyscale(255		,       255		,       255							)							)
  
  						if not self.min_threshold < threshold < self.max_threshold:
  											__a    : List[Any]      					=						f"""Factor value should be from 0 to {self.max_threshold}"""
  											raise ValueError(__a							)
  
  						__a    : Optional[int]      					=						input_img
  						__a    : str      					=						threshold
  						__a					,       __a    : Any      					=						self.input_img.shape[1], self.input_img.shape[0]
  
  						# error table size (+4 columns and +1 row) greater than input image because of
  						# lack of if statements
  						__a    : Dict      					=						[
  						    [0 for _ in range(self.height + 4							)] for __ in range(self.width + 1							)
  						]
  						__a    : str      					=						np.ones((self.width, self.height, 3)		,       np.uinta							) * 255
  
  
  
  
  	@classmethod
  	def    __UpperCAmelCase							(     cls		,       __a		,       __a		,       __a							):
  
  						'''simple docstring'''
  
  
  
  
  
  						return 0.114 * blue + 0.587 * green + 0.2126 * red
  
  
  
  
  
  	def    __UpperCAmelCase							(     self							):
  
  						'''simple docstring'''
  
  
  
  
  
  						for y in range(self.height							):
  											for x in range(self.width							):
  																__a    : Optional[int]      					=						int(self.get_greyscale(*self.input_img[y][x]							)							)
  																if self.threshold > greyscale + self.error_table[y][x]:
  																					__a    : Tuple      					=						(0, 0, 0)
  																					__a    : List[Any]      					=						greyscale + self.error_table[x][y]
  																else:
  																					__a    : Dict      					=						(255, 255, 255)
  																					__a    : Tuple      					=						greyscale + self.error_table[x][y] - 255
  																self.error_table[y][x + 1] += int(8 / 32 * current_error							)
  																self.error_table[y][x + 2] += int(4 / 32 * current_error							)
  																self.error_table[y + 1][x] += int(8 / 32 * current_error							)
  																self.error_table[y + 1][x + 1] += int(4 / 32 * current_error							)
  																self.error_table[y + 1][x + 2] += int(2 / 32 * current_error							)
  																self.error_table[y + 1][x - 1] += int(4 / 32 * current_error							)
  																self.error_table[y + 1][x - 2] += int(2 / 32 * current_error							)
  
  
  if __name__ == "__main__":
  	# create Burke's instances with original images in greyscale
  	__lowercase			:		Union[str, Any] =			[
  	    Burkes(imread('image_data/lena.jpg', 1), threshold)
  	    for threshold in (1, 1_26, 1_30, 1_40)
  	]
  
  	for burkes in burkes_instances:
  		burkes.process()
  
  	for burkes in burkes_instances:
  		imshow(
  		    f'''Original image with dithering threshold: {burkes.threshold}''',
  		    burkes.output_img,
  		)
  
  	waitKey(0)
  	destroyAllWindows()
  
  
  
  
style_context: 
  
  
  '''simple docstring'''
  
  
  
  def 						lowerCamelCase							(_SCREAMING_SNAKE_CASE   :     set		,   _SCREAMING_SNAKE_CASE   :     set     ):
  					assert isinstance(_SCREAMING_SNAKE_CASE		,   _SCREAMING_SNAKE_CASE     ), F"""The input value of [set_a={set_a}] is not a set"""
  					assert isinstance(_SCREAMING_SNAKE_CASE		,   _SCREAMING_SNAKE_CASE     ), F"""The input value of [set_b={set_b}] is not a set"""
  
  					return {a + b for a in set_a for b in set_b}
  
  
  if __name__ == "__main__":
  	from doctest import testmod
  
  	testmod()
  
  
  
  