"In the world ye shall have tribulation: but be of good cheer; I have overcome the world." –John 16:33

Category: Technology Page 8 of 9

Christian’s undergraduate research

Day 376 of 1000

Christian asked his Electrical Engineering professor what he could do to get some undergraduate research in the EE department.  His professor told him to get in touch with the EE head of graduate programs who got the word out that there was an undergraduate math student who would like to do some research.  From there, he got two interviews, both of whom gave him an offer of work.  He would like to take both, but I doubt there will be time for that.

The latest offer would give him three hours of independent study research credit gathering data with a spectrophotometer.  It might even lead to paid work.  It is under a young professor who got his PhD from one of the top two optics school in the country.  That would be an awesome opportunity because it is real research aimed at discovery and he would be gathering primary data.  The first job was also quite good because it would give him an opportunity to hone his expand on his Python programming skills.  I am not sure that would turn into anything other than a software maintenance job, but programming experience never hurts.

License plate reading: The template to find the plate works great, but needs some refinement

Well, I got the template matching going this evening.  It works great.  It is very forgiving for size and angle as can be seen by the images below.  The thing I really need to do next is get a somewhat bigger sample taken of cars pulling up to a fixed location so I can better characterize the size of the plate in the image over a fairly large range of cars.  The image of the pickup plates were taken further away than for the car.  There was variability in both angle and size for all the plates, but the same template set was able to find them all very well.  I have a few cleanup things I need to do before I move on which include some speedup work and some precsion improvements.  I am searching in rotation right now, but not in scale.  After I see the more controlled sample set, I will know whether I need to add scale.  After that, I will move on to segmenting the individual characters.

Found plate - car image 001

Found plate - car image 002

Found plate - pickup image 001

Found plate - pickup image 002

License plate reading: Handling plate rotation

Day 335 of 1000

Today, I was able to build an “on-the-fly” template that handles ±5º of rotation.  I just have the template search complete, too, but I do not think I will get it completed before the end of the evening.  Here is a GIF animation of all the patterns for the template search described yesterday.

Rotated license plate template gif

License plate reading: Using a template to find the lettering

Now were getting to the fun part.  I am going to start trying things, one by one, to try to find the lettering on the license plate.  The first thing I want to try is template matching.  From the very limited sample set, I can see that the license plate letters can be turned into a block of white (uising previous preprocessing combined with some morphology) like this:

and like this:

My thinking is that to start with a template that looks like the white rectangle in the image below.  I generated it automatically based on the relative size of a license plate (12″x6″) and the width of a typical car (6′) and the distance I measured between the outsides of the brakelights.

I will have to rotate the template +/- five degrees and apply it multiple times to find the best match, but that will go pretty fast.  My hope is that it will give me a repeatable, robust position of the center of the license plate.  If it does, I will try to start separating the characters.  If it does not, I will try a few more tricks.

License plate reading: Narrowing the license plate search area

Day 329 of 1000

I had a little time this afternoon to play with the images I generated yesterday.  You can see the previous steps I took to get to this point here.  The first step I took was to find the brakelights based on yesterdays images.  That was not too hard, but I am going to have to spend some time to handle the variability in brakelight sizes, intensity, and shade.  Nevertheless, it is definitely something with which I can work.  Here are the brakelight finds for a couple of the sample images:

Back of car - brake light find Back of pickup - brakelight find

From there, I established a search window within which to look for the plate.  I put the search region at the bottom of the image which is something I will have to adjust, but I should be able to narrow the window down both horizontally and vertically without too much trouble.

Back of car - plate search ROI Back of pickup - plate search ROI

The next step will be to “robustify” the brakelight finder and narrow down the search region for the plate.  It might take me a week or so to get back to this as I have lots of stuff on my day job right now.

License plate reading: Great progress in finding the plate

I spent several hours today working on some of the preprocessing I think might help me find the license plate on the back of a car.  As always with this type of problem it is good to start with a few easy cases to help lay some of the groundwork.  That is exactly what I did.  I got a few of images each of the back of a pickup and the back of a car to use as my sample development images.  Here are a couple of sample images so you can see what I am talking about:

