Archive for the ‘Research’ Category

Update: A New Distribution Metric for Image Segmentation

Hey everyone.  As the holiday season approaches, I am finding time to gather some MATLAB code that I did for research projects that were completed.  While it is already mentioned on my project’s page, I thought I point to an update that code for “A New Distribution Metric for Image Segmentation” is now available.  You can also find it on the Mathworks MATLAB file exchange.  At any rate, here’s a quick link to download the code for those that are interested.

corpusHey everyone.  As the holiday season approaches, I am finding time to gather some MATLAB code that I did for research projects that were completed.  While it is already mentioned on my project’s page, I thought I point to an update that code for “A New Distribution Metric for Image Segmentation” is now available.  You can also find it on the Mathworks MATLAB file exchange.  At any rate, here’s a quick link to download the code for those that are interested.

Download Link:  New_Distribution_Metric_Active_Contour_Segmentation.zip

As always, if you have any questions or comments, feel free to ask!

My Trip to Israel: Part I

Hey everyone, I just got back stateside a few days back and am in process of trying to regroup, organize, and catchup on all the little things that I missed!  To say the least, my trip to Israel gave me an insight to an area that I thought I would never really get to explore in its fullest.  While I may never reach all parts of the Middle East, this was definitely a start and a fun one too!  Since there’s a lot of information to cover from cool spots I traveled to as well as people I met, I thought I would divide one large post into two or three relatively smaller posts.

The purpose of my trip was one motivated by a guest invitation to give a lecture about my on-going research in 3D visual tracking.  Of course, like traveling to conferences, it was also a time to meet fellow colleagues in the field and get a chance to visit an exotic place.  For now, I’ll just start summarizing the trip here and I’ll write a little more in-depth about the places we visited including pictures and opinions in the next post.

Day 1:

Jumping right in, my friend and colleague Shawn Lankton and I landed in Tel Aviv in the afternoon.  To our dismay, we didn’t realize how early the sun sets and how quickly it gets dark.  By the time we exited the airport, it felt like it was 9 PM (it was actually only 5 PM).  Nevertheless, we quickly rented our small and compact car, and were on our way to Haifa.  Being the “navigator” of the trip, I pulled out the maps and got familiar with the highway systems.  Here’s a quick google map look at the path we took all over Israel including the exact highways, toll roads, and places we visited during our stay.


View Larger Map

Becase we didn’t travel to all of these locations in one day, I’ll break up the trip by days beginning with our arrival in Tel Aviv. Read the rest of this entry »

Invited Guest Lecture at the Israel Institute of Technology (Technion)

Hi everyone!  I thought that I would post this here as an invitation to a guest seminar that I will be giving in Israel on November 5th.  I will be leaving the states with a friend and colleage of mine, Shawn Lankton, to give a lecture on “New Results in 3D Tracking” at the Israel Institute of Technology – Technion.  In particular, both Shawn and I will be talking about the recent advancements we have made in segmentation and registration. Aside from the research perspective, both of us have had 3 years of consulting experience in working on tracking systems for several different companies. Seeing as that many of you will most likely not be able to attend, I will post slides and pictures of our week long trip once I get back.  You can find the downloadable .pdf link below as well as a preview.

Download Link:  Guest Lecture Invitation

Preview Invitation

Coding Theory and Error Correction in Everyday Use

Yesterday, I found an old scratched Pearl Jam CD that I had (the classic debut Ten album) and decided to put it in my CD player on my drive home to Alabama.  Thankfully, the music showed no signs of corruption from years of small scratches.  Of course when I first bought the CD, circa 1991, I thought its ability to play music was magic.  Here’s a cool picture that I found of Pearl Jam — a definite band favorite of mine.

pearljam_02

At any rate, this time around, it dawned upon me of how engineering works even in the harshest conditions.  That is, whether we are playing music, or sending messages into deep space, coding theory and error correction is at the heart of designing the system.

For example, how can we transmit a message that is robust to transmision errors such as CD scratches? For now, we will assume our message consists of 1’s and 0’s.  The first step is called encoding.  In addition to just your message, encoding a message is done by appending what is known as parity bits in a unique fashion.  This results in a code word.  So why do this?

Well simply said, just because we would like to transmit a particular message over a channel, we might observe an entirely different message and code word at the receiver.  For those of you not familar with systems design, the transmitter can be considered a CD in our case and the reciever is your speakers.  The “channel” is the whole process of reading the data from the cd and interpreting it as music.  Now you can see that errors may be caused from scratches, dirt, and ware of your CD.  These parity bits that are discussed help and enable us to correct the underlying message and decode the correct data.

