class_docstr: Interface for 2 or 3D arrays representing images
  of raw luminance values, RGB values or HSV values.
class_docstr_tok: ["Interface","for","2","or","3D","arrays","representing","images","of","raw","luminance","values",",","RGB","values","or","HSV","values","."]
docstr: The set of samples available along a particular dimension.
docstr_tok: ["The","set","of","samples","available","along","a","particular","dimension","."]
code: def values(
      cls,
      dataset,
      dim,
      expanded=True,
      flat=True,
      compute=True,
      keep_index=False,
  ):
      """
      The set of samples available along a particular dimension.
      """
      dim_idx = dataset.get_dimension_index(dim)
      if dim_idx in [0, 1]:
          l, b, r, t = dataset.bounds.lbrt()
          dim2, dim1 = dataset.data.shape[:2]
          xdate, ydate = isinstance(l, util.datetime_types), isinstance(
              b, util.datetime_types
          )
          if l == r or dim1 == 0:
              xlin = np.full(
                  (dim1,),
                  l,
                  dtype=("datetime64[us]" if xdate else "float"),
              )
          elif xdate:
              xlin = util.date_range(l, r, dim1, dataset._time_unit)
          else:
              xstep = float(r - l) / dim1
              xlin = np.linspace(
                  l + (xstep / 2.0), r - (xstep / 2.0), dim1
              )
          if b == t or dim2 == 0:
              ylin = np.full(
                  (dim2,),
                  b,
                  dtype=("datetime64[us]" if ydate else "float"),
              )
          elif ydate:
              ylin = util.date_range(b, t, dim2, dataset._time_unit)
          else:
              ystep = float(t - b) / dim2
              ylin = np.linspace(
                  b + (ystep / 2.0), t - (ystep / 2.0), dim2
              )
          if expanded:
              values = np.meshgrid(ylin, xlin)[abs(dim_idx - 1)]
              return values.flatten() if flat else values.T
          else:
              return ylin if dim_idx else xlin
      elif dataset.ndims <= dim_idx < len(dataset.dimensions()):
          # Raster arrays are stored with different orientation
          # than expanded column format, reorient before expanding
          if dataset.data.ndim > 2:
              data = dataset.data[:, :, dim_idx - dataset.ndims]
          else:
              data = dataset.data
          data = np.flipud(data)
          return data.T.flatten() if flat else data
      else:
          return None
  
imports: import numpy
  from ..None import util
  from ..boundingregion import BoundingBox
  from ..dimension import dimension_name
  from ..element import Element
  from ..ndmapping import NdMapping, item_check
  from ..sheetcoords import SheetCoordinateSystem, Slice
  from .grid import GridInterface
  from .interface import DataError, Interface
  from .util import finite_range
label_desc: Use image node_id 11 for calling the ImageInterface obj's underlying member method code with example usage: obj.values(cls, dataset, dim, expanded, flat, compute, keep_index) and returns: unknown, unknown, unknown, None