void UBMS360::scaleBooleanMap(cv::UMat& map) { scaleMutex.lock(); if (scaleMatrix.cols != map.cols && scaleMatrix.rows != map.rows) { cv::Mat scaleMat(map.size(), CV_32FC1); for (int i = 0; i < map.rows; ++i) { float c = std::cos(3.1415926535898f * static_cast<float>(map.rows / 2 - i) / map.rows); for (int j = 0; j < map.cols; ++j) { scaleMat.at<float>(i, j) = c; } } scaleMat.copyTo(scaleMatrix); } scaleMutex.unlock(); cv::multiply(map, scaleMatrix, map); }