docs: public void process( GrayU8 binary , int adjustX , int adjustY ) {
  		// Initialize data structures
  		this.adjustX = adjustX;
  		this.adjustY = adjustY;
  		storagePoints.reset();
  		ImageMiscOps.fillBorder(binary, 0, 1);
  
  		tracer.setInputs(binary);
  		final byte binaryData[] = binary.data;
  
  		// Scan through the image one row at a time looking for pixels with 1
  		for (int y = 1; y < binary.height-1; y++) {
  			int x = 1;
  			int indexBinary = binary.startIndex + y*binary.stride + 1;
  
  			int end = indexBinary + binary.width - 2;
  
  			while( true ) {
  				int delta = findNotZero(binaryData, indexBinary, end) - indexBinary;
  				indexBinary += delta;
  				if (indexBinary == end)
  					break;
  				x += delta;
  
  				// If this pixel has NOT already been labeled then trace until it runs into a labeled pixel or it
  				// completes the trace. If a labeled pixel is not encountered then it must be an external contour
  				if( binaryData[indexBinary] == 1 ) {
  					if( tracer.trace(x,y,true) ) {
  						int N = storagePoints.sizeOfTail();
  						if( N < minContourLength || N >= maxContourLength)
  							storagePoints.removeTail();
  					} else {
  						// it was really an internal contour
  						storagePoints.removeTail();
  					}
  				}
  
  				// It's now inside a ones blob. Move forward until it hits a 0 pixel
  				delta = findZero(binaryData, indexBinary, end) - indexBinary;
  				indexBinary += delta;
  				if (indexBinary == end)
  					break;
  				x += delta;
  
  				// If this pixel has NOT already been labeled trace until it completes a loop or it encounters a
  				// labeled pixel. This is always an internal contour
  				if( binaryData[indexBinary-1] == 1 ) {
  					tracer.trace(x-1,y,false);
  					storagePoints.removeTail();
  				} else {
  					// Can't be sure if it's entering a hole or leaving the blob. This marker will let the
  					// tracer know it just traced an internal contour and not an external contour
  					binaryData[indexBinary-1] = -2;
  				}
  			}
  		}
  	}