Пример #1
0
    def test_convert_dng_files_to_intermediate_files(self):
        """
        Tests :func:`colour_hdri.process.conversion.\
convert_dng_files_to_intermediate_files` definition.
        """

        reference_dng_files = sorted(
            filter_files(PROCESS_DIRECTORY, ('dng',)))
        tests_dng_files = [os.path.join(self.__temporary_directory,
                                        os.path.basename(reference_dng_file))
                           for reference_dng_file in reference_dng_files]
        for reference_dng_file, tests_dng_file in zip(reference_dng_files,
                                                      tests_dng_files):
            shutil.copyfile(reference_dng_file, tests_dng_file)

        reference_tiff_files = sorted(
            filter_files(PROCESS_DIRECTORY, ('tiff',)))

        test_tiff_files = sorted(convert_dng_files_to_intermediate_files(
            tests_dng_files, self.__temporary_directory))

        for test_tiff_file, reference_tiff_file in zip(
                test_tiff_files, reference_tiff_files):
            np.testing.assert_almost_equal(
                read_image(str(test_tiff_file)),
                read_image(str(reference_tiff_file)),
                decimal=7)
Пример #2
0
    def test_convert_dng_files_to_intermediate_files(self):
        """
        Tests :func:`colour_hdri.process.adobe_dng.\
convert_dng_files_to_intermediate_files` definition.
        """

        reference_dng_files = sorted(filter_files(PROCESS_DIRECTORY,
                                                  ('dng', )))
        tests_dng_files = [
            os.path.join(self._temporary_directory,
                         os.path.basename(reference_dng_file))
            for reference_dng_file in reference_dng_files
        ]
        for reference_dng_file, tests_dng_file in zip(reference_dng_files,
                                                      tests_dng_files):
            shutil.copyfile(reference_dng_file, tests_dng_file)

        reference_zip_files = sorted(filter_files(PROCESS_DIRECTORY,
                                                  ('zip', )))

        for reference_zip_file in reference_zip_files:
            with zipfile.ZipFile(reference_zip_file) as zip_file:
                tiff_file_name = os.path.basename(reference_zip_file).replace(
                    '.zip', '')
                with open(
                        os.path.join(self._temporary_directory,
                                     tiff_file_name),
                        'wb') as reference_tiff_file:
                    reference_tiff_file.write(zip_file.read(tiff_file_name))

        reference_tiff_files = sorted(
            filter_files(self._temporary_directory, ('tiff', )))

        # for reference_tiff_file in reference_tiff_files:
        #     os.chdir(os.path.dirname(reference_tiff_file))
        #     with zipfile.ZipFile(
        #             '{0}.zip'.format(reference_tiff_file),
        #             mode='w') as zip_file:
        #         zip_file.write(
        #             os.path.basename(reference_tiff_file),
        #             compress_type=zipfile.ZIP_DEFLATED)
        #         os.remove(reference_tiff_file)

        test_tiff_files = sorted(
            convert_dng_files_to_intermediate_files(tests_dng_files,
                                                    self._temporary_directory))

        for test_tiff_file, reference_tiff_file in zip(test_tiff_files,
                                                       reference_tiff_files):
            np.testing.assert_almost_equal(read_image(str(test_tiff_file)),
                                           read_image(
                                               str(reference_tiff_file)),
                                           decimal=7)
