123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- // 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 xphoto;
- static void test_inpainting(const Size inputSize, InpaintTypes mode, double expected_psnr, ImreadModes inputMode = IMREAD_COLOR)
- {
- string original_path = cvtest::findDataFile("cv/shared/lena.png");
- string mask_path = cvtest::findDataFile("cv/inpaint/mask.png");
- Mat original_ = imread(original_path, inputMode);
- ASSERT_FALSE(original_.empty()) << "Could not load input image " << original_path;
- Mat mask_ = imread(mask_path, IMREAD_GRAYSCALE);
- ASSERT_FALSE(mask_.empty()) << "Could not load error mask " << mask_path;
- Mat original, mask;
- resize(original_, original, inputSize, 0.0, 0.0, INTER_AREA);
- resize(mask_, mask, inputSize, 0.0, 0.0, INTER_NEAREST);
- Mat mask_valid = (mask == 0);
- Mat im_distorted(inputSize, original.type(), Scalar::all(0));
- original.copyTo(im_distorted, mask_valid);
- Mat reconstructed;
- xphoto::inpaint(im_distorted, mask_valid, reconstructed, mode);
- double adiff_psnr = cvtest::PSNR(original, reconstructed);
- EXPECT_LE(expected_psnr, adiff_psnr);
- #if 0
- imshow("original", original);
- imshow("im_distorted", im_distorted);
- imshow("reconstructed", reconstructed);
- std::cout << "adiff_psnr=" << adiff_psnr << std::endl;
- waitKey();
- #endif
- }
- TEST(xphoto_inpaint, smoke_FSR_FAST) // fast smoke test, input doesn't fit well for tested algorithm
- {
- test_inpainting(Size(128, 128), INPAINT_FSR_FAST, 30);
- }
- TEST(xphoto_inpaint, smoke_FSR_BEST) // fast smoke test, input doesn't fit well for tested algorithm
- {
- applyTestTag(CV_TEST_TAG_LONG);
- test_inpainting(Size(128, 128), INPAINT_FSR_BEST, 30);
- }
- TEST(xphoto_inpaint, smoke_grayscale_FSR_FAST) // fast smoke test, input doesn't fit well for tested algorithm
- {
- test_inpainting(Size(128, 128), INPAINT_FSR_FAST, 30, IMREAD_GRAYSCALE);
- }
- TEST(xphoto_inpaint, smoke_grayscale_FSR_BEST) // fast smoke test, input doesn't fit well for tested algorithm
- {
- test_inpainting(Size(128, 128), INPAINT_FSR_BEST, 30, IMREAD_GRAYSCALE);
- }
- TEST(xphoto_inpaint, regression_FSR_FAST)
- {
- test_inpainting(Size(512, 512), INPAINT_FSR_FAST, 39.5);
- }
- TEST(xphoto_inpaint, regression_FSR_BEST)
- {
- applyTestTag(CV_TEST_TAG_VERYLONG); // add --test_tag_enable=verylong to run this test
- test_inpainting(Size(512, 512), INPAINT_FSR_BEST, 39.6);
- }
- }} // namespace
|