cv.cornerSubPix - MATLAB File Help |
Refines the corner locations
corners = cv.cornerSubPix(im, corners)
corners = cv.cornerSubPix(im, corners, 'OptionName', optionValue, ...)
{[x,y], ...}
). Supports single floating-point class.corners
(numeric or cell matching the input format).WinSize=[5,5]
, then a (5 * 2 + 1) x (5 * 2 + 1) = 11 x 11
search
window is used. default [3, 3].[-1,-1]
indicates that there is no such a size.
default [-1,-1].criteria.maxCount
iterations or when the corner position
moves by less than criteria.epsilon
on some iteration. Default to
struct('type','Count+EPS', 'maxCount',50, 'epsilon',0.001)
. Struct with
the following fields is accepted:
The function iterates to find the sub-pixel accurate location of corners or radial saddle points.
Sub-pixel accurate corner locator is based on the observation that every
vector from the center q
to a point p
located within a neighborhood of
q
is orthogonal to the image gradient at p
subject to image and
measurement noise. Consider the expression:
epsilon_i = DI_p_i' * (q - p_i)
where DI_p_i
is an image gradient at one of the points p_i
in a
neighborhood of q
. The value of q
is to be found so that epsilon_i
is
minimized. A system of equations may be set up with epsilon_i
set to zero:
Sigma_i(DI_p_i * DI_p_i') - Sigma_i(DI_p_i * DI_p_i' * p_i)
where the gradients are summed within a neighborhood ("search window") of
q
. Calling the first gradient term G
and the second gradient term b
gives:
q = inv(G) * b
The algorithm sets the center of the neighborhood window at this new center
q
and then iterates until the center stays within a set threshold.