protected void performThresholding(float threshLow, float threshHigh, ImageUInt8 output) {
    if (hysteresisPts != null) {
      hysteresisPts.process(suppressed, direction, threshLow, threshHigh);

      // if there is an output image write the contour to it
      if (output != null) {
        ImageMiscOps.fill(output, 0);
        for (EdgeContour e : hysteresisPts.getContours()) {
          for (EdgeSegment s : e.segments)
            for (Point2D_I32 p : s.points) output.unsafe_set(p.x, p.y, 1);
        }
      }
    } else {
      hysteresisMark.process(suppressed, direction, threshLow, threshHigh, output);
    }
  }
 public List<EdgeContour> getContours() {
   return hysteresisPts.getContours();
 }