Lets dive right into an extremely popular coding scheme that is used, the 7-4 Hamming Code.  Here, our message is of length 4 bits (d1d2d3d4) with 3 appending parity bits (p1p2p3), totally a code word of 7 bits (d1d2d3d4p1p2p3).  Note, in reality, transmitted messages are much longer than our example since they are describing parts of data, i.e. track 5 of Pearl Jam “Black” on the Ten Album.  Let’s say that our message 1101.  How should we encode this?  Looking at the following figure should help us.

7-4_Hamming

The 7-4 Hamming scheme encodes a message by making sure that if we input our data message into the above diagram at the specified locations, then the parity bits are added to ensure the sum of each circle is even.  Here I should note that we are using modulo 2 arithmetic for addition (e.g., 1+1 = 0, 1+0 = 1, …).  Doing so, we can then see the above message of 1101 is encoded as 1101100.  Hopefully this wasn’t bad!  Now, what happens if we transmitted this code word, but due to extraneous noise caused from our system, the message received is shown below.

system_cdplayer

We see here that our observed code word is 1111100.  The term “observed” here is important from a conceptual point of view.  That is, we have no idea of what the input code word is nor any of the system noise (we can only assume a general model for our system at best).  So how can we decode our message at the receiver with no knowledge of what the input is, but only that it was encoded via a 7-4 Hamming scheme?

One simple way is to put the code word in the above ven diagram, and see where the sum of each circle is not equal.  Doing so, one sees that the bottom two circles are not even in their sum.  But… should we flip the appropriate parity bits to be 1 rather than 0 or flip the third message bit from a 1 to a 0?  Either is a valid code word from a decoding point of view.  This means one can “correct” an error of the code word, but this code word may not be the underlying transmitted word.  This is known as a “decoding error.”  From this, the 7-4 Hamming code can be shown to correct at most 1 single bit error without resulting in a “decoding error.”  Unfortunately, there is no way around this and is dependent on the coding scheme that is used.  For the 7-4 Hamming code, if we have two or more bit errors in the transmission, the decoder may result in an error (but have a valid code). Because the decoder itself is beyond the scope of this post, I’ll refer you to this nice Wikipedia article. Also, given a coding scheme, different decoders may be used.  For example, if you use a convolution code (which can be found on my project’s page soon), one can use what is known as a Trellis Map to efficiently decode your message.  After we pass the information through the decoder, the correct code word will indeed be our transmitted code word.  While I have simplified this example and shown the use of the above ven diagram, more complex schemes will need a more powerful way of decoding involving parity check matrices (see wiki article).

Lastly, I will note that this coding scheme can only correct a single bit flip as opposed to several bits in a row, which is called a “burst error.”  So for our CD scratch example, where a scratch can be seen as several bits corrupted in a sequence, we will need to use other coding techniques in combination with the Hamming Code.

If you are interested, I have provided additional details on achieving a more efficient code via convolution codes.  This will soon be found on my projects page with MATLAB code for you to test out.  I have also written a short techncal summary that can be found on resume and publications page under “Technical Reports.  Here’s a quick link.

Tips on Submitting your first Academic Journal

A few days back,  I submitted my second academic journal to IEEE Pattern Analysis and Machine Intelligence for review.  While it is always a great feeling to finally put the finishing touches for a written paper, I remember that one of the more stressful parts of  my first paper was the submission itself!  Luckily, and to my relief, the second time around went much smoother.   Aside from making sure your paper is mistake free, the submission process for most journals includes several key components that are to accompany most manuscripts.  These include the classic cover letter, and if you had similar work in a conference, you must write a summary of differences between the two pieces of work.   The smaller details can sometimes be overlooked and from the experience of my first paper and also having been a reviewer for SIAM, I thought I would share my thoughts and tips that helped me.

Journal Checklist:

1) Create a separate submission folder:
This seems somewhat trivially, but my main point here is to separate the manuscript.pdf from being editable. I have found that when I begin the submission process, I always am making minor grammatical or sentence style changes (e.g., Use “Moreover” vs. “In Addition”). There’s always something I can correct. My advice, if you get to this point, then your manuscript is ready to submit. In order from you to keep changing these details, make a submission folder and place that paper there and as the saying goes, “don’t look back.” That is until you finally get to the “approval of all documents” stage where you can view your submission online.

2) Create a cover letter:
I believe for most journals, you will need to create a cover letter identifying the paper’s title (and perhaps author list) as well as the main idea and contribution. This is pretty standard and can be likened to a cover sheet. Here’s a quick example of a cover letter that I just submitted.

Cover Letter

Please note that this is general, and check your journal guidelines to see if more information is needed. Read the rest of this entry »

Quick News/Update
Just got back from Israel and starting research on Blind Source Separation!
Blog Topics
Blog Post Search