Merge pull request #6986 from Wing0:master

This commit is contained in:
Vadim Pisarevsky 2016-07-28 11:35:06 +00:00
commit f9e02aa612

View File

@ -22,61 +22,61 @@ Well, the questions and imaginations continue. But it all depends on the most ba
you play jigsaw puzzles? How do you arrange lots of scrambled image pieces into a big single image?
How can you stitch a lot of natural images to a single image?
The answer is, we are looking for specific patterns or specific features which are unique, which can
be easily tracked, which can be easily compared. If we go for a definition of such a feature, we may
find it difficult to express it in words, but we know what are they. If some one asks you to point
The answer is, we are looking for specific patterns or specific features which are unique, can
be easily tracked and can be easily compared. If we go for a definition of such a feature, we may
find it difficult to express it in words, but we know what they are. If someone asks you to point
out one good feature which can be compared across several images, you can point out one. That is
why, even small children can simply play these games. We search for these features in an image, we
find them, we find the same features in other images, we align them. That's it. (In jigsaw puzzle,
why even small children can simply play these games. We search for these features in an image,
find them, look for the same features in other images and align them. That's it. (In jigsaw puzzle,
we look more into continuity of different images). All these abilities are present in us inherently.
So our one basic question expands to more in number, but becomes more specific. **What are these
features?**. *(The answer should be understandable to a computer also.)*
features?**. (The answer should be understandable also to a computer.)
Well, it is difficult to say how humans find these features. It is already programmed in our brain.
It is difficult to say how humans find these features. This is already programmed in our brain.
But if we look deep into some pictures and search for different patterns, we will find something
interesting. For example, take below image:
![image](images/feature_building.jpg)
Image is very simple. At the top of image, six small image patches are given. Question for you is to
find the exact location of these patches in the original image. How many correct results you can
find ?
The image is very simple. At the top of image, six small image patches are given. Question for you is to
find the exact location of these patches in the original image. How many correct results can you
find?
A and B are flat surfaces, and they are spread in a lot of area. It is difficult to find the exact
A and B are flat surfaces and they are spread over a lot of area. It is difficult to find the exact
location of these patches.
C and D are much more simpler. They are edges of the building. You can find an approximate location,
but exact location is still difficult. It is because, along the edge, it is same everywhere. Normal
to the edge, it is different. So edge is a much better feature compared to flat area, but not good
enough (It is good in jigsaw puzzle for comparing continuity of edges).
C and D are much more simple. They are edges of the building. You can find an approximate location,
but exact location is still difficult. This is because the pattern is same everywhere along the edge.
At the edge, however, it is different. An edge is therefore better feature compared to flat area, but
not good enough (It is good in jigsaw puzzle for comparing continuity of edges).
Finally, E and F are some corners of the building. And they can be easily found out. Because at
corners, wherever you move this patch, it will look different. So they can be considered as a good
feature. So now we move into more simpler (and widely used image) for better understanding.
Finally, E and F are some corners of the building. And they can be easily found. Because at the
corners, wherever you move this patch, it will look different. So they can be considered as good
features. So now we move into simpler (and widely used image) for better understanding.
![image](images/feature_simple.png)
Just like above, blue patch is flat area and difficult to find and track. Wherever you move the blue
patch, it looks the same. For black patch, it is an edge. If you move it in vertical direction (i.e.
along the gradient) it changes. Put along the edge (parallel to edge), it looks the same. And for
Just like above, the blue patch is flat area and difficult to find and track. Wherever you move the blue
patch it looks the same. The black patch has an edge. If you move it in vertical direction (i.e.
along the gradient) it changes. Moved along the edge (parallel to edge), it looks the same. And for
red patch, it is a corner. Wherever you move the patch, it looks different, means it is unique. So
basically, corners are considered to be good features in an image. (Not just corners, in some cases
blobs are considered good features).
So now we answered our question, "what are these features?". But next question arises. How do we
find them? Or how do we find the corners?. That also we answered in an intuitive way, i.e., look for
find them? Or how do we find the corners?. We answered that in an intuitive way, i.e., look for
the regions in images which have maximum variation when moved (by a small amount) in all regions
around it. This would be projected into computer language in coming chapters. So finding these image
features is called **Feature Detection**.
So we found the features in image (Assume you did it). Once you found it, you should find the same
in the other images. What we do? We take a region around the feature, we explain it in our own
words, like "upper part is blue sky, lower part is building region, on that building there are some
glasses etc" and you search for the same area in other images. Basically, you are describing the
feature. Similar way, computer also should describe the region around the feature so that it can
We found the features in the images. Once you have found it, you should be able to find the same
in the other images. How is this done? We take a region around the feature, we explain it in our own
words, like "upper part is blue sky, lower part is region from a building, on that building there is
glass etc" and you search for the same area in the other images. Basically, you are describing the
feature. Similarly, a computer also should describe the region around the feature so that it can
find it in other images. So called description is called **Feature Description**. Once you have the
features and its description, you can find same features in all images and align them, stitch them
features and its description, you can find same features in all images and align them, stitch them together
or do whatever you want.
So in this module, we are looking to different algorithms in OpenCV to find features, describe them,