Пример #3
0
    def test_read_exif_tags(self):
        """
        Tests :func:`colour_hdri.utilities.exif.read_exif_tags` definition.
        """

        test_jpg_image = filter_files(FROBISHER_001_DIRECTORY, ('jpg', ))[0]
        exif_data = vivified_to_dict(read_exif_tags(test_jpg_image))

        self.assertIsInstance(exif_data, type(dict()))

        self.assertListEqual(sorted(exif_data.keys()), [
            'Composite', 'EXIF', 'ExifTool', 'File', 'ICC_Profile', 'JFIF',
            'Photoshop', 'XMP'
        ])

        self.assertListEqual(
            sorted(exif_data['EXIF'].values()),
            [[ExifTag('EXIF', 'Camera Model Name', 'EOS 5D Mark II', '272')],
             [ExifTag('EXIF', 'Create Date', '2015:09:19 03:39:20', '36868')],
             [ExifTag('EXIF', 'Date/Time Original',
                      '2015:09:19 03:39:20', '36867')],
             [ExifTag('EXIF', 'Exif Image Height', '426', '40963')],
             [ExifTag('EXIF', 'Exif Image Width', '640', '40962')],
             [ExifTag('EXIF', 'Exposure Time', '0.125', '33434')],
             [ExifTag('EXIF', 'F Number', '8', '33437')],
             [ExifTag('EXIF', 'Focal Length', '16', '37386')],
             [ExifTag('EXIF', 'ISO', '100', '34855')],
             [ExifTag('EXIF', 'Make', 'Canon', '271')],
             [ExifTag('EXIF', 'Modify Date', '2015:09:19 03:39:20', '306')],
             [ExifTag('EXIF', 'Orientation', '1', '274')],
             [ExifTag('EXIF', 'Photometric Interpretation', '2', '262')],
             [ExifTag('EXIF', 'Resolution Unit', '2', '296')],
             [ExifTag('EXIF', 'Software', 'Photos 1.0.1', '305')],
             [ExifTag('EXIF', 'X Resolution', '72', '282')],
             [ExifTag('EXIF', 'Y Resolution', '72', '283')]])  # yapf: disable
Пример #4
0
    def setUp(self):
        """
        Initialises common tests attributes.
        """

        self._test_jpg_image = filter_files(
            FROBISHER_001_DIRECTORY, ('jpg',))[0]
Пример #5
0
    def test_read_exif_tags(self):
        """
        Tests :func:`colour_hdri.utilities.exif.read_exif_tags` definition.
        """

        test_jpg_image = filter_files(FROBISHER_001_DIRECTORY, ('jpg',))[0]
        exif_data = vivified_to_dict(read_exif_tags(test_jpg_image))

        self.assertIsInstance(exif_data, type(dict()))

        self.assertListEqual(
            sorted(exif_data.keys()),
            ['Composite', 'EXIF', 'ExifTool', 'File', 'ICC_Profile', 'JFIF',
             'Photoshop', 'XMP'])

        self.assertListEqual(
            sorted(exif_data['EXIF'].values()),
            [('0.125', '33434'), ('1', '274'), ('100', '34855'),
             ('16', '37386'), ('2', '262'), ('2', '296'),
             ('2015:09:19 03:39:20', '306'),
             ('2015:09:19 03:39:20', '36867'),
             ('2015:09:19 03:39:20', '36868'), ('426', '40963'),
             ('640', '40962'), ('72', '282'), ('72', '283'),
             ('8', '33437'), ('Canon', '271'), ('EOS 5D Mark II', '272'),
             ('Photos 1.0.1', '305')])
Пример #6
0
    def setUp(self):
        """
        Initialises common tests attributes.
        """

        self._test_jpg_image = filter_files(FROBISHER_001_DIRECTORY,
                                            ('jpg', ))[0]
Пример #7
0
    def setUp(self):
        """
        Initialises common tests attributes.
        """

        self.__test_jpg_images = filter_files(FROBISHER_001_DIRECTORY, ("jpg",))

        self.__image_stack = ImageStack().from_files(self.__test_jpg_images)
Пример #8
0
    def setUp(self):
        """
        Initialises common tests attributes.
        """

        self._test_jpg_images = filter_files(FROBISHER_001_DIRECTORY,
                                             ('jpg', ))

        self._image_stack = ImageStack().from_files(self._test_jpg_images)
Пример #9
0
    def test_read_exif_tag(self):
        """
        Tests :func:`colour_hdri.utilities.exif.read_exif_tag` definition.
        """

        test_jpg_image = filter_files(FROBISHER_001_DIRECTORY, ('jpg', ))[0]

        self.assertEqual(read_exif_tag(test_jpg_image, 'Aperture'), '8.0')
        self.assertEqual(read_exif_tag(test_jpg_image, 'ExposureTime'), '1/8')
        self.assertEqual(read_exif_tag(test_jpg_image, 'ISO'), '100')
Пример #10
0
    def test_filter_files(self):
        """
        Tests :func:`colour_hdri.utilities.common.filter_files` definition.
        """

        raw_files = filter_files(FROBISHER_001_DIRECTORY, ('CR2', 'jpg'))
        self.assertListEqual(sorted(map(os.path.basename, raw_files)),
                             ['IMG_2600.CR2', 'IMG_2600.jpg',
                              'IMG_2601.CR2', 'IMG_2601.jpg',
                              'IMG_2602.CR2', 'IMG_2602.jpg'])
