From ade46bd4287c59807869a87cb4089d73a8d1dad8 Mon Sep 17 00:00:00 2001
From: unknown <PhilLab@users.noreply.github.com>
Date: Thu, 26 Jun 2014 14:17:57 +0200
Subject: [PATCH 1/2] Fixed typos in comments

---
 ...mera_calibration_and_3d_reconstruction.rst |  2 +-
 modules/core/include/opencv2/core/core.hpp    |  4 +-
 modules/highgui/src/cap_libv4l.cpp            |  8 +--
 modules/highgui/src/cap_v4l.cpp               |  8 +--
 .../include/opencv2/imgproc/imgproc.hpp       |  4 +-
 modules/imgproc/src/contours.cpp              |  8 +--
 modules/legacy/src/epilines.cpp               |  4 +-
 modules/legacy/src/lcm.cpp                    |  4 +-
 modules/legacy/src/lee.cpp                    | 52 +++++++++----------
 modules/ml/src/svm.cpp                        |  2 +-
 modules/ocl/src/fft.cpp                       |  8 +--
 modules/ts/include/opencv2/ts/ts.hpp          |  4 +-
 12 files changed, 54 insertions(+), 54 deletions(-)

diff --git a/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst b/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst
index d616dfdea2..59bd533e85 100644
--- a/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst
+++ b/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.rst
@@ -1588,7 +1588,7 @@ The distorted point coordinates are [x'; y'] where
     x' = (\theta_d / r) x \\
     y' = (\theta_d / r) y
 
-Finally, convertion into pixel coordinates: The final pixel coordinates vector [u; v] where:
+Finally, conversion into pixel coordinates: The final pixel coordinates vector [u; v] where:
 
 .. class:: center
 .. math::
diff --git a/modules/core/include/opencv2/core/core.hpp b/modules/core/include/opencv2/core/core.hpp
index 5667e9e50f..f98a4fd779 100644
--- a/modules/core/include/opencv2/core/core.hpp
+++ b/modules/core/include/opencv2/core/core.hpp
@@ -495,7 +495,7 @@ public:
     //! dot product computed in double-precision arithmetics
     double ddot(const Matx<_Tp, m, n>& v) const;
 
-    //! convertion to another data type
+    //! conversion to another data type
     template<typename T2> operator Matx<T2, m, n>() const;
 
     //! change the matrix shape
@@ -636,7 +636,7 @@ public:
       For other dimensionalities the exception is raised
     */
     Vec cross(const Vec& v) const;
-    //! convertion to another data type
+    //! conversion to another data type
     template<typename T2> operator Vec<T2, cn>() const;
     //! conversion to 4-element CvScalar.
     operator CvScalar() const;
diff --git a/modules/highgui/src/cap_libv4l.cpp b/modules/highgui/src/cap_libv4l.cpp
index a05c4b2123..ff153042d1 100644
--- a/modules/highgui/src/cap_libv4l.cpp
+++ b/modules/highgui/src/cap_libv4l.cpp
@@ -102,7 +102,7 @@ I modified the following:
     autosetup_capture_mode_v4l2 -> autodetect capture modes for v4l2
   - Modifications are according with Video4Linux old codes
   - Video4Linux handling is automatically if it does not recognize a Video4Linux2 device
-  - Tested succesful with Logitech Quickcam Express (V4L), Creative Vista (V4L) and Genius VideoCam Notebook (V4L2)
+  - Tested successfully with Logitech Quickcam Express (V4L), Creative Vista (V4L) and Genius VideoCam Notebook (V4L2)
   - Correct source lines with compiler warning messages
   - Information message from v4l/v4l2 detection
 
@@ -113,7 +113,7 @@ I modified the following:
   - SN9C10x chip based webcams support
   - New methods are internal:
     bayer2rgb24, sonix_decompress -> decoder routines for SN9C10x decoding from Takafumi Mizuno <taka-qce@ls-a.jp> with his pleasure :)
-  - Tested succesful with Genius VideoCam Notebook (V4L2)
+  - Tested successfully with Genius VideoCam Notebook (V4L2)
 
 Sixth Patch: Sept 10, 2005 Csaba Kertesz sign@freemail.hu
 For Release:  OpenCV-Linux Beta5 OpenCV-0.9.7
