nareshmlx/opencv-pr huggingface dataset:
**File:** modules/3d/include/opencv2/3d.hpp
**Change Type:** modified
**Context:** PR #19684: Add Octree to 3D module in next branch - in progress

**Code Changes:**
```diff
@@ -2374,6 +2374,151 @@ void undistortPoints(InputArray src, OutputArray dst,
                      InputArray R = noArray(), InputArray P = noArray(),
                      TermCriteria criteria=TermCriteria(TermCriteria::MAX_ITER, 5, 0.01));
 
+
+/** @brief Octree for 3D vision.
+ *
+ * In 3D vision filed, the Octree is used to process and accelerate the pointcloud data. The class Octree represents
+ * the Octree data structure. Each Octree will have a fixed depth. The depth of Octree refers to the distance from
+ * the root node to the leaf node.All OctreeNodes will not exceed this depth.Increasing the depth will increase
```

Review comment:
We prefer to avoid adding of global functions. Extend `Octree` class instead. For this "create" function use: ``` static Octree createFromPointCloud(const std::vector<Point3f> &pointCloud, int maxDepth = -1); ``` Usage: ``` auto octree = Octree::createFromPointCloud(pts); ``` (BTW, `createFromPointCloud()` name can be replaced with `create()`)
**File:** modules/3d/include/opencv2/3d.hpp
**Change Type:** modified
**Context:** PR #19684: Add Octree to 3D module in next branch - in progress

**Code Changes:**
```diff
@@ -2374,6 +2374,151 @@ void undistortPoints(InputArray src, OutputArray dst,
                      InputArray R = noArray(), InputArray P = noArray(),
                      TermCriteria criteria=TermCriteria(TermCriteria::MAX_ITER, 5, 0.01));
 
+
+/** @brief Octree for 3D vision.
+ *
+ * In 3D vision filed, the Octree is used to process and accelerate the pointcloud data. The class Octree represents
+ * the Octree data structure. Each Octree will have a fixed depth. The depth of Octree refers to the distance from
+ * the root node to the leaf node.All OctreeNodes will not exceed this depth.Increasing the depth will increase
```

Review comment:
No need to duplicate existed `octree::radiusNNSearch()` method with global function.
**File:** modules/3d/include/opencv2/3d.hpp
**Change Type:** modified
**Context:** PR #19684: Add Octree to 3D module in next branch - in progress

**Code Changes:**
```diff
@@ -2374,6 +2374,151 @@ void undistortPoints(InputArray src, OutputArray dst,
                      InputArray R = noArray(), InputArray P = noArray(),
                      TermCriteria criteria=TermCriteria(TermCriteria::MAX_ITER, 5, 0.01));
 
+
+/** @brief Octree for 3D vision.
+ *
+ * In 3D vision filed, the Octree is used to process and accelerate the pointcloud data. The class Octree represents
+ * the Octree data structure. Each Octree will have a fixed depth. The depth of Octree refers to the distance from
+ * the root node to the leaf node.All OctreeNodes will not exceed this depth.Increasing the depth will increase
```

Review comment:
The same. Remove duplicate of `octree::KNNSearch()` method.
**File:** modules/3d/src/octree.cpp
**Change Type:** added
**Context:** PR #19684: Add Octree to 3D module in next branch - in progress

**Code Changes:**
```diff
@@ -0,0 +1,546 @@
+// This file is part of OpenCV project.
+// It is subject to the license terms in the LICENSE file found in the top-level directory
+// of this distribution and at http://opencv.org/license.html
+
+#include "precomp.hpp"
+#include "octree.hpp"
+
+#define OCTREE_CHILD_NUM 8
+
```

Review comment:
duplicate of `OctreeNode::isPointInBound()` implementation
**File:** modules/3d/src/octree.cpp
**Change Type:** added
**Context:** PR #19684: Add Octree to 3D module in next branch - in progress

**Code Changes:**
```diff
@@ -0,0 +1,546 @@
+// This file is part of OpenCV project.
+// It is subject to the license terms in the LICENSE file found in the top-level directory
+// of this distribution and at http://opencv.org/license.html
+
+#include "precomp.hpp"
+#include "octree.hpp"
+
+#define OCTREE_CHILD_NUM 8
+
```

Review comment:
Reuse existed OpenCV fucntionality: ``` Point3d diff = query - origin; return diff.dot(diff); ```
**File:** modules/3d/src/octree.cpp
**Change Type:** added
**Context:** PR #19684: Add Octree to 3D module in next branch - in progress