Пример #11
0
    def test_read_exif_tag(self):
        """
        Tests :func:`colour_hdri.utilities.exif.read_exif_tag` definition.
        """

        test_jpg_image = filter_files(FROBISHER_001_DIRECTORY, ('jpg',))[0]

        self.assertEqual(read_exif_tag(test_jpg_image, 'Aperture'), '8.0')
        self.assertEqual(read_exif_tag(test_jpg_image, 'ExposureTime'), '1/8')
        self.assertEqual(read_exif_tag(test_jpg_image, 'ISO'), '100')
Пример #12
0
    def test_filter_files(self):
        """
        Tests :func:`colour_hdri.utilities.common.filter_files` definition.
        """

        raw_files = filter_files(FROBISHER_001_DIRECTORY, ('CR2', 'jpg'))
        self.assertListEqual(
            sorted(map(os.path.basename, raw_files)),
            ['IMG_2600.CR2', 'IMG_2600.jpg', 'IMG_2601.CR2',
             'IMG_2601.jpg', 'IMG_2602.CR2', 'IMG_2602.jpg'])  # yapf: disable
Пример #13
0
    def test_delete_exif_tags(self):
        """
        Tests :func:`colour_hdri.utilities.exif.delete_exif_tags` definition.
        """

        reference_jpg_image = filter_files(FROBISHER_001_DIRECTORY,
                                           ('jpg', ))[0]
        test_jpg_image = os.path.join(self._temporary_directory,
                                      os.path.basename(reference_jpg_image))

        shutil.copyfile(reference_jpg_image, test_jpg_image)
        self.assertEqual(read_exif_tag(test_jpg_image, 'Aperture'), '8.0')
        delete_exif_tags(test_jpg_image)
        self.assertEqual(read_exif_tag(test_jpg_image, 'Aperture'), '')
Пример #14
0
    def test_delete_exif_tags(self):
        """
        Tests :func:`colour_hdri.utilities.exif.delete_exif_tags` definition.
        """

        reference_jpg_image = filter_files(
            FROBISHER_001_DIRECTORY, ('jpg',))[0]
        test_jpg_image = os.path.join(
            self.__temporary_directory, os.path.basename(reference_jpg_image))

        shutil.copyfile(reference_jpg_image, test_jpg_image)
        self.assertEqual(read_exif_tag(test_jpg_image, 'Aperture'), '8.0')
        delete_exif_tags(test_jpg_image)
        self.assertEqual(read_exif_tag(test_jpg_image, 'Aperture'), '')
Пример #15
0
    def test_write_exif_tag(self):
        """
        Tests :func:`colour_hdri.utilities.exif.write_exif_tag` definition.
        """

        reference_jpg_image = filter_files(FROBISHER_001_DIRECTORY,
                                           ('jpg', ))[0]
        test_jpg_image = os.path.join(self._temporary_directory,
                                      os.path.basename(reference_jpg_image))

        shutil.copyfile(reference_jpg_image, test_jpg_image)
        # *Aperture* exif tag is not writeable, changing for *FNumber*.
        self.assertEqual(read_exif_tag(test_jpg_image, 'FNumber'), '8.0')
        write_exif_tag(test_jpg_image, 'FNumber', '16.0')
        self.assertEqual(read_exif_tag(test_jpg_image, 'FNumber'), '16.0')
Пример #16
0
    def test_write_exif_tag(self):
        """
        Tests :func:`colour_hdri.utilities.exif.write_exif_tag` definition.
        """

        reference_jpg_image = filter_files(
            FROBISHER_001_DIRECTORY, ('jpg',))[0]
        test_jpg_image = os.path.join(
            self.__temporary_directory, os.path.basename(reference_jpg_image))

        shutil.copyfile(reference_jpg_image, test_jpg_image)
        # *Aperture* exif tag is not writeable, changing for *FNumber*.
        self.assertEqual(read_exif_tag(test_jpg_image, 'FNumber'), '8.0')
        write_exif_tag(test_jpg_image, 'FNumber', '16.0')
        self.assertEqual(read_exif_tag(test_jpg_image, 'FNumber'), '16.0')
