Ask Slashdot: Image Recognition For Race Timing?
First time accepted submitter int2str writes "Autocross is a form of motorsports practiced in the U.S. and around the world where car enthusiasts explore the capabilities of their car in an open parking lot or similar suited area. It's point-to-point racing (not closed circuit). Most of these events are organized by car clubs and volunteers. Timing is usually done with a form of detection beam at start and finish that gets interrupted by the car crossing the beam. Many commercial systems are available. All of these system require the operator to enter the car's number or ID and requires the cars finishing in the order they started. So if one car is not able to finish, the operator has to intervene, or timing is broken. For closed circuit racing, transponder systems are available to address this problem. But such systems require sensor loops in the track or overhead (bridge setup) and the transponders are expensive. Do you think it would be possible to design a timing system using off-the-shelf parts and open source solutions to uniquely distinguish about 100 participating vehicles and time them from a start to a finish point, independently of their finishing order?"
Read below for some more details:
int2str continues: "My initial idea would be:
- Use (web-?)cameras at each end that feed into a Linux based notebook (USB/Ethernet).
- Start recoding still images as fast as possible when motion is detected
- Identify unique shape, numbers, barcode, qr code or similar in the images, that have been attached using a magnet to the vehicle's door.
Difficulties to overcome:
- Camera with high enough shutter speed to get recognizable image of vehicle traveling 30-60mph
- Quickly and accurately identify a unique symbol or shape
So far I've started looking into OpenCV as a possible tool for image recognition, but have not been able to find a capture solution. Does anybody have experience with something like this? The solution would be open source and well documented as to benefit the many car clubs around the country and the world."
What exactly is the problem here?
Someone flopped a steamer in the gene pool.
The technology is definitely out there. Check out the following links.
http://www.youtube.com/watch?v=1GhNXHCQGsM
http://info.ee.surrey.ac.uk/Personal/Z.Kalal/
Some large numbers on the sides or hood of the car would make image recognition, if not trivial, at least relatively simple.
I worked in Face Recognition as a research assistant for my MS. I was part of a group designing a robust end-to-end system for the purposes of identifying people in a wide variety of conditions. This problem seems easier because you can assume that the cars will be in one location within one time frame, the camera is fixed and everything in your data set will cross this line unless they break down, they will have almost identical 3D structure (unlike the face), and you can expect some identifying marks on the front end that crosses the finish line. As long as you have some sort of identifying marks, you can use standard face/object recognition techniques to identify the vehicle. There are some pretty advanced algorithms out there. The best out there when I was actively working in face recognition was STASM and Pittpatt. Better yet, if you had some unique identifier expected at some part of the vehicle, you can easily make the problem much easier. For example, have each one use an infrared identification tag located in precisely the same spot relative to the build of the vehicle.
That brings me to an interesting point, / . is just "the ramblings of socially-inept, technology-literate news-mongers".
Put giant QR code stickers on the hood/doors. Done.
How about sticking a big barcode to the competition number panel and use a simple barcode scanner to ID the vehicle as the beam breaker is triggered?
There is already an outfit doing motorcycle road racing using RFID. it would work in this instance as well.
I autocross and I've been thinking about the same problem. I even thought about writing my own free software and building plans for off-the-shelf/cheap-to-make transponders ($1200 for a wireless transmitter unit? jesus).
The problem is that if a car doesn't finish and misses the timing mark--the software shoudl just let you to fix it up. You should be able to say "this car didn't finish" (has a missing tick) or "ignore this tick" (some corner worker tripped the lights accidentally). Then it shoudl be able to just recalculate the times affected. It seems so simple to me, I am baffled that it hasn't been implemented.
All the cars starts in the same order, all the numbers are known at hte start time and cars never pass each other. So you have always same-sequence travel of cars. All you need to do is fix occassional lacks of ticks or extra ticks. No need to re-run the cars.
I'd suggest using the best software available: the human brain.
Version 1
Aim a camera at the finish line. Aimed to capture the racer's number and any other identifying information. Set the camera to be triggered by the interruption of an IR beam. Place a clock in the picture field.
During / after the race, find each racer's picture and record the time.
Version 2
Aim a video camera at the finish line.
Use a laser pointer as a finish line. Aim it at something white and make sure it is visible as a racer crosses
Put a clock in the field.
After the race, fast forward and write down the time each racer crossed.
As a bonus, you have photo evidence in case there is any dispute.
The world is made by those who show up for the job.
put a number on the side of each car, take still photo when car crosses start and finish beams, someone looks at the photos and enters the number next to the time in a spreadsheet. No AI, no problems.
"Do you think it would be possible to design a timing system using off-the-shelf parts and open source solutions to uniquely distinguish about 100 participating vehicles and time them from a start to a finish point, independently of their finishing order?"
Yes.
What happens if two dudes show up in a blue Miata?
No sig for you. YOU GET NO SIG!
They're similar to QR codes but optimized for the needs of robotics (similar to your needs).
In robotics, the main need is for robust recognition, and accuracy.
QR codes are much more complicated because they need a lot more "payload" bytes (millions of unique codes), whereas you only need to distinguish between a couple hundred codes
there is even source code available:
http://april.eecs.umich.edu/wiki/index.php/April_Tags
Seriously? This is beyond stupid. There are plenty of cheap solutions for motorsports timing. Why would anyone compete in your event with your questionably accurate homebrew solution.
Are these drivers going to be required to have helmets making face recondition difficult. I mean know people who have gone autocrossing. It was a convertible so he defiantly used a helmet. Anyway, why not require magnetic numbers on the side of the car. The numbers would be easier to recognize. Even the license plates would be easier to recognize. You could make custom plates with lots of different patterns on them to make super easy. Other Ideas would be IR transmitters.
I have run timing & scoring for track events (I don't AutoX), but you are under-estimating the problem. Time tolerances for a winning finish can be as close as .0001 seconds. Any variation in the delay for a camera or the time needed to process the image could be a serious problem. Another problem would be car placement, cars will not always cross the line in a nice, neat manner.
Those problems can have real monetary consequences when you factor in the product contingencies (free race tires and other products) that are commonly provided by manufacturers to winning amateur motor sports and AutoX participants. Not to mention the possible impact on season long points races for championships.
Timing loops and lights are very accurate, with loops easily meeting the .0001 second requirement we adhere to. I have personally seen time attack contests decided by a .0003 second margin of victory. Price for loop systems is more than the light based systems, but I have enough experience with the loop systems to know they are very accurate when set up correctly.
If you do want to go home-brew, your best bet might be to mix cameras with timing lights. Get the timing from the lights and let the camera based system assign the the light's times to each specific car assuming you can get the recognition working correctly.
AForge has the components you need to compliment a IR system: motion tracking and object identification. I've used it on a similar project for a cup team to get corner exit ride heights and yaw. Camera shutter speed shouldn't be much of an issue with just about any off the shelf camera. Camera position will require a bit of testing but that will be pretty obvious. Using video as an alternative with an off the shelf camera is another matter. Here frame rates rule. Even if you jump through the hoops to get 60 FPS you would only have captured the start and stop times with .016 of a second.
Automaticallt take your pics and upload to dropbox, pay mechanical turks to identify and enter data, profit!
How quickly can Bluetooth establish a connection? Use the optical beams to determine the time that a car passes a point, and give each driver a Bluetooth headset that has been paired with laptops used to record the timing.
You can test the range to make sure it will work--you should only need a few meters. You can get cheap headsets for somewhere around $50, probably less.
I have no idea if this would actually work, but it should be possible to do a test run with parts you probably already have.
Don't re-invent the wheel. Transponders for racing have been around for a long time.
Google for "racing transponder"
I have never seen a problem with timing when I autocross using light interrupters. Perhaps your timing people suck?
As a race organizer, timing chips are a PIA, it would be awesome if facial recognition could track everyone at the start and finish. We're talking up to 10,000 people though, and you'd have to have a photo on file to identify each person. The finish would be easy, everyone is spread out, but at the start you have a lot of faces crossing the starting line simultaneously. Aside from being kind of creepy, is it workable?
Never let a lack of data get in the way of a good rant.
Since the cars are moving, I'd think a pushbroom camera setup (maybe using the CCD from a document scanner -- not sure if they can be read out fast enough, need 1kHz or faster) would work better than repeated 2D exposures -- less redundant information means you can sample faster, so instead of trying to interpolate between images for exact timing (essentially reconstituting time from distance), you get everything as time directly, and the resolution you get is the resolution you get. You can still recognize cars (read the numbers or whatever) from the continuous strip, but timing is as "easy" (easy for a human, hard for a computer) as picking the first column the car appears in. If you need millisecond-accurate timing, you may well have to let the computer get a best guess, and then manually refine it.
I know this has a scalability problem (i.e. the cost of equipment goes up linearly with the number of contestants) but you could build a self-contained GPS device that tracks a car's position throughout the event. Have it record position information to flash as often as possible (Sparkfun has a GPS receiver that will update position 10 times/sec for US $61). At the end of the event, everyone turns in their GPS device and their position recordings are uploaded into a computer.
Now one may argue that GPS position error could be enough to make the winner ambiguous (i.e. "photo finish"). But position errors due to RF propagation are "systemic", in that they would affect all receivers in the same vicinity pretty much equally. Further, with a large number of position samples and high update rate, post-processing could be done to calculate trajectory of the possible winners as they approach the finish line. It simply isn't possible to accelerate or decelerate so quickly that you can't interpolate position and velocity in the vicinity of the finish line.
For the "systemic position errors", a single reference GPS receiver at a stationary location next to the finish line can be used to determine position "wander" due to RF, ephemeris, selective availability (even though it's off these days) and use this to subtract out this systemic error from everyones' position data.
Would be fun to build :-)
Don't know if it would work in auto sports but sounds like a use for RFID, http://en.wikipedia.org/wiki/Radio-frequency_identification#Race_timing
There are several practical issues with optical systems for automated vehicle recognition- number and class markings are already tough to get consistent without requiring an additional barcode or QR large enough (some competitors would gripe about a huge barcode) to be useful at the 30'+ distance finish line sensors are set back to minimize getting hit by spinning cars. Add in the fact that existing markings some times fall off on course, or competitors in dual driver cars forget to change numbers between runs, and it's tough to be certain you'd have something consistent to try to recognize.
The national T&S system uses a wireless barcode reader operated by a worker in the starting queue to read stickers placed on competitors helmets to register cars in the T&S software. Locally, we position the T&S trailer to allow the operators to manually enter vehicles as they enter the start queue. Human eyes really are the most flexible here "shouldn't 80ES be 180ES?".
I like one of the comments above about a webcam triggered by the finish light taking a picture with a clock display in it. Unless there was OCR to immediately post the result to the software, the results feedback would be too slow for our region- we have real time announcement of finish stats, and the software can post results to a web server real time for smartphone access in paddock. The T&S software uploads a small file to the web server in the 20ish second gap between finishing cars.
Apologies for not offering solutions, but hopefully the extra info about some of the issues can help shape a solution.
This is pretty much a tracking problem, I would use the open source Predator Tracking algorithm to track each of the car simultaneously. The problem I see is if it is going to be fast enough for 100 cars, but it is worth to investigate it. http://info.ee.surrey.ac.uk/Personal/Z.Kalal/ Alternatively, thinking about using open source-hardware as a solution, use the open source Arduino Micro-controller Piece the sensor you need, and you will have your system at a much lower price ! http://www.arduino.cc/
Why not put an RFID tracker on each car? They're relatively cheap and you can store some encrypted identifier in it. Pillar or mat sensors would pick up when the car crosses the line, though it might be a challenge finding sensors that'd pick up a car at 60mph...
Special paint that reflects/absorbs only at certain frequencies. You have a 'stickers' that go on all four corners of the vehicle. The finish line has a spread-spectrum laser array blasting across it. When a car crosses the line, each car is tagged with unique tape. The laser light reflected will be unique to the vehicle. You triangulate the reflected lights timings and use that in conjunction with the wavelength reflected back and you've got a car and you've got a time.
Unique tape on each car. Cheap, replaceable. Not a perfect solution, but some variant of this involving selected emission/absorption is a winning ticket. I made this up in 1 minute and have no idea if there are any preexisting solutions that do this. For the pedants; yes tape could peel off and yes people could cheat some how I'm sure, blah blah blah, and I'm sure there is a more optimal solution blah blah blah, and I'm sure you'll have issues in X Y Z situation with A B C conditions blah blah blah. Go make something better and sell it.
'We are trying to prove ourselves wrong as quickly as possible, because only in that way can we find progress.' RPF
Sounds like you want something that works like the average speed check cameras we have in the UK: http://en.wikipedia.org/wiki/SPECS_%28speed_camera
An Australian security company has developed and is selling to petrol stations and some other businesses a number plate recognition program that is capable (I have seen it in operation) of reading and identifying car number plates with reasonable (98% +) accuracy at a distance of about 50 Metres (Maybe more, but the one I saw was working at that distance) on cars driving on a normal suburban road (speed limit 60 Kmh).
With larger numbers such as the display numbers on a race car, or the vest on a foot racer I don't think it would have any difficulty. And for the racers who 'forget' to change their numbers across multiple vehicles, well I am sure that they could live with their personal results being posted a little later after someone had checked the image generated as they crossed the line.
In some events at the club level in rallying you are disqualified if you are not showing your numbers for the various judges and officials to easily identify you during the race (much as that goes against the general slashdot desire for privacy and anonymity at all times)
da da da dum indeed.
There has been a lot of work for recognizing images in video. Here, if you're smart you should be able to do the recognition given a single still, which means it's just ordinary image processing after extraction from the video.
Make it easier on yourself by making the numbers something like bright yellow on blue with a white border (for instance). Then just look for segments of each image with high response for yellow and blue. Then extract the video and pass it through an OCR tool.
Also, put the camera somewhere like the apex of a turn where they have to slow down and you'll be perpendicular to the side of the car (with enough distance that your camera rig doesn't get creamed).
Guess no one ever wears a full face helmet with a mirrored visor where he plays. Would be much easier to id the car number on the side of the vehicle.
Accuracy hard to achieve. You'd have to carefully track the latency between the webcams image and the software timestamping the video data. Not an easy coding excercise, and would require calibration with accurate timing equipment. This latency also better be stable. I don't know too much about using linux for realtime work but I have heard it has some latency issues at the kernel level that causes trouble for audio pro's.
If you want to do this with a web cam and a bit of code on a linux machine, well 30fps video gets you a lower bound of 33ms time resolution. That's before the camera feeds to the USB data channel, then any gamer will tell you USB has some latency, and then software has to process the image data. High powered laptop and a good camera might be able to do all this as low as 100ms before it can timestamp the data. Image processing for identifying the vehicle can then happen at any time. This would need to be carefully accounted for in deciding who wins a race.
Proper race timing needs to be 3 decimal places, at 200kph (124mph) a 1/1000th of a second ammounts to 6cm of difference. Races are really won and lost on as little as this and often the timing is done even finer.
After logging in slashdot still does not take you back to the page you were on. It's been that way for 20 years.
First, I'm not familiar with car racing so apologies if my observation is idiotic.
The problem I see with having bar codes or RFID measure the time is how the car crosses the finish line. Because the OP mentioned a beam being interrupted I imagine the finish is determined by the front of the car touching the finish line (not unlike any other type of racing) so if the time is measured by a barcode or image on the roof or door then how do you match that with the front of the vehicle. Also, if the time is measured by when a sensor picks up an RFID tag then again you have issues with mat / receiver sensitivity and tolerances in the transponder triggering the sensor.
Because only one car is on the track at a time you do have some wiggle room, I'm sure there would be many ways to accomplish this but it seems like you're already doing what would seem like the 'best' approach:
System where both IR beams are hooked up the same time, beam 1 starts the time, beam 2 stops the timer. Before each car, race official 'initialized' the timer system by entering information about the car racing, this would solve two issues, the first is that it would reset the timer back to zero, the other being that if the previous car didn't cross the finish beam to stop the timer, the initialize process would automagically flag the previous car as not finishing (not sure how that would effect the time for that driver though). You could also put in other beams throughout the course that would give you times up to that point in the race. So, if you have a start beam, mid course beam and finish line beam, the start beam would start the time, the mid course beam would just grab the time but keep the timer going, the finish line beam would stop the timer.
Is this feasible, too simplistic or am I overlooking something important?
Do what thou wilt shall be the whole of the Law - Aleister Crowley
Two cameras? One camera that the cars drive over or under and a 2nd camera perpendicular looking at the side of the same car. Place a barcode on the front of the car... shutter speed would not be so much of an issue as the car would approach the camera for a relatively long period of time. The second camera marks when the car crosses the finish line.
Put large visible marker such as a number on roof or hood of cars. Build arch above finish line. Put cameras on arch facing towards the ground. Film cars going through the finish line. Win fabulous prizes.
I say have you heard of the Boston marathon or near any popular marathon. They attach a RFID chip to the sneaker and record when it crosses the start and at the end. They collect the start and stop of thousands of people on the same day and crossing in large groups out of order.
There is also open source license plate recognition.
You could have every driver use a fingerprint reader and part of the start and finish is the drivers running to/from the car.
I have been working on a racing timing system for RC; https://picasaweb.google.com/104667803940601062545/Spiked3#5624165831383052962 is an older screenshot, but you get the idea. In my research I came across this; https://sites.google.com/site/easylapcounter/home which does recognize based on imagery. Your idea certainly seems feasible. for RC, we just byte the bullet and use the expensive MyLaps (AMB) transponder system ($3000 base + $125 per transponder). I assume they have some huge patent on it because it seems like it would easy and cheap to copy, yet no one has done it. Good luck.
slashdot troll = you make a compelling argument I do not like the implications of.
I think my cell phone can do this already
The problem with magnetic stickers is... Corvettes have fiberglass body panels. :-)
I once ran timing, here are my thoughts:
Personally, I don't think that transponders are expensive, and I think they'd be a great solution which would absolutely fail because of politics. "You mean I have to buy a $100 device (or rent for $5/event) to mount to my $40,000 car that has $2,000 rims and $1,400 tires?!? What do you think I am, made of money?!?"
I suspect you won't be able to do good detection except if the cars stop at the end. That's something you'll have to play with though, maybe you can set up a zone past the end where they have to stop to get recognized, or *MAYBE* the camera can deal with them if they stick to the recommended speed off the track. Cameras are very bad at getting sharp shots of sideways motion though. It'll also depend on the conditions out.
I imagine you will need to use a hardware timing device that runs in real-time and then you can pull the time off in the non-realtime OS. That or you'll need to run real-time OS extensions. Maybe you can get something reasonable out of a hardware interrupt like a serial/parallel port line change. The normal x86 Linux clock is 1ms resolution, and plenty of jitter, so just expecting to use the clock under Linux is probably unrealistic.
These people are as serious as a heart attack about this hobby. Saying "Accurate to within a few thou is probably good enough" is a good way to see exactly how good your insurance plan is. :-)
You're going to have to deal with things like a car leaving the starting line with "185" on it's side and crossing the finish with "85", "18", or even "1 5" on it. :-)
The "Predator" OpenCV system sounds like it would be awesome to try in this situation.
Consider setting up a place where the cars can go to get recognized and their number entered, maybe at the starting line, but maybe a dedicated area. Predator/OpenCV may be able to detect things like the letter that fell off during the run, but it may also mis-detect in some cases. You'll probably need someone eye-balling the start and finish anyway.
Good luck with that. I tried writing up some documentation for how to run the system I at our Autocross after they trained me on it, and I had my ass handed to me...
QR codes are the right idea. The real money you'll need to spend is on the camera and near-realtime PC to process it.
I've had good luck using GigEVision under Linux. There's a bunch of vendors out there that have Linux drivers for their GigEVision cameras and the specialized acquisition hardware is just an ethernet card. You probably want something that goes at least 30 fps sustained (probably about 1-3k for a camera, depending on resolution and bells and whistles). That's plenty enough to be able to interpolate vehicle trajectories between frames to get down to millimeter accuracy, assuming your optics package gives you the resolution.
Webcams are probably a no-go because you'll want higher resolution in order to be able to observe and recognize the codes over a wide finishline area, and USB 2.0 is limited in the amount of bandwidth you can get.
I've heard about systems in cities that read number plates and time you between their different locations to see if you are speeding, I'm guessing a system like this could be used, just a matter of if it is cost effective or not.
Yes, try to do the identification task immediately, but ensure that the system has the needed abilities to deal with problems. Rain, mud, or a bug on your lens could interfere with the intended operation.
Not all vehicles are steel. Magnets might not hold your barcode on all vehicles.
What about putting a simple laser system on the side of the car which, like an IR remote but with increased focus, emits an identifiable code. The finish line could have a detector for this.
The point behind suggesting laser is
A) less likely to be disrupted by differing light conditions which would affect IR
B) less likely to be disrupted by differing heat condition which would again affect IR
C) By placing them and exact distance from the front of each car you can be sure of accurate measurement.
Should be possible with an off the shelf laser pointer for the emitter, coupled with an arduino or similar to get the signalling.
Detector would need to be an array of optic sensors in the wavelength range of the emitter, and again probably simply an arduino to decode the signal, and send the details to a controlling PC/Laptop
http://www.robotroom.com/Laser-Detector-Remote-Control.html could be a starting point for the reciever system.
Seems that RFID tags on the cars would solve that. No need to use facial recognition software - too complicated. In the railway industry they use barcodes on the side of railcars to keep track of them. That's another inexpensive idea. Just have the cars go single file through a laser barcode reader or through the local supermarket checkout...
Disclaimer: I am a roboticist studying computer vison. This is very easy. Get one overhead camera over the finish line. Put a QR code on every vehicle (or even better, a scale invariant marker, or even just a solid color if you have few enough vehicles). Crank down the exposure time on the camera until it can just barely see the codes as a car passes underneath it at speed. This might require you to purchase a somewhat higher speed camera. If you can't do that, consider pointing the camera away from the finish line so that the camera has more time to see the cars coming. Find the transform from the camera to the finish line. The line forms a plane in space pointing orthogonal to the ground. The camera then detects every car just before it crosses the finish line. Project each QR code into the camera frame with OpenCV. When they cross the finish plane, they've won. Simply count off the QR codes as they cross the plane.
TSA employees need help.
They need a great amount of help.
On a day to day basis, 90% of TSA employees can't recognize the difference in Caucasian and Negro.
It may be that 90% of TSA employees are ... mixed race.
The may also explain why TSA employees can't distinguish between a gun and candy, that in a carry-on bag.
Oh dear.
What exactly is the problem here?
Was already mentioned in the summary question. Transponder location is the problem. You fall down on the detection of where the finish line is.
do you have to id the driver/car and get the timing at the same moment? In athletic races over distance eg marathons etc finishing competitors are timed over the line then enter a 'funnel' where they sort themselves into order and are id'd . it works even for very large numbers of competitors. so for your races you barcode each driver, id him at the start. time him at the finish then id when he stops. can be done with a pair of handheld scanners. if your competitors aint gentlemen set up a photo finish camera to resolve disputes.
Find me someone intimately familiar with an Android phone, or barcodes, or RFID, who can also grok basic SQL, and somone intimately familiar with the particular practical difficulties of SCCA timing, and I'll have your solution in-place, tested and working, before lunch.
This isn't rocket surgery.
(And if you give us until supper, it might even have a fancy web interface.)
Kid-proof tablet..
the timing and identification of race entrants or individuals is a very easy thing... this has been solved using RFID tag's to identify the entrants and the same timing devices to actually do the timing...
"The normal x86 Linux clock is 1ms resolution, and plenty of jitter, so just expecting to use the clock under Linux is probably unrealistic."
Every PC has an internal timer that runs at over 1MHz. Use the beam break to trigger an NMI and read the 1.19318 MHz clock value.
BTW, you can use GPS receivers on the start/finish PCs to detect (and compensate for) any significant clock drift at either end.
How about a big QR code on each door and a camera hooked up to a laptop at the way-points?
I can think of three options:
1) Expensive, but available immediately:
There is license plate reading software in use on highways in Europe. These turnpike systems use cameras to read the license plates and LIDAR 3D laser scanners to reliably measure the size of a truck. The lase information should provide very reliable timing data, but likely are an overkill.
As others suggested special markers on the cars could be easier to identify then license plates.
2) cheaper in development but higher material cost for each race
Put an android phone with GPS in each car and write a small app that tells the measurement system when they are approaching the goal line.
3) very low deployment cost but more development cost
Paint an reflective bar code on the side of the car. A fixed laser is pointing across the goal line. Connect the light detector picking up the reflection to a sound board. This will give you 25us accuracy on the timing and the pattern of the reflection will tell you which car it is. The system will even get you a very accurate speed measurement.
Options 1 and 2 only tell you the ordering of the cars. Detailed timing must be measured with another system. It might be sufficient to interpolate camera frame data.
Based on a beam triggered start and finish you could use a still camera with a timestamp and a clock in sight. At the same time place a tag on all cars on the same height and distant from the front of the car. Combine a visual tag with a RFID tag in one and you have double signalling of both start and finish. Comparing those two can be done in milliseconds when connected to a laptop and only uses a networked connection between the two laptops.
I would couple the beams with RFID tag (tag identifies the car, while the beams do all the timing). I would also suggest maybe getting together with another club and sharing the gear or a local university (with this one could probably get them to help make up a good system). As long as you choose separate race days. I'd also imagine quick setup and dismantle is needed?
Get two line lasers. Modulate the beams at 20kHz for the start beam and 22kHz for the finish line beam. Direct the beams from overhead down to the start/finish lines. Design a timer/detector (I'll volunteer whenever I have time!) whose receptor is at least 1 inch in length and mount that to the top of each car. Each detector also has a small radio transmitter and a unique ID code.
When the car passes under the start beam the timer is started and is stopped when under the stop beam. At the stop beam the transmitter sends the ID and the E.T. (staggered so no 2 cars would omit at the same time).
Now, this isn't one of those races where the cars are covered in mud at the finish line, is it?
If I didn't have absolutely NOTHING to do, I wouldn't be here.
Stick a different 2D barcode on each car, mount a camera in a location that can see the barcode at the finish line. When the car crosses the finish line, take a picture and search for the barcode.
So many things missing from the OP's requirements like:
Must work in ALL weather conditions (fog, rain, snow, dust)
Must be accurate to 1 ms
Must identify which DRIVER is in the car as more than one person may be driving any given car, and drivers may have full face helmets
Must handle backward/spinning/sliding finishes
Must process in near realtime ( 20sec between finishes)
Must handle multiple cars on course at once (at least 3 running)
Must handle GoKarts and other strange pieces of machinery that may not have roof/hood/doors
Portable/Lightweight/Packable
What else is my caffeine starved brain missing?
I'm your Huckleberry.
Cat got your tongue? Don't want to spill the beans?
Why not outline some basics of your design and we'll help identify where the weaknesses are. Cause there's a HUGE hole there right now...
I'm timed races with AMB systems and I own an AMB transponder for my race car, which are more expensive than the RC versions. The problem is front money. But my old region had dozens of transponders that they'd rent to participants for a nominal fee. I'm sure they made up the cost of a transponder from the rental monies.
Why not break the problem down into two parts?
First, use the existing photocell equipment for timing the vehicles start and end times. These are cheap and proven; I know a lot of autos clubs use or have previous used these. Second, use your web cams at the pre-start and cool down lane to grab a face to ensure that the start and stop times correspond to the same driver. Then the system can adjust for cars that DNF, and you could probably figure out the problem of someone walking through the lights in software.
Every auto-x I've been to has a starter. Just have that person ask "Ready? Ok, look here for your picture" and send them on the course. Remember that you'll also want to be able to identify the drivers AND the cars for cases where two drivers share a car (which is no uncommon in my area). Car is also important to make sure the specific driver is driving the right car for the class entered. Also add a camera to the cool-down lane and have a person there, or design the lane such that people will be looking at a certain spot, your camera.
Failing that, what about RFID tags? Swipe on course, swipe off. That could be cheated, so perhaps the webcam could be backup enforcement of the actual driver.
After all, it works in the Free Market
2d-Barcode markers should be cheap to produce and to detect. Look for open source projects about 2dBarcodes and Augmented Reality. You can however build your own marker detector with OpenCV , e.g. with the Haar-Wavelet-Adaboost methods or Surf / Sift matching. For just about 100 different single markers, a per-frame detection should do the work without the difficulties of motion detection and segmentation. I would consider methods for which GPU-implementations exist.
To overcome shutter and focus speed problems, employ big markers and put the camera far enough. Make shure you record the proper time stamps as your max. frame processing rate will normally fluctuate. Employ different threads for frame capture and procesing. For increased time accuracy you should be able to interpolate between consecutive detections. You may also employ a Kalman Filter for this.
Hope i could help.
greetings
What about this combination?
1. IR beam at the starting line (and at the finish line too if it's not the same location), connected to a timer.
2. Identification magnet on the hood of each car
3. Video camera aimed down and towards the starting/finish line so it can see cars approaching.
The IR beam provides the official time, and the video camera and ID magnet combination (with image recognition) provides the correct starting and finishing order.
Then you just correlate the order and the times. This system works for races where cars start and finish in the same order and also for races where they don't, as long as they move through the line one at a time.
Starting order: A, B, C, D
Starting times: 0s, 3s, 6s, 10s
Finishing order: A, C, B
Finishing times: 405s, 412s, 427s
So you know A's time is 405-0, C's time is 412-6, and B's time is 427-3, and that D didn't finish.
Just out of curiosity is there why you are focusing on image recognition as opposed to other methods of timing? I know that in bicycle racing it is fairly normal to hand out RFID tags and that tracking sensors were used at the start and finish lines. I am not sure of the exact costs of such a system, but with registration costs for ride being so low (30-40$), it can't have been too expensive.
Light beam gives accurate timing. E-Tag (as used in motorway tolling) identifies the car. http://en.wikipedia.org/wiki/E-TAG http://en.wikipedia.org/wiki/DSRC Software matches the potentially less precise E-Tag activation time to the accurate light beam detection and you have your car and time recorded.
I don't know how timing is normally done for auto races, but I've been part of the staff at a few track & field events, such as the Nike Indoor Nationals, and seen how the timing is done there. There's a special camera that captures a single column of pixels, carefully aligned with the finish line, that records a rapid sequence of images whenever something changes in its field of view. The software assembles all these one-pixel-wide images into a single image whose horizontal axis is time rather than space. You can clearly see each runner, though arms and legs often look a little curved since they're moving as they pass through the plane of the finish line. In particular, the ID number tags worn by each runner are clearly visible.
Recognition isn't automatic, but it doesn't need to be. The operator just clicks on the front of each runner's shoulder (the part that "counts" for finishing the race) and reads the number from the runner's ID tag, and the time value associated with that column of pixels is recorded as that runner's finish time. So there's a human delay involved in matching the time measurements to the runners, but no human delay in the measurements themselves.
The company that did the timing at the races where I worked was CFPI Timing, and the tech page on their website has lots of details. Apparently the camera system I described is made by FinishLynx.
Several posts have objected to the frame rates of consumer video cameras as limiting resolution. However, this can be overcome.
For one, there are high-speed cameras with much higher frame rates. They are quite costly, though, and not necessary for this applicaiton.
I propose you use a multiple-exposure camera. Such things do exist in the digital world. Charge is allowed to accumulate for an extended period. You use a strobe to produce multiple images. You can use an infrared strobe to avoid disturbing participants.
In either case, much more light will be needed than with conventional video, because of the short exposure times. So, I don't know how practical this would be in terms of lighting.
I have experience with this technique in another sport, that involves hitting a small ball on a grass course... Said balls can travel at 100mph or higher, so we are in the range.
Contestants (be it cars, people whatever) have an RFID tag (probably passive, 900Mhz RFID) in a name tag or other tag (tag on dash of car) that will give you decent interval timing.
For the finish line, or where timing is more critical, you can supplement with a camera (photo finish if you will).
900Mhz RFID is typically good for 15+ feet (depending on the size of the tag) and can be used reliably up to about 45 feet (big tag on big metal object - like a rail car). Tags can be very cheap - about 25 cents. To 'track humans' you need to keep the tags off the skin (skin detunes/absorbes RF energy) so you need a slightly thicker name tag (foam backed) for reliable reading at range.
Oh, and its already been done. I believe runners right now use a low frequency RFID tag tied to their shoe laces and they have to run over a mat. Low frequency RFID is based more on magnetic fields - thus short range only.
As for cheating, the top competitors in a marathon are watched pretty carfully and their are lots of witnesses. The people running it for themselves.... well who cares if they cheat. Sorta like using an aim-bot on single player mode.
TODO: create/find/steal funny sig.
http://www.automaticnumberplaterecognition.co.uk/
"Don't belong. Never join. Think for yourself. Peace." V.Stone, Microsoft Corporation
First time poster....
I have done timing for the World Rally and many other rally events. For events where cars go over the same bit of track multiple times (ie circuit racing) transponders are the only way to go. For events like the WRC - there are so many things that can and do go wrong that only humans can really do the job. Our timing is based on cars being sent at specific times - but we don't really care what the start time is. It gets written on a card for the competitor to take to the end , and also it is sent from the start to a central control location - for the WRC via UHF or satellite data uplink.
At the finish point the car breaks a light beam recording a time - we then enter in to the control unit at the finish the car number - the time is provided by a GPS synced clock. At the speed some cars are at (200kph nearly at times!) the numbers are a bit hard to spot so we have backup radio to the stop point. The cars stop time, once a car number is entered, is sent via wire to the stop and the time is given to the competitor. Some maths is used to convert the start and stop times to an overall stage time. At the same moment, it's uplinked from our point via satellite or UHF radio. There is backup manual timing in case light beams fail & battery backup for the equipment. It's all timesynced to GPS, and all times are printed out on paper tape. Our timing gets live to the Internet within about 15 seconds of a car completing a stage.
The biggest source of error in this so far I have seen is the human factor - ie entering the wrong car number at the end. Easily fixed by the timing people at base.
The systems works because it's simple, despite the high tech time sync being used. You don't want complicated because complicated stuff will fail. If everything failed for us for timing uplinks , timing equipment etc, we can fall back to simply looking at our wrist watches to put time of day in - as long as the same data source is used for timing everything works because it's all about relative timing and not absolute (who cars if car A did the course in 5:53.03 - all we need to know is did car A beat car B and by how much?) . We can't use transponders in case a car gets damaged on the way through the stage. I did a rally once where transponders were used and it was so much more work because the things failed all the time!
My point is - I wouldn't be bothering building things based on image recognition for your race timing. Keep it simple and use something like the WRC system for your timing - all you need is some time sycned printers, some light beam detectors and a bit of smarts from your people doing the timing. Image recognition in these circumstances isn't ready yet.
You're on the right track here, but let's divide the task into subtasks.
We don't need to produce a fully automated solution at the first iteration, so we set up the webcams and the beam-gates with synchronised clocks. Post-race, the software is used by the marshalls to verify timing thus: it lines up a table of screen grabs, each row representing what it thinks is one car, the marshall clicks "OK" if they all match, or either clicks a button to identify a "drop out" (at which point the following photos are shuffled down to following rows) or an overtake (in which case the remainder of the row is switched with the corresponding images in the next row).
This solution is dead straightforward and lets you use the equipment and optimise webcam position for clear images, and gives you an immediate efficiency improvement, rather than moving straight to a completely new automated setup that will undoubtedly fail and probably be rejected by the competitors and organisers as being pointless.
When you find a suitable OCR or barcode solution, you will have the infrastructure in place to run it in parallel with the computer-aided-manual process, so you can iron out the difficulties without causing any serious disruption to the administration of the race.
HAL
Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
I'm also an autocrossing software engineer. You won't be using computer vision for timing; existing light beam systems work great for that. You do need to relate a finisher to his or her starting time, though. I think the solution for CV would be low-resolution magnetic targets, a la augmented reality targets. Dole them out at registration. You only need enough unique designs to cover the maximum attendance you'll ever see at your local/regional club (maybe 200) plus enough to account for loss over time. The camera goes to the side of your stop box, where (depending on your club's rules) the car has to come to a stop or a slow roll anyway.
Magnets don't work for Corvettes/Saturns/Sonnetts/Luminas (yes, minivans autocross too), so you need a couple of extra plastic targets that can clip onto the driver's window slot or something. And this doesn't help you when a car has multiple drivers and driver B forgot to take off driver A's target and substitute their own before entering the course.
Soaring (i.e. sailplane) competitions use GPS. A logger stores data during the race and the file is appended with a check code to ensure there is no data tampering. The file format is called IGC. Sailplanes don't have a problem with multipath (not sure about multipath issues for the kinds of races done in autocross) but you could run some tests using commercially available IGC loggers.
Jack.
Why bother with image recognition? It's likely to fail at some point, people will point the camera right at the sun, etc.
Use the beam for timing, and use an RFID tag to identify which car passed through the gates. The rest is just a software issue. Make sure the data is stored for all start and finish times and that finish times can be re-assigned if there was an error. RFID is pretty cheap, very reliable and you won't have to modify the system already in place very much.
...with a high number of FPS.
In case of doubt over who won the match, replay that video on frame-by-frame basis.
Get a digital camera, that can be triggered externally, with low (and known) latency.
Use a flash. It will 1) eliminate the need for shutter speed and 2) illuminate the scene so the camera can use a small aperture, and not need auto focus.
Use barcodes as identifying symbols - there is plenty of barcode scanning software. Turn it "sideways" if needed for further robustness against motion blur
Print the barcode on a reflective material. Then it could easily be the brightest spot in the photo - easy to identify.
Moncler Moncler Schal & Mütze Clothing can be the name Moncler Frauen Stiefel to get used to when you Moncler Herren Schuhe need to own one of the most Moncler Pullover Frauen effective except to have the Moncler Handtaschen ability to raise your visual Moncler Kids element and personality.