Help with imagery analysis project

Hi all - I’m new here and new to raspberry pi. I have a project I’d like to build over the next few months for use in a kayak race event later this year. I would like to have a camera capture images which can then have the race number extracted off them and put into a database. The idea being to keep track of which boats have passed a checkpoint. The system is part of the safety framework of the event, not for race timing, although ideally the database will also extract the location and time that the image was captured.

The kayaks have a vertical race number on a plastic card that is attached to the boats. The race is in the bush so the only text in the images will be on the kayaks, and the camera will be up to 20m away from the kayaks when the images are taken. I’m thinking about using a GoPro Hero 4 Black or Session 5 as I already have both those units available for the task.

As I said at the outset, I’m new to this. I have tinkered around with an arduino starter kit and I build drones for work and as a hobby, so I have some basic skills but very little code knowledge. I’ve been searching via google and I’ve found a lot of stuff on number plate recognition, which seems like a good place to start.

Any help, guidance or pointers gratefully accepted! I’d like to build something rather than buy a system, it’s as much to learn as it is to have a working system.

If anyone is in Melbourne with the time, skills and knowledge to guide me through this, I’d love to hear from you…

Cheers,

Adam

For several years I was a volunteer at checkpoint K on the Hawkesbury Canoe Classic so I’ve a fair idea of what you are up against. Best missing canoe ever was one who stopped for a nap on a sandbar a kilometre or two before us. Our search parties eventually found them.

I guess a Raspberry Pi might work. OpenCV is a toolkit to look into, but it is quite complex. There are some recipes available to make it easier. I’ve not yet used it myself. Raspberry Pi may be a bit bulky compared to an Android or iOS phone, and the latter have built-in battery. Being able to process the image in the same place as the camera means you only need to transmit the race number, location and time over wireless. The waterproofing on the GoPro cameras is handy though.

I hope others will chime in.

1 Like

I would also suggest open cv. I’ve had quite a bit of success with it in similar applications.

You can set it to identify and track the race number pennant, and then extract the number itself.

Also, I used a PlayStation eye camera as it did relatively high frame rates, however I don’t think canoes move all that fast so you should be able to get away with less.

Bear in mind that the gopro cameras can’t provide a live video feed to be real time processed.

I’m a little concerned with the image given by the GoPro, as the lens is a pretty wide angle. This is great for getting a wide shot but could also make the number might be fairly small depending on distance and would represent a small target in a large picture. If you could set up a beam across the river that triggers a photo when broken you could use a camera with a more focused lens as you would have a better idea of where (in the picture) the number would be. You would want a number of pictures to make sure that the participant number is visible

Another option would be using Bluetooth to transmit whenever it is in range of a checkpoint. But that would depend on the width of the river (due to range limitations of Bluetooth) and would require a transmitter in each kayak.

As I have never used open cv or anything similar, I do not understand the processing times required. Assuming that kayaks are released one at a time like a rally (not all at once like motorcross) then the processing time shouldn’t be a problem.

when to trigger a photo or how often to take a photo (to see if there is a kayak there) would be and interesting problem. You can probably be reasonably sure that if one check point misses a kayak then the next won’t.

Great project. Let us know how you go.