class_docstr: Computes the Normalized Surface Dice (NSD) for each batch sample and class of
  predicted segmentations `y_pred` and corresponding reference segmentations `y` according to equation :eq:`nsd`.
  This implementation is based on https://arxiv.org/abs/2111.05408 and supports 2D and 3D images.
  Be aware that by default (`use_subvoxels=False`), the computation of boundaries is different from DeepMind's
  implementation https://github.com/deepmind/surface-distance.
  In this implementation, the length/area of a segmentation boundary is
  interpreted as the number of its edge pixels. In DeepMind's implementation, the length of a segmentation boundary
  depends on the local neighborhood (cf. https://arxiv.org/abs/1809.04430).
  This issue is discussed here: https://github.com/Project-MONAI/MONAI/issues/4103.
  
  The class- and batch sample-wise NSD values can be aggregated with the function `aggregate`.
  
  Example of the typical execution steps of this metric class follows :py:class:`monai.metrics.metric.Cumulative`.
  
  Args:
      class_thresholds: List of class-specific thresholds.
          The thresholds relate to the acceptable amount of deviation in the segmentation boundary in pixels.
          Each threshold needs to be a finite, non-negative number.
      include_background: Whether to include NSD computation on the first channel of the predicted output.
          Defaults to ``False``.
      distance_metric: The metric used to compute surface distances.
          One of [``"euclidean"``, ``"chessboard"``, ``"taxicab"``].
          Defaults to ``"euclidean"``.
      reduction: define mode of reduction to the metrics, will only apply reduction on `not-nan` values,
          available reduction modes: {``"none"``, ``"mean"``, ``"sum"``, ``"mean_batch"``, ``"sum_batch"``,
          ``"mean_channel"``, ``"sum_channel"``}, default to ``"mean"``. if "none", will not do reduction.
      get_not_nans: whether to return the `not_nans` count.
          Defaults to ``False``.
          `not_nans` is the number of batch samples for which not all class-specific NSD values were nan values.
          If set to ``True``, the function `aggregate` will return both the aggregated NSD and the `not_nans` count.
          If set to ``False``, `aggregate` will only return the aggregated NSD.
      use_subvoxels: Whether to use subvoxel distances. Defaults to ``False``.
code: def __init__(
      self,
      class_thresholds: list[float],
      include_background: bool = False,
      distance_metric: str = "euclidean",
      reduction: MetricReduction | str = MetricReduction.MEAN,
      get_not_nans: bool = False,
      use_subvoxels: bool = False,
  ) -> None:
      super().__init__()
      self.class_thresholds = class_thresholds
      self.include_background = include_background
      self.distance_metric = distance_metric
      self.reduction = reduction
      self.get_not_nans = get_not_nans
      self.use_subvoxels = use_subvoxels
  
file_path: MONAI/monai/metrics/surface_dice.py
imports: from __future__ import annotations
  from collections.abc import Sequence
  from typing import Any
  import numpy
  import torch
  from monai.metrics.utils import do_metric_reduction, get_edge_surface_distance, ignore_background, prepare_spacing
  from monai.utils import MetricReduction
  from .metric import CumulativeIterationMetric
label_desc: Use image node_id 1 to create a new SurfaceDiceMetric object from inherited base classes: CumulativeIterationMetric with example: obj = SurfaceDiceMetric(class_thresholds, include_background, distance_metric, reduction, get_not_nans, use_subvoxels)