**Code Changes:**
```diff
@@ -0,0 +1,546 @@
+// This file is part of OpenCV project.
+// It is subject to the license terms in the LICENSE file found in the top-level directory
+// of this distribution and at http://opencv.org/license.html
+
+#include "precomp.hpp"
+#include "octree.hpp"
+
+#define OCTREE_CHILD_NUM 8
+
```

Review comment:
> `float(node->size/2.0)` 1. `.../2.0` => `* 0.5f` 2. calculate once.
**File:** modules/3d/src/octree.cpp
**Change Type:** added
**Context:** PR #19684: Add Octree to 3D module in next branch - in progress

**Code Changes:**
```diff
@@ -0,0 +1,546 @@
+// This file is part of OpenCV project.
+// It is subject to the license terms in the LICENSE file found in the top-level directory
+// of this distribution and at http://opencv.org/license.html
+
+#include "precomp.hpp"
+#include "octree.hpp"
+
+#define OCTREE_CHILD_NUM 8
+
```

Review comment:
> `const Ptr<OctreeNode>& node` We don't need smart pointer here (with many dereference operations). Pass `const OctreeNode& node` instead. The similar note is for other applicable functions (not all).
**File:** modules/3d/src/octree.cpp
**Change Type:** added
**Context:** PR #19684: Add Octree to 3D module in next branch - in progress

**Code Changes:**
```diff
@@ -0,0 +1,546 @@
+// This file is part of OpenCV project.
+// It is subject to the license terms in the LICENSE file found in the top-level directory
+// of this distribution and at http://opencv.org/license.html
+
+#include "precomp.hpp"
+#include "octree.hpp"
+
+#define OCTREE_CHILD_NUM 8
+
```

Review comment:
In general, it is not correct to use the same epsilon value. `std::numeric_limits<float>::epsilon()` can be used safely to compare values near 1.0 (0.5 ... 1.0 in the worst case). It is not applicable to compare large (100000.0) or small (1e-6) numbers. Probably we should adjust epsilon values first (still approximation): ``` float epsX = std::numeric_limits<float>::epsilon() * std::max(std::abs(_point.x), std::abs(_origin.x)) float epsY = ...; float epsZ = ...; ``` See also: https://en.wikipedia.org/wiki/Machine_epsilon --- Using strong comparison doesn't look correct: ```.diff -_point.x + epsilon > _origin.x +_point.x + epsilon >= _origin.x ```
**File:** modules/3d/test/test_octree.cpp
**Change Type:** added
**Context:** PR #19684: Add Octree to 3D module in next branch - in progress

**Code Changes:**
```diff
@@ -0,0 +1,113 @@
+// This file is part of OpenCV project.
+// It is subject to the license terms in the LICENSE file found in the top-level directory
+// of this distribution and at http://opencv.org/license.html.
+
+#include "test_precomp.hpp"
+
+namespace opencv_test { namespace {
+
+using namespace cv;
```

Review comment:
code generates values from the range `[-1; 1]`. Perhaps this range should be extended to `[-10; 10]`.
**File:** modules/3d/test/test_octree.cpp
**Change Type:** added
**Context:** PR #19684: Add Octree to 3D module in next branch - in progress

**Code Changes:**
```diff
@@ -0,0 +1,113 @@
+// This file is part of OpenCV project.
+// It is subject to the license terms in the LICENSE file found in the top-level directory
+// of this distribution and at http://opencv.org/license.html.
+
+#include "test_precomp.hpp"
+
+namespace opencv_test { namespace {
+
+using namespace cv;
```

Review comment:
`public<space>`
**File:** modules/3d/test/test_octree.cpp
**Change Type:** added
**Context:** PR #19684: Add Octree to 3D module in next branch - in progress

**Code Changes:**
```diff
@@ -0,0 +1,113 @@
+// This file is part of OpenCV project.
+// It is subject to the license terms in the LICENSE file found in the top-level directory
+// of this distribution and at http://opencv.org/license.html.
+
+#include "test_precomp.hpp"
+
+namespace opencv_test { namespace {
+
+using namespace cv;
```

Review comment:
`EXPECT_FLOAT_EQ()`?
**File:** modules/3d/test/test_octree.cpp
**Change Type:** added
**Context:** PR #19684: Add Octree to 3D module in next branch - in progress

