====== Work Product Submission ====== **Name:** [[https://redman.xyz|Paweł Redman]] \\ **Organization:** [[https://numfocus.org/|NumFOCUS]] \\ **Sub-Organization:** [[https://www.colour-science.org/|Colour Science]] \\ **Mentors:** [[https://github.com/KelSolaar|Thomas Mansencal]], [[https://github.com/MichaelMauderer|Michael Mauderer]], [[https://twitter.com/HA0X1E|Hao Xie]] ===== Overview ===== My work during this year's Google Summer of Code was focused on improving [[https://github.com/colour-science/colour|Colour]]. I have added support for three new spectral upsampling methods and two new color quality metrics The following subsections, one for each new feature, contain links to relevant publications, files and pull requests. I've omitted some trivial contributions like those to __init__.py scripts. Every linked Python file listed below is, excluding Thomas's style and formatting fixes, entirely my own work. Unfortunately, not all code was merged before the deadline. The reviewing process has been taking much longer than expected, partly due to coinciding with some significant refactoring being done in the library. As of writing this document, pull requests for Otsu et al. (2018) and new color quality metrics are still open. However the code itself is finished and there's nothing left for me to do. ===== New spectral upsampling methods ===== This subsection describes work planned in the [[gsoc:proposal|project proposal]]. ==== Jakob and Hanika (2019) ==== Jakob, W., & Hanika, J. (2019). [[https://rgl.epfl.ch/publications/Jakob2019Spectral|A Low‐Dimensional Function Space for Efficient Spectral Upsampling]]. Computer Graphics Forum, 38(2), 147–155. [[doi:10.1111/cgf.13626|[DOI]]] Major features: * Direct spectral upsampling of XYZ tristimulus values. * Indirect upsampling using a lookup table loaded from disk. * Lookup table creation. New files: * [[https://github.com/colour-science/colour/blob/a4441a2db8904badcc327f7bae04244e5ef9960e/colour/recovery/jakob2019.py|colour/recovery/jakob2019.py]] * [[https://github.com/colour-science/colour/blob/a4441a2db8904badcc327f7bae04244e5ef9960e/colour/recovery/tests/test_jakob2019.py|colour/recovery/tests/test_jakob2019.py]] Commits: * See: [[https://github.com/colour-science/colour/pull/603|PR: Implement Jakob and Hanika (2019) spectral upsampling]] * [[https://github.com/colour-science/colour/commit/da7fe930f78e66152bb13fd50477cbc70dcff1d5|da7fe930]] Change recovery.jakob2019 to work directly in the XYZ colourspace. * [[https://github.com/colour-science/colour/commit/a4441a2db8904badcc327f7bae04244e5ef9960e|a4441a2d]] Further simplify Jakob and Hanika (2019). Blog posts: * [[gsoc:plan_june]] * [[gsoc:prototypes_repo]] * [[gsoc:nondimensionalization]] * [[gsoc:convergence_problems]] * [[gsoc:progress_late_june]] * [[gsoc:june_ends]] * [[gsoc:differentiating_code]] * [[gsoc:scipy_minimize_value_threshold]] * [[gsoc:differentiating_code_addendum]] * [[gsoc:first_merge]] * [[gsoc:method_comparison]] ==== Otsu et al. (2018) ==== Otsu, H., Yamamoto, M. & Hachisuka, T. (2018) [[http://lightmetrica.org/h-otsu/project/rgb2spec/|Reproducing Spectral Reflectances From Tristimulus Colours]]. Computer Graphics Forum. 37(6), 370–381. [[doi:10.1111/cgf.13332|[DOI]]] Major features: * Upsampling of XYZ tristimulus values. * A built-in dataset, adapted from the published source code. * Dataset creation and optimization from arbitrary set of spectra. New files: * [[https://github.com/enneract/colour/blob/feature/otsu2018/colour/recovery/otsu2018.py|colour/recovery/otsu2018.py]] * [[https://github.com/enneract/colour/blob/feature/otsu2018/colour/recovery/datasets/otsu2018.py|colour/recovery/datasets/otsu2018.py]] * [[https://github.com/enneract/colour/blob/feature/otsu2018/colour/recovery/tests/test_otsu2018.py|colour/recovery/tests/test_otsu2018.py]] Commits: * See: [[https://github.com/colour-science/colour/pull/607|PR: Implement Otsu et al. (2018) spectral recovery method]]. Blog posts: * [[gsoc:otsu2018_1]] * [[gsoc:otsu2018_2]] * [[gsoc:otsu2018_3]] * [[gsoc:otsu2018_4]] * [[gsoc:method_comparison]] ==== Mallett and Yuksel (2019) ==== Mallett, I., & Yuksel, C. (2019). [[https://geometrian.com/data/research/spectral-primaries/EGSR2019_SpectralPrimaryDecomposition.pdf|Spectral Primary Decomposition for Rendering with sRGB Reflectance]]. Eurographics Symposium on Rendering - DL-Only and Industry Track, 7 pages. [[doi:10.2312/SR.20191216|[DOI]]] Major features: * Upsampling of sRGB colors. * A built-in dataset for sRGB, adapted from the published source code. * Dataset creation for any RGB colorspace and arbitrary optimization goals. New files: * [[https://github.com/colour-science/colour/blob/b46c2faa8e3388ed85bd204c564bdfcc206d6c70/colour/recovery/mallett2019.py|colour/recovery/mallett2019.py]] * [[https://github.com/colour-science/colour/blob/b46c2faa8e3388ed85bd204c564bdfcc206d6c70/colour/recovery/datasets/mallett2019.py|colour/recovery/datasets/mallett2019.py]] * [[https://github.com/colour-science/colour/blob/b46c2faa8e3388ed85bd204c564bdfcc206d6c70/colour/recovery/tests/test_mallett2019.py|colour/recovery/tests/test_mallett2019.py]] Commits: * See [[https://github.com/colour-science/colour/pull/617|PR: Implement Mallett and Yuksel (2019) reflectance recovery method.]]. Blog posts: * [[gsoc:method_comparison]] * [[gsoc:mid_august#mallett_and_yuksel_2019|Mid-August progress report – Mallet and Yuksel (2019)]] * [[gsoc:mallett_merge]] ===== New color quality metrics ===== This subsection documents some extra, unplanned work that I managed to get done in the last weeks of the program. ==== CIE 224:2017 ==== [[http://cie.co.at/publications/cie-2017-colour-fidelity-index-accurate-scientific-use|CIE 2017 Colour Fidelity Index for accurate scientific use]] (CIE 224:2017) Major features: * Support for the CIE 2017 //Colour Fidelity Index//. * Tested the reference implementations to ensure accuracy and correctness. New files: * [[https://github.com/enneract/colour/blob/feature/colour_fidelity_indexes/colour/quality/cfi2017.py|colour/quality/cfi2017.py]] * [[https://github.com/enneract/colour/blob/feature/colour_fidelity_indexes/colour/quality/datasets/tcs_cfi2017_5_nm.csv.gz|colour/quality/datasets/tcs_cfi2017_5_nm.csv.gz]] * [[https://github.com/enneract/colour/blob/feature/colour_fidelity_indexes/colour/quality/datasets/tcs_cfi2017_1_nm.csv.gz|colour/quality/datasets/tcs_cfi2017_1_nm.csv.gz]] * [[https://github.com/enneract/colour/blob/feature/colour_fidelity_indexes/colour/quality/tests/test_cfi2017.py|colour/quality/tests/test_cfi2017.py]] Commits: * See [[https://github.com/colour-science/colour/pull/621|PR: Implement CIE 2017 and ANSI/IES TM-30-18 Colour Fidelity Indexes.]] Blog posts: * [[gsoc:new_color_quality_metrics]] ==== ANSI/IES TM-30-18 ==== [[https://www.ies.org/product/ies-method-for-evaluating-light-source-color-rendition/|IES Method for Evaluating Light Source Color Rendition]] (ANSI/IES TM-30-18) Major features: * A complete implementation of all color quality metrics specified in the standard. * Tested against reference implementations to ensure accuracy and correctness. New files: * [[https://github.com/enneract/colour/blob/feature/colour_fidelity_indexes/colour/quality/tm_30_18.py|colour/quality/tm_30_18.py]] * [[https://github.com/enneract/colour/blob/feature/colour_fidelity_indexes/colour/quality/tests/test_tm_30_18.py|colour/quality/tests/test_tm_30_18.py]] Commits: * See [[https://github.com/colour-science/colour/pull/621|PR: Implement CIE 2017 and ANSI/IES TM-30-18 Colour Fidelity Indexes.]] Blog posts: * [[gsoc:new_color_quality_metrics]]