code: def motion_blur(
      input: Tensor,
      kernel_size: int,
      angle: float | Tensor,
      direction: float | Tensor,
      border_type: str = "constant",
      mode: str = "nearest",
  ) -> Tensor:
      r"""Perform motion blur on tensor images.
  
      .. image:: _static/img/motion_blur.png
  
      Args:
          input: the input tensor with shape :math:`(B, C, H, W)`.
          kernel_size: motion kernel width and height. It should be odd and positive.
          angle (Union[torch.Tensor, float]): angle of the motion blur in degrees (anti-clockwise rotation).
              If tensor, it must be :math:`(B,)`.
          direction : forward/backward direction of the motion blur.
              Lower values towards -1.0 will point the motion blur towards the back (with angle provided via angle),
              while higher values towards 1.0 will point the motion blur forward. A value of 0.0 leads to a
              uniformly (but still angled) motion blur.
              If tensor, it must be :math:`(B,)`.
          border_type: the padding mode to be applied before convolving. The expected modes are:
              ``'constant'``, ``'reflect'``, ``'replicate'`` or ``'circular'``. Default: ``'constant'``.
          mode: interpolation mode for rotating the kernel. ``'bilinear'`` or ``'nearest'``.
  
      Return:
          the blurred image with shape :math:`(B, C, H, W)`.
  
      Example:
          >>> input = torch.randn(1, 3, 80, 90).repeat(2, 1, 1, 1)
          >>> # perform exact motion blur across the batch
          >>> out_1 = motion_blur(input, 5, 90., 1)
          >>> torch.allclose(out_1[0], out_1[1])
          True
          >>> # perform element-wise motion blur across the batch
          >>> out_1 = motion_blur(input, 5, torch.tensor([90., 180,]), torch.tensor([1., -1.]))
          >>> torch.allclose(out_1[0], out_1[1])
          False
      """
      kernel = get_motion_kernel2d(kernel_size, angle, direction, mode)
      return filter2d(input, kernel, border_type)
  
file_path: kornia/kornia/filters/motion.py
imports: from __future__ import annotations
  from kornia.core import Module, Tensor
  from kornia.core.check import KORNIA_CHECK
  from .filter import filter2d, filter3d
  from .kernels_geometry import get_motion_kernel2d, get_motion_kernel3d
label_desc: Use image node_id 1 for calling a global function with example usage: motion_blur(input, kernel_size, angle, direction, border_type, mode) and returns: filter2d