**Code Changes:**
```diff
@@ -0,0 +1,113 @@
+// This file is part of OpenCV project.
+// It is subject to the license terms in the LICENSE file found in the top-level directory
+// of this distribution and at http://opencv.org/license.html.
+
+#include "test_precomp.hpp"
+
+namespace opencv_test { namespace {
+
+using namespace cv;
```

Review comment:
`EXPECT_TRUE()` `EXPECT_FALSE()` here and below with true/false
**File:** modules/3d/src/octree.cpp
**Change Type:** added
**Context:** PR #19684: Add Octree to 3D module in next branch - in progress

**Code Changes:**
```diff
@@ -0,0 +1,546 @@
+// This file is part of OpenCV project.
+// It is subject to the license terms in the LICENSE file found in the top-level directory
+// of this distribution and at http://opencv.org/license.html
+
+#include "precomp.hpp"
+#include "octree.hpp"
+
+#define OCTREE_CHILD_NUM 8
+
```

Review comment:
1. `node == nullptr` comparison is not efficient. Use `operator bool` instead. 2. `return nullptr;` is not efficient. 3. reduce amount of `node->` dereferences. ``` Ptr<OctreeNode> index(const Point3f& point, Ptr<OctreeNode>& node_) { if (!node_) { return Ptr<OctreeNode>(); } OctreeNode& node = *node_; ... } ``` --- Probably you don't need `Ptr<>` in this implementation. ``` Ptr<OctreeNode> index(const Point3f& point, const OctreeNode& node) ```
**File:** modules/3d/src/octree.hpp
**Change Type:** added
**Context:** PR #19684: Add Octree to 3D module in next branch - in progress

**Code Changes:**
```diff
@@ -0,0 +1,99 @@
+// This file is part of OpenCV project.
+// It is subject to the license terms in the LICENSE file found in the top-level directory
+// of this distribution and at http://opencv.org/license.html.
+//
+// Copyright (C) 2021, Huawei Technologies Co., Ltd. All rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Author: Zihao Mu <zihaomu6@gmail.com>
+//         Liangqian Kong <chargerKong@126.com>
```

Review comment:
> precomp.hpp should be used by .cpp files only (as first include)
**File:** modules/3d/include/opencv2/3d.hpp
**Change Type:** modified
**Context:** PR #19684: Add Octree to 3D module in next branch - in progress

**Code Changes:**
```diff
@@ -2374,6 +2374,151 @@ void undistortPoints(InputArray src, OutputArray dst,
                      InputArray R = noArray(), InputArray P = noArray(),
                      TermCriteria criteria=TermCriteria(TermCriteria::MAX_ITER, 5, 0.01));
 
+
+/** @brief Octree for 3D vision.
+ *
+ * In 3D vision filed, the Octree is used to process and accelerate the pointcloud data. The class Octree represents
+ * the Octree data structure. Each Octree will have a fixed depth. The depth of Octree refers to the distance from
+ * the root node to the leaf node.All OctreeNodes will not exceed this depth.Increasing the depth will increase
```

Review comment:
> creat create
**File:** modules/3d/src/octree.cpp
**Change Type:** added
**Context:** PR #19684: Add Octree to 3D module in next branch - in progress

**Code Changes:**
```diff
@@ -0,0 +1,546 @@
+// This file is part of OpenCV project.
+// It is subject to the license terms in the LICENSE file found in the top-level directory
+// of this distribution and at http://opencv.org/license.html
+
+#include "precomp.hpp"
+#include "octree.hpp"
+
+#define OCTREE_CHILD_NUM 8
+
```

Review comment:
These declarations should be local - use `static` for that. Also some declaration can be removed (used after declaration) - add `static` to definition only.
**File:** modules/calib3d/perf/perf_undistort.cpp
**Change Type:** modified
**Context:** PR #20165: Added initInverseRectificationMap()
**Review Line:** 25

**Code Changes:**
```diff
+{
+    Size size_w_h(512 + 3, 512);
+    Mat k(3, 3, CV_32FC1);
+    Mat d(1, 14, CV_64FC1);
+    Mat dst(size_w_h, CV_32FC2);
+    declare.in(k, d, WARMUP_RNG).out(dst);
+    TEST_CYCLE() initInverseRectificationMap(k, d, noArray(), k, size_w_h, CV_32FC2, dst, noArray());
+    SANITY_CHECK_NOTHING();
+}
+
 } // namespace
```

