# parameters for black text enhancement


zeroThres 5     	# 1D histogram (R, G or B) zero threshold.
                	# Used to identify those parts of the histogram that 
			# are away from peaks and have returned to zero.
			# Per intensity resolution unit and hence independent
			# of the number of histogram bins. 
			# Default 5

cellSize 48     	# The cell size used for (RGB) histograms.
                	# Also dictates the total height of the 
			# swath of image and associated status data used 
			# during processing.
			# 
			#               swathHeight = 4*cellSize
			# 
			# These in turn dictate the region over which 
			# connected component analysis can be performed without 
			# backtracking to fill or outline components. 
			# The components themselves can in general exceed the 
			# height of the swath provided initial backtracking has 
			# occurred.
			# Default 48

minSample 200		# Suggested minimum sample size for histograms.
			# Allows sub sampling if sample size can be exceeded.
			# default 200

rgbCompThres 10         # Maximum allowed difference in RGB averaged over
			# a partial or whole text component to allow snapping
			# to black.
			# Default 10

blackConnThres 120       # Maximum intensity threshold for pixels to be
			# considered as part of a text component. 
			# Default 90

blackSnapThres 70       # Maximum intensity threshold for pixels that are
			# part of a text component to be snapped to black. 
			# Default 50

blackCompThres 60       # Maximum intensity for averaged pixel values over
			# a partial or whole text component to allow snapping
			# to black.
			# Default 30

saturateThres 150       # Minimum intensity for text area pixel to be snapped to
			# white if backEnhance enabled.
			# default 150

sizeThres 48            # Connected component size threshold.
                        # When connected components recieve contributions
			# from more runs than this threshold their stats
			# can be checked for satisfaction.
			# If so back filling (to the limit of the swath)
			# and future forward filling will occur. 
			# Filling covers snapping and white haloing.
			# Default 48 (cell size)

blackThres 60           # Maximum intensity for histogram peaks to be defined
			# as black. 
			# This is a per intensity resolution unit and hence
			# independent of the number of histogram bins.
			# Default 60

whiteThres 100          # Minimum intensity for histogram peaks to be defined 
			# as white.
			# This is a per intensity resolution unit and hence
			# independent of the number of histogram bins.
			# Default 100

backEnhance False       # Boolean on background enhancement to white
			# Default True
