code: private void processImageOuter( ImageBase image ) {
  		long startTime = System.currentTimeMillis();
  
  		// this image is owned by only this process and no other. So no need to lock it while
  		// processing
  		processImage(image);
  
  		// If an old image finished being processes after a more recent one it won't be visualized
  		if( !visualizeOnlyMostRecent || startTime > timeOfLastUpdated ) {
  			timeOfLastUpdated = startTime;
  
  			// Copy this frame
  			renderBitmapImage(bitmapMode,image);
  
  			// Update the visualization
  			runOnUiThread(() -> displayView.invalidate());
  		}
  
  		// Put the image into the stack if the image type has not changed
  		synchronized (boofImage.imageLock) {
  			if( boofImage.imageType.isSameType(image.getImageType()))
  				boofImage.stackImages.add(image);
  		}
  	}
docs: Internal function which manages images and invokes {@link #processImage}.