Review comment:
Why do we have such non-standard `size_w_h`? Why do we have randomized input for camera intrinsics? Prefer to measure the real cases. Function is not a real-time, not optimized and really slow (30+ ms), so there is not enough reasons to enable it into default set of perf tests.
**File:** modules/calib3d/src/undistort.dispatch.cpp
**Change Type:** modified
**Context:** PR #20165: Added initInverseRectificationMap()
**Review Line:** 217

**Code Changes:**
```diff
+        distCoeffs = Mat_<double>(distCoeffs);
+    else
+    {
+        distCoeffs.create(14, 1, CV_64F);
+        distCoeffs = 0.;
+    }
+
+    // Validate distortion vector size
+    CV_Assert( distCoeffs.size() == Size(1, 4) || distCoeffs.size() == Size(4, 1) ||
+               distCoeffs.size() == Size(1, 5) || distCoeffs.size() == Size(5, 1) ||
+               distCoeffs.size() == Size(1, 8) || distCoeffs.size() == Size(8, 1) ||
```

Review comment:
Assigning distortion matrix probably slowdowns computations below for this path.
**File:** modules/calib3d/test/test_undistort.cpp
**Change Type:** modified
**Context:** PR #20165: Added initInverseRectificationMap()
**Review Line:** 724

**Code Changes:**
```diff
     return 8;
 }
 
+//------------------------------------------------------
+
+class CV_InitInverseRectificationMapTest : public cvtest::ArrayTest
+{
+public:
+    CV_InitInverseRectificationMapTest();
+protected:
+    int prepare_test_case (int test_case_idx);
```

Review comment:
> cvtest::ArrayTest Adding new tests based on legacy classes should be avoided (they are deprecated since migration on Google Tests, ~10 years ago).
**File:** modules/calib3d/test/test_undistort.cpp
**Change Type:** modified
**Context:** PR #20165: Added initInverseRectificationMap()
**Review Line:** 921

**Code Changes:**
```diff
 //////////////////////////////////////////////////////////////////////////////////////////////////////
 
 TEST(Calib3d_DefaultNewCameraMatrix, accuracy) { CV_DefaultNewCameraMatrixTest test; test.safe_run(); }
 TEST(Calib3d_UndistortPoints, accuracy) { CV_UndistortPointsTest test; test.safe_run(); }
 TEST(Calib3d_InitUndistortRectifyMap, accuracy) { CV_InitUndistortRectifyMapTest test; test.safe_run(); }
+TEST(Calib3d_InitInverseRectificationMap, accuracy) { CV_InitInverseRectificationMapTest test; test.safe_run(); }
 
 ////////////////////////////// undistort /////////////////////////////////
 
```

Review comment:
This test consumes 33% of all opencv_test_calib3d run (30 seconds from 1:30). This is not acceptable, test must be reduced to run in 1-2sec.
**File:** modules/ts/src/ts_func.cpp
**Change Type:** modified
**Context:** PR #20165: Added initInverseRectificationMap()
**Review Line:** 2885

**Code Changes:**
```diff
@@ -2881,6 +2881,86 @@ void initUndistortMap( const Mat& _a0, const Mat& _k0, const Mat& _R0, const Mat
     _mapy.convertTo(__mapy, map_type);
 }
 
+void initInverseRectificationMap( const Mat& _a0, const Mat& _k0, const Mat& _R0, const Mat& _new_cam0, Size sz, Mat& __mapx, Mat& __mapy, int map_type )
+{
+    Mat _mapx(sz, CV_32F), _mapy(sz, CV_32F);
+
+    double a[9], k[5]={0,0,0,0,0}, iR[9]={1, 0, 0, 0, 1, 0, 0, 0, 1}, a1[9];
+    Mat _a(3, 3, CV_64F, a), _a1(3, 3, CV_64F, a1);
+    Mat _k(_k0.rows,_k0.cols, CV_MAKETYPE(CV_64F,_k0.channels()),k);
```

Review comment:
Do **NOT** touch the TS module! Module-specific functionality should be moved out of this generic module instead.
**File:** modules/calib3d/include/opencv2/calib3d.hpp
**Change Type:** modified
**Context:** PR #20165: Added initInverseRectificationMap()
**Review Line:** 3783

