code: def guided_blur(
      guidance: Tensor,
      input: Tensor,
      kernel_size: tuple[int, int] | int,
      eps: float | Tensor,
      border_type: str = "reflect",
      subsample: int = 1,
  ) -> Tensor:
      r"""Blur a tensor using a Guided filter.
  
      .. image:: _static/img/guided_blur.png
  
      The operator is an edge-preserving image smoothing filter. See :cite:`he2010guided`
      and :cite:`he2015fast` for details. Guidance and input can have different number of channels.
  
      Arguments:
          guidance: the guidance tensor with shape :math:`(B,C,H,W)`.
          input: the input tensor with shape :math:`(B,C,H,W)`.
          kernel_size: the size of the kernel.
          eps: regularization parameter. Smaller values preserve more edges.
          border_type: the padding mode to be applied before convolving.
            The expected modes are: ``'constant'``, ``'reflect'``,
            ``'replicate'`` or ``'circular'``. Default: ``'reflect'``.
          subsample: subsampling factor for Fast Guided filtering. Default: 1 (no subsampling)
  
      Returns:
          the blurred tensor with same shape as `input` :math:`(B, C, H, W)`.
  
      Examples:
          >>> guidance = torch.rand(2, 3, 5, 5)
          >>> input = torch.rand(2, 4, 5, 5)
          >>> output = guided_blur(guidance, input, 3, 0.1)
          >>> output.shape
          torch.Size([2, 4, 5, 5])
      """
  
      KORNIA_CHECK_IS_TENSOR(guidance)
      KORNIA_CHECK_SHAPE(guidance, ["B", "C", "H", "W"])
      if input is not guidance:
          KORNIA_CHECK_IS_TENSOR(input)
          KORNIA_CHECK_SHAPE(input, ["B", "C", "H", "W"])
          KORNIA_CHECK(
              (guidance.shape[0] == input.shape[0])
              and (guidance.shape[-2:] == input.shape[-2:]),
              "guidance and input should have the same batch size and spatial dimensions",
          )
  
      if guidance.shape[1] == 1:
          return _guided_blur_grayscale_guidance(
              guidance, input, kernel_size, eps, border_type, subsample
          )
      else:
          return _guided_blur_multichannel_guidance(
              guidance, input, kernel_size, eps, border_type, subsample
          )
  
file_path: kornia/kornia/filters/guided.py
imports: from __future__ import annotations
  import torch
  from torch.nn.functional import interpolate
  from kornia.core import Module, Tensor
  from kornia.core.check import KORNIA_CHECK, KORNIA_CHECK_IS_TENSOR, KORNIA_CHECK_SHAPE
  from .blur import box_blur
  from .kernels import _unpack_2d_ks
label_desc: Use image node_id 4 for calling a global function with example usage: guided_blur(guidance, input, kernel_size, eps, border_type, subsample) and returns: _guided_blur_grayscale_guidance, _guided_blur_multichannel_guidance