Showing posts with label ALPR. Show all posts
Showing posts with label ALPR. Show all posts

Saturday, August 8, 2009

"My God, It's Full of Stars"

One day a couple of months ago, something wonderful happened. It was a friday; the end of a very long workweek. An arduous week - I'd been working overtime to get high-performance ALPR working in Australia (namely New South Wales, Queensland, and Victoria), the trains were not cooperating, and a lot of energy was spent trying to arrange to buy our house. It had been rainy and cloudy the whole month - not exactly a good summer. By the afternoon of that friday, I was beat. Spent. A lifeless husk.

Four o'clock finally came, so I grabbed a beer with my colleagues and executed a final superhuman effort to get the software written, vetted, and out the door before the weekend so that I could rest easy for a few days. I groaned and sweated as my fingers punched the keys, and I reached the last few keystrokes. Committed the code. Executed the build/release script. Hit 'Send' on an email to the guy who delivers code to customers.

Done.

When I exited the building the clouds finally broke, and the sun spread cheer across the village. I unlocked my bike, got on, and started rolling down the street. The clouds had turned to white wisps in the broad blue sky, and the sun was a bright lance high above. All of a sudden, I was surrounded by glittering light all around. Large shining drops falling in sheets around me. I spread my arms and soared through a great galaxy of shimmering diamond rain, weaving lazy splines over the empty village streets.

The moment, like all good things, ended without fanfare or tragedy. The rain diminished to a drizzle, then stopped, and those wispy clouds passed over the sun and unsaturated the early summer blooms.

I thanked the great cosmos for granting me this experience and for allowing me to appreciate it as a reward for a hard job well done, and continued to the train station to go home.

Sunday, May 17, 2009

Euclid's Vegetables

I thought I'd explain the title a little bit.

A couple of days ago I was coding up some graph making algorithms to visualize the automatic geometry deriver I'm working on at work. I should maybe explain (for those who don't know me) that I work on automatic license/number plate recognition (ALPR/ANPR). Part of it is to check whether the registration number we THINK we read actually makes sense, and part of THAT is to check whether the numbers and letters we think we read are located in the correct spot relative to each other. That's geometry checking, and it's not easy. The difference between some guy in Alabama getting a $20 ticket and some guy in New Mexico getting it can be down to two pixels... and multiplied by tens of thousands of passages per day ... you probably get the picture.

I digress.

Where I was going is that I wanted to draw a little box around the standard deviation on the histogram of errors that our derived model produces in the learning process. Then we can visualize how quickly it learns in a nice, comprehensible way, while it's busy doing it's thing.

Standard Deviation is, of course: SQRT( SUM_OF_SQUARES / NUMBER_OF_SAMPLES ). Easy enough, right? So I type it in, compile, and watch the value explode waaay off the scale. Huh-whut? It turns out that our C library thinks that SQRT(x) is actually x*x...

So, that got me on a train of thought that started with square roots, rolled along the etymology of "root", entered a tunnel containing the life and times of Euclid of Alexandria and his book about geometry and the properties of squares, and exited somewhere in the neighborhood of variance squared.

In other words, I went beyond square roots, all the way to... Euclid's Vegetables.