@@ -123,7 +123,7 @@ I added the following:
   - Get and change V4L capture controls (hue, saturation, brightness, contrast)
   - New method is internal:
     icvSetControl -> set capture controls
-  - Tested succesful with Creative Vista (V4L)
+  - Tested successfully with Creative Vista (V4L)
 
 Seventh Patch: Sept 10, 2005 Csaba Kertesz sign@freemail.hu
 For Release:  OpenCV-Linux Beta5 OpenCV-0.9.7
@@ -132,7 +132,7 @@ I added the following:
   - Detect, get and change V4L2 capture controls (hue, saturation, brightness, contrast, gain)
   - New methods are internal:
     v4l2_scan_controls_enumerate_menu, v4l2_scan_controls -> detect capture control intervals
-  - Tested succesful with Genius VideoCam Notebook (V4L2)
+  - Tested successfully with Genius VideoCam Notebook (V4L2)
 
 8th patch: Jan 5, 2006, Olivier.Bornet@idiap.ch
 Add support of V4L2_PIX_FMT_YUYV and V4L2_PIX_FMT_MJPEG.
diff --git a/modules/highgui/src/cap_v4l.cpp b/modules/highgui/src/cap_v4l.cpp
index c9fca05819..d09c8f88cf 100644
--- a/modules/highgui/src/cap_v4l.cpp
+++ b/modules/highgui/src/cap_v4l.cpp
@@ -102,7 +102,7 @@ I modified the following:
     autosetup_capture_mode_v4l2 -> autodetect capture modes for v4l2
   - Modifications are according with Video4Linux old codes
   - Video4Linux handling is automatically if it does not recognize a Video4Linux2 device
-  - Tested succesful with Logitech Quickcam Express (V4L), Creative Vista (V4L) and Genius VideoCam Notebook (V4L2)
+  - Tested successfully with Logitech Quickcam Express (V4L), Creative Vista (V4L) and Genius VideoCam Notebook (V4L2)
   - Correct source lines with compiler warning messages
   - Information message from v4l/v4l2 detection
 
@@ -113,7 +113,7 @@ I modified the following:
   - SN9C10x chip based webcams support
   - New methods are internal:
     bayer2rgb24, sonix_decompress -> decoder routines for SN9C10x decoding from Takafumi Mizuno <taka-qce@ls-a.jp> with his pleasure :)
-  - Tested succesful with Genius VideoCam Notebook (V4L2)
+  - Tested successfully with Genius VideoCam Notebook (V4L2)
 
 Sixth Patch: Sept 10, 2005 Csaba Kertesz sign@freemail.hu
 For Release:  OpenCV-Linux Beta5 OpenCV-0.9.7
@@ -123,7 +123,7 @@ I added the following:
   - Get and change V4L capture controls (hue, saturation, brightness, contrast)
   - New method is internal:
     icvSetControl -> set capture controls
-  - Tested succesful with Creative Vista (V4L)
+  - Tested successfully with Creative Vista (V4L)
 
 Seventh Patch: Sept 10, 2005 Csaba Kertesz sign@freemail.hu
 For Release:  OpenCV-Linux Beta5 OpenCV-0.9.7
@@ -132,7 +132,7 @@ I added the following:
   - Detect, get and change V4L2 capture controls (hue, saturation, brightness, contrast, gain)
   - New methods are internal:
     v4l2_scan_controls_enumerate_menu, v4l2_scan_controls -> detect capture control intervals
-  - Tested succesful with Genius VideoCam Notebook (V4L2)
+  - Tested successfully with Genius VideoCam Notebook (V4L2)
 
 8th patch: Jan 5, 2006, Olivier.Bornet@idiap.ch
 Add support of V4L2_PIX_FMT_YUYV and V4L2_PIX_FMT_MJPEG.
diff --git a/modules/imgproc/include/opencv2/imgproc/imgproc.hpp b/modules/imgproc/include/opencv2/imgproc/imgproc.hpp
index 2fcccfe30d..339476a633 100644
--- a/modules/imgproc/include/opencv2/imgproc/imgproc.hpp
+++ b/modules/imgproc/include/opencv2/imgproc/imgproc.hpp
@@ -84,7 +84,7 @@ public:
     BaseRowFilter();
     //! the destructor
     virtual ~BaseRowFilter();
