FingerprintVisionLab is a SwiftUI iOS prototype for experimenting with camera-based fingerprint image capture and simple local comparison. It uses the rear camera preview to help a user position a finger, captures the centered alignment area, enhances the image with Core Image filters, and compares lightweight feature vectors for enrollment and verification flows.
- Live rear-camera preview for finger alignment.
- Torch-assisted alignment so close-up finger captures are visible.
- Manual enrollment of a reference fingerprint image.
- Manual verification against the enrolled reference.
- High-contrast preview of the latest processed capture.
- Local-only processing with AVFoundation and Core Image.
- Xcode 16 or newer.
- iOS 18.6 target or compatible project settings.
- A physical iPhone or iPad with a rear camera and torch.
The simulator is not suitable for the capture flow because it does not provide the same live rear-camera and torch behavior as a device.
- Open
FingerprintVisionLab.xcodeprojin Xcode. - Select the
FingerprintVisionLabscheme. - Choose a physical iOS device.
- Build and run.
- Allow camera access when prompted.
- Place a finger inside the center alignment guide.
- Keep the torch enabled if the preview is dark.
- Tap
1. Capture Referenceto enroll the current centered finger area. - Place the same or another finger in the guide.
- Tap
2. Capture & Compareto compare the new capture with the reference.
CameraPreviewViewrenders the camera usingAVCaptureVideoPreviewLayeras the backing layer of a UIKit view embedded in SwiftUI.FingerprintScannerControllerowns the capture session, camera permission flow, torch state, image enhancement, and comparison logic.- The capture step crops the centered alignment area instead of relying on hand-pose detection. This is better suited for close-up fingertip/fingerprint framing, where full hand joints may not be visible.
This is a vision prototype, not a production biometric identity system. The current comparison uses a simple image-derived feature vector and should not be used for security-sensitive authentication decisions.