/** * Specify internal algorithms and behavior. * * @param blur Initial blur applied to image. * @param gradient Computes the image gradient. * @param saveTrace Should it save a list of points that compose the objects contour/trace? */ public CannyEdge(BlurFilter<T> blur, ImageGradient<T, D> gradient, boolean saveTrace) { this.blur = blur; this.gradient = gradient; Class<T> imageType = blur.getInputType().getImageClass(); blurred = GeneralizedImageOps.createSingleBand(imageType, 1, 1); derivX = gradient.getDerivativeType().createImage(1, 1); derivY = gradient.getDerivativeType().createImage(1, 1); if (saveTrace) { hysteresisPts = new HysteresisEdgeTracePoints(); } else { hysteresisMark = new HysteresisEdgeTraceMark(); } }