Harris Corner Point and Shi-tomasi Corner detection

Source: Internet
Author: User
Tags scalar
definition of Corner point

There are several paragraphs that define corner points:

1, corner Detection (Corner Detection) is a computer vision system used to obtain image features, widely used in motion detection, image matching, video tracking, three-dimensional modeling and target recognition and other fields. Also known as feature point detection.


The corner point is usually defined as the intersection of two edges, and more strictly, the local neighborhood of the corner point should have a boundary of two different directions. In practical applications, most of the so-called corner detection methods detect image points with specific characteristics, not just "corner points". These feature points have specific coordinates in the image, and have some mathematical features, such as local maximum or minimum gray level, some gradient characteristics and so on.


The existing corner detection algorithms are not all very robust. Many methods require a large number of training sets and redundant data to prevent or reduce the appearance of error features. One of the most important evaluation criteria for corner detection is its ability to detect the same or similar features in multiple images, and to cope with changes in illumination and image rotation.

2, when we solve the problem, often want to find feature points, "characteristics" as the name implies, refers to the object can describe the nature of things, there is also an explanation is that the characteristics of small changes will have a significant impact on an object's properties. And the corner point is such a feature.


Observing the "corners" of everyday life, the "corner" can be seen as the intersection of all planes, or the initiation of all surfaces. If we want to change the position of a corner, then the plane from which it departs must have a great change. So, this leads to the definition of the corner point of the image


"If a small change in any direction causes a big change in the grayscale, then we call it a corner."

3.

Feature detection and matching is an important part of the computer Vision application, which needs to find the characteristics of the image to establish the corresponding relationship. Point, which is the special position in the image, is a very common feature, the local feature of the point can also be called "key feature Point" (KeyPoint feature), or "point of interest" (interestpoint), or "Corner" ( Conrner).

The specific description of the corner point can be several: the first-order derivative (that is, the gradient of the gray scale) of the local maximum pixel points; two and two edges of the intersection point; the gradient and gradient direction of the image of the change rate are very high points; the first derivative of the corner is the largest and the second derivative is zero, indicating the direction of second, corner point detection algorithm 1. Moravec Corner detection algorithm

Moravec Corner detection algorithm is one of the earliest corner detection algorithms. The algorithm defines a corner point as a point with a low "self-correlation". The algorithm detects every pixel in the image, takes a neighborhood of pixels as a patch, and detects the relevance of the patch and other patches around it. This correlation is measured by the sum (SSD) of the squared difference between two patches, and the smaller the SSD value, the higher the similarity.


If the pixels are in a smooth image area, the patches around are very similar. If the pixels are on the edge, the surrounding patches are very different in the direction orthogonal to the edges, and are more similar in the direction parallel to the edges. If the pixel is a feature point that changes in all directions, all patches around it will not be very similar.


The Moravec calculates the SSD minimum value for each pixel patch and surrounding patch as the strength value, taking the point with the most local strength as the feature point.
2, Harris Corner Point detection

Reprint: http://blog.csdn.net/xiaowei_cqu/article/details/7805206
Source and information Download: http://download.csdn.net/detail/xiaowei_cqu/4466627

When a window moves on the image, in the smoothed area as shown in figure (a), the window does not change in all directions. On the edge as shown in figure (b), the window has no change in the direction of the edge. At the corner point as shown in figure (c), the window changes in all directions. Harris Corner Point Detection is the use of this intuitive physical phenomenon, through the window in all directions of the degree of change, determine whether it is a corner point.

Translate the image window [u,v] to produce a grayscale change E (u,v)

By:, Get:

For a locally small amount of movement [u,v], the approximate expression is:

where M is the 2*2 matrix, it can be obtained from the derivative of the image:

The oval shape of E (U,V) is shown below:

Define the corner response function R as:

Harris Corner Point detection algorithm is the diagonal point response function R for threshold processing: R > Threshold, that is, the local maximum value of the extracted R.

"Related Code"

The Cornerharris function is defined in OPENCV: [CPP] view plain copy void Cornerharris (Inputarray src, outputarray dst, int BlockS ize, int ksize, double k, int bordertype=border_defaul T);

You can combine the Convertscaleabs function to take a corner point from a threshold value:[CPP]  View plain copy Void cornerharris_demo ( int, void* )    {      Mat dst, dst_norm;     dst = mat::zeros ( src.size (), &NBSP;CV _32fc1 );     /// Detector parameters     int  blocksize = 2;     int apertureSize = 3;      double k = 0.04;     /// Detecting corners      Cornerharris ( src_gray, dst, blockSize, apertureSize, k, BORDER_DEFAULT );      /// Normalizing     normalize ( dst, dst_norm, 0 ,  255, norm_minmax, cv_32fc1, mat ()  );     convertscaleabs (  dst_norm, dst_norm_scaled );      /// Drawing a circle  Around corners     for ( int j = 0; j < dst_norm.rows  ; j++ )         { for ( int i = 0;  i < dst_norm.cols; i++ )               {               if (   (int)  dst_norm.at<float> (j,i)  > thresh )                   {                     circle ( dst_norm_scaled,  Point ( i, j ),  5,  scalar (0), 2, 8, 0 );                    circle (SRC, Point ( i, j ), &NBsp;5,  scalar (255,0,0), -1, 8, 0 );                  }              }         }          /// Showing the result     imshow ( corners_window, dst_norm_ scaled );     imshow ( source_window, src );    }   

Another commentary on Harris (http://www.cnblogs.com/ztfei/archive/2012/05/07/2487123.html)

When we solve the problem, we often want to find the feature point, "characteristics" as the name implies, refers to the object can describe the nature of things, there is also an explanation is that the characteristics of small changes in the object of a certain property has a significant impact. And the corner point is such a feature.

Observing the "corners" of everyday life, the "corner" can be seen as the intersection of all planes, or the initiation of all surfaces. If we want to change the position of a corner, then the plane from which it departs must have a great change. So, this leads to the definition of the corner point of the image

"If a small change in any direction causes a big change in the grayscale, then we call it a corner."

From the above definition, we can think of algorithmic thinking: to detect the gray-scale change of image pixels, that is, to solve

, where I (x, y) represents the grayscale value of the pixel

For the above, we want to find the point where the value of E is as large as possible, then the upper-right Taylor expands:

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.