Navigation

Tags





















Interpolating (hue) angles

Study 9 min.
In image processing, retouchers may want to apply a saturation boost on specific hues only. Typically, uniform saturation corrections follow a basic linear transfer function $sat_{out} = gain \cdot sat_{in}$, where $gain$ is a real positive constant. To target specific hues, we simply rewrite $sat_{out}(hue) = gain(hue) \cdot sat_{in}$ where $gain$ is then a function. The most common way to declare $gain$ is to provide users with 8 discrete saturation nodes for 8 evenly-spaced hues, and interpolate smoothly between nodes.
Lire la suite →

Open source and professional photography : lies and wishes

Opinion 8 min.
There is one thing you will find on the home page of pretty much any open source (call it libre or free if you will, those lines are blurred) image editing software : the promise that it is, somehow, suitable for professionals. Marketing has abused that word for decades, it is only natural that it should affect non-commercial and non-profit projects as well, just to try to buy some cheap credibility.
Lire la suite →


WebP is so great… except it's not

10 min.
I’m a responsible web designer, and as such, since WordPress (finally) accepts media uploads of image/webp MIME type and since all web browsers  newer than september 2020 (even Apple Safari \o/) can display it, I have been moving my photos library to WebP . After all, when you create content, the least you can do is to also provide the smoothest user experience around it. WebP falls close to magical: lookie those file weights !
Lire la suite →

The sRGB book of color

1 min.
This page is inspired by the Munsell book of color. It aims at showing the sRGB gamut volume (all the visible colors that can be encoded as sRGB triplets), projected into a perceptually uniform lightness/chroma space (using JzAzBz color space1), and sliced across hue planes. The sRGB space is the lowest common denominator of all general-audience screens, and is deemed fit to choose colors for GUI, logos and drawings that should sit correctly on any display.
Lire la suite →

Image processing does not kill people… and it's a shame

25 min.
Among the technical fields, quite a few have the potential to harm the public : the first that come to mind are medicine and civil engineering. Both have in common their scientific basis : studies, data, models and history form a corpus of knowledge and tools used by the practitioners to help making choices. However scientific their basis is, the practice remains an art or a craft. Indeed, while the state of the art provides models, data and methods, it is the practitioner’s responsibility to identify which model applies to the current circumstances, which tools are the best suited to the current situation, and which are the priorities that will make the best solution stand out of the reasonable ones.
Lire la suite →

Bilinear interpolation on images stored as Python Numpy ndarray

8 min.
If you are working in image processing and using Python as a prototyping script language to test algorithms, you might have noticed that all the libs providing fast image interpolation methods (to either sub-sample or over-sample) work in 8 bits unsigned integers (uint8). This is quite annoying if you are working with floating point images. PIL supports floating point interpolation , but only for one layer, thus forget about RGB, and scipy.
Lire la suite →

Derivating HDR-IPT direct and inverse transformations

53 min.
Following my work on the filmic tonemapping, several users have reported issues with very saturated blue areas (stage spotlights, bright skies) and red areas. The grail of image processing is being able to affect colors and brightness independantly. The big conundrum of tonemapping is raising luminance without affecting perceptual colors, and, by color, we mean hue and saturation/chroma. The problem is, once you lifted the luminance, you need to correct the saturation too, because it will look oversaturated.
Lire la suite →


Websites suck.

Opinion 6 min.
I have spent the past month working on an AI-based search engine. When you go on darktable sub-Reddit, you will find the question “why do lighttable’s thumbnails look different from darkroom preview” asked every next week. The question is answered many times on this sub-Reddit, on various forums, and I even put the answer on the main Readme file, displayed on the Github main page of the software. To no avail.
Lire la suite →

Who are the darktable users in 2020 ?

Study 22 min.
The core basics of design are to know for whom you design, that is who are the users of your solution, what they expect and what they need. It is also necessary to assess if the actual user of your product is the one you designed it for in the first place, that is, who is missing from your user base, to avoid the survivor bias . This is unfortunately overlooked in FLOSS and it is often not well regarded to collect user data.
Lire la suite →

You need to reinvent the wheel all the time

