docs: protected double computeFractionBoundary( float pixelThreshold ) {
  		// TODO ignore outer pixels from this computation.  Will require 8 regions (4 corners + top/bottom + left/right)
  		final int w = square.width;
  		int radius = (int) (w * borderWidthFraction);
  
  		int innerWidth = w-2*radius;
  		int total = w*w - innerWidth*innerWidth;
  		int count = 0;
  		for (int y = 0; y < radius; y++) {
  			int indexTop = y*w;
  			int indexBottom = (w - radius + y)*w;
  
  			for (int x = 0; x < w; x++) {
  				if( square.data[indexTop++] < pixelThreshold )
  					count++;
  				if( square.data[indexBottom++] < pixelThreshold )
  					count++;
  			}
  		}
  
  		for (int y = radius; y < w-radius; y++) {
  			int indexLeft = y*w;
  			int indexRight = y*w + w - radius;
  
  			for (int x = 0; x < radius; x++) {
  				if( square.data[indexLeft++] < pixelThreshold )
  					count++;
  				if( square.data[indexRight++] < pixelThreshold )
  					count++;
  			}
  		}
  
  		return count/(double)total;
  	}