**Code Changes:**
```diff
+@param map2 The second output map for #remap.
+ */
+CV_EXPORTS_W
+void initInverseRectificationMap( InputArray cameraMatrix, InputArray distCoeffs,
+                           InputArray R, InputArray newCameraMatrix,
+                           Size size, int m1type, OutputArray map1, OutputArray map2 );
+
 //! initializes maps for #remap for wide-angle
 CV_EXPORTS
 float initWideAngleProjMap(InputArray cameraMatrix, InputArray distCoeffs,
```

Review comment:
> Size size const reference for all input parameters based on non-scalars: `const Size& size`
**File:** modules/calib3d/src/undistort.dispatch.cpp
**Change Type:** modified
**Context:** PR #20165: Added initInverseRectificationMap()
**Review Line:** 217

**Code Changes:**
```diff
+        distCoeffs = Mat_<double>(distCoeffs);
+    else
+    {
+        distCoeffs.create(14, 1, CV_64F);
+        distCoeffs = 0.;
+    }
+
+    // Validate distortion vector size
+    CV_Assert( distCoeffs.size() == Size(1, 4) || distCoeffs.size() == Size(4, 1) ||
+               distCoeffs.size() == Size(1, 5) || distCoeffs.size() == Size(5, 1) ||
+               distCoeffs.size() == Size(1, 8) || distCoeffs.size() == Size(8, 1) ||
```

Review comment:
Correct. cv::undistortPoints skips distortion entirely if the matrix is empty. Correction has been applied in #20247. It is unfortunate the same optimization is not applied for R.
**File:** modules/calib3d/test/test_undistort.cpp
**Change Type:** modified
**Context:** PR #20165: Added initInverseRectificationMap()
**Review Line:** 921

**Code Changes:**
```diff
 //////////////////////////////////////////////////////////////////////////////////////////////////////
 
 TEST(Calib3d_DefaultNewCameraMatrix, accuracy) { CV_DefaultNewCameraMatrixTest test; test.safe_run(); }
 TEST(Calib3d_UndistortPoints, accuracy) { CV_UndistortPointsTest test; test.safe_run(); }
 TEST(Calib3d_InitUndistortRectifyMap, accuracy) { CV_InitUndistortRectifyMapTest test; test.safe_run(); }
+TEST(Calib3d_InitInverseRectificationMap, accuracy) { CV_InitInverseRectificationMapTest test; test.safe_run(); }
 
 ////////////////////////////// undistort /////////////////////////////////
 
```

Review comment:
This test has been disabled in #20247.
**File:** modules/ts/src/ts_func.cpp
**Change Type:** modified
**Context:** PR #20165: Added initInverseRectificationMap()
**Review Line:** 2885

**Code Changes:**
```diff
@@ -2881,6 +2881,86 @@ void initUndistortMap( const Mat& _a0, const Mat& _k0, const Mat& _R0, const Mat
     _mapy.convertTo(__mapy, map_type);
 }
 
+void initInverseRectificationMap( const Mat& _a0, const Mat& _k0, const Mat& _R0, const Mat& _new_cam0, Size sz, Mat& __mapx, Mat& __mapy, int map_type )
+{
+    Mat _mapx(sz, CV_32F), _mapy(sz, CV_32F);
+
+    double a[9], k[5]={0,0,0,0,0}, iR[9]={1, 0, 0, 0, 1, 0, 0, 0, 1}, a1[9];
+    Mat _a(3, 3, CV_64F, a), _a1(3, 3, CV_64F, a1);
+    Mat _k(_k0.rows,_k0.cols, CV_MAKETYPE(CV_64F,_k0.channels()),k);
```

Review comment:
Code has been removed and integrated into test_undistort.cpp. Applied in #20247.
**File:** modules/calib3d/include/opencv2/calib3d.hpp
**Change Type:** modified
**Context:** PR #20165: Added initInverseRectificationMap()
**Review Line:** 3783

**Code Changes:**
```diff
+@param map2 The second output map for #remap.
+ */
+CV_EXPORTS_W
+void initInverseRectificationMap( InputArray cameraMatrix, InputArray distCoeffs,
+                           InputArray R, InputArray newCameraMatrix,
+                           Size size, int m1type, OutputArray map1, OutputArray map2 );
+
 //! initializes maps for #remap for wide-angle
 CV_EXPORTS
 float initWideAngleProjMap(InputArray cameraMatrix, InputArray distCoeffs,
```

Review comment:
Correction has been applied in #20247
**File:** modules/calib3d/perf/perf_undistort.cpp
**Change Type:** modified
**Context:** PR #20165: Added initInverseRectificationMap()
**Review Line:** 25

