bool FuzzyStringComparator::compareStrings(std::string const& lhs, std::string const& rhs) { std::istringstream input_1(lhs); std::istringstream input_2(rhs); return compareStreams(input_1, input_2); } // compareStrings()
static void apply_denoise(struct W2XConv *conv, cv::Mat &image, int denoise_level, int blockSize, enum w2xc::image_format fmt) { struct W2XConvImpl *impl = conv->impl; ComputeEnv *env = &impl->env; std::vector<cv::Mat> imageSplit; cv::Mat *input; cv::Mat *output; cv::Mat imageY; if (IS_3CHANNEL(fmt)) { input = ℑ output = ℑ } else { cv::split(image, imageSplit); imageSplit[0].copyTo(imageY); input = &imageY; output = &imageSplit[0]; } W2Mat output_2; W2Mat input_2(extract_view_from_cvmat(*input)); if (denoise_level == 1) { w2xc::convertWithModels(conv, env, input_2, output_2, impl->noise1_models, &conv->flops, blockSize, fmt, conv->enable_log); } else { w2xc::convertWithModels(conv, env, input_2, output_2, impl->noise2_models, &conv->flops, blockSize, fmt, conv->enable_log); } *output = copy_to_cvmat(output_2); if (! IS_3CHANNEL(fmt)) { cv::merge(imageSplit, image); } }
static void apply_scale(struct W2XConv *conv, cv::Mat &image, int iterTimesTwiceScaling, int blockSize, enum w2xc::image_format fmt) { struct W2XConvImpl *impl = conv->impl; ComputeEnv *env = &impl->env; if (conv->enable_log) { std::cout << "start scaling" << std::endl; } // 2x scaling for (int nIteration = 0; nIteration < iterTimesTwiceScaling; nIteration++) { if (conv->enable_log) { std::cout << "#" << std::to_string(nIteration + 1) << " 2x scaling..." << std::endl; } cv::Size imageSize = image.size(); imageSize.width *= 2; imageSize.height *= 2; cv::Mat image2xNearest; cv::Mat imageY; std::vector<cv::Mat> imageSplit; cv::Mat image2xBicubic; cv::Mat *input, *output; cv::resize(image, image2xNearest, imageSize, 0, 0, cv::INTER_NEAREST); if (IS_3CHANNEL(fmt)) { input = &image2xNearest; output = ℑ } else { cv::split(image2xNearest, imageSplit); imageSplit[0].copyTo(imageY); // generate bicubic scaled image and // convert RGB -> YUV and split imageSplit.clear(); cv::resize(image,image2xBicubic,imageSize,0,0,cv::INTER_CUBIC); cv::split(image2xBicubic, imageSplit); input = &imageY; output = &imageSplit[0]; } W2Mat output_2; W2Mat input_2(extract_view_from_cvmat(*input)); if(!w2xc::convertWithModels(conv, env, input_2, output_2, impl->scale2_models, &conv->flops, blockSize, fmt, conv->enable_log)) { std::cerr << "w2xc::convertWithModels : something error has occured.\n" "stop." << std::endl; std::exit(1); } *output = copy_to_cvmat(output_2); if (!IS_3CHANNEL(fmt)) { cv::merge(imageSplit, image); } } // 2x scaling : end }