Colour Science

GSoC 2020 - Nishant Joywardhan - LUT IO Improvements

Hello everyone! I am Nishant Joywardhan, an engineering sophomore at University of Delhi, India. I will be spending my summer under the Google Summer of Code program with Colour-Science (an affiliated project of NumFOCUS). My project is about improving the LUTs and their functionality.
I intend to use this platform to write blogs and keep an open and accessible track of my work progress.

(This blog excludes an explicit mention of the evaluation periods and the actual work-week-count, thus making the total count equal to 10 instead of the official 12 for the program)

More details:

2 Likes

Welcome here @njwardhan! :slight_smile:

1 Like

Week-0 (Community Bonding Period)

The community bonding period of GSoC-2020 with Colour, has in itself been an amazing learning opportunity. Getting to closely know the community, learning about the code of conduct to be followed and making some amazing conversation with my mentors have been the key highlights!

Work done

I have diligently tried to use this time to make myself comfortable with the codebase of Colour, besides understanding the components of my project in a better way. One of the major upgrade came in the form of refining the project plan to have a better precedence of tasks (as compared to my initial proposal) which definitely made them have a better look and feel.
My mentors have played a key role in this entire process, and I couldn’t thank them enough!

Challenges faced

While setting up the dev environment, I faced a couple of trivial issues, but eventually they got sorted. Apart from this, things have thankfully been smooth so far.

Future work

The official coding period of GSoC 2020 is round the corner, and the future work surely includes diving into coding and getting the first phase tasks done, as I have defined them on Asana. Hoping for exciting times to follow. Cheers!

1 Like

Week - 1, 2 (First half of coding period’s first phase)

First two coding weeks came up with little to no room for relaxation, but with massive scope for learning and growth.

Work done

  • Coding work began with fixing a basic issue that was making reading of LUTs, bit slow. It was a ‘nice to have’ minor fix.
  • It was followed by updating the documentation of the ‘Shaper+LUT combo’ keeping in mind the proper input-output value explanations.
  • The final task was to implement the Log2 Shaper function in the colour code base. (PR is under progress).

Majority of the goals (according to the plan) have been achieved so far!

Challenges faced

Understanding the concept of ‘shaper LUTs’ was in itself a challenge. After a full course of sweet struggle and with some valuable inputs from my mentors, I have been able to clear my doubts and queries.

Future work

The remainder of the two weeks of this month require completion of two more tasks (‘ExponentWithLinear’ and Parametrized ‘Camera-Log’ function implementation), besides finalizing some of the remaining work. I’m diligently looking forward to them.

Things have been extremely exciting so far and I am really happy to be a part of this wonderful community. Cheers to all!

1 Like

Week - 3, 4 (Second half of coding period’s first phase)

The next two coding weeks have been no different from the previous two, both in terms of the challenges as well as the learning opportunities.

Work done

  • First task of this period was the ‘ExponentWithLinear’ implementation according to the CLF 3.0 specs. It has been duly completed.
  • The second task required the ‘Parametrized camera log’ implementation, again according to the CLF 3.0 specs. (PR is under progress).

Challenges faced

Proper understanding of the mathematics as well as the concepts of CLF 3.0 specs was a major requirement for standard working code. Hopefully, justice has been served in that respect.

Future work

Evaluation-1 has just got over, and thankfully I have passed it. With some positive feedback from my mentors, I am really pumped up and looking forward to the second coding phase which includes the following major tasks:

  • Fixing the SPI3D indexing.
  • Support for LUT inversion.
  • Addressing the various CSP LUT issues.

Hoping for great times to come my way. Cheers to all!

1 Like

Thanks @njwardhan for the good work, been a pleasure so far! :slight_smile:

1 Like

The pleasure is all mine @thomas.mansencal! :slight_smile:

Week - 5, 6 (First half of coding period’s second phase)

After a successful evaluation of the previous month, the next coding period came up to be a real challenge.

Work done

  • Finalizing the ‘log node’ PR has been a major highlight of this period, particularly because of some intricate details which it has demanded.
  • Understanding the concepts behind the SPI3D LUT indexing and the support for LUT inversion is also a key point worth mentioning.

The work schedule has however got a bit delayed and I need to catch up with it soon.

Challenges faced

One of the major challenge which I came across in this period was a personal one, my Ubuntu 18.04 OS incurring a BIOS error, and not booting up despite many trials. I had to reset the whole thing including the OS as well as the development environment for my project. It surely took up some time unnecessarily, but I guess, such issues are part and parcel of this entire game.

