110 likes | 198 Views
Detecting Image Features: Corner. Corners. Given an image, denote the image gradient. For each point p and a neighborhood around p, form the matrix. C is symmetric with two positive eigenvalues.
E N D
Corners Given an image, denote the image gradient. For each point p and a neighborhood around p, form the matrix C is symmetric with two positive eigenvalues. The eigenvalues give the edge strengths and eigenvectors give the direction.
Examples • Perfectly uniform • Step edge • Ideal corner Eigenvectors and eigenvalues of C
Algorithm Detecting Corners Inputs: Image I and two parameters the threshold and sub-window size • Compute image gradients over I • For the matrix C over a neighborhood Q of p. • Compute the second eigenvector • If save p into a list, L. • Sort L in decreasing order of • Scanning the sorted list top to bottom: for each current point p delete all points appearing furhter on the list which belong to the neighborhood of p.
Detecting other structures: lines and curves Lines and curves are important in computer vision because they define the contours of objects. • Grouping • Which image points compose each instance of the target curve in the image? • Model Fitting: Given a set of image points belonging to a target curve, find the best curve interpolating the points.
Hough Transform • Use for line detection. • Idea: transform a difficult pattern detection problem into a simple peak detection problem in the space of parameters. Parameter Space (m, n) Divide the parameter space into cells (depend on the needed accuracy) and associate each cell with a counter set to zero initially.
For each point p, increment all counters on the corresponding line in the parameter space. Spatial domain Parameter domain domain 1 6 1 1 0 0 0 1 1 1 6 0 Two peaks
Some important points • Keep parameter space finite. Sample wide intervals for both m and n but cut down on the resolution. Another way of parameterize a line • Local maxima of c(m, n) gives multiple lines • Due to noise and other nonlinear contour, local noisy peaks appear frequently. Thresholding c(m, n) is a good solution to prune out noisy peaks. • Works for other types of curve detection with finite parameter domain.
Algorithm Hough_Lines Input a collection of points (pixels) on an image of size M-by-N. A, B, contains the discretized intervals of the parameter of sizes R and T. • Discretize the parameter space. • Let C(R, T) be an array of integer contours initialized to be zero. • For each pixel(i, j), for each h= 1, …, T • Find index, k, of the element in A closest to • Increment C(k, h) by 1 • Find all local maxima of C.
Remarks on Hough Transform • It is a voting algorithm. Each point votes for all combinations of parameters which may have produced it if it were part of the target curve (line). The counters in parameter space can be regarded as a histogram. The final total of votes c(m) gives the relative likelihood of the hypothesis a curve with parameter set m exists in the image. • All data points are processed independently. • Relatively robust to noise and spurious points are unlikely to contribute consistently to any single bin. • It detects multiple lines (curves) • Weakness: 1) dimension of the parameter space 2) non-target shapes can contribute (low-curvature circles).