06-10-2019, 12:44 PM
Hi Ofnuts, thanks for taking the time to respond, and moving into right board
We are scanning very old documents, that was still typed using a typewriter. We are scanning it at 600dpi in grayscale. The mission now is to clean-up the scans, and reduce file size as much as possible (300dpi Black and white) to be able to share these documents. Some documents are very bad, with a lot of noise etc.
Pointing me to the histogram, solved my problem. Based on the percentile I decided to get the range that is used the most in the lower scale of the histogram, and set all pixels up to that scale to black.
Apologies for my coding style, I'm new to gimp and python.
We are scanning very old documents, that was still typed using a typewriter. We are scanning it at 600dpi in grayscale. The mission now is to clean-up the scans, and reduce file size as much as possible (300dpi Black and white) to be able to share these documents. Some documents are very bad, with a lot of noise etc.
Pointing me to the histogram, solved my problem. Based on the percentile I decided to get the range that is used the most in the lower scale of the histogram, and set all pixels up to that scale to black.
Code:
def SetBlack(image, drawable):
#find the "color" that is used the most in "darker" side of the historgram - this is the black of text
MaxPercentile = 0.0
MaxEndRange = 0.0
Increment = 0.025 #2.5% increase
start_range = 0.0
end_range = Increment
mean, std_dev, median, pixels, count, percentile = pdb.gimp_drawable_histogram(drawable, 0, start_range, end_range)
if percentile > MaxPercentile:
MaxPercentile = percentile
MaxEndRange = end_range
for x in range(0, 20):
start_range = end_range
end_range = end_range + Increment
mean, std_dev, median, pixels, count, percentile = pdb.gimp_drawable_histogram(drawable, 0, start_range, end_range)
if percentile > MaxPercentile:
MaxPercentile = percentile
MaxEndRange = end_range
#pdb.gimp_message(percentile)
MaxEndRange = MaxEndRange * 1.2 #Add 20%
#pdb.gimp_message(MaxPercentile)
#pdb.gimp_message(MaxEndRange)
pdb.gimp_drawable_curves_spline(drawable, 0, 6, (0.0, 0.0, MaxEndRange, 0.0, 0.9, 1.0))
Apologies for my coding style, I'm new to gimp and python.