Opinion 7 min.
There is this mantra that I have been hearing too much in my life : “don’t reinvent the wheel”. People mean that as a metaphor trying to discourage you from redoing something that is already done, and by that they actually want you to use whatever software application or library instead of coding your own, as if it was automatically a time and resource saver. It’s not. First of all, despite its apparent common sense, this statement is incredibly ignorant : the wheel has been reinvented many times, typically for the sake of performance.
Lire la suite →

Design by committee will not save FLOSS

Opinion 6 min.
The opensource ecosystem is keen on its mantras. One of them is that being an opensource dev/maintainer is a thankless unpaid job. And while that may sound like a selfless act of benevolence, there is another way of reading it : a selfish way of avoiding professional responsibility, while still exerting some amount of power and decision. Which is the egg and which is the chicken then ? It may not matter, but the quasi-hagiographic founding myths of opensource need to stop.
Lire la suite →

The designer and the drilling machine

5 min.
As a designer, your job is to match someone’s needs/problems with a solution. The tricky part is, this someone is not necessarily the client you are talking with and who pays you, it could be a third party that you only know of through your paying client. As an engineer, the particular kind of design you do aims toward technical solutions, so you might produce plans, blueprints, calculations and prototypes to carry on with that goal.
Lire la suite →

Web design and no-coding CMS : are we going the right way ?

7 min.
I have been using WordPress as a CMS (content management system) for almost 10 years now. When I dug into it, I knew nothing about PHP, SQL, CSS, programmation and servers. That was one year after I switched from Windows Vista to Linux Ubuntu. I remember the big selling point of WordPress was its “15 min installation with no coding knowledge”. Slowly, I began hacking my WP theme with PHP template tags, because it didn’t do what I wanted.
Lire la suite →

Rotation-invariant Laplacian for 2D grids

14 min.
The Laplacian operator $\Delta u$ is the divergence of the gradient, that is the sum of the second-order partial derivatives $\nabla^2 u$ of a multivariate function, which represents the local curvature of this function. This operator is widely used for edge-detection1, as well as in partial-differential equations (Poisson, etc.), and other problems of machine-learning minimisation. For numerical applications in orthogonal graphs, sampled only at integer coordinates (like pixels in an image), a discrete Laplacian has to be used, and several approaches are available, that will be detailed hereafter.
Lire la suite →

Make Jupyter Notebooks easy to blog in WordPress

13 min.
I have struggled with most solutions to convert and embed Jupyter notebooks into WordPress blog posts since I use Plotly as a graphic lib, as well as many LaTeX equations and images. Finally, I had to code my way through. Here is what I did : #Write the jupyter notebook Nothing that you don’t know here. If you embed pictures in the notebook though, it would be good to upload them on your WordPress media library, then use the external URL to include them (from your server) in the Markdown cells of Jupyter.
Lire la suite →

The designer and the drilling machine

5 min.
As a designer, your job is to match someone’s needs/problems with a solution. The tricky part is, this someone is not necessarily the client you are talking with and who pays you, it could be a third party that you only know of through your paying client. As an engineer, the particular kind of design you do aims toward technical solutions, so you might produce plans, blueprints, calculations and prototypes to carry on with that goal.
Lire la suite →

Optimize a van shelf

13 min.
A few weeks ago, I discovered the tiny world of tiny houses and camping-vans and found that quite amazing. However, the current commercial camping vans look pretty sub-optimal to me, because they are equipped with kitchen-style furniture, meaning heavy, stand-alone stuff made of chipwood/OSB panels 1.5 cm thick. See for yourself : I spent 3 years working at Polytechnique Montreal on a 280 kg solar car made of carbon fiber, fiberglass and epoxy, and embedding 6 m² of solar panels on the top shell, so, seeing such a daddy’s design add around 750 kg of equipement on top of a 6 m² cargo van blew my mind in a bad way.
Lire la suite →

Bilinear interpolation on images stored as Python Numpy ndarray

8 min.
If you are working in image processing and using Python as a prototyping script language to test algorithms, you might have noticed that all the libs providing fast image interpolation methods (to either sub-sample or over-sample) work in 8 bits unsigned integers (uint8). This is quite annoying if you are working with floating point images. PIL supports floating point interpolation , but only for one layer, thus forget about RGB, and scipy.
Lire la suite →

Bilinear interpolation on images stored as Python Numpy ndarray

