You should make difference between recognition algorithm and fingerprint scanner, because most of companies listed above offer only scanners.
Personally, I used FingerCell recognition SDK from Neurotechnologija Ltd. in some applications - it is really cool! The quality of recognition is perfect, even for bad quality finger scans. The SDK is quite cheap, supports most of finger scanners, can be used for mobile/embedded applications and easy to use. Check their site for details: www. neurotechnologija.com