Difficult to explain as I’m no techy but its the ability to drag the colour pointer to get an immediate effect. It’s not dissimilar to the black and white tool in light zone, just more advanced. Not sure if they are still working on it because it does show great promise.
I really love this article, it is one of the most exhaustive and precise overviews of digital B&W conversion that one can find on the net.
The only suggestion I have is related to the use of Lab “L” channel in the B&W conversion. The method proposed in the article, which is based on the
Colors → Components → Decompose, produces in my opinion a “wrong” result: the converted image is too light, because the gamma encoding of the “L” channel is different from sRGB and therefore cannot be used “directly”.
The correct way of producing a B&W image from the “L” channel is from my experience the following:
- convert from the input RGB colorspace to Lab (using a color management system like LittleCMS)
- fill the “a” and “b” channels with a uniform 50% gray to completely discard the color information
- convert back from Lab to any suitable RGB colorspace, again using LittleCMS or something equivalent
Applying those steps to Frank Kovalchek’s portrait produces this result:
to be compared with the conversion shown in the article and based on GIMP’s decompose. One can see that the explicit colorspace conversion to Lab and back to RGB produces a darker image that better matches the expected tonal range.
However, I have no idea if and how such a colorspace conversion to Lab can be realized with GIMP…
The “L” channel is actually a very powerful conversion method, particularly in the case of portrait images, as it tends to produce “natural” tonal variations in the skin, eyes and lips.
I hope this helps.
Hi David,
Thanks for the wondering article and the script. However, I encountered errors in your color decompose script. After checking the code, I found that:
“YCbCr ITU R470 256” should be written as “YCbCr_ITU_R470_256”
Likewise, “YCbCr ITU R709 256” should be written as “YCbCr_ITU_R709_256”
Hope this help.
Hi @go-go-go,
Those terms should be correct for the last stable GIMP:
; YCbCr ITU R470 256
(define tmp (plug-in-decompose 1 Image Drawable "YCbCr ITU R470 256" 0))
(define lyr (gimp-layer-new-from-drawable ( car( gimp-image-get-active-layer (car tmp) )) Image) )
(gimp-item-set-name (car lyr) "Luma - y470f")
(gimp-image-add-layer Image (car lyr) -1)
; YCbCr ITU R709 256
(define tmp (plug-in-decompose 1 Image Drawable "YCbCr ITU R709 256" 0))
(define lyr (gimp-layer-new-from-drawable ( car( gimp-image-get-active-layer (car tmp) )) Image) )
(gimp-item-set-name (car lyr) "Luma - y709f")
(gimp-image-add-layer Image (car lyr) -1)
From the PDB explorer:
decompose-type STRING
What to decompose: "RGB", "Red", "Green", "Blue", "RGBA",
"HSV", "Hue", "Saturation", "Value", "HSL", "Hue (HSL)",
"Saturation (HSL)", "Lightness", "CMY", "Cyan", "Magenta",
"Yellow", "CMYK", "Cyan_K", "Magenta_K", "Yellow_K",
"Alpha", "LAB", "YCbCr_ITU_R470", "YCbCr_ITU_R709",
"YCbCr ITU R470 256", "YCbCr ITU R709 256"
That’s strange. Coz after reading your message, I retried a couple of time. In my setup (I am using Ubuntu and I installed GIMP directly from the main repository (version 2.8.16)), the script only works when I have the underscores like this “YCbCr_ITU_R470_256”. Otherwise, it keeps popping up error message.
That is odd. I’ll fire up another Ubuntu box and see what’s going on. I should also probably move that script over to github so others can hack at it and submit PR’s as needed. Thanks for the heads up!
And when I check the plug-in-browser. it says:
What to decompose: “RGB”, “Red”, “Green”, “Blue”, “RGBA”, “HSV”, “Hue”, “Saturation”, “Value”, “HSL”, “Hue (HSL)”, “Saturation (HSL)”, “Lightness”, “CMY”, “Cyan”, “Magenta”, “Yellow”, “CMYK”, “Cyan_K”, “Magenta_K”, “Yellow_K”, “Alpha”, “LAB”, “YCbCr_ITU_R470”, “YCbCr_ITU_R709”, “YCbCr_ITU_R470_256”, “YCbCr_ITU_R709_256”
Beware & sadly C2G does not feature in the latest GIMP 2.10. I shouldn’t have let 2.10 uninstall 2.08 because now I don’t have access to C2G. Really annoying.
Your have installed http://gegl.org/ ?
gegl -p -o output.png -x "<gegl><node operation='gegl:c2g'><params><param name='radius'>1800</param><param name='samples'>16</param><param name='iterations'>16</param></params></node><node operation='gegl:load'><params><param name='path'>input.png</param></params></node></gegl>"
Thanks bazza but all good! C2G is now located @ main menu > Colors > Desaturate > Color to Grayscale.
I’m having a problem with pseudogrey. It generates the following error
Execution error for ‘Pseudogrey’:
Error: eval: unbound variable: NORMAL
Gimp 2.10.12
I find it very useful for some B&W conversions and will feel a bit lost without it. Hopping some one can sort. Tried the version of Pat David’s site. Seems to be the only copy around.
John
There’s actually a version bundled in G’MIC as a filter as well that even has more options - might be worth trying that one instead (plus you get a ton of neat G’MIC filters as well… ).
It may have been in but has gone. Just updated it as well with a lot of on test stuff but still no sign of it and I liked the just apply and job done.
I daren’t say anything about the useful filters as I’m photo only.
John
It exists in the G’MIC filter called “Black & White”.
Wow @patdavid, great thorough article…apparently I screwed up by not poking through all of the history of this forum prior to the time I joined. Wonder what other nuggets I will discover…
Better late than never. You aren’t like me, reading almost everything.
I may have found an alternative. Pseudogrey is mentioned but no signs of it in the application. Delalaboratory
https://code.google.com/archive/p/delaboratory/downloads
Obviously I shouldn’t have stuck curves on the top of the layer stack but wanted to see if it functioned as the others. The controls if any for all of the layers that are added remain active. Very photographer friendly. Just wish it had gimp levels as being able to set the output span can be very useful.
I had to edit the make file to get it to compile on Linux 64bit by forcing the selection. Just commented out the if else around it.
Quick play
It couldn’t open a user directory and I didn’t check if it can save a file. Hope so
John
I can look at updating the script to see what went wrong.
In the meantime, you can also do this manually pretty easily: