1.Introduction

1.1 Blob

In human’s real life, people sometimes need to find some areas in a picture which they might be of interest. For example, a tree, a grassy patch, a house, even anything of the nature could be regarded as a blob (cf. Figure 1.1.2). However, the world is abundant and diversified, an image can only capture a small part of the world, and the area is limited. As humans, we have a good eyesight of the world, because we have two bright and sensitive eyes. As we all know, the birth of computers brought people several conveniences, but computers are not clever as humans because they were all invented by humans. One of the most significant reasons that people invented computers is that computers could help people to perform some repeated or fixed pattern tasks. This is due to the fact that computers have a higher execution efficiency and calculation speed.

When it comes to Image process, the computers might perform more powerful than humans because it is an iterative and repeated work. Basically, any colorful image would be transferred into a 2D matrix in computer, but matrix is abstract for computer because matrix is not the basic data structure. The interesting thing is that matrix related to array closely. In other words, array could be used to represent a complex image, therefore, the overall work is about the process of array in future.

As we all knew, anything has a metric to evaluate the quality of themselves. For instance, someone has used a smart phone for several years, and it just broken down for once or twice. And another person just bought it for few months, but it has broken down for six times. Obviously, the durability could be treated as a measurement criteria of the quality of smart phone. Same as images, it also has their own metric to evaluate itself quality. That metric is called Pixel. People should be very familiar with that when they want to buy a HD television, and they always seek for the higher resolution ratio because higher resolution ratio means better performance and perceived features.

Pixel: In digital image processing, a pixel stands for the most fundamental and atomic element of an image, and any image is made up of thousands pixels (Foley & Van 1982). Each value of pixel is called pixel value (cf. Figure 1.1.1).

Thus, there is no wonder that an image with higher pixels could bring people better and clear perceived features.

Blob: Informally, a blob is a region of an image in which some properties are constant or approximately constant. All the points in a blob can be considered in some sense to be similar to each other. Briefly speaking, a blob could be represented as a dark or bright area of an image (Lindeberg 1993).

1.2 Blob Detection

My work is find out an algorithm to detect these blobs which people might be of interest. Thus, this process is called blob detection.

The general definition of blob detection in computing: Blob Detection: In computer vision, blob detection are a type of methods which are aimed at detecting regions in a digital image that differ in properties, such as brightness or color, compared to surrounding regions (Wikipedia 2009).

If I directly process a static image, it might be a challenge or tough work. As I mentioned previously, I have transferred an image into a matrix, and represented with array. Based on the definition of blob, it is a set of several dots which shared the same property. Hence, my task is to find an appropriate method which help me to detect and analysis these dots.

Normally, These properties which people might be of interest are represented as functions, and these functions could mainly be classified as two different groups (Wikipedia 2009).

  • Differential methods: based on derivatives of the function with respect to position.
  • Local Extrema: based on finding the local maxima and minima of the function.

Nowadays, there are several kinds of algorithms to deal with it, such as Laplacian of Gaussians (LoG), Difference of Gaussians (Dog) and Hough transform (Shapiro et al 2001). And I will discuss my relative researches in Chapter 2.

Although the researchers and scientists have found these different kinds of methods, there are still not a perfect approach to help people to achieve their ideal goal, because there existing more or less drawbacks. For instance, LoG could only be used for the filtering of an image and cannot do some valuable analysis of these blobs. For Hough transform, it only can detect some parameterized shapes, like circles and lines. Thus, people need to find a comprise algorithm which is suitable to images with different features.

1.3 Benefits of Blob Detection

Nowadays, the blob detection technique has been used in several areas in human’s life, such as Medical, Army. In medical, this technique is mainly used in microscope observation, and it provides a convenience for doctors to learn the structure of the cell clearly so that distinguish the normal cells and cancer cells. In army, with the development of weapons, there are lots of countries which set the air management and Interception system. In these systems, blob detection technique help people to detect the envy warplane combing with the satellite positioning skill. Besides, this technique is also very popular in those areas, such as item recognition, establishment of 3D modelling and gesture recognition.

1.4 Motivation

Currently, this technique is not very mature. On one hand, sometimes people use one algorithm to track and detect an object which they are interest of is not very easy. The reason is that any image is not perfect or ideal. It means that people have to consider those internal or external factors which may cause the negative influences, one of the most significant effect is image noise. The noise of image is a kind of visual noises rather than auditory noises. As for the voice, it would be regarded as noise when the volume is greater than a specific level of decibels. However, the noise of image mainly refers to all factors which may cause obstacles to receive the correct information from an image for people. A good example of this is the background of an image. As the figure 1.4.1 shown, there is a square road sign in that image. Assuming that people want to recognize that square sign, they have to reduce these bad effects of that image, and these bad effects are the background of that image, such as sky, desert and clouds.

In this case, I hope to apply some smoothing and filtering algorithms to reduce these bad effects as far as possible.

On other hand, there are limitations of existing blob detection algorithms. It means that computers can only recognize some limited patterns. For example, there is no specific algorithm to detect the square of an image, hence, it is a good choice for me to develop an algorithm to finish that task. Besides, although there are some existing algorithms like detection of lines and circles using Hough Transform, these only are suitable for the ideal images. In other words, there no noise influence. But in most cases, one image is not seem as very perfect. Assuming that there are some hand-pointed things, if this program still perform this task perfectly? The answer is definitely yes. And I will give the answer in the later chapters.

In short, in order to get an ideal result of detection, people have to find these negative factors and deal with them. And for those incomplete detection algorithms, people should perfect and extend them.

1.5 Objectives

In my project, I would like to write some algorithms to detect the basic geometric shapes, like triangle, circle and ellipse from a static image or an image of camera. As an open source library, OpenCV provides me some useful data structures to develop it. Although there existing some algorithms integrated in OpenCV, like the detection of circle and line, there still are some drawbacks. Hence, on one hand, I make a plan to extend and perfect this current algorithms. And on other hand, I would like to write some algorithms by myself to detect more geometric shapes. Besides, I also want to make some statistics and analysis from the result of detection using dynamic smart interactive charts.

In short, the major purpose of my project is to build a program based on GUI which provides users with lots of optional functions of detection. For example, as for an image, the main interface would display the contours and results of that image when the user choose the different detection functions. This process starts with a static image, and eventually evolve into an image of camera. Anyway, it might be a tough and interesting exploration road. At this point, this magical exploration trip starts at here.