From caaa9e0f2dcd20e6ba1a45e2dcb73bc344116188 Mon Sep 17 00:00:00 2001 From: Ovidiu Parvu Date: Sun, 15 Sep 2013 15:07:17 +0100 Subject: [PATCH] - Wrote the documentation for the minEnclosingTriangle function (+1 extra picture depicting a sample output) --- modules/imgproc/doc/pics/minenclosingtriangle.png | Bin 0 -> 16927 bytes .../structural_analysis_and_shape_descriptors.rst | 39 +++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 modules/imgproc/doc/pics/minenclosingtriangle.png diff --git a/modules/imgproc/doc/pics/minenclosingtriangle.png b/modules/imgproc/doc/pics/minenclosingtriangle.png new file mode 100644 index 0000000000000000000000000000000000000000..ec89c6aa255106ed92edd39be7ebb7c76bbebf66 GIT binary patch literal 16927 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 DPuLoC literal 0 HcmV?d00001 diff --git a/modules/imgproc/doc/structural_analysis_and_shape_descriptors.rst b/modules/imgproc/doc/structural_analysis_and_shape_descriptors.rst index d346006..c091ba3 100644 --- a/modules/imgproc/doc/structural_analysis_and_shape_descriptors.rst +++ b/modules/imgproc/doc/structural_analysis_and_shape_descriptors.rst @@ -560,6 +560,41 @@ The function finds the four vertices of a rotated rectangle. This function is us +minEnclosingTriangle +---------------------- +Finds a triangle of minimum area enclosing a 2D point set. + +.. ocv:function:: void minEnclosingTriangle( InputArray points, OutputArray triangle ) + +.. ocv:function:: void minEnclosingTriangle( InputArray points, OutputArray triangle, double &area ) + +.. ocv:pyfunction:: cv2.minEnclosingTriangle(points[, triangle]) -> triangle, area + + :param points: Input vector of 2D points with depth ``CV_32S`` or ``CV_32F``. + + :param triangle: Output vector of three 2D points defining the vertices of the triangle. The depth of the OutputArray must be ``CV_32F``. + + :param area: The area of the minimum enclosing triangle. + +The output for a given 2D point set is shown in the image below. The 2D points are depicted in *red* and the enclosing triangle in *yellow*. + +.. image:: pics/minenclosingtriangle.png + :height: 250px + :width: 250px + :alt: Sample output of the minimum enclosing triangle function + +The implementation of the algorithm is based on O'Rourke's [ORourke86]_ and Klee and Laskowski's [KleeLaskowski85]_ papers. O'Rourke provides a +:math:`\theta(n)` +algorithm for finding the minimal enclosing triangle of a 2D convex polygon with ``n`` vertices. Since the :ocv:func:`minEnclosingTriangle` function takes a 2D point set as input an additional preprocessing step of computing the convex hull of the 2D point set is required. The complexity of the :ocv:func:`convexHull` function is +:math:`O(n log(n))` which is higher than +:math:`\theta(n)`. +Thus the overall complexity of the function is +:math:`O(n log(n))`. + +.. note:: See ``opencv_source/samples/cpp/minarea.cpp`` for a usage example. + + + minEnclosingCircle ---------------------- Finds a circle of the minimum area enclosing a 2D point set. @@ -672,6 +707,10 @@ See below a sample output of the function where each image pixel is tested again .. [Hu62] M. Hu. *Visual Pattern Recognition by Moment Invariants*, IRE Transactions on Information Theory, 8:2, pp. 179-187, 1962. +.. [KleeLaskowski85] Klee, V. and Laskowski, M.C., *Finding the smallest triangles containing a given convex polygon*, Journal of Algorithms, vol. 6, no. 3, pp. 359–375 (1985) + +.. [ORourke86] O’Rourke, J., Aggarwal, A., Maddila, S., and Baldwin, M., *An optimal algorithm for finding minimal enclosing triangles*, Journal of Algorithms, vol. 7, no. 2, pp. 258–269 (1986) + .. [Sklansky82] Sklansky, J., *Finding the Convex Hull of a Simple Polygon*. PRL 1 $number, pp 79-83 (1982) .. [Suzuki85] Suzuki, S. and Abe, K., *Topological Structural Analysis of Digitized Binary Images by Border Following*. CVGIP 30 1, pp 32-46 (1985) -- 2.7.4