8 min.
If you are working in image processing and using Python as a prototyping script language to test algorithms, you might have noticed that all the libs providing fast image interpolation methods (to either sub-sample or over-sample) work in 8 bits unsigned integers (uint8). This is quite annoying if you are working with floating point images. PIL supports floating point interpolation , but only for one layer, thus forget about RGB, and scipy.
Lire la suite →

Make Jupyter Notebooks easy to blog in WordPress

13 min.
I have struggled with most solutions to convert and embed Jupyter notebooks into WordPress blog posts since I use Plotly as a graphic lib, as well as many LaTeX equations and images. Finally, I had to code my way through. Here is what I did : #Write the jupyter notebook Nothing that you don’t know here. If you embed pictures in the notebook though, it would be good to upload them on your WordPress media library, then use the external URL to include them (from your server) in the Markdown cells of Jupyter.
Lire la suite →

Make Jupyter Notebooks easy to blog in WordPress

13 min.
I have struggled with most solutions to convert and embed Jupyter notebooks into WordPress blog posts since I use Plotly as a graphic lib, as well as many LaTeX equations and images. Finally, I had to code my way through. Here is what I did : #Write the jupyter notebook Nothing that you don’t know here. If you embed pictures in the notebook though, it would be good to upload them on your WordPress media library, then use the external URL to include them (from your server) in the Markdown cells of Jupyter.
Lire la suite →

Make Jupyter Notebooks easy to blog in WordPress

13 min.
I have struggled with most solutions to convert and embed Jupyter notebooks into WordPress blog posts since I use Plotly as a graphic lib, as well as many LaTeX equations and images. Finally, I had to code my way through. Here is what I did : #Write the jupyter notebook Nothing that you don’t know here. If you embed pictures in the notebook though, it would be good to upload them on your WordPress media library, then use the external URL to include them (from your server) in the Markdown cells of Jupyter.
Lire la suite →

Make Jupyter Notebooks easy to blog in WordPress

13 min.
I have struggled with most solutions to convert and embed Jupyter notebooks into WordPress blog posts since I use Plotly as a graphic lib, as well as many LaTeX equations and images. Finally, I had to code my way through. Here is what I did : #Write the jupyter notebook Nothing that you don’t know here. If you embed pictures in the notebook though, it would be good to upload them on your WordPress media library, then use the external URL to include them (from your server) in the Markdown cells of Jupyter.
Lire la suite →

Make Jupyter Notebooks easy to blog in WordPress

13 min.
I have struggled with most solutions to convert and embed Jupyter notebooks into WordPress blog posts since I use Plotly as a graphic lib, as well as many LaTeX equations and images. Finally, I had to code my way through. Here is what I did : #Write the jupyter notebook Nothing that you don’t know here. If you embed pictures in the notebook though, it would be good to upload them on your WordPress media library, then use the external URL to include them (from your server) in the Markdown cells of Jupyter.
Lire la suite →

Analyse the heat losses of a Sprinter van

29 min.
Introduction¶General goal¶The design of a camping van involves an estimation of the heat losses that will lead to the subsequent design of both the insulation and the heating system. This study will aim at evaluating the average heat flux through the van surfaces in steady mode. Tools of the trade¶For that matter, we will use mostly Numpy, the scientific computing module for vector and matrice algebra in Python. As a wrapper for Numpy, we will use the package Pandas which offers a nice way to index rows and columns of Numpy arrays,like an abstraction of a spreadsheet, with SQL-like tools to get, mask and insert data.
Lire la suite →

Optimize a van shelf

13 min.
A few weeks ago, I discovered the tiny world of tiny houses and camping-vans and found that quite amazing. However, the current commercial camping vans look pretty sub-optimal to me, because they are equipped with kitchen-style furniture, meaning heavy, stand-alone stuff made of chipwood/OSB panels 1.5 cm thick. See for yourself : I spent 3 years working at Polytechnique Montreal on a 280 kg solar car made of carbon fiber, fiberglass and epoxy, and embedding 6 m² of solar panels on the top shell, so, seeing such a daddy’s design add around 750 kg of equipement on top of a 6 m² cargo van blew my mind in a bad way.
Lire la suite →

Analyse the heat losses of a Sprinter van

