I am going to make a feature extraction from fingerprint images. So far I have tried many methods to simply enhance the image and skeletonize it. Methods I tried;
Local Histogram Equalization (11x11 neighborhood) + Binarization with Adaptive Thresholding + Morphological Thinning (With Erode+Dilate+Substract so called White Top Hat). I used built-in functions come with OpenCV , Scipy and Scikit-Image. Didn't work pretty well.
I tried a different approach , Local Histogram + Wiener Filtering + Adaptive Thresholding Binarization + Skeletonize.
Results are varying , some are perfectly good , some are terrible with background noise and billions of false connections. I also tried applying Gaussian or Median blurring before any action taken.
(Figure 1)
For example figure 1 is one of my good resulting examples with wiener filtering. Except the borderline effect. On the borders of fingerprint, there seems to be millions of false connections and algorithm tends to draw a border around the fingerprint. But still i accept this as a good result but also need suggestions to get over this border effect.
(Figure 2)
On the other hand , as you see , figure 2 is a horrible piece. All of the bits are just bitwise not'ed to have background and valleys black and ridges white. It is still the same algorithm. Any suggestions for fingerprint image enhancement in OpenCV or/and any library for Python?