class_docstr: Class to represent a dataset of rays.
  
  Args:
      cameras: scene cameras: PinholeCamera
      min_depth: sampled rays minimal depth from cameras: float
      max_depth: sampled rays maximal depth from cameras: float
      ndc: convert ray parameters to normalized device coordinates: bool
      device: device for ray tensors: Union[str, torch.device]
      dtype: type of ray tensors: torch.dtype
code: def __init__(
      self,
      cameras: PinholeCamera,
      min_depth: float,
      max_depth: float,
      ndc: bool,
      device: Device,
      dtype: torch.dtype,
  ) -> None:
      super().__init__()
      self._ray_sampler: Optional[RaySampler] = None
      self._imgs: Optional[List[Tensor]] = None
      self._cameras = cameras
      self._min_depth = min_depth
      self._max_depth = max_depth
      self._ndc = ndc
      self._device = device
      self._dtype = dtype
  
imports: from typing import TYPE_CHECKING, List, Optional, Sequence, Tuple, Union
  import torch
  from torch.utils.data import BatchSampler, DataLoader, Dataset, RandomSampler, SequentialSampler
  from typing_extensions import TypeGuard
  from kornia.core import Device, Tensor, stack
  from kornia.geometry.camera import PinholeCamera
  from kornia.io import ImageLoadType, load_image
  from kornia.nerf.core import Images, ImageTensors
  from kornia.nerf.samplers import RandomRaySampler, RaySampler, UniformRaySampler
label_desc: Use image node_id 1 to create a new RayDataset object from inherited base classes: Dataset with example: obj = RayDataset(cameras, min_depth, max_depth, ndc, device, dtype)