29 min.
Introduction¶General goal¶The design of a camping van involves an estimation of the heat losses that will lead to the subsequent design of both the insulation and the heating system. This study will aim at evaluating the average heat flux through the van surfaces in steady mode. Tools of the trade¶For that matter, we will use mostly Numpy, the scientific computing module for vector and matrice algebra in Python. As a wrapper for Numpy, we will use the package Pandas which offers a nice way to index rows and columns of Numpy arrays,like an abstraction of a spreadsheet, with SQL-like tools to get, mask and insert data.
Lire la suite →

Analyse the heat losses of a Sprinter van

29 min.
Introduction¶General goal¶The design of a camping van involves an estimation of the heat losses that will lead to the subsequent design of both the insulation and the heating system. This study will aim at evaluating the average heat flux through the van surfaces in steady mode. Tools of the trade¶For that matter, we will use mostly Numpy, the scientific computing module for vector and matrice algebra in Python. As a wrapper for Numpy, we will use the package Pandas which offers a nice way to index rows and columns of Numpy arrays,like an abstraction of a spreadsheet, with SQL-like tools to get, mask and insert data.
Lire la suite →

Analyse the heat losses of a Sprinter van

29 min.
Introduction¶General goal¶The design of a camping van involves an estimation of the heat losses that will lead to the subsequent design of both the insulation and the heating system. This study will aim at evaluating the average heat flux through the van surfaces in steady mode. Tools of the trade¶For that matter, we will use mostly Numpy, the scientific computing module for vector and matrice algebra in Python. As a wrapper for Numpy, we will use the package Pandas which offers a nice way to index rows and columns of Numpy arrays,like an abstraction of a spreadsheet, with SQL-like tools to get, mask and insert data.
Lire la suite →

Analyse the heat losses of a Sprinter van

29 min.
Introduction¶General goal¶The design of a camping van involves an estimation of the heat losses that will lead to the subsequent design of both the insulation and the heating system. This study will aim at evaluating the average heat flux through the van surfaces in steady mode. Tools of the trade¶For that matter, we will use mostly Numpy, the scientific computing module for vector and matrice algebra in Python. As a wrapper for Numpy, we will use the package Pandas which offers a nice way to index rows and columns of Numpy arrays,like an abstraction of a spreadsheet, with SQL-like tools to get, mask and insert data.
Lire la suite →

Optimize a van shelf

13 min.
A few weeks ago, I discovered the tiny world of tiny houses and camping-vans and found that quite amazing. However, the current commercial camping vans look pretty sub-optimal to me, because they are equipped with kitchen-style furniture, meaning heavy, stand-alone stuff made of chipwood/OSB panels 1.5 cm thick. See for yourself : I spent 3 years working at Polytechnique Montreal on a 280 kg solar car made of carbon fiber, fiberglass and epoxy, and embedding 6 m² of solar panels on the top shell, so, seeing such a daddy’s design add around 750 kg of equipement on top of a 6 m² cargo van blew my mind in a bad way.
Lire la suite →

Optimize a van shelf

13 min.
A few weeks ago, I discovered the tiny world of tiny houses and camping-vans and found that quite amazing. However, the current commercial camping vans look pretty sub-optimal to me, because they are equipped with kitchen-style furniture, meaning heavy, stand-alone stuff made of chipwood/OSB panels 1.5 cm thick. See for yourself : I spent 3 years working at Polytechnique Montreal on a 280 kg solar car made of carbon fiber, fiberglass and epoxy, and embedding 6 m² of solar panels on the top shell, so, seeing such a daddy’s design add around 750 kg of equipement on top of a 6 m² cargo van blew my mind in a bad way.
Lire la suite →

Optimize a van shelf

13 min.
A few weeks ago, I discovered the tiny world of tiny houses and camping-vans and found that quite amazing. However, the current commercial camping vans look pretty sub-optimal to me, because they are equipped with kitchen-style furniture, meaning heavy, stand-alone stuff made of chipwood/OSB panels 1.5 cm thick. See for yourself : I spent 3 years working at Polytechnique Montreal on a 280 kg solar car made of carbon fiber, fiberglass and epoxy, and embedding 6 m² of solar panels on the top shell, so, seeing such a daddy’s design add around 750 kg of equipement on top of a 6 m² cargo van blew my mind in a bad way.
Lire la suite →