<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="http://redman.xyz/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="http://redman.xyz/feed.php">
        <title>redman.xyz gsoc</title>
        <description></description>
        <link>http://redman.xyz/</link>
        <image rdf:resource="http://redman.xyz/lib/tpl/dokuwiki/images/favicon.ico" />
       <dc:date>2026-05-14T16:46:36+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="http://redman.xyz/doku.php/gsoc:academic_year_ends?rev=1592583480&amp;do=diff"/>
                <rdf:li rdf:resource="http://redman.xyz/doku.php/gsoc:blog?rev=1590594240&amp;do=diff"/>
                <rdf:li rdf:resource="http://redman.xyz/doku.php/gsoc:convergence_problems?rev=1591951620&amp;do=diff"/>
                <rdf:li rdf:resource="http://redman.xyz/doku.php/gsoc:differentiating_code?rev=1594664880&amp;do=diff"/>
                <rdf:li rdf:resource="http://redman.xyz/doku.php/gsoc:differentiating_code_addendum?rev=1595500620&amp;do=diff"/>
                <rdf:li rdf:resource="http://redman.xyz/doku.php/gsoc:first?rev=1590530280&amp;do=diff"/>
                <rdf:li rdf:resource="http://redman.xyz/doku.php/gsoc:first_merge?rev=1595502120&amp;do=diff"/>
                <rdf:li rdf:resource="http://redman.xyz/doku.php/gsoc:june_ends?rev=1593617700&amp;do=diff"/>
                <rdf:li rdf:resource="http://redman.xyz/doku.php/gsoc:mallett_merge?rev=1597916460&amp;do=diff"/>
                <rdf:li rdf:resource="http://redman.xyz/doku.php/gsoc:method_comparison?rev=1597160460&amp;do=diff"/>
                <rdf:li rdf:resource="http://redman.xyz/doku.php/gsoc:mid_august?rev=1597599240&amp;do=diff"/>
                <rdf:li rdf:resource="http://redman.xyz/doku.php/gsoc:new_color_quality_metrics?rev=1598094120&amp;do=diff"/>
                <rdf:li rdf:resource="http://redman.xyz/doku.php/gsoc:nondimensionalization?rev=1592752620&amp;do=diff"/>
                <rdf:li rdf:resource="http://redman.xyz/doku.php/gsoc:otsu2018_1?rev=1595534640&amp;do=diff"/>
                <rdf:li rdf:resource="http://redman.xyz/doku.php/gsoc:otsu2018_2?rev=1595612940&amp;do=diff"/>
                <rdf:li rdf:resource="http://redman.xyz/doku.php/gsoc:otsu2018_3?rev=1595774880&amp;do=diff"/>
                <rdf:li rdf:resource="http://redman.xyz/doku.php/gsoc:otsu2018_4?rev=1597082100&amp;do=diff"/>
                <rdf:li rdf:resource="http://redman.xyz/doku.php/gsoc:plan_june?rev=1591045140&amp;do=diff"/>
                <rdf:li rdf:resource="http://redman.xyz/doku.php/gsoc:progress_late_june?rev=1593107760&amp;do=diff"/>
                <rdf:li rdf:resource="http://redman.xyz/doku.php/gsoc:proposal?rev=1589303820&amp;do=diff"/>
                <rdf:li rdf:resource="http://redman.xyz/doku.php/gsoc:prototypes_repo?rev=1591046820&amp;do=diff"/>
                <rdf:li rdf:resource="http://redman.xyz/doku.php/gsoc:scipy_minimize_value_threshold?rev=1595500620&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="http://redman.xyz/lib/tpl/dokuwiki/images/favicon.ico">
        <title>redman.xyz</title>
        <link>http://redman.xyz/</link>
        <url>http://redman.xyz/lib/tpl/dokuwiki/images/favicon.ico</url>
    </image>
    <item rdf:about="http://redman.xyz/doku.php/gsoc:academic_year_ends?rev=1592583480&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-06-19T16:18:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Academic year ends</title>
        <link>http://redman.xyz/doku.php/gsoc:academic_year_ends?rev=1592583480&amp;do=diff</link>
        <description>Academic year ends

