Monday, January 29, 2007

Histograms

So I talked to Tom Duerig about using SMORs as the cascade backbone for my the detection algorithm. Although I'll probably have to do a bunch of tweaking, it sounds like SMORs will work really well with this project.

I also talked to Carolina Galleguillos about how GroZi uses color histograms as part of the overall algorithm. She was kind enough to give me a copy of the histogram source file to help me get an idea of how to create my color histogramming program.

I ended up coding the histogramming program from scratch since the code from GroZi was not completely applicable. Currently I'm in the process of testing and debugging the program.

Lastly, I labeled my training images using the labeling program I created last week.

Monday, January 22, 2007

Color Histograms

I have been researching different methods for coming up with features from the sets of empty and occupied parking spaces before I create the program to gather these features. The most useful paper that I've found on this subject is called Color Photo Categorization Using Compressed Histograms and Support Vector Machines by Xia Feng, Jianzhong Fang and Guoping Qiu. This paper goes over a bunch of different methods for describing color information in images as well as their methodology for using a support vector machine for classification using the color features described in the previous section. It seems that the MPEG-7 color structure descriptor got the best results and this is what I'm going to read about this in more detail next (specifically, Color and Texture Descriptors by B. S. Manjunath, Jens-Rainer Ohm, Vinod V. Vasudevan, and Akio Yamada).

Sunday, January 21, 2007

Change of Direction

Due to some helpful advice I have refocused my research from car feature detection to the direct detection of vacant parking spaces. So far, the most promising work that I have found is by Qi Wu and Yi Zhang, two students at Carnegie Mellon. They're method for detecting the state (occupied/empty) of parking spaces centered around a SVM (Support Vector Machine) which was trained on the probability of the ground color. Overall, it sounds like they were pretty successful at creating a parking space detector. The one drawback to all of this is that this type of detector will only work well when there's very little occlusion by other vehicles due to a less than optimal camera angle. However, this seems like a good place to start and I think that using car feature detection in addition to this SVM-based detection algorithm could successfully deal with the cases where there's occlusion.

The first step towards implementing the SVM-based parking space detection algorithm is to extract the information from all of the parking spaces in the images in my training set. To this end, I have created a labeling program in Java which allows me to quickly label the parking spaces in the parking lot images and create a file log file of all of my label work. All one has to do is click on the 4 corners of a parking space and the program writes out the image path and coordinate information to the log file.

My next step will be to create a program to read the log file and quickly extract the set of pixels contained in each quadrangle. This way, I can label the pictures once, and extract the pixel info and create a set of parking space training features as many times as I want without having to relabel everything every time I make a change.

Tuesday, January 9, 2007

Battles With OpenCV and MS Visual Studio 2005

So I just loaded Microsoft Visual Studio 2005. The first time I tried to do this I failed because one of the installation CDs was warped! Thankfully the second set of install CDs was defect free. Next, I installed OpenCV and tried to integrate it into Visual Studios. I used qevanblog's blog to help guide me through the integration process. However, I think that the integration guide at sourceforge is a bit easier to understand. Of course OpenCV always loves to throw a curveball every now and again and it did so this time by complaining about missing DLLs (specifically highgui100.dll, cxcore100.dll, and libguide40.dll). My solution was to copy those DLLs to the directory of the executable I was building. I spent a bunch of time trying to have Visual Studios fold those DLLs into the executable as part of the build process but was unable to get that to work. Hopefully I will come up with a more practical solution in the near future.

EDIT:
I got some good advice from Thomas on how to fix my DLL problem. He suggested that I include the path to the directory that holds the DLLs in my environmental variables. Interestingly enough, when I went to go add the path to my environmental variables I found that it was already there. So I restarted Visual Studios, recompiled the test program and the thing actually worked. My guess is that my system was set up properly the whole time and I just did something stupid like not restarting or not reloading Visual Studios. Meh.

Wednesday, January 3, 2007

More


More images to add to the growing training (or test) set.

Monday, January 1, 2007

New Years Day training set


What better thing to do on New Years Day except for creating a training set of 45 new images. :-)