


"""simple docstring"""






from typing import TYPE_CHECKING

from ...utils import OptionalDependencyNotAvailable, _LazyModule, is_tokenizers_available, is_torch_available


UpperCamelCase__							:Union[str, Any]       =  {
    """configuration_splinter""": ["""SPLINTER_PRETRAINED_CONFIG_ARCHIVE_MAP""", """SplinterConfig"""],
    """tokenization_splinter""": ["""SplinterTokenizer"""],
}

try:
     if not is_tokenizers_available():
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     pass
else:
     UpperCamelCase__							:Union[str, Any]       =  ["""SplinterTokenizerFast"""]

try:
     if not is_torch_available():
          raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
     pass
else:
     UpperCamelCase__							:int       =  [
         """SPLINTER_PRETRAINED_MODEL_ARCHIVE_LIST""",
         """SplinterForQuestionAnswering""",
         """SplinterForPreTraining""",
         """SplinterLayer""",
         """SplinterModel""",
         """SplinterPreTrainedModel""",
     ]


if TYPE_CHECKING:
     from .configuration_splinter import SPLINTER_PRETRAINED_CONFIG_ARCHIVE_MAP, SplinterConfig
     from .tokenization_splinter import SplinterTokenizer

     try:
          if not is_tokenizers_available():
               raise OptionalDependencyNotAvailable()
     except OptionalDependencyNotAvailable:
          pass
     else:
          from .tokenization_splinter_fast import SplinterTokenizerFast

     try:
          if not is_torch_available():
               raise OptionalDependencyNotAvailable()
     except OptionalDependencyNotAvailable:
          pass
     else:
          from .modeling_splinter import (
              SPLINTER_PRETRAINED_MODEL_ARCHIVE_LIST,
              SplinterForPreTraining,
              SplinterForQuestionAnswering,
              SplinterLayer,
              SplinterModel,
              SplinterPreTrainedModel,
          )


else:
     import sys

     UpperCamelCase__							:Dict       =  _LazyModule(__name__, globals()["""__file__"""], _import_structure, module_spec=__spec__)





"""simple docstring"""






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

from digital_image_processing.filters.convolve import img_convolve





def 							A_					(   snake_case__		)				->     str:
			_UpperCamelCase				:List[Any]				    =  np.array([[-1, 0, 1], [-2, 0, 2], [-1, 0, 1]]		)
			_UpperCamelCase				:Dict				    =  np.array([[1, 2, 1], [0, 0, 0], [-1, -2, -1]]		)

			_UpperCamelCase				:List[str]				    =  np.abs(img_convolve(snake_case__					,				snake_case__		)		)
			_UpperCamelCase				:Dict				    =  np.abs(img_convolve(snake_case__					,				snake_case__		)		)
			# modify the pix within [0, 255]
			_UpperCamelCase				:List[Any]				    =  dst_x * 2_55 / np.max(snake_case__		)
			_UpperCamelCase				:Tuple				    =  dst_y * 2_55 / np.max(snake_case__		)

			_UpperCamelCase				:Tuple				    =  np.sqrt((np.square(snake_case__		)) + (np.square(snake_case__		))		)
			_UpperCamelCase				:Any				    =  dst_xy * 2_55 / np.max(snake_case__		)
			_UpperCamelCase				:Optional[int]				    =  dst_xy.astype(np.uinta		)

			_UpperCamelCase				:str				    =  np.arctana(snake_case__					,				snake_case__		)
			return dst, theta


if __name__ == "__main__":
					# read original image
					UpperCamelCase__							:List[str]       =  imread("""../image_data/lena.jpg""")
					# turn image in gray scale value
					UpperCamelCase__							:Union[str, Any]       =  cvtColor(img, COLOR_BGR2GRAY)

					UpperCamelCase__      , UpperCamelCase__							:Optional[int]       =  sobel_filter(gray)

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