I&#039;m finally done with all my university exams, projects and essays. I spent the first two weeks wrapping up the semester while simultaneously working on Colour. It was a little stressful, but I managed to pull it off without falling behind the schedule.</description>
    </item>
    <item rdf:about="http://redman.xyz/doku.php/gsoc:blog?rev=1590594240&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-05-27T15:44:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>GSoC Blog</title>
        <link>http://redman.xyz/doku.php/gsoc:blog?rev=1590594240&amp;do=diff</link>
        <description>GSoC Blog</description>
    </item>
    <item rdf:about="http://redman.xyz/doku.php/gsoc:convergence_problems?rev=1591951620&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-06-12T08:47:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Convergence problems</title>
        <link>http://redman.xyz/doku.php/gsoc:convergence_problems?rev=1591951620&amp;do=diff</link>
        <description>Convergence problems

[[Solvers tend to get attracted to spectra like this and get stuck]]

I&#039;ve been trying to write code that find parameters to the reflectivity model I mentioned in an earlier post. The objective is to minimize the difference between the color given the model and the target. It turns out the optimization is rather difficult and all SciPy solvers (including global optimization algorithms) frequently fail. At the moment I only have a loose idea of what&#039;s going on.</description>
    </item>
    <item rdf:about="http://redman.xyz/doku.php/gsoc:differentiating_code?rev=1594664880&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-07-13T18:28:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Differentiating code</title>
        <link>http://redman.xyz/doku.php/gsoc:differentiating_code?rev=1594664880&amp;do=diff</link>
        <description>Differentiating code

One step in the spectral upsampling method described by Jakob and Hanika (2019) is computing an error function, which is used to find the model parameters. I wanted to provide derivatives of the error function with respect to its arguments to the optimization algorithm I used, in hopes for faster and more reliable convergence.</description>
    </item>
    <item rdf:about="http://redman.xyz/doku.php/gsoc:differentiating_code_addendum?rev=1595500620&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-07-23T10:37:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Differentiating code – addendum</title>
        <link>http://redman.xyz/doku.php/gsoc:differentiating_code_addendum?rev=1595500620&amp;do=diff</link>
        <description>Differentiating code – addendum

This post describes how to the compute derivatives mentioned in an earlier post using Maxima, a computer algebra system. Code is listed in a monospaced font and answers are written directly below, in LaTeX. Ending lines with dollar signs in Maxima (instead of semicolons) surpresses the output,</description>
    </item>
    <item rdf:about="http://redman.xyz/doku.php/gsoc:first?rev=1590530280&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-05-26T21:58:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>First post</title>
        <link>http://redman.xyz/doku.php/gsoc:first?rev=1590530280&amp;do=diff</link>
        <description>First post

My proposal has been accepted and  I&#039;m participating in this year&#039;s Google Summer of Code as a student. I&#039;ll be working on New Spectral Upsampling Methods for Colour, an affiliated project of  NumFOCUS.

I&#039;ll be documenting my progress here, on this blog. This is just a quick first post to make sure everything is working.  I&#039;ll make a separate post soon, outlining the plan and the timeline for the project.</description>
    </item>
    <item rdf:about="http://redman.xyz/doku.php/gsoc:first_merge?rev=1595502120&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-07-23T11:02:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>First merge</title>
        <link>http://redman.xyz/doku.php/gsoc:first_merge?rev=1595502120&amp;do=diff</link>
        <description>First merge

I&#039;m happy to announce the code I wrote in the first month of the Summer of Code was merged upstream. You can see the pull request here.</description>
    </item>
    <item rdf:about="http://redman.xyz/doku.php/gsoc:june_ends?rev=1593617700&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-07-01T15:35:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>June ends</title>
        <link>http://redman.xyz/doku.php/gsoc:june_ends?rev=1593617700&amp;do=diff</link>
        <description>June ends

The first coding has ended and I&#039;m happy to say my pull request is nearly complete. I&#039;m waiting for mentors to review the code, then I&#039;ll fix any remaining issues.

Here&#039;s a quick summary of the new code:

	*  A new sub-module called jakob2019 was created as a part of</description>
    </item>
    <item rdf:about="http://redman.xyz/doku.php/gsoc:mallett_merge?rev=1597916460&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-08-20T09:41:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Mallett and  Yuksel (2019) merged</title>
        <link>http://redman.xyz/doku.php/gsoc:mallett_merge?rev=1597916460&amp;do=diff</link>
        <description>Mallett and  Yuksel (2019) merged