Back of car - original Back of pickup - original

My first thought in looking at the images is that there are a lot more edges in the area of the license plate than in other areas of the image so I ran a Sobel magnitude on the entire scene to see if that idea held water.  The following are the Sobel magnitude images:

Back of car - sobel magnitude Back of pickup - sobel magnitude

I was right about the license plate lettering, the sobel magnitude image shows a high density of edges, but the proble with this is that there are other high edge density areas of the image.  What I needed was a way to narrow down the number of edges so I decided to separate the veritcal edges from the horizontal edges.  The horizontal edge image was pretty worthless, but the vertical edge image diminshed many of the extraneous, non-licencse plate edges while still maintaining high density in the are of license plate.  The following are the vertical and horizontal edge magnitude images for the car:

Back of car - horizontal edge images Back of car - vertical edge images

So we are a lot closer than when we stared.  We could probably do some morphology coupled with connectivity analysis (blobs) and have a pretty good probability of knowing the position of the license plate for these particular cars.  After thinking about it for awhile, I thought I would try one more thing to narrow down the search area for the license plates.  One thing we have going for us is that the license plate for legal cars should always be somewhere between two red tail lights.  So the next step I thought it would be good for us to take is to create an image that maximizes the red channel and suppresses the non-red area of the image.  On these two cars, I got some pretty amazing results:

Back of car - red maximization/non-red damping Back of pickup - red maximization/non-red damping

We got very good results.  Almost everything in the image is dark with the exception of the red tail lights of the vehicles.  The letters on these license plates just happen to be red, so they showed up quite well, too, but not all plates have red lettering.  We will have to see what happens on red cars, too.  Still, license plate lettering has a finite number of colors, so we will be able to use that to our advantage in the future.  I think we are at a point now where I will be able to combine the information from the vertical edge image and the red channel maximized image to start looking for the plate.  I will do some image cleanup (morphology and other filters) along with connectivity analysis or area image statistics to isolate the plate.  I will probably do that next week or whenever I get a chance to get back to this.

License plate reading progress

I thought I would put up a brief update on the license plate reading project.  The first thing we have to do is gather a bunch of images of the backs of cars in the right setting.  I have made further progress on the application to do that.  Our plan is to send out a camera and a netbook computer with some mounting hardware to my cousin in Oregon how is starting a new drive-through business.  We will set up an ftp site in our office to gather images for a development and test data set.  The business in Oregon is not yet open and we will probably not be ready to send anything out there for a couple of months anyway.  Still, we have a good start and I am capturing images from a webcam.  The next step will be to use an industrial machine vision camera rather than a webcam so it can handle life in the wild.

I am doing most of my programming on a Windows laptop, but also have my Xubuntu netbook which will be the delivery platform.  I have a microcontroller for digital I/O hooked up and talking to the windows laptop.  Tomorrow, I am going to get that going on the Xubuntu netbook if I have enough time.

New license plate reading project

Day 294 of 1000

I talked about a new project on which I am about to embark.  There will be a part of this project that is not so technical, but more business/touchy-feely/people oriented, but we have to start with this.  The touch-feely part will not start for several to many months.  Still, we have to do the technical part before we can get to the people oriented part.

The first part of the project that belongs to me is the reading of license plates with an embedded Linux computer.  I have a BeagleBoard XM that will work just fine.  It has four USB ports to hook up cameras and works great with eLinux.

BeagleBoard XM for license plate reading project

BeagleBoard XM

 

I have hooked up a keyboard, mouse, and monitor to the BeagleBoard for development.

BeagleBoard with keyboard, mouse, and monitor

BeagleBoard XM development setup

After everything is developed, none of that stuff will be attached.  The only things that will be attached are two cameras, one for license plate images and one for snapshots.  More about those snapshots in post that will not appear for several months.  Right now we are concentrating on getting the system to read license plates.  Here are the cameras we will use to do the development.  I am not sure we will use them for the final product, but this is how we are going to start.

Cameras for the coffee development project