-    //! the filtering operator. Must be overrided in the derived classes. The horizontal border interpolation is done outside of the class.
+    //! the filtering operator. Must be overridden in the derived classes. The horizontal border interpolation is done outside of the class.
     virtual void operator()(const uchar* src, uchar* dst,
                             int width, int cn) = 0;
     int ksize, anchor;
@@ -111,7 +111,7 @@ public:
     BaseColumnFilter();
     //! the destructor
     virtual ~BaseColumnFilter();
-    //! the filtering operator. Must be overrided in the derived classes. The vertical border interpolation is done outside of the class.
+    //! the filtering operator. Must be overridden in the derived classes. The vertical border interpolation is done outside of the class.
     virtual void operator()(const uchar** src, uchar* dst, int dststep,
                             int dstcount, int width) = 0;
     //! resets the internal buffers, if any
diff --git a/modules/imgproc/src/contours.cpp b/modules/imgproc/src/contours.cpp
index c34f3e62f2..304214257c 100644
--- a/modules/imgproc/src/contours.cpp
+++ b/modules/imgproc/src/contours.cpp
@@ -125,7 +125,7 @@ _CvContourInfo;
 
 
 /*
-  Structure that is used for sequental retrieving contours from the image.
+  Structure that is used for sequential retrieving contours from the image.
   It supports both hierarchical and plane variants of Suzuki algorithm.
 */
 typedef struct _CvContourScanner
