


def   snake_case_	(    snake_case	)    ->							int:
       if not isinstance(snake_case     ,				snake_case	):
              raise ValueError('double_factorial() only accepts integral values'	)
       if num < 0:
              raise ValueError('double_factorial() not defined for negative values'	)
       lowercase__:  str         =  1
       for i in range(snake_case     ,				0     ,				-2	):
              value *= i
       return value


if __name__ == "__main__":
 import doctest

 doctest.testmod()






import numpy as np
from cva import COLOR_BGR2GRAY, cvtColor, imread, imshow, waitKey

from digital_image_processing.filters.convolve import img_convolve




def   snake_case_	(    snake_case	)    ->							List[str]:
       lowercase__:  Any         =  np.array([[-1, 0, 1], [-2, 0, 2], [-1, 0, 1]]	)
       lowercase__:  Optional[Any]         =  np.array([[1, 2, 1], [0, 0, 0], [-1, -2, -1]]	)

       lowercase__:  Optional[int]         =  np.abs(img_convolve(snake_case     ,				snake_case	)	)
       lowercase__:  List[Any]         =  np.abs(img_convolve(snake_case     ,				snake_case	)	)
       # modify the pix within [0, 255]
       lowercase__:  Optional[Any]         =  dst_x * 2_55 / np.max(snake_case	)
       lowercase__:  Dict         =  dst_y * 2_55 / np.max(snake_case	)

       lowercase__:  Tuple         =  np.sqrt((np.square(snake_case	)) + (np.square(snake_case	))	)
       lowercase__:  str         =  dst_xy * 2_55 / np.max(snake_case	)
       lowercase__:  Tuple         =  dst_xy.astype(np.uinta	)

       lowercase__:  List[Any]         =  np.arctana(snake_case     ,				snake_case	)
       return dst, theta


if __name__ == "__main__":
 # read original image
 __lowerCAmelCase									=				imread('''../image_data/lena.jpg''')
 # turn image in gray scale value
 __lowerCAmelCase									=				cvtColor(img, COLOR_BGR2GRAY)

 __lowerCAmelCase			,__lowerCAmelCase									=				sobel_filter(gray)

 # show result images
 imshow('''sobel filter''', sobel_grad)
 imshow('''sobel theta''', sobel_theta)
 waitKey(0)