Пример #17
0
    def test_read_dng_files_exif_tags(self):
        """
        Tests :func:`colour_hdri.process.adobe_dng.\
read_dng_files_exif_tags` definition.
        """

        reference_dng_files = sorted(
            filter_files(PROCESS_DIRECTORY, ('dng', )))
        exif_tags = read_dng_files_exif_tags(reference_dng_files)
        self.assertEqual(len(exif_tags), 3)
        self.assertIn('EXIF', exif_tags[0])
        self.assertIn('Make', exif_tags[0]['EXIF'])

        self.assertAlmostEquals(
            exif_tags[0]['EXIF']['Exposure Time'], 0.12500000, places=7)

        np.testing.assert_array_equal(
            exif_tags[0]['EXIF']['Reduction Matrix 1'], np.identity(3))
Пример #18
0
    def test_update_exif_tags(self):
        """
        Tests :func:`colour_hdri.utilities.exif.update_exif_tags` definition.
        """

        reference_jpg_images = filter_files(FROBISHER_001_DIRECTORY, ('jpg', ))
        test_jpg_images = []
        for reference_jpg_image in reference_jpg_images:
            test_jpg_image = os.path.join(
                self._temporary_directory,
                os.path.basename(reference_jpg_image))
            shutil.copyfile(reference_jpg_image, test_jpg_image)
            delete_exif_tags(test_jpg_image)
            self.assertEqual(read_exif_tag(test_jpg_image, 'Aperture'), '')
            test_jpg_images.append(test_jpg_image)

        update_exif_tags(zip(reference_jpg_images, test_jpg_images))
        for test_jpg_image in test_jpg_images:
            self.assertEqual(read_exif_tag(test_jpg_image, 'Aperture'), '8.0')
Пример #19
0
    def test_update_exif_tags(self):
        """
        Tests :func:`colour_hdri.utilities.exif.update_exif_tags` definition.
        """

        reference_jpg_images = filter_files(FROBISHER_001_DIRECTORY, ('jpg',))
        test_jpg_images = []
        for reference_jpg_image in reference_jpg_images:
            test_jpg_image = os.path.join(
                self.__temporary_directory,
                os.path.basename(reference_jpg_image))
            shutil.copyfile(reference_jpg_image, test_jpg_image)
            delete_exif_tags(test_jpg_image)
            self.assertEqual(read_exif_tag(test_jpg_image, 'Aperture'), '')
            test_jpg_images.append(test_jpg_image)

        update_exif_tags(zip(reference_jpg_images, test_jpg_images))
        for test_jpg_image in test_jpg_images:
            self.assertEqual(read_exif_tag(test_jpg_image, 'Aperture'), '8.0')
Пример #20
0
    def test_convert_raw_files_to_dng_files(self):
        """
        Tests :func:`colour_hdri.process.conversion.\
convert_raw_files_to_dng_files` definition.
        """

        if platform.system() not in ('Windows', 'Microsoft', 'Darwin'):
            # *Adobe DNG Converter* is not available on Linux, thus we skip
            # that unit test.
            return

        reference_dng_files = sorted(filter_files(
            PROCESS_DIRECTORY, ('dng',)))
        test_dng_files = sorted(convert_raw_files_to_dng_files(
            RAW_IMAGES, self.__temporary_directory))

        for test_dng_file, reference_dng_file in zip(
                test_dng_files, reference_dng_files):
            np.testing.assert_almost_equal(
                read_image(str(test_dng_file)),
                read_image(str(reference_dng_file)),
                decimal=7)
Пример #21
0
    def test_convert_raw_files_to_dng_files(self):
        """
        Tests :func:`colour_hdri.process.adobe_dng.\
convert_raw_files_to_dng_files` definition.
        """

        if platform.system() not in ('Windows', 'Microsoft', 'Darwin'):
            # *Adobe DNG Converter* is not available on Linux, thus we skip
            # that unit test.
            return

        reference_dng_files = sorted(filter_files(PROCESS_DIRECTORY,
                                                  ('dng', )))
        test_dng_files = sorted(
            convert_raw_files_to_dng_files(RAW_IMAGES,
                                           self._temporary_directory))

        for test_dng_file, reference_dng_file in zip(test_dng_files,
                                                     reference_dng_files):
            np.testing.assert_almost_equal(read_image(str(test_dng_file)),
                                           read_image(str(reference_dng_file)),
                                           decimal=7)
Пример #22
0
__email__ = '*****@*****.**'
__status__ = 'Production'

__all__ = ['FROBISHER_001_DIRECTORY',
           'PROCESS_DIRECTORY',
           'RAW_IMAGES',
           'TestConvertRawFilesToDngFiles',
           'TestConvertDngFilesToIntermediateFiles']

FROBISHER_001_DIRECTORY = os.path.join(
    TESTS_RESOURCES_DIRECTORY, 'frobisher_001')

PROCESS_DIRECTORY = os.path.join(
    TESTS_RESOURCES_DIRECTORY, 'colour_hdri', 'process')

RAW_IMAGES = filter_files(FROBISHER_001_DIRECTORY, ('CR2',))


class TestConvertRawFilesToDngFiles(unittest.TestCase):
    """
    Defines :func:`colour_hdri.process.conversion.\
convert_raw_files_to_dng_files` definition unit tests methods.
    """

    def setUp(self):
        """
        Initialises common tests attributes.
        """

        self.__temporary_directory = tempfile.mkdtemp()
Пример #23
0
__email__ = '*****@*****.**'
__status__ = 'Production'

__all__ = ['FROBISHER_001_DIRECTORY',
           'CALIBRATION_DIRECTORY',
           'JPG_IMAGES',
           'TestGSolve',
           'TestCameraResponseFunctionsDebevec1997']

FROBISHER_001_DIRECTORY = os.path.join(
    TESTS_RESOURCES_DIRECTORY, 'frobisher_001')

CALIBRATION_DIRECTORY = os.path.join(
    TESTS_RESOURCES_DIRECTORY, 'colour_hdri', 'calibration')

JPG_IMAGES = filter_files(FROBISHER_001_DIRECTORY, ('jpg',))


class TestGSolve(unittest.TestCase):
    """
    Defines :func:`colour_hdri.calibration.debevec1997.g_solve` definition
    unit tests methods.
    """

    def test_g_solve(self):
        """
        Tests :func:`colour_hdri.calibration.debevec1997.g_solve` definition.
        """

        image_stack = ImageStack.from_files(JPG_IMAGES)
        L_l = np.log(average_luminance(image_stack.f_number,
Пример #24
0
__maintainer__ = 'Colour Developers'
__email__ = '*****@*****.**'
__status__ = 'Production'

__all__ = [
    'FROBISHER_001_DIRECTORY', 'GENERATION_DIRECTORY', 'JPG_IMAGES',
    'TestRadianceImage'
]

FROBISHER_001_DIRECTORY = os.path.join(TESTS_RESOURCES_DIRECTORY,
                                       'frobisher_001')

GENERATION_DIRECTORY = os.path.join(TESTS_RESOURCES_DIRECTORY, 'colour_hdri',
                                    'generation')

JPG_IMAGES = filter_files(FROBISHER_001_DIRECTORY, ('jpg', ))


class TestRadianceImage(unittest.TestCase):
    """
    Defines :func:`colour_hdri.generation.radiance.\
image_stack_to_radiance_image` definition unit tests methods.
    """
    def test_radiance_image(self):
        """
        Tests :func:`colour_hdri.generation.\
radiance.image_stack_to_radiance_image` definition.
        """

        image_stack = ImageStack.from_files(JPG_IMAGES)
        image_stack.data = RGB_COLOURSPACES['sRGB'].cctf_decoding(
Пример #25
0
__maintainer__ = 'Colour Developers'
__email__ = '*****@*****.**'
__status__ = 'Production'

__all__ = [
    'FROBISHER_001_DIRECTORY', 'PROCESS_DIRECTORY', 'RAW_IMAGES',
    'TestConvertRawFilesToDngFiles', 'TestConvertDngFilesToIntermediateFiles'
]

FROBISHER_001_DIRECTORY = os.path.join(TESTS_RESOURCES_DIRECTORY,
                                       'frobisher_001')

PROCESS_DIRECTORY = os.path.join(TESTS_RESOURCES_DIRECTORY, 'colour_hdri',
                                 'process')

RAW_IMAGES = filter_files(FROBISHER_001_DIRECTORY, ('CR2', ))


class TestConvertRawFilesToDngFiles(unittest.TestCase):
    """
    Defines :func:`colour_hdri.process.adobe_dng.\
convert_raw_files_to_dng_files` definition unit tests methods.
    """
    def setUp(self):
        """
        Initialises common tests attributes.
        """

        self._temporary_directory = tempfile.mkdtemp()

    def tearDown(self):