code: def draw_convex_polygon(
      images: Tensor,
      polygons: Union[Tensor, List[Tensor]],
      colors: Tensor,
  ) -> Tensor:
      r"""Draws convex polygons on a batch of image tensors.
  
      Args:
          images: is tensor of BxCxHxW.
          polygons: represents polygons as points, either BxNx2 or List of variable length polygons.
              N is the number of points.
              2 is (x, y).
          color: a B x 3 tensor or 3 tensor with color to fill in.
  
      Returns:
          This operation modifies image inplace but also returns the drawn tensor for
          convenience with same shape the of the input BxCxHxW.
  
      Note:
          This function assumes a coordinate system (0, h - 1), (0, w - 1) in the image, with (0, 0) being the center
          of the top-left pixel and (w - 1, h - 1) being the center of the bottom-right coordinate.
  
      Example:
          >>> img = torch.rand(1, 3, 12, 16)
          >>> poly = torch.tensor([[[4, 4], [12, 4], [12, 8], [4, 8]]])
          >>> color = torch.tensor([[0.5, 0.5, 0.5]])
          >>> out = draw_convex_polygon(img, poly, color)
      """
      # TODO: implement optional linetypes for smooth edges
      KORNIA_CHECK_SHAPE(images, ["B", "C", "H", "W"])
      b_i, c_i, h_i, w_i, device = *images.shape, images.device
      if isinstance(polygons, List):
          polygons = _batch_polygons(polygons)
      b_p, _, xy, device_p, dtype_p = (
          *polygons.shape,
          polygons.device,
          polygons.dtype,
      )
      if len(colors.shape) == 1:
          colors = colors.expand(b_i, c_i)
      b_c, _, device_c = *colors.shape, colors.device
      KORNIA_CHECK(
          xy == 2, "Polygon vertices must be xy, i.e. 2-dimensional"
      )
      KORNIA_CHECK(
          b_i == b_p == b_c,
          "Image, polygon, and color must have same batch dimension",
      )
      KORNIA_CHECK(
          device == device_p == device_c,
          "Image, polygon, and color must have same device",
      )
  
      x_left, x_right = _get_convex_edges(polygons, h_i, w_i)
      ws = torch.arange(w_i, device=device, dtype=dtype_p)[
          None, None, :
      ]
      fill_region = (ws >= x_left[..., :, None]) & (
          ws <= x_right[..., :, None]
      )
      images = (~fill_region[:, None]) * images + fill_region[
          :, None
      ] * colors[..., None, None]
      return images
  
file_path: kornia/kornia/utils/draw.py
imports: from typing import List, Optional, Tuple, Union
  import torch
  from torch import Tensor
  from kornia.core.check import KORNIA_CHECK, KORNIA_CHECK_SHAPE
label_desc: Use image node_id 7 for calling a global function with example usage: draw_convex_polygon(images, polygons, colors) and returns: images