Future work

My most primary objective right now is to complete the tasks of this phase, so that the whole project can be properly finalized in the last upcoming month. Looking forward to it with a positive and motivated mindset.

Cheers to all!

1 Like

Week - 7 (Conclusion of second coding phase)

Work done

  • The SPI3D LUT indexing was a simple but tricky task to complete.
  • Understanding the application of different types of LUTs in order to achieve an optimized working prototype for their inverse method has been a major highlight. The task is far from complete though, and is on my priority list at the moment.

Besides this, there were some loop holes identified in the ‘log node’ implementation of CLF 3.0. Some of them have been addressed by my mentor.
This motivates me to go on a “refine and recheck” run by the end of the project and hence make sure that the code-base is free from such loop holes.

Challenges faced

LUT inversion has in itself been a challenge so far, especially while dealing with 3D LUTs. I hope to bring KD-Trees to my rescue and hence complete this task as soon as possible.

Future work

Evaluation-2 is about to get over, and thankfully I have got the green light for the last upcoming phase. This is probably going to be the most important part of the project, where I intend to complete the remaining work, and overall finalize it, thus making the LUT support of Colour Science, better than ever before!

Hoping for a great concluding phase to follow.
Cheers to all :slight_smile:

1 Like

Week - 8, 9 (First two weeks of the final coding phase)

Work done

  • The final coding period began with some improvements in the already implemented CLF 3.0’s “camera log” function. The PR is under progress.
  • LUT inversion finally got addressed. It required some real brainstorming and I was thoroughly supported by my mentors. The related PR is again under progress, and it would require some concrete testing before getting it finalized.
  • This period also had the testing of LUT_to_LUT function (for its capability on handling explicit discrete domain LUTs) as one of its major highlights. I am yet to finalize that with my mentors though, and I am looking forward to getting it done ASAP.

Challenges faced

One of the major challenge was understanding how LUT inversion algorithm would work to give us the best possible results. My mentors have again helped me a lot in this particular thing and I couldn’t be more thankful.

Future work

Time flies by and GSoC-2020 literally has just 10 more official days remaining (before the submission deadline of 31st August). However the work is not done yet! I am still left with addressing remaining stuff in CLF 3.0’s integration, besides finalization of the previous work. I aim to finish all of this work along with the formalities of the program’s conclusion in the remaining time.

Looking forward to a great concluding set of 10 days, and even beyond! :wink:

1 Like

Week - 10 (Final week of GSoC-2020)

So this is it. My final official blog for this year’s Google Summer of Code program. I had honestly not thought that it would come this soon, but here it is …

Work done

  • Colour’s colour.io.LUT_to_LUT definition was unable to handle LUTs having explicit domain, i.e. a domain having explicitly defined discrete values (not necessarily equally spaced). Because of the consequential loss of data during the LUT conversion process, it was important to address this implementation lack. The PR has been successfully merged.
  • Besides this, I also had some discussion with my mentors regarding the wrapping of CLF 3.0’s Log and Exponent related function as nodes. Some work has been started here by other community members and I would like to finish this implementation.
  • This week also involved the finishing touches for the official end of the program and completing those formalities was a significant part.

Work Product Submission

The final submission for GSoC required us to compile all of the work done under a single URL.
My final work product summary can be accessed using this link!

Future Work

I very intentionally don’t choose the word: “Conclusion” as this sub-heading, for this surely is not the end!
Some work in the project still demands time and attention and I aim to continue working on them till completion.

Besides this, I choose to use this final blog as a means to extend my gratitude to Colour Science, for letting me have this wonderful experience. I couldn’t have asked for a better work environment. I would like to remain a part of this amazing community in the future as well! :slight_smile:

Lastly, none of the work done could have been possible without the constant support of my mentors: Michael Mauderer, Hao Xie and Thomas Mansencal. I extend my sincere thankfulness to them, especially Thomas, who has been there for me since the very first day, helping me with my queries and doubts with ultimate patience! :innocent:
A special vote of thanks to Nick Shaw, who despite not being in the official mentoring capacity, was always there to help me with the technicalities of the project.

It has literally been a pleasure and I am going to cherish this experience throughout my life.

Cheers to all!

3 Likes

Thanks @njwardhan,

It was a great pleasure to have worked with you all this summer and we hope to be able to continue to do so! :slight_smile:

Bests,

Thomas

1 Like