Another pull request, implementing Mallett and Yuksel (2019) spectral upsampling method, was merged upstream.</description>
    </item>
    <item rdf:about="http://redman.xyz/doku.php/gsoc:method_comparison?rev=1597160460&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-08-11T15:41:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Comparison of spectral upsampling methods</title>
        <link>http://redman.xyz/doku.php/gsoc:method_comparison?rev=1597160460&amp;do=diff</link>
        <description>Comparison of spectral upsampling methods

I took the dataset published alongside 
Otsu et. al (2018) and colorcheckers included in Colour, about 1300 reflectance spectra in total, reconstructed them using various methods and compared them with the original data. I used CIE Standard Illuminant D65 and two metrics:

	*  CIE 1976 ΔE</description>
    </item>
    <item rdf:about="http://redman.xyz/doku.php/gsoc:mid_august?rev=1597599240&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-08-16T17:34:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Mid-August progress report</title>
        <link>http://redman.xyz/doku.php/gsoc:mid_august?rev=1597599240&amp;do=diff</link>
        <description>Mid-August progress report

As outlined in the project proposal, the original plan was to implement at least two new spectral upsampling methods in Colour. Here&#039;s an overview of work done so far:

Jakob and Hanika (2019)

I&#039;ve already written about this in detail here. The code was</description>
    </item>
    <item rdf:about="http://redman.xyz/doku.php/gsoc:new_color_quality_metrics?rev=1598094120&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-08-22T11:02:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>New color quality metrics</title>
        <link>http://redman.xyz/doku.php/gsoc:new_color_quality_metrics?rev=1598094120&amp;do=diff</link>
        <description>New color quality metrics

I finished working on spectral upsampling methods about two weeks ago. Since then I&#039;ve been working on a different part of the library, the quality submodule. As described in the original project idea, the goals are:

	*  Adding support for CIE 224:2017 Colour Fidelity Index.</description>
    </item>
    <item rdf:about="http://redman.xyz/doku.php/gsoc:nondimensionalization?rev=1592752620&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-06-21T15:17:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Nondimensionalization</title>
        <link>http://redman.xyz/doku.php/gsoc:nondimensionalization?rev=1592752620&amp;do=diff</link>
        <description>Nondimensionalization

Here&#039;s a simple but interesting bit of math that came up while working on an implementation of Jakob and Hanika (2019). The reflectivity model they proposed is:
$$R(\lambda) = \sigma(c_0\lambda^2 + c_1\lambda + c_2)$$
where $c_0, c_1, c_2$ are model parameters, $\lambda \in [360~\mathrm{nm}, 830~\mathrm{nm}]$ and $\sigma: \mathbb{R} \rightarrow [0,1]$ is a sigmoid function. Reflectivities tend to be rather smooth and the values of the polynomial not too large. If wavelengt…</description>
    </item>
    <item rdf:about="http://redman.xyz/doku.php/gsoc:otsu2018_1?rev=1595534640&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-07-23T20:04:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Otsu et al. (2018), part 1</title>
        <link>http://redman.xyz/doku.php/gsoc:otsu2018_1?rev=1595534640&amp;do=diff</link>
        <description>Otsu et al. (2018), part 1

Otsu et. al (2018) is the second spectral upsampling method I&#039;m adding to Colour. It&#039;s a data-driven method, which not only produces reflectances matching the given color exactly, but also that are natural and resemble real, measured reflectances. This is in contrast with, for example,</description>
    </item>
    <item rdf:about="http://redman.xyz/doku.php/gsoc:otsu2018_2?rev=1595612940&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-07-24T17:49:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Otsu et al. (2018), part 2</title>
        <link>http://redman.xyz/doku.php/gsoc:otsu2018_2?rev=1595612940&amp;do=diff</link>
        <description>Otsu et al. (2018), part 2

The previous post mentions three basis vectors and a “dataset mean.” Here I explain how to find a good basis and what “good” means in this context.

