doc:appunti:software:colorchecker_clones
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
doc:appunti:software:colorchecker_clones [2020/01/11 22:07] – [Creating a CHT file for the GWBCC Colour Card] niccolo | doc:appunti:software:colorchecker_clones [2020/01/27 12:20] (current) – [Solid Pigments vs Offset Printing and Dithering] niccolo | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== The ColorChecker and its Clones | + | ====== The Grey White Balance Colour Card: an X-Rite clone ====== |
- | {{.: | + | **GWBCC** is a series of products manufactured by an **[[https://www.greywhitebalancecolourcard.co.uk/|UK company]]**; |
- | The **[[wp> | + | |
- | There are several manufacturers | + | Here I share my experience using that card to do **color |
- | ===== The Grey White Balance Colour Cards ===== | + | The final word is: despite **the product lacks a real color calibration**, |
- | The most inexpensive color charts are obtained by **[[wp> | + | ===== The ColorChecker |
- | {{.: | + | [{{.: |
- | {{.:color_management:colorchart-dithering-2.jpg?380|A color chart produced with offset printing}} | + | The **[[wp> |
- | ===== Creating a picture of a color chart ===== | + | There are several manufacturers that sell **similar (cloned) |
- | Having a **reference picture** (with exactly calibrated colors) of your ColorChecker can be very useful. A ColorChecker reference image can be used as a comparison with images acquired using a scanner or with photos taken in some light conditions: just include the actual ColorChecker into the scan or into the photo and calculate the transformation functions to obtain the same color tones of the refrence picture with a suitable software (e.g. **[[https:// | + | ===== Solid Pigments vs Offset Printing |
- | Surprisingly enough, it is not easy to find or to create such a picture. | + | The most inexpensive color charts are obtained by **[[wp> |
- | X-Rite publishes the document | + | |
- | Beware that the above data refers to ColorChecker **manufactured before November 2014**, after that date some changes were introduced, perhaps due the necessity to comply with toxicity law in color pigments. For X-Rite ColorChecker manufactured after november 2014 there is the **{{.: | + | [{{.: |
- | + | [{{.: | |
- | Another problem in creating ColorChecker images is the **poor support** for L*a*b* color space and 16 bit/color in image manipulation applications. Using the **GIMP** you need at least **version 2.10** to open 16 bit TIFF images; you will have a color picker that shows you color coordinates in **sRGB 16 bit integers** and **%%L*a*b* floating points%%**, but you are still limited to enter color coordinates using the **0-255** or **0-100** ranges. | + | |
- | + | ||
- | So here there are **three reference images** (ColorChecker simulations), | + | |
- | + | ||
- | * **{{.: | + | |
- | * **{{.: | + | |
- | * **{{.: | + | |
====== Color calibration using Darktable ====== | ====== Color calibration using Darktable ====== | ||
Line 56: | Line 47: | ||
Now import the source image into **Darktable** using **import** from the left menu. View the image into the **darkroom mode** and verify its **history** (left menu): it should be only **0 - original**. If you applied some modules on the image, remove them by selecting //0 - original// and clicking **compress history stack**: every module above the one selected will be removed. | Now import the source image into **Darktable** using **import** from the left menu. View the image into the **darkroom mode** and verify its **history** (left menu): it should be only **0 - original**. If you applied some modules on the image, remove them by selecting //0 - original// and clicking **compress history stack**: every module above the one selected will be removed. | ||
- | To be on the safe side you should define the **input color profile**. Still in darkroom mode, on the right menu, expand the //input color profile// section (you will wish to click the //show only active modules// button to find it easly). Select the most appropriate profile: for a regular JPEG image it should be **sRGB**, in my case - an image acquired with **scanimage** from a CanoScan 9000F scanner - it was **linear Rec2020 RGB**. Leave //gamut clipping// to off. Once selected, verify the history where two items should exist: **0 - original** and **1 - input color profile**. | + | To be on the safe side you should define the **input color profile**. Still in darkroom mode, on the right menu, expand the //input color profile// section (you will wish to click the //show only active modules// button to find it easly). Select the most appropriate profile: for a regular JPEG image it should be **sRGB**, in my case - an image acquired with **scanimage** from a CanoScan 9000F scanner - it was **linear Rec2020 RGB**. Leave the //gamut clipping// to off. Once selected, verify the history where only two items should exist: **0 - original** and **1 - input color profile**. |
- | Return to the **lighttable mode** and choose **export selected** from the right menu, choose **PFM (float)** format and **Lab** profile. The exported file will be saved into a **darktable_exported** subdirectory. | + | {{.: |
+ | {{.: | ||
+ | |||
+ | In the figures above you can see how the histogram looks like when choosing the wrong or the right color profile. An photo with **shadows and highlights equally distributed**, | ||
+ | |||
+ | Return to the **lighttable mode** and choose **export selected** from the right menu, choose **PFM (float)** format and **Lab** profile. The exported file will be saved into a **darktable_exported** subdirectory. It is not required to add the //output color profile// module to the image history, just export with the options stated above. | ||
===== Create a CHT file for the GWBCC Colour Card ===== | ===== Create a CHT file for the GWBCC Colour Card ===== | ||
Line 156: | Line 152: | ||
The **EXPECTED** keyword is followed by **LAB**, to indicate that the color coordinates are Lab ones; the number states how may lines will follow. Then, for each color patch, there is the **label** and the three **%%L*a*b*%%** values. The colors expressed here are just for reference: rectangles with a colored border will be displayed in **darktable-chart** during image alignment, and you can use the color as reference for proper image alignment and orientation. Color values for actual calibration are read from a **.CIE file** or from a reference image. | The **EXPECTED** keyword is followed by **LAB**, to indicate that the color coordinates are Lab ones; the number states how may lines will follow. Then, for each color patch, there is the **label** and the three **%%L*a*b*%%** values. The colors expressed here are just for reference: rectangles with a colored border will be displayed in **darktable-chart** during image alignment, and you can use the color as reference for proper image alignment and orientation. Color values for actual calibration are read from a **.CIE file** or from a reference image. | ||
- | ===== The CIE file with color values of the GWBCC Colour Card ===== | + | ===== Create the CIE file with color values of the GWBCC Colour Card ===== |
Here begins the most complicated part of the process: **you need to know what exact colors are printed** on your color checker chart, so that the Darktable software will be able to exactly calibrate your photos or scans, by just comparing how the **colors looks like** into your captured image, and how they **actually should look**. | Here begins the most complicated part of the process: **you need to know what exact colors are printed** on your color checker chart, so that the Darktable software will be able to exactly calibrate your photos or scans, by just comparing how the **colors looks like** into your captured image, and how they **actually should look**. | ||
Line 166: | Line 162: | ||
{{.: | {{.: | ||
{{.: | {{.: | ||
+ | |||
+ | **Figures above: color values provided by GreyWhiteBalanceColourCard: | ||
As you can verify, the color values in **tables are quite inconsistent each other** (I used the Color Picker into the GIMP software to compare RGB and L*a*b* values), where the most prominent problem is the bottom-right **black** patch, which is **a 21% gray in RGB table**, but it is 0% (i.e. **pure black**) in the L*a*b* one. In the actual printed color checker that I have purchased, the D6 patch is (**very roughly and empirically**) something like a 17% gray. The D1 **white patch** is declared to be a **100% white**, which is rather an oddity in color checkers, because to be so, it should reflect 100% of the illuminant. Just for reference, the X-Rite ColorChecker has the white patch at 95%, my empiric measure on the actual GWBCC chart is a white at **about 91%**. | As you can verify, the color values in **tables are quite inconsistent each other** (I used the Color Picker into the GIMP software to compare RGB and L*a*b* values), where the most prominent problem is the bottom-right **black** patch, which is **a 21% gray in RGB table**, but it is 0% (i.e. **pure black**) in the L*a*b* one. In the actual printed color checker that I have purchased, the D6 patch is (**very roughly and empirically**) something like a 17% gray. The D1 **white patch** is declared to be a **100% white**, which is rather an oddity in color checkers, because to be so, it should reflect 100% of the illuminant. Just for reference, the X-Rite ColorChecker has the white patch at 95%, my empiric measure on the actual GWBCC chart is a white at **about 91%**. | ||
Line 174: | Line 172: | ||
So what is the best and quickest empirical method to measure the color values of your card? I just put my GWBCC copy in the **midday sunlight**, of a clean day, away from color-reflecting surfaces, and **took a photo with a good camera**, hoping that it did a good job in color balancing, exposure, etc. I took several photos at different exposure values, ranging from -1.0 to +1.0 EV, and used the one that **best matches the colors** on my monitor and to my taste. | So what is the best and quickest empirical method to measure the color values of your card? I just put my GWBCC copy in the **midday sunlight**, of a clean day, away from color-reflecting surfaces, and **took a photo with a good camera**, hoping that it did a good job in color balancing, exposure, etc. I took several photos at different exposure values, ranging from -1.0 to +1.0 EV, and used the one that **best matches the colors** on my monitor and to my taste. | ||
- | I choosed the photo shot at +0 EV because it seemed **the best for color fidelity**. Then I decided to **increase a bit the luminosity** because the white and the black swatches (actually white and dark gray) seemed too dark. Infact, using the **The GIMP**' | + | I choosed the photo shot at +0 EV because it seemed **the best for color fidelity**. Then I decided to **increase a bit the luminosity** because the white and the black swatches (actually white and dark gray) seemed too dark. Infact, using the **The GIMP**' |
< | < | ||
Line 185: | Line 183: | ||
Still with The GIMP I used the // | Still with The GIMP I used the // | ||
- | FIXME Insert | + | Here you can download |
===== Use darktable-chart to create a Darktable style ===== | ===== Use darktable-chart to create a Darktable style ===== | ||
Now that we have a **source image** and the **reference values**, we can start the **darktable-chart** to create a Darktable style that can be applied whenever an image is acquired in the same source conditions. | Now that we have a **source image** and the **reference values**, we can start the **darktable-chart** to create a Darktable style that can be applied whenever an image is acquired in the same source conditions. | ||
- | === source image === | + | === The source image === |
- | FIXME | + | {{ .: |
+ | Click the //image// button to load the source image. In my case the source image was an image of the GWBCC color checker acquired using a **CanoScan scanner**. It was acquires on GNU/Linux using **scanimage**. No ICC profile was applied, so it looked very dark. That image was opened in Darktable and the **linear Rec2020 RGB** //input color porfile// was applied. Then the image was saved in **PFM (float)** format and **Lab** profile, as explained above. | ||
- | === reference values === | + | Then click the //chart// button and load the CHT file describing the color chart. Now you have to align the edges of the chart over the image, unitll they matches exactly. Use the //size// slider to shrink the swatches, so you are sure not to get the black borders. |
- | FIXME | + | === The reference values === |
+ | |||
+ | Click the //reference values// tab of darktable-chart. Here you can click the //reference it8// button and load the CIE file of the chart. Alternatively you can load one calibrated image of the chart, but you have to convert it into PFM (float) format and Lab color profile. | ||
=== process === | === process === | ||
Line 217: | Line 218: | ||
- **Import the image** you want color balanced and check its history in **darkroom mode**; you should remove any modules eventually applied to it. Be sure to apply the correct **input color profile**: as said above, the image I got from the scanner requires //linear Rec2020 RGB//, but your case my vary. The color profile is applied acting from the modules list on the right, and it should then appear into the history on the left. | - **Import the image** you want color balanced and check its history in **darkroom mode**; you should remove any modules eventually applied to it. Be sure to apply the correct **input color profile**: as said above, the image I got from the scanner requires //linear Rec2020 RGB//, but your case my vary. The color profile is applied acting from the modules list on the right, and it should then appear into the history on the left. | ||
- **Apply the style** imported from '' | - **Apply the style** imported from '' | ||
- | - In **darkroom mode** compress the **history stack** of the image by **removing** the **base curve** (which indeed was off) and the bad **input color profile**. Only the **tone curve**, | + | - In **darkroom mode** compress the **history stack** of the image to **remove** the **base curve** (which indeed was off) and the bad **input color profile**. Only the **tone curve**, |
- Return into **lighttable mode**, into the **styles** section **create a new style** which will contain the history of the selected image. This is the only one that you will apply to all the other images. | - Return into **lighttable mode**, into the **styles** section **create a new style** which will contain the history of the selected image. This is the only one that you will apply to all the other images. | ||
+ | The style created by '' | ||
+ | |||
+ | <code xml> | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | < | ||
+ | </ | ||
+ | </ | ||
===== An Example Image ===== | ===== An Example Image ===== | ||
Here it is an example of what I obtained with the above workflow. The first image is what actually was acquired from the scanner. No particular color space was associated to the image, so if we open the image **assuming the sRGB** color space we get a very dark image (the **histogram** is unbalanced toward the dark tones): | Here it is an example of what I obtained with the above workflow. The first image is what actually was acquired from the scanner. No particular color space was associated to the image, so if we open the image **assuming the sRGB** color space we get a very dark image (the **histogram** is unbalanced toward the dark tones): | ||
- | {{.: | + | {{.: |
+ | |||
+ | **Raw image from the scanner. If no specific color space is declared, sRGB is assumed | ||
Applying the **linear Rec2020 RGB** color space (just declaring it, without actually changing the pixel data), we get a better image; even the histogram is more balanced between dark and light tones: | Applying the **linear Rec2020 RGB** color space (just declaring it, without actually changing the pixel data), we get a better image; even the histogram is more balanced between dark and light tones: | ||
- | {{.: | + | {{.: |
+ | |||
+ | **Using Darktable, the Linear Rec2020 RGB color space is applied.** | ||
The final image is just the //raw// one with the **style applied**. A quite good result considering that no manual adjustment was made! | The final image is just the //raw// one with the **style applied**. A quite good result considering that no manual adjustment was made! | ||
- | {{.: | + | {{.: |
+ | |||
+ | **The image after applying the Darktable style.** | ||
+ | ====== Creating a picture of a color chart ====== | ||
+ | |||
+ | Having a **reference picture** (with exactly calibrated colors) of your ColorChecker can be very useful. A ColorChecker reference image can be used as a comparison with images acquired using a scanner or with photos taken in some light conditions: just include the actual ColorChecker into the scan or into the photo and calculate the transformation functions to obtain the same color tones of the refrence picture with a suitable software (e.g. **[[https:// | ||
+ | |||
+ | Surprisingly enough, it is not easy to find or to create such a picture. | ||
+ | X-Rite publishes the document [[https:// | ||
+ | |||
+ | Beware that the above data refers to ColorChecker **manufactured before November 2014**, after that date some changes were introduced, perhaps due the necessity to comply with toxicity law in color pigments. For X-Rite ColorChecker manufactured after november 2014 there is the **{{.: | ||
+ | |||
+ | Another problem in creating ColorChecker images is the **poor support** for L*a*b* color space and 16 bit/color in image manipulation applications. Using the **GIMP** you need at least **version 2.10** to open 16 bit TIFF images; you will have a color picker that shows you color coordinates in **sRGB 16 bit integers** and **%%L*a*b* floating points%%**, but you are still limited to enter color coordinates using the **0-255** or **0-100** ranges. | ||
+ | |||
+ | So here there are **three reference images** (ColorChecker simulations), | ||
+ | |||
+ | * **{{.: | ||
+ | * **{{.: | ||
+ | * **{{.: | ||
- | ===== Web References ===== | + | ====== Web References |
* **[[http:// | * **[[http:// |
doc/appunti/software/colorchecker_clones.1578776873.txt.gz · Last modified: 2020/01/11 22:07 by niccolo