* Convert the original to HSV format and separate only *Hue* channel to be used for the Histogram (using the OpenCV function :mix_channels:`mixChannels <>`)
* Convert the original to HSV format and separate only *Hue* channel to be used for the Histogram (using the OpenCV function :mix_channels:`mixChannels <>`)
* Let the user to enter the number of bins to be used in the calculation of the histogram.
* Let the user to enter the number of bins to be used in the calculation of the histogram.
* Calculate the histogram (and update it if the bins change) and the backprojection of the same image.
* Calculate the histogram (and update it if the bins change) and the backprojection of the same image.
* Display the backprojection and the histogram in windows.
* Display the backprojection and the histogram in windows.
:param points1:Array of ``N`` ``(N >= 5)`` 2D points from the first image. The point coordinates should be floating-point (single or double precision).
:param points1:Array of ``N`` ``(N >= 5)`` 2D points from the first image. The point coordinates should be floating-point (single or double precision).
:param points2:Array of the second image points of the same size and format as ``points1`` .
:param points2:Array of the second image points of the same size and format as ``points1`` .
:param focal:focal length of the camera. Note that this function assumes that ``points1`` and ``points2`` are feature points from cameras with same focal length and principle point.
:param focal:focal length of the camera. Note that this function assumes that ``points1`` and ``points2`` are feature points from cameras with same focal length and principle point.
:param pp:principle point of the camera.
:param pp:principle point of the camera.
:param method:Method for computing a fundamental matrix.
:param method:Method for computing a fundamental matrix.
* **CV_RANSAC** for the RANSAC algorithm.
* **CV_RANSAC** for the RANSAC algorithm.
* **CV_LMEDS** for the LMedS algorithm.
* **CV_LMEDS** for the LMedS algorithm.
:param threshold:Parameter used for RANSAC. It is the maximum distance from a point to an epipolar line in pixels, beyond which the point is considered an outlier and is not used for computing the final fundamental matrix. It can be set to something like 1-3, depending on the accuracy of the point localization, image resolution, and the image noise.
:param threshold:Parameter used for RANSAC. It is the maximum distance from a point to an epipolar line in pixels, beyond which the point is considered an outlier and is not used for computing the final fundamental matrix. It can be set to something like 1-3, depending on the accuracy of the point localization, image resolution, and the image noise.
:param prob:Parameter used for the RANSAC or LMedS methods only. It specifies a desirable level of confidence (probability) that the estimated matrix is correct.
:param prob:Parameter used for the RANSAC or LMedS methods only. It specifies a desirable level of confidence (probability) that the estimated matrix is correct.
:param mask:Output array of N elements, every element of which is set to 0 for outliers and to 1 for the other points. The array is computed only in the RANSAC and LMedS methods.
:param mask:Output array of N elements, every element of which is set to 0 for outliers and to 1 for the other points. The array is computed only in the RANSAC and LMedS methods.
This function estimates essential matrix based on an implementation of five-point algorithm [Nister03]_[SteweniusCFS]_.
This function estimates essential matrix based on an implementation of five-point algorithm [Nister03]_[SteweniusCFS]_.
The epipolar geometry is described by the following equation:
The epipolar geometry is described by the following equation:
..math::
..math::
[p_2; 1]^T K^T E K [p_1; 1] = 0 \\
[p_2; 1]^T K^T E K [p_1; 1] = 0 \\
K =
K =
\begin{bmatrix}
\begin{bmatrix}
f & 0 & x_{pp} \\
f & 0 & x_{pp} \\
0 & f & y_{pp} \\
0 & f & y_{pp} \\
@ -724,60 +724,60 @@ where
:math:`E` is an essential matrix,
:math:`E` is an essential matrix,
:math:`p_1` and
:math:`p_1` and
:math:`p_2` are corresponding points in the first and the second images, respectively.
:math:`p_2` are corresponding points in the first and the second images, respectively.
The result of this function may be passed further to ``decomposeEssentialMat()`` or ``recoverPose()`` to recover the relative pose between cameras.
The result of this function may be passed further to ``decomposeEssentialMat()`` or ``recoverPose()`` to recover the relative pose between cameras.
decomposeEssentialMat
decomposeEssentialMat
-------------------------
-------------------------
Decompose an essential matrix to possible rotations and translation.
Decompose an essential matrix to possible rotations and translation.
..ocv:function:: void decomposeEssentialMat( InputArray E, OutputArray R1, OutputArray R2, OutputArray t )
..ocv:function:: void decomposeEssentialMat( InputArray E, OutputArray R1, OutputArray R2, OutputArray t )
:param E:The input essential matrix.
:param E:The input essential matrix.
:param R1:One possible rotation matrix.
:param R1:One possible rotation matrix.
:param R2:Another possible rotation matrix.
:param R2:Another possible rotation matrix.
:param t:One possible translation.
:param t:One possible translation.
This function decompose an essential matrix ``E`` using svd decomposition [HartleyZ00]_. Generally 4 possible poses exists for a given ``E``.
This function decompose an essential matrix ``E`` using svd decomposition [HartleyZ00]_. Generally 4 possible poses exists for a given ``E``.
They are
They are
:math:`[R_1, t]`,
:math:`[R_1, t]`,
:math:`[R_1, -t]`,
:math:`[R_1, -t]`,
:math:`[R_2, t]`,
:math:`[R_2, t]`,
:math:`[R_2, -t]`.
:math:`[R_2, -t]`.
recoverPose
recoverPose
---------------
---------------
Recover relative camera rotation and translation from an estimated essential matrix and the corresponding points in two images, using cheirality check.
Recover relative camera rotation and translation from an estimated essential matrix and the corresponding points in two images, using cheirality check.
Returns the number of inliers which pass the check.
Returns the number of inliers which pass the check.
:param points1:Array of ``N`` 2D points from the first image. The point coordinates should be floating-point (single or double precision).
:param points1:Array of ``N`` 2D points from the first image. The point coordinates should be floating-point (single or double precision).
:param points2:Array of the second image points of the same size and format as ``points1`` .
:param points2:Array of the second image points of the same size and format as ``points1`` .
:param R:Recovered relative rotation.
:param R:Recovered relative rotation.
:param t:Recoverd relative translation.
:param t:Recoverd relative translation.
:param focal:Focal length of the camera. Note that this function assumes that ``points1`` and ``points2`` are feature points from cameras with same focal length and principle point.
:param focal:Focal length of the camera. Note that this function assumes that ``points1`` and ``points2`` are feature points from cameras with same focal length and principle point.
:param pp:Principle point of the camera.
:param pp:Principle point of the camera.
:param mask:Input/output mask for inliers in ``points1`` and ``points2``.
:param mask:Input/output mask for inliers in ``points1`` and ``points2``.
If it is not empty, then it marks inliers in ``points1`` and ``points2`` for then given essential matrix ``E``.
If it is not empty, then it marks inliers in ``points1`` and ``points2`` for then given essential matrix ``E``.
Only these inliers will be used to recover pose.
Only these inliers will be used to recover pose.
In the output mask only inliers which pass the cheirality check.
In the output mask only inliers which pass the cheirality check.
This function decomposes an essential matrix using ``decomposeEssentialMat()`` and then verifies possible pose hypotheses by doing cheirality check.
The cheirality check basically means that the triangulated 3D points should have positive depth. Some details can be found from [Nister03]_.
This function can be used to process output ``E`` and ``mask`` from ``findEssentialMat()``.
This function decomposes an essential matrix using ``decomposeEssentialMat()`` and then verifies possible pose hypotheses by doing cheirality check.
The cheirality check basically means that the triangulated 3D points should have positive depth. Some details can be found from [Nister03]_.
This function can be used to process output ``E`` and ``mask`` from ``findEssentialMat()``.
In this scenario, ``points1`` and ``points2`` are the same input for ``findEssentialMat()``. ::
In this scenario, ``points1`` and ``points2`` are the same input for ``findEssentialMat()``. ::
// Example. Estimation of fundamental matrix using the RANSAC algorithm
// Example. Estimation of fundamental matrix using the RANSAC algorithm
@ -792,14 +792,14 @@ In this scenario, ``points1`` and ``points2`` are the same input for ``findEssen
points2[i] = ...;
points2[i] = ...;
}
}
double focal = 1.0;
double focal = 1.0;
cv::Point2d pp(0.0, 0.0);
cv::Point2d pp(0.0, 0.0);
Mat E, R, t, mask;
Mat E, R, t, mask;
E = findEssentialMat(points1, points2, focal, pp, CV_RANSAC, 0.999, 1.0, mask);
E = findEssentialMat(points1, points2, focal, pp, CV_RANSAC, 0.999, 1.0, mask);
@ -220,10 +220,6 @@ After each weak classifier evaluation, the sample trace at the point :math:`t` i
The sample has been rejected if it fall rejection threshold. So stageless cascade allows to reject not-object sample as soon as possible. Another meaning of the sample trace is a confidence with that sample recognized as desired object. At each :math:`t` that confidence depend on all previous weak classifier. This feature of soft cascade is resulted in more accurate detection. The original formulation of soft cascade can be found in [BJ05]_.
The sample has been rejected if it fall rejection threshold. So stageless cascade allows to reject not-object sample as soon as possible. Another meaning of the sample trace is a confidence with that sample recognized as desired object. At each :math:`t` that confidence depend on all previous weak classifier. This feature of soft cascade is resulted in more accurate detection. The original formulation of soft cascade can be found in [BJ05]_.
..[BJ05] Lubomir Bourdev and Jonathan Brandt. tRobust Object Detection Via Soft Cascade. IEEE CVPR, 2005.
..[BMTG12] Rodrigo Benenson, Markus Mathias, Radu Timofte and Luc Van Gool. Pedestrian detection at 100 frames per second. IEEE CVPR, 2012.