@@ -314,7 +314,7 @@ cvStartFindContours( void* _img, CvMemStorage* storage,
          tree. The retrieved contour itself is removed from the storage.
          Here two cases are possible:
             2a. If one deals with plane variant of algorithm
-                (hierarchical strucutre is not reconstructed),
+                (hierarchical structure is not reconstructed),
                 the contour is removed completely.
             2b. In hierarchical case, the header of the contour is not removed.
                 It's marked as "link to contour" and h_next pointer of it is set to
@@ -326,8 +326,8 @@ cvStartFindContours( void* _img, CvMemStorage* storage,
          leaves header if hierarchical (but doesn't mark header as "link").
       ------------------------------------------------------------------------
       The 1st variant can be used to retrieve and store all the contours from the image
-      (with optional convertion from chains to contours using some approximation from
-      restriced set of methods). Some characteristics of contour can be computed in the
+      (with optional conversion from chains to contours using some approximation from
+      restricted set of methods). Some characteristics of contour can be computed in the
       same pass.
 
       The usage scheme can look like:
diff --git a/modules/legacy/src/epilines.cpp b/modules/legacy/src/epilines.cpp
index b63f8e1c77..d45aa8bab4 100644
--- a/modules/legacy/src/epilines.cpp
+++ b/modules/legacy/src/epilines.cpp
@@ -377,7 +377,7 @@ int icvComCoeffForLine(   CvPoint2D64d point1,
                             camMatr2,
                             &directS4);
 
-    /* Create convertion for camera 2: two direction and camera point */
+    /* Create conversion for camera 2: two direction and camera point */
 
     double convRotMatr[9];
     double convTransVect[3];
@@ -1928,7 +1928,7 @@ void icvGetCutPiece(   CvVect64d areaLineCoef1,CvVect64d areaLineCoef2,
     if( numPoints < 2 )
     {
         *result = 0;
-        return;/* Error. Not enought points */
+        return;/* Error. Not enough points */
     }
     /* Project all points to middle line and get max and min */
 
diff --git a/modules/legacy/src/lcm.cpp b/modules/legacy/src/lcm.cpp
index 8416952a35..1426f8a931 100644
--- a/modules/legacy/src/lcm.cpp
+++ b/modules/legacy/src/lcm.cpp
@@ -100,8 +100,8 @@ typedef struct CvLCMData
 //    Context:
 //    Parameters:
 //      LCM : in&out.
-//    Returns: 1, if hybrid model was succesfully constructed
-//             0, if some error occures
+//    Returns: 1, if hybrid model was successfully constructed
+//             0, if some error occurs
 //F*/
 CV_IMPL
 int _cvConstructLCM(CvLCM* LCM);
diff --git a/modules/legacy/src/lee.cpp b/modules/legacy/src/lee.cpp
index 85fe497885..2df212763b 100644
--- a/modules/legacy/src/lee.cpp
+++ b/modules/legacy/src/lee.cpp
@@ -182,8 +182,8 @@ typedef CvDirection* pCvDirection;
 //      attempt_number: in, number of unsuccessful attemts made by program to compute
 //                          the Voronoi Diagram befor return the error
 //
-//    Returns: 1, if Voronoi Diagram was succesfully computed
-//             0, if some error occures
+//    Returns: 1, if Voronoi Diagram was successfully computed
+//             0, if some error occurs
 //F*/
 static int  _cvLee(CvSeq* ContourSeq,
                       CvVoronoiDiagramInt* pVoronoiDiagramInt,
@@ -207,8 +207,8 @@ static int  _cvLee(CvSeq* ContourSeq,
 //    contour_orientation: in, orientation of polygons.
 //                           = 1, if contour is left - oriented in left coordinat system
 //                           =-1, if contour is left - oriented in right coordinat system
-//     Return: 1, if sites were succesfully constructed
-//             0, if some error occures
+//     Return: 1, if sites were successfully constructed
+//             0, if some error occurs
 //F*/
 static int _cvConstuctSites(CvSeq* ContourSeq,
                             CvVoronoiDiagramInt* pVoronoiDiagram,
@@ -223,8 +223,8 @@ static int _cvConstuctSites(CvSeq* ContourSeq,
 //    Parameters:
 //       pVoronoiDiagram : in, pointer to struct, which contains the
 //                          description of Voronoi Diagram
-//     Return: 1, if chains were succesfully constructed
-//             0, if some error occures
+//     Return: 1, if chains were successfully constructed
+//             0, if some error occurs
 //F*/
 static int _cvConstructChains(CvVoronoiDiagramInt* pVoronoiDiagram);
 
@@ -236,8 +236,8 @@ static int _cvConstructChains(CvVoronoiDiagramInt* pVoronoiDiagram);
 //    Parameters:
 //      VoronoiDiagram : in, pointer to struct, which contains the
 //                       description of Voronoi Diagram.
-//    Returns: 1, if skeleton was succesfully computed
-//             0, if some error occures
+//    Returns: 1, if skeleton was successfully computed
+//             0, if some error occurs
 //F*/
 static int _cvConstructSkeleton(CvVoronoiDiagramInt* pVoronoiDiagram);
 
@@ -280,11 +280,11 @@ static void _cvReleaseVoronoiStorage(CvVoronoiStorageInt* pVoronoiStorage, int g
 //    Parameters:
 //        VoronoiDiagram: in
 //        VoronoiStorage: in
-//        change_orientation: in, if = -1 then the convertion is accompanied with change
+//        change_orientation: in, if = -1 then the conversion is accompanied with change
 //                            of orientation
 //
-//     Return: 1, if convertion was succesfully completed
-//             0, if some error occures
+//     Return: 1, if conversion was successfully completed
+//             0, if some error occurs
 //F*/
 /*
 static int _cvConvert(CvVoronoiDiagram2D* VoronoiDiagram,
@@ -311,8 +311,8 @@ static int _cvConvert(CvVoronoiDiagram2D* VoronoiDiagram,
 //        VoronoiDiagram: in
 //        VoronoiStorage: in
 /
-//     Return: 1, if convertion was succesfully completed
-//             0, if some error occures
+//     Return: 1, if conversion was successfully completed
+//             0, if some error occurs
 //F*/
 /*
 static int _cvConvertSameOrientation(CvVoronoiDiagram2D* VoronoiDiagram,
@@ -337,8 +337,8 @@ static int _cvConvertSameOrientation(CvVoronoiDiagram2D* VoronoiDiagram,
 //        VoronoiDiagram: in
 //        VoronoiStorage: in
 /
-//     Return: 1, if convertion was succesfully completed
-//             0, if some error occures
+//     Return: 1, if conversion was successfully completed
+//             0, if some error occurs
 //F*/
 /*
 static int _cvConvertChangeOrientation(CvVoronoiDiagram2D* VoronoiDiagram,
@@ -362,8 +362,8 @@ static int _cvConvertChangeOrientation(CvVoronoiDiagram2D* VoronoiDiagram,
      orientation: in, orientation of contour ( = 1 or = -1)
      type:        in, type of vertices. The possible values are (int)1,
                    (float)1,(double)1.
-     Return:    1, if sites were succesfully constructed
-                0, if some error occures    :
+     Return:    1, if sites were successfully constructed
+                0, if some error occurs    :
     --------------------------------------------------------------------------*/
 template<class T>
 int _cvConstructExtSites(CvVoronoiDiagramInt* pVoronoiDiagram,
@@ -384,8 +384,8 @@ int _cvConstructExtSites(CvVoronoiDiagramInt* pVoronoiDiagram,
      orientation: in, orientation of contour ( = 1 or = -1)
      type:        in, type of vertices. The possible values are (int)1,
                    (float)1,(double)1.
-     Return:    1, if sites were succesfully constructed
-                0, if some error occures    :
+     Return:    1, if sites were successfully constructed
+                0, if some error occurs    :
     --------------------------------------------------------------------------*/
 template<class T>
 int _cvConstructIntSites(CvVoronoiDiagramInt* pVoronoiDiagram,
@@ -402,8 +402,8 @@ int _cvConstructIntSites(CvVoronoiDiagramInt* pVoronoiDiagram,
      pVoronoiDiagram : in&out, pointer to struct, which contains the
                         description of Voronoi Diagram
 
-    Return: 1, if chains were succesfully constructed
-            0, if some error occures
+    Return: 1, if chains were successfully constructed
+            0, if some error occurs
     --------------------------------------------------------------------------*/
 static int _cvConstructExtChains(CvVoronoiDiagramInt* pVoronoiDiagram);
 
@@ -456,7 +456,7 @@ static void _cvRandomModification(CvVoronoiDiagramInt* pVoronoiDiagram, int begi
     Arguments
      pVoronoiDiagram : in, pointer to struct, which contains the
                         description of Voronoi Diagram
-     Return     : 1, if VD was constructed succesfully
+     Return     : 1, if VD was constructed successfully
                   0, if some error occure
     --------------------------------------------------------------------------*/
 static int _cvConstructExtVD(CvVoronoiDiagramInt* pVoronoiDiagram);
@@ -479,7 +479,7 @@ static void _cvConstructIntVD(CvVoronoiDiagramInt* pVoronoiDiagram);
      pVoronoiDiagram : in, pointer to struct, which contains the
                         description of Voronoi Diagram
      pChain1,pChain1: in, given chains
-     Return     : 1, if joining was succesful
+     Return     : 1, if joining was successful
                   0, if some error occure
     --------------------------------------------------------------------------*/
 static int _cvJoinChains(pCvVoronoiChain pChain1,
@@ -507,7 +507,7 @@ static void _cvFindNearestSite(CvVoronoiDiagramInt* pVoronoiDiagram);
         pVoronoiDiagram : in, pointer to struct, which contains the
                           description of Voronoi Diagram
           pHole : in, given hole
-     Return     : 1, if the search was succesful
+     Return     : 1, if the search was successful
                   0, if some error occure
     --------------------------------------------------------------------------*/
 static int _cvFindOppositSiteCW(pCvVoronoiHole pHole, CvVoronoiDiagramInt* pVoronoiDiagram);
@@ -522,7 +522,7 @@ static int _cvFindOppositSiteCW(pCvVoronoiHole pHole, CvVoronoiDiagramInt* pVoro
         pVoronoiDiagram : in, pointer to struct, which contains the
                         description of Voronoi Diagram
           pHole : in, given hole
-     Return     : 1, if the search was succesful
+     Return     : 1, if the search was successful
                   0, if some error occure
     --------------------------------------------------------------------------*/
 static int _cvFindOppositSiteCCW(pCvVoronoiHole pHole,CvVoronoiDiagramInt* pVoronoiDiagram);
@@ -535,7 +535,7 @@ static int _cvFindOppositSiteCCW(pCvVoronoiHole pHole,CvVoronoiDiagramInt* pVoro
 pVoronoiDiagram : in, pointer to struct, which contains the
                         description of Voronoi Diagram
           pHole : in, given hole
-     Return     : 1, if merging was succesful
+     Return     : 1, if merging was successful
                   0, if some error occure
     --------------------------------------------------------------------------*/
 static int _cvMergeVD(pCvVoronoiHole pHole,CvVoronoiDiagramInt* pVoronoiDiagram);
diff --git a/modules/ml/src/svm.cpp b/modules/ml/src/svm.cpp
index f158805219..0a5bfffa31 100644
--- a/modules/ml/src/svm.cpp
+++ b/modules/ml/src/svm.cpp
@@ -1632,7 +1632,7 @@ bool CvSVM::train( const CvMat* _train_data, const CvMat* _responses,
     if( !do_train( svm_type, sample_count, var_count, samples, responses, temp_storage, alpha ))
         EXIT;
 
-    ok = true; // model has been trained succesfully
+    ok = true; // model has been trained successfully
 
     __END__;
 
diff --git a/modules/ocl/src/fft.cpp b/modules/ocl/src/fft.cpp
index 05b7968ea2..2cc935c27e 100644
--- a/modules/ocl/src/fft.cpp
+++ b/modules/ocl/src/fft.cpp
@@ -200,8 +200,8 @@ cv::ocl::FftPlan::FftPlan(Size _dft_size, int _src_step, int _dst_step, int _fla
         clStridesOut[1] = dst_step / sizeof(float);
         break;
     default:
-        //std::runtime_error("does not support this convertion!");
-        cout << "Does not support this convertion!" << endl;
+        //std::runtime_error("does not support this conversion!");
+        cout << "Does not support this conversion!" << endl;
         throw exception();
         break;
     }
@@ -324,8 +324,8 @@ void cv::ocl::dft(const oclMat &src, oclMat &dst, Size dft_size, int flags)
         dst.create(src.rows, dft_size.width, CV_32FC1);
         break;
     default:
-        //std::runtime_error("does not support this convertion!");
-        cout << "Does not support this convertion!" << endl;
+        //std::runtime_error("does not support this conversion!");
+        cout << "Does not support this conversion!" << endl;
         throw exception();
         break;
     }
diff --git a/modules/ts/include/opencv2/ts/ts.hpp b/modules/ts/include/opencv2/ts/ts.hpp
index f4cd3ffbcd..c3e50b6ed7 100644
--- a/modules/ts/include/opencv2/ts/ts.hpp
+++ b/modules/ts/include/opencv2/ts/ts.hpp
@@ -373,7 +373,7 @@ public:
         FAIL_HANG=-13,
 
         // unexpected response on passing bad arguments to the tested function
-        // (the function crashed, proceed succesfully (while it should not), or returned
+        // (the function crashed, proceed successfully (while it should not), or returned
         // error code that is different from what is expected)
         FAIL_BAD_ARG_CHECK=-14,
 
@@ -383,7 +383,7 @@ public:
         // the test has been skipped because it is not in the selected subset of the tests to run,
         // because it has been run already within the same run with the same parameters, or because
         // of some other reason and this is not considered as an error.
-        // Normally TS::run() (or overrided method in the derived class) takes care of what
+        // Normally TS::run() (or overridden method in the derived class) takes care of what
         // needs to be run, so this code should not occur.
         SKIPPED=1
     };

From d5489f3a681b4b732d311d280d9f80ea19431054 Mon Sep 17 00:00:00 2001
From: PhilLab <PhilLab@users.noreply.github.com>
Date: Thu, 3 Jul 2014 12:29:33 +0200
Subject: [PATCH 2/2] Clarified DescriptorExtractor::compute

---
 .../doc/common_interfaces_of_descriptor_extractors.rst          | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/modules/features2d/doc/common_interfaces_of_descriptor_extractors.rst b/modules/features2d/doc/common_interfaces_of_descriptor_extractors.rst
index de3d99c85e..d8bbc7fe26 100644
--- a/modules/features2d/doc/common_interfaces_of_descriptor_extractors.rst
+++ b/modules/features2d/doc/common_interfaces_of_descriptor_extractors.rst
@@ -64,7 +64,7 @@ Computes the descriptors for a set of keypoints detected in an image (first vari
 
     :param images: Image set.
 
-    :param keypoints: Input collection of keypoints. Keypoints for which a descriptor cannot be computed are removed. Sometimes new keypoints can be added, for example: ``SIFT`` duplicates keypoint with several dominant orientations (for each orientation).
+    :param keypoints: Input collection of keypoints. Keypoints for which a descriptor cannot be computed are removed and the remaining ones may be reordered. Sometimes new keypoints can be added, for example: ``SIFT`` duplicates a keypoint with several dominant orientations (for each orientation).
 
     :param descriptors: Computed descriptors. In the second variant of the method ``descriptors[i]`` are descriptors computed for a ``keypoints[i]``. Row ``j`` is the ``keypoints`` (or ``keypoints[i]``) is the descriptor for keypoint ``j``-th keypoint.