**Code Changes:**
```diff
+{
+    Size size_w_h(512 + 3, 512);
+    Mat k(3, 3, CV_32FC1);
+    Mat d(1, 14, CV_64FC1);
+    Mat dst(size_w_h, CV_32FC2);
+    declare.in(k, d, WARMUP_RNG).out(dst);
+    TEST_CYCLE() initInverseRectificationMap(k, d, noArray(), k, size_w_h, CV_32FC2, dst, noArray());
+    SANITY_CHECK_NOTHING();
+}
+
 } // namespace
```

Review comment:
Test has been disabled in #20247. New unit test is being developed to replace it.
**File:** modules/calib3d/include/opencv2/calib3d.hpp
**Change Type:** modified
**Context:** PR #20235: Calib3d update hyperlinks
**Review Line:** 1573

**Code Changes:**
```diff
@@ -1570,7 +1570,7 @@ and should be below ~3.0 pixels.
 
 @param image Gray image used to find chessboard corners
 @param patternSize Size of a found chessboard pattern
-@param corners Corners found by findChessboardCorners(SB)
+@param corners Corners found by #findChessboardCornersSB
 @param rise_distance Rise distance 0.8 means 10% ... 90% of the final signal strength
 @param vertical By default edge responses for horizontal lines are calculated
 @param sharpness Optional output array with a sharpness value for calculated edge responses (see description)
@@ -1598,9 +1598,9 @@ CV_EXPORTS_W bool find4QuadCornerSubpix( InputArray img, InputOutputArray corner
 @param image Destination image. It must be an 8-bit color image.
```

Review comment:
Please confirm this correction before merging
**File:** modules/calib3d/include/opencv2/calib3d.hpp
**Change Type:** modified
**Context:** PR #20235: Calib3d update hyperlinks
**Review Line:** 1573

**Code Changes:**
```diff
@@ -1570,7 +1570,7 @@ and should be below ~3.0 pixels.
 
 @param image Gray image used to find chessboard corners
 @param patternSize Size of a found chessboard pattern
-@param corners Corners found by findChessboardCorners(SB)
+@param corners Corners found by #findChessboardCornersSB
 @param rise_distance Rise distance 0.8 means 10% ... 90% of the final signal strength
 @param vertical By default edge responses for horizontal lines are calculated
 @param sharpness Optional output array with a sharpness value for calculated edge responses (see description)
@@ -1598,9 +1598,9 @@ CV_EXPORTS_W bool find4QuadCornerSubpix( InputArray img, InputOutputArray corner
 @param image Destination image. It must be an 8-bit color image.
```

Review comment:
Documentation build is available here: http://pullrequest.opencv.org/buildbot/export/pr/20235/docs/ (artifact of "Docs" builder)
**File:** modules/calib3d/include/opencv2/calib3d.hpp
**Change Type:** modified
**Context:** PR #20235: Calib3d update hyperlinks
**Review Line:** 1573

**Code Changes:**
```diff
@@ -1570,7 +1570,7 @@ and should be below ~3.0 pixels.
 
 @param image Gray image used to find chessboard corners
 @param patternSize Size of a found chessboard pattern
-@param corners Corners found by findChessboardCorners(SB)
+@param corners Corners found by #findChessboardCornersSB
 @param rise_distance Rise distance 0.8 means 10% ... 90% of the final signal strength
 @param vertical By default edge responses for horizontal lines are calculated
 @param sharpness Optional output array with a sharpness value for calculated edge responses (see description)
@@ -1598,9 +1598,9 @@ CV_EXPORTS_W bool find4QuadCornerSubpix( InputArray img, InputOutputArray corner
 @param image Destination image. It must be an 8-bit color image.
```

Review comment:
findChessboardCorners(SB) was corrected to findChessboardCornersSB(). This is under the assumption that findChessboardCorners(SB) was a typo, given no such function exits.
**File:** samples/android/camera-calibration/src/org/opencv/samples/cameracalibration/CameraCalibrator.java
**Change Type:** added
**Context:** PR #1070: Added camera calibration sample for android - Added camera calibration sample for android. It is useful for pinhole cameras. Sample based on...

**Code Changes:**
```diff
@@ -0,0 +1,169 @@
+package org.opencv.samples.cameracalibration;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.opencv.calib3d.Calib3d;
+import org.opencv.core.Core;
+import org.opencv.core.CvType;
+import org.opencv.core.Mat;
```

Review comment:
Fix formatting here.