Pages

Sunday, December 8, 2013

Image processing: how to find the principal content automatically


Image processing is a very specific research area in computer science, while it is also a very popular topic due to its magic application in daily life. You might not be an expert on complex image processing algorithms, while you might be very familiar with iPhone’s panorama App, which can help to take an amazing panorama photo when you go around by holding your iPhone.  Isight camera on iPhone will take several photos during the process while image processing algorithms will seamlessly put these photos together automatically and smartly.

In order to fulfill the job like described above, image processing needs to “understand” the content of the photo. Most of time, understanding the principal content will be a practical way to go. Here we don’t depend on Artificial Intelligence, although we mirror the way that human beings interpret an image. Think about what you will notice when seeing a sun rising from sea level. It is “sea level” and the outline of the sun, since these areas contain big changes on color, brightness or shape. These areas are the “principal content” of a photo, which are needed to describe the data in the image economically. Automatically identify the “principal content” of a photo will help us to easily compare two images and find the common-shared part, which is the critical part when stitching photos together.

The first eight eigenfaces abstracted from a principal component analysis (PCA) of the Ekman and Friesen (1976) faces [1]

How to automatically identify the “principal content” is the critical problem if we want machines to help us perform lots of image processing jobs. The basic algorithm to perform this task is Principle Component Analysis (PCA) [2], which was invented in 1901 by Karl Pearson and has been applied in statistics for a long time. I don’t want to discuss about the detailed mathematical content of these algorithms, while I would like to talk a little about the basic idea. Considering the way that used to describe a point in 2-dimension graph, yes, a pair of x and y axes will be enough to fulfill the job and uniquely describe the point without any redundant information. For a 3-dimensional object such as a line, we will naturally use a combination of x, y and z axes to describe. The reason for choosing these two or three mutually perpendicular axes is that they have the best ability to describe the object in the given space. In other word, these perpendicular axes are the “principal component” which can be used to describe the object in the most economically way. PCA is such an algorithm to identify these “principal component” inside a picture. In order to perform this algorithm on an image, we need to digitalize an image to be represented by a matrix first. PCA is to perform a kind of matrix decomposition named SVD (Singular value decomposition) [3] and then determine which set of “axes” (Eigen vector) are the most important to keep in order to describe the photo in a most economically way. 

Reference
[3] Singular value decomposition, 
http://en.wikipedia.org/wiki/Singular_value_decomposition

4 comments:

  1. I find image processing to be an interesting topic. One of the examples that you give is the iPhone’s camera feature of creating a panoramic view, which is a good example of image processing, since it shows that the iPhone can correctly interpret motions and use multiple frames to create one large image. With that said, some of this post’s grammar is stilted, and I was confused at times. I am still not sure what you mean by “sea level” or “principal component”. While I am curious how these algorithms for identifying faces work, I am not sure if I was able to interpret everything that you said in your post.

    ReplyDelete
  2. Hi Jingmei, well done on your post. You did a thorough research on this topic and it is interesting. Unlike us, computers absolutely "see" images differently. I like how you give the analogy of the sunrise at the sea level, it definitely helps readers to understand the processing algorithm better.

    The eigenfaces are clear examples of how images are processed with the PCA method, which is an important technique used in many image processing application. Overall, this is a good post. Well-done

    ReplyDelete
  3. Hey Jingmei,
    Very thorough post. Again I'm very interested in the topic you're writing about, and the clarity and conciseness of your descriptions how principal content acquisition is accomplished made it possible to walk away with more knowledge. I appreciate how you started with simple analogies and proceeded to provide the technical aspects. Great post!

    ReplyDelete
  4. Hello Jingmei,
    As someone who has done work with image processing in relation to artificial intelligence, I found your post to be very interesting. You gave a really great explanation of how Principal Component Analysis works and how it can be used effectively. I also really liked how you used an image that highlighted where the principal components are. I really enjoyed this post, so thanks for sharing!

    ReplyDelete