Imaging Souce cameras to hook to the BeagleBoard XM

The system I develop will report the license plates numbers to a second computer.  I will use a EeePC netbook as the computer server that receives the license plate numbers and images from a snapshot after they are read.  Both of these computers will run the Xubuntu operating system.  In real life, the EeePC will not be the server with whom the BeagleBoard normally talks, but I need something to emulate the process while I develop the license plate reading capabilities.  I am going to try to use Xubuntu on the BeagleBoard for this project.  I will have more to say about that later.

EeePC netbook to act as a development server for coffee project

EeePC to recieve license plate numbers and images

Christian comes through with the Lego NXT

Day 169 of 1000

Lego NXT tire inspectionIn my day job, I am working on a product that performs three dimensional scans of all kinds of stuff with a product called a Gocator made by a company in British Columbia named LMI.  There are a ton of tire companies around here that want to look at their tires with 3D machine vision, so we needed a demo.  Christian came to the rescue by building up a tire presentation system with his Lego NXT set.  It works great.  The tires that came with the kit have tread and raised lettering on the sidewalls, just like real tires.

It works like a champ.  I will talk to my boss this afternoon about buying two or three sets to use for demos.  Maybe I can get Christian a job building demo stuff for us!

Thursday in Roanoke while Lorena fights Microeconomics battles

Day 157 of 1000

I am scheduled to put over 1000 miles on the pick-up this week.  This morning, I am writing from a McDonalds about a half an hour out of Roanoke, Virginia.  My understanding is that I will maintain this fairly crazy travel schedule through the end of March.  I have a trip to British Columbia the first week of April, then, hopefully, I will only need to make a couple of road trips per month.  I get a little bit fried from sitting in the pickup for so long with only restaurant food and very little exercise, but going out to meet customers, look at their machine vision applications, and try to find solutions is absolutely invigorating.  I am working on a bleeding edge technology to solve a new class of problems that have been waiting for a solution for a long time.

The solution involves the use of a regular machine vision camera (imagine an industrial, high quality webcam) which captures 2D images to create 3D images with the help of a line laser.  The technology has been around for a long time, but now a company has packaged it in a way that makes its use in generic applications very, very much easier than was ever possible before.  My company has given me license to develop a product around the new technology and I am enjoying it immensely.

In some much more interesting news, Lorena’s Microeconomics professor asked the whole class to prepare to draw some graphs that describe Microeconomics concepts on the whiteboard in front of the class.  He did a really bad job of describing the concepts so no one in the class was prepared to draw the graphs except Lorena.  Lorena was prepared because, when she could not figure out what to do, Christian showed her the Khan Academy Microeconomics videos.  She was the most prepared of the class, so the professor picked her first, then (according to Lorena) he with ridicule through two of the examples.  I was getting pretty exercised about the whole deal until she told me he was not really mean, just demanding and he did it to the whole class.

I am really sad that Lorena cannot draw like Kelly because it would be great to have a drawing of him for this blog post.  Lorena, if you read this, next time you are in class, take a surreptitious photo of your professors with your cell phone so Kelly can draw them for her (and my) blog posts.  Lorena describes the guy as a fat, bald guy with long hair who looks like he might be very comfortable on a Harley Davidson.  I like the guy already and wonder if he has any tattoos.

That Khan Academy thing reminded me I want to ask Kelly how many Linear Algebra videos she watched today.

My last day at Bioptigen

Day 113 of 1000 (212.8 lbs.)

You will notice that I was shamed into putting my weight back up again (Thank you, Wendy–hold my feet to the fire!)  The problem now is that today is my last day of work here at Bioptigen.  They will take me out to lunch as some place really good, probably the Carniceria around the corner that has a working man’s Mexican restaurant with handmade corn tortillas.  How can I resist that?  I think it would offend everyone if I did not eat a couple barbacoa tacos.  So, I will skip breakfast this morning in hope that I do not shoot up five pounds.  They really should start a research project on my energy conversion.  For every pound I eat, I think I gain four or five pounds.

