When a cluster is empty for KMeans, it's better to give it the point from another cluster j that is the furthest one from center j.
converted necessary files for python3 compatibility using 2to3
fixed relative imports in Jinja for python3
explicit string encoding when writing to file in python3
added epsilon value to weights in the MergeMertens in order to avoid zero weights for pixels from uniformly filled areas of image
added test for correct handling of uniforma areas in the MergeMertens
fixed rotated rectangle (center instead of corner)
Merged upstream master
modified OpenCL SURF API and the tests in 2.4.x to prove that it gives different from CPU results
made SURF_OCL default constructor parameters the same as SURF
modified SURF's performance test to test OpenCL version as well
fixed doc builder warnings; make sure the tests give reasonable results when OpenCL is not available
Implicit CUDA and OpenCL control for module definition added.

Feature allows to exclude CUDA or OpenCL optimizations at all even CUDA is used
on build. Exclusion of CUDA or OpenCL cut unwanted dependencies.
fix: use "cvAlloc" wrapper function for malloc.
Fixed an issue with weight assignment causing the resulting GMM weights to be unsorted in BackgroundSubtractorMOG2
Fix for bug #3599: cv::FileStorage does not work for std::vector of user-defined struct.
performance tests for ORB
fix: use "cvAlloc" wrapper function for malloc.
fixed  h / s ranges in histogram_calculation tutorial

literalinclude

literalinclude, dropped :lines:
OpenCV_MODULES_SUFFIX variable added to OpenCVConfig.cmake to enable custom module configurations.