On a sunny mid-June Saturday, I took my bike for a ride down Yonge St to lake Ontario with my bicycle dashcam, testing my latest changes (May 18th). Over the course of a 2 hour ride, taking a photo about every 10 seconds:
- Reviewing the photos with my own eyes, I can make out about 45 images with readable plates (not every image was usable or had a car in the photo)
- Of these 45, OpenALPR can make out about 10
I’m going to try running these photos through alternate ALPR engines, and compare results. On this run, I tested the Pi Camera V2’s various sensor modes: the streaming modes at 1920×1080 30 fps, 3280×2464 15 fps, 640×922 30 fps, 1640×922 40 fps, 1280×720 41 fps, 1280×720 60 fps, as well as the still mode at 3280×2464. Further testing is likely still required, but I continue to get the best results from the still mode – all of the successful matches were shot using still mode.
I’m getting better results than I had on previous runs as a result of tweaking the pi-camera-connect NodeJS library to:
- use a 5 second capture delay, which allows exposure time, gain, and white balance to be determined
- set the exposure mode to sports, which reduces motion blur by preferentially increasing gain rather than exposure time
However, the images are still not as good as I would like.
The Plate Recognizer service has an excellent article on Camera Setup for ALPR. It highlights many of the challenges I’m seeing with my setup:
- Angle, lighting
- 8 MP is suggested for highway or street monitoring – the Pi Camera is sufficient in this regard
- Zoom – I think this is a challenge in my setup – I liked the idea of getting everything around me, but I think I have to reduce the area I capture to get a view of the plate with more detail. Perhaps focus to my “7 o’clock” rather than capture everything behind me.
- At 30 mph (~45 km/hr), which probably covers most bike riding in traffic, they suggest at least 3 to 5 frames at 15-25 frames per second.
I might order the latest Pi camera with the zoom lens and see if I get better results.
Reviewing the data from my ride, there’s also an issue with my code that pulls the GPS coordinates from the phone, which I didn’t see when testing at home. I figure this is either the phone locking while I ride, and not running the javascript – I’ll try using the NoSleep.js library before my next test run.
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.