My stay at Bioptigen has been great.  The work was interesting (image processing algorithm development for ophthalmological optical coherence tomography), the people were really great, especially my new Russian friends, and I will miss it a lot.  I hate the last day of work at a job after I have made good, hopefully lifelong friends and done very interesting work.  I always wonder whether or not I am making a mistake, but the new work is also interesting with great people, and what appears to be more opportunity, so I am looking forward to it.  I will talk a little about my new job tomorrow.

Finals week and Economic Animation

Day 112 of 1000

This week is finals week at Wake Technical Community College.  Everyone in the house except me studied for finals.  I worked on a project for my new job which involved mostly study about a new product.  I am going to be glad for three weeks of non-study activities starting next week.  The one fun thing that happened this weekend was Christian’s Macroeconomics project.  He had to put together a brief video of some macroeconomic principle.  The first pass was not so good, so he decided he would try to learn how to do animation and use that to smooth over the rough spots.  This is what he produced:

Update: He did it in Linux with Kdenlive, Inkscape, pencil, paper, scanner, and his Nikon d90.

NC vs PNW Observation by Andrew

At lunch today, Andrew mention that when he lived in Seattle he was very impressed with the way the government provided online support and information for things like the DMV, the tax office, etc., but how that when he walks into the office or call on the phone to get help, there is either none or it is surly, lazy, and passive/aggressive.  With North Carolina, it is just the opposite.  Online infrastructure is not so great, but the people at the counter or on the phone are happy, helpful, and kind.  Amazing.  It is absolutely true and I prefer the latter most of the time.

Stepan’s theories on the space shuttle

Stepan, my Russian, chemist friend and I got into one of those discussions common to rooms full of engineers: the relative benefits of the different ways to go into space.  He has a very interesting theory.  The mundane part is that it is cheaper to send up rockets than maintain a space shuttle fleet.  The really good part is that he is against the private sector getting to deeply into making rockets for space travel.

He says, “Can you imagine, the next thing you know, we will have an atomic exchange between IBM and Cisco!”

I lied about Christian’s computer–he did even BETTER!

Day 101 of 1000

Lenovo x220 i7 8GBChirstian’s new computer is amazing. I do not think you can really appreciate until you hold it in your hands. It is a small, thin computer with a world class keyboard and an unbelievable screen. It is thinner than most netbooks and has a slightly bigger footprint, but it does not feel anything like a netbook.  He got the i7 version of the x220 and 8GB of RAM, so this thing is a monster performer for anything in this type of package.

I am really glad Christian did not get the tablet version of this model (Worries:  the mechincal sturdiness and screen appearance) nor the Alienware (Worries:  build quality, keyboard, and form factor) for which he had originally planned.  This is the type of computer about which people will marvel on airplanes.  I am envious.

Results from Igor’s turkey cooking theory

Day 95 of 1000

Results from Igor's turkey cooking theoryWe used Igor’s temperature differential minimization technique to cook our turkey this Thanksgiving and came out perfect.  I would like to say that the results were conclusive, but I do not think I can.  It is going to take a whole lot more experimentation.  Here are the reasons:

  1. Our previous method was good enough to get our turkey right about 75% of the time anyway.  This might have just been one of those times.
  2. Eric’s pressure differential method was so appealing that we could not resist adding it to the mix.  Given that the control for this experiment was a method that managed neither temperature nor pressure differential, we are going to have to get help from Eric next year to design an experiment that helps us determines what percentage of the contribution to perfectly cooked, moist result was contributed by minimized temperature differential and what percentage was contributed by was contributed by minimized pressure differential.
  3. Now that we know that gravy comes from gravitational differential equalization, we tried to apply that theory, too, but were not sure we got it right.  Bryan’s level of technical sophistication on this topic far surpasses anything the rest of understand.  We will probably need several years of lessons from Bryan before we can get enough of a grasp of the concept to even be able to think about how to design an experiment to optimize it.

Stay tuned. I am going to try to develop a collaboration on this for next year.

How gravy got its name

Blind babyIn the Igor’s turkey cooking theory post, Bryan made a comment that was truly educational.  In spite of the fact that he handicaps himself by using a Mac, his technical skills are so finely honed that none of the rest of us can do anything more than compete for second place.  I just had to share this comment about how gravy got its name.  It helps to read the post and all the comments to get some context.  You have to admit we are out of our league, Eric.  Here is the comment in all its glory.

I see you’ve covered the temperature and pressure differential’s, but you’ve left out the most critical: gravitational differential!  Immediately upon removal from the oven, the turkey, while still in it’s pressure differential sack, and before the temperature differential returns, should be inverted 180º (as in orientation, not temperature), for several minutes while cooling, to overcome the gravitational forces on the moisture that existed while cooking.  Any moisture that remains in the pressure differential sack, after the aforementioned gravitational differential reversal, becomes gravy.  (NOW you know why they call it gravy.)

NCSU tuition increase causes serious hardship

NCSU caused hardshipNow that we found out NCSU is going to make dramatic tuition increases, Christian has decided he is going to make do with the equipment he had.  RWDub’s Reviews will be quite happy to know he uses Linux Mint on a USB stick to run the computer and persist his data between boots.  There is no money even for a hard drive.  It is good thing we had that old cardboard box from when we could afford to buy stuff from Amazon.  We are going to have dig up a mouse somewhere, too.

Cardboard box computer

Computer travails: Why we are not rich

Day 89 of 1000

When it rains it pours.  Between Kelly and Christian, there are five research papers that need to be written between now and November 30.  That means most of Thanksgiving break will be spent at the computer typing.  In addition to that, there is math and physics quiz, test, and lab preparation.  Now, when I was in college (I cannot believe I said that), we did all of our studying out of books.  The kids still have their books, but they rarely even use their math or physics books as reference.  They do their homework at online services like WebAssign.  If they get stuck, they visit places like PatrickJMT and Khan Academy for tutoring and examples (they like PatrickJMT best).

So, earlier this week, Christian tells me his computer power cable is broken.  Again.  He plans to order a very nice computer between now and the end of the year and asks if he should just wait until then.  I say NO, NO, NO!!!  We are in the middle of the hardest part of a very hard semester and we cannot survive without one computer per person–Christian, Kelly, and Lorena for school and me for work.  In the meantime, Kelly’s cheapo Dell computer starts manifesting a line through the middle of her screen.  The computer is an absolute work of art but wildly not robust.  Christian takes it apart to fix it and now we need to buy another computer for Kelly now instead of in time for next semester.

Kelly's new ThinkPad E520Christian and I put our heads together and decided to buy something a little more robust than the cheapo (but very colorful) Dell girly computers.  We got here a factory refurbished Lenovo ThinkPad E520 for $384.01 — a smokin’ hot deal.  It will be here before Thanksgiving.  Kelly will HATE the color (black), but it is a WAY sturdier computer and has that cool ThinkPad logo embedded in the rubberized top of the computer that gives immediate seriousness cred–much better the foo-fooness cred that derived from her previous pink computer.  Christian’s cable should be here any day now.  In the meantime, we have to survive the weekend with a need for four computers and only two on hand.

Cool stuff at work: Imaging an elephant with cataracts

Day 86 of 1000

Elephants at the zoo.I got to work sometime after 5:30 AM.  As usual, I was the first one to arrive, but the CEO of the company (Bioptigen) showed up shortly after me.  When I asked him what he was doing there so early, he said that he and two other colleagues were going to run down to the North Carolina Zoo to capture Optical Coherence Tomography images of the eye of one of the African elephants their because the opthalmologist from the NCSU Veterinary school needed them due to the fact that the elephant had cataracts.  How cool is that!?!!

I would like to say one of the elephants to the left is the one that got the eye check, but it was against the rules to use the pictures because when people see them with no context, sometimes they think the elephants are being badly treated.  Still, it was great to hear about it when everyone got back to the office.  The elephant they imaged was a 12,000 pound African Bull Elephant.  I will report back if I hear anything more about what happens

Page 8 of 9

Powered by WordPress & Theme by Anders Norén