I am experimenting with local (adaptive) grey threshold for the binarization of B&W photographs of yellowed manuscripts:

I got adaptive thresholding working in both scikit-image and cv2. In both cases (grey < threshold_niblack() in scikit-image and cv.adaptiveThreshold() in cv2 -- all Python) the result I get is successfully binarized, with the background pretty much uniform -- and completely full of noise:

What kind of step do I now need to separate the text from this background noise?

• looks like you should be able to extract features by area. So remove any continious area smaller than x pixels – joojaa Nov 8 '19 at 17:10
• +1 to joojaa's comment, but you really shouldn't have got here in the first place -- any adaptive thresholding method should provide a bias parameter that will help you avoid amplifying low-amplitude noise in nearly uniform regions. – user106 Nov 8 '19 at 19:13
• @Rahul I see, thank you. Adjusting the "Constant subtracted from the mean" does help. – Aaron Brick Nov 9 '19 at 6:18
• @joojaa Thank you! I found out how to find, filter, and draw contours. This is promising. – Aaron Brick Nov 9 '19 at 6:19