The idea is to find a basis so that any spectral reflectivity can be expressed in the form:
$$\mathbf s = \sum_i w_i\mathbf b_i + \mathbf b_\mu$$
where $i$ runs over all dimensions of the space (36 using Otsu et al.&#039;s spectral data) and $\mathbf b_\mu$ is a constant term you can ignore for now. This is a very common probl…</description>
    </item>
    <item rdf:about="http://redman.xyz/doku.php/gsoc:otsu2018_3?rev=1595774880&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-07-26T14:48:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Otsu et al. (2018), part 3</title>
        <link>http://redman.xyz/doku.php/gsoc:otsu2018_3?rev=1595774880&amp;do=diff</link>
        <description>Otsu et al. (2018), part 3

In the previous post I explained how PCA can be used to create a convenient basis for representing real-world reflectivities. The procedure uses a set of measured spectra to compute an orthonormal basis, sorted by variance or “statistical significance.</description>
    </item>
    <item rdf:about="http://redman.xyz/doku.php/gsoc:otsu2018_4?rev=1597082100&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-08-10T17:55:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Otsu et al. (2018), part 4</title>
        <link>http://redman.xyz/doku.php/gsoc:otsu2018_4?rev=1597082100&amp;do=diff</link>
        <description>Otsu et al. (2018), part 4

In the previous part I mentioned that reflectances reconstructed using this method can exceed the [0, 1] range and violate conservation of energy. Indeed, I could simply ask it for an imaginary color and get a weird, unphysical spectrum.</description>
    </item>
    <item rdf:about="http://redman.xyz/doku.php/gsoc:plan_june?rev=1591045140&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-06-01T20:59:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>The plan for June</title>
        <link>http://redman.xyz/doku.php/gsoc:plan_june?rev=1591045140&amp;do=diff</link>
        <description>The plan for June

This month I&#039;ll be working on implementing Jakob and Hanika (2019) in Colour&#039;s reflectance recovery submodule. Here are the goals to be met before the first evaluations start on June 24:

	*  Write code that computes the spectrum for a single color
	*  Extend it to the entire sRGB gamut (using feedback to get a smooth map)</description>
    </item>
    <item rdf:about="http://redman.xyz/doku.php/gsoc:progress_late_june?rev=1593107760&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-06-25T17:56:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Late June progress update</title>
        <link>http://redman.xyz/doku.php/gsoc:progress_late_june?rev=1593107760&amp;do=diff</link>
        <description>Late June progress update

The first evaluation is just in a few days. Here&#039;s a quick summary of what I&#039;ve done so far:

	*  I wrote and tested a decent prototype of the implementation, in my personal repository.
	*  I forked the main repository and began working on integrating my code into the codebase.</description>
    </item>
    <item rdf:about="http://redman.xyz/doku.php/gsoc:proposal?rev=1589303820&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-05-12T17:17:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>New Spectral Upsampling Methods</title>
        <link>http://redman.xyz/doku.php/gsoc:proposal?rev=1589303820&amp;do=diff</link>
        <description>New Spectral Upsampling Methods

This is the project proposal I wrote for Google Summer of Code 2020. The project can be found on their website here.



Personal information

Name: Paweł Ryszard Redman 

Country of residence: Poland 

University: Wrocław University of Science and Technology (Polish: Politechnika Wrocławska)</description>
    </item>
    <item rdf:about="http://redman.xyz/doku.php/gsoc:prototypes_repo?rev=1591046820&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-06-01T21:27:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>A repository for prototypes</title>
        <link>http://redman.xyz/doku.php/gsoc:prototypes_repo?rev=1591046820&amp;do=diff</link>
        <description>A repository for prototypes

[[An example output from the script]]

I&#039;ve just created a Git repository for prototypes. It&#039;s a place for experiments and early code that&#039;s not yet ready for inclusion in Colour.

The first script there successfully finds the coefficients described in Jakob and Hanika for a few test colors. It doesn&#039;t work too well yet. There are convergence problems with methods that find local minima and I had to resort to using a (very slow) global optimizer. I&#039;ll talk about thes…</description>
    </item>
    <item rdf:about="http://redman.xyz/doku.php/gsoc:scipy_minimize_value_threshold?rev=1595500620&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-07-23T10:37:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>Function value threshold in SciPy&#039;s minimize</title>
        <link>http://redman.xyz/doku.php/gsoc:scipy_minimize_value_threshold?rev=1595500620&amp;do=diff</link>
        <description>Function value threshold in SciPy&#039;s minimize

I was minimizing a color difference function using scipy.optimize.minimize. The problem I had was that the solver wouldn&#039;t stop until the gradient (the rate of change) was small enough. This is sensible in most applications, but for me this meant wasting time refining the solution until the color difference was orders of magnitude smaller than any perceptible error. In practice most iterations were unnecessary and avoiding them would save a lot of ti…</description>
    </item>
</rdf:RDF>
