[gimp-web/testing] Updated new text + assets to remove 'gamma hack' refs
- From: Pat David <patdavid src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp-web/testing] Updated new text + assets to remove 'gamma hack' refs
- Date: Wed, 4 May 2016 16:15:22 +0000 (UTC)
commit 90ea1cb25a2e1ba63351a4974f1714e14609f2ee
Author: Pat David <patdavid gmail com>
Date: Tue May 3 17:21:54 2016 -0500
Updated new text + assets to remove 'gamma hack' refs
.../add-inverse-grayscale-mask.jpg | Bin 42557 -> 43047 bytes
.../after-auto-stretch-contrast.jpg | Bin 83911 -> 84401 bytes
.../apple-orchard-truck-from-camera.jpg | Bin 0 -> 108948 bytes
...rchard-truck-tone-mapped-using-gegl-mantuik.jpg | Bin 0 -> 161410 bytes
...ruck-tone-mapped-using-gimp-colors-exposure.jpg | Bin 0 -> 155648 bytes
.../auto-stretch-contrast-mask.jpg | Bin 34586 -> 35076 bytes
.../before-auto-stretch-contrast.jpg | Bin 100880 -> 101370 bytes
...add-one-stop-positive-exposure-compensation.jpg | Bin 0 -> 31386 bytes
.../gegl-exposure-inverse-grayscale-mask-added.jpg | Bin 0 -> 199475 bytes
.../gegl-exposure-mask-auto-stretched.jpg | Bin 0 -> 205193 bytes
...e-stop-positive-exposure-compensation-added.jpg | Bin 0 -> 208276 bytes
.../histogram-specular-highlights.jpg | Bin 48033 -> 48523 bytes
.../Tone_Mapping_Using_GIMP_Levels/index.md | 146 ++++++++++----------
.../inverse-grayscale-mask-added.jpg | Bin 199504 -> 0 bytes
...add-one-stop-positive-exposure-compensation.jpg | Bin 72580 -> 0 bytes
.../mask-auto-stretched.jpg | Bin 197674 -> 0 bytes
...e-stop-positive-exposure-compensation-added.jpg | Bin 207256 -> 0 bytes
.../orchard-truck-layer-stack.jpg | Bin 76988 -> 60209 bytes
.../orchard-truck.jpg | Bin 288991 -> 0 bytes
.../Tone_Mapping_Using_GIMP_Levels/power-lines.jpg | Bin 146465 -> 146686 bytes
.../tree-exposed-for-sky-ground-is-dark.jpg | Bin 248000 -> 248490 bytes
.../with-bilateral-smoothing-of-mask.jpg | Bin 118901 -> 119391 bytes
.../without-bilateral-smoothing-of-mask.jpg | Bin 112527 -> 113017 bytes
23 files changed, 72 insertions(+), 74 deletions(-)
---
diff --git a/content/tutorials/Tone_Mapping_Using_GIMP_Levels/add-inverse-grayscale-mask.jpg
b/content/tutorials/Tone_Mapping_Using_GIMP_Levels/add-inverse-grayscale-mask.jpg
index 10e1dad..8ef9d45 100644
Binary files a/content/tutorials/Tone_Mapping_Using_GIMP_Levels/add-inverse-grayscale-mask.jpg and
b/content/tutorials/Tone_Mapping_Using_GIMP_Levels/add-inverse-grayscale-mask.jpg differ
diff --git a/content/tutorials/Tone_Mapping_Using_GIMP_Levels/after-auto-stretch-contrast.jpg
b/content/tutorials/Tone_Mapping_Using_GIMP_Levels/after-auto-stretch-contrast.jpg
index d79bf79..d280ecb 100644
Binary files a/content/tutorials/Tone_Mapping_Using_GIMP_Levels/after-auto-stretch-contrast.jpg and
b/content/tutorials/Tone_Mapping_Using_GIMP_Levels/after-auto-stretch-contrast.jpg differ
diff --git a/content/tutorials/Tone_Mapping_Using_GIMP_Levels/apple-orchard-truck-from-camera.jpg
b/content/tutorials/Tone_Mapping_Using_GIMP_Levels/apple-orchard-truck-from-camera.jpg
new file mode 100644
index 0000000..1950ec1
Binary files /dev/null and
b/content/tutorials/Tone_Mapping_Using_GIMP_Levels/apple-orchard-truck-from-camera.jpg differ
diff --git
a/content/tutorials/Tone_Mapping_Using_GIMP_Levels/apple-orchard-truck-tone-mapped-using-gegl-mantuik.jpg
b/content/tutorials/Tone_Mapping_Using_GIMP_Levels/apple-orchard-truck-tone-mapped-using-gegl-mantuik.jpg
new file mode 100644
index 0000000..7d775c4
Binary files /dev/null and
b/content/tutorials/Tone_Mapping_Using_GIMP_Levels/apple-orchard-truck-tone-mapped-using-gegl-mantuik.jpg
differ
diff --git
a/content/tutorials/Tone_Mapping_Using_GIMP_Levels/apple-orchard-truck-tone-mapped-using-gimp-colors-exposure.jpg
b/content/tutorials/Tone_Mapping_Using_GIMP_Levels/apple-orchard-truck-tone-mapped-using-gimp-colors-exposure.jpg
new file mode 100644
index 0000000..9dbb619
Binary files /dev/null and
b/content/tutorials/Tone_Mapping_Using_GIMP_Levels/apple-orchard-truck-tone-mapped-using-gimp-colors-exposure.jpg
differ
diff --git a/content/tutorials/Tone_Mapping_Using_GIMP_Levels/auto-stretch-contrast-mask.jpg
b/content/tutorials/Tone_Mapping_Using_GIMP_Levels/auto-stretch-contrast-mask.jpg
index 9a6d6fe..9afa76e 100644
Binary files a/content/tutorials/Tone_Mapping_Using_GIMP_Levels/auto-stretch-contrast-mask.jpg and
b/content/tutorials/Tone_Mapping_Using_GIMP_Levels/auto-stretch-contrast-mask.jpg differ
diff --git a/content/tutorials/Tone_Mapping_Using_GIMP_Levels/before-auto-stretch-contrast.jpg
b/content/tutorials/Tone_Mapping_Using_GIMP_Levels/before-auto-stretch-contrast.jpg
index 39eeece..f40befd 100644
Binary files a/content/tutorials/Tone_Mapping_Using_GIMP_Levels/before-auto-stretch-contrast.jpg and
b/content/tutorials/Tone_Mapping_Using_GIMP_Levels/before-auto-stretch-contrast.jpg differ
diff --git
a/content/tutorials/Tone_Mapping_Using_GIMP_Levels/gegl-exposure-add-one-stop-positive-exposure-compensation.jpg
b/content/tutorials/Tone_Mapping_Using_GIMP_Levels/gegl-exposure-add-one-stop-positive-exposure-compensation.jpg
new file mode 100644
index 0000000..809625c
Binary files /dev/null and
b/content/tutorials/Tone_Mapping_Using_GIMP_Levels/gegl-exposure-add-one-stop-positive-exposure-compensation.jpg
differ
diff --git a/content/tutorials/Tone_Mapping_Using_GIMP_Levels/gegl-exposure-inverse-grayscale-mask-added.jpg
b/content/tutorials/Tone_Mapping_Using_GIMP_Levels/gegl-exposure-inverse-grayscale-mask-added.jpg
new file mode 100644
index 0000000..f60886b
Binary files /dev/null and
b/content/tutorials/Tone_Mapping_Using_GIMP_Levels/gegl-exposure-inverse-grayscale-mask-added.jpg differ
diff --git a/content/tutorials/Tone_Mapping_Using_GIMP_Levels/gegl-exposure-mask-auto-stretched.jpg
b/content/tutorials/Tone_Mapping_Using_GIMP_Levels/gegl-exposure-mask-auto-stretched.jpg
new file mode 100644
index 0000000..8ac324a
Binary files /dev/null and
b/content/tutorials/Tone_Mapping_Using_GIMP_Levels/gegl-exposure-mask-auto-stretched.jpg differ
diff --git
a/content/tutorials/Tone_Mapping_Using_GIMP_Levels/gegl-exposure-one-stop-positive-exposure-compensation-added.jpg
b/content/tutorials/Tone_Mapping_Using_GIMP_Levels/gegl-exposure-one-stop-positive-exposure-compensation-added.jpg
new file mode 100644
index 0000000..82695b2
Binary files /dev/null and
b/content/tutorials/Tone_Mapping_Using_GIMP_Levels/gegl-exposure-one-stop-positive-exposure-compensation-added.jpg
differ
diff --git a/content/tutorials/Tone_Mapping_Using_GIMP_Levels/histogram-specular-highlights.jpg
b/content/tutorials/Tone_Mapping_Using_GIMP_Levels/histogram-specular-highlights.jpg
index ffa8a86..a14f78e 100644
Binary files a/content/tutorials/Tone_Mapping_Using_GIMP_Levels/histogram-specular-highlights.jpg and
b/content/tutorials/Tone_Mapping_Using_GIMP_Levels/histogram-specular-highlights.jpg differ
diff --git a/content/tutorials/Tone_Mapping_Using_GIMP_Levels/index.md
b/content/tutorials/Tone_Mapping_Using_GIMP_Levels/index.md
index e1a4b75..3809fea 100644
--- a/content/tutorials/Tone_Mapping_Using_GIMP_Levels/index.md
+++ b/content/tutorials/Tone_Mapping_Using_GIMP_Levels/index.md
@@ -1,4 +1,4 @@
-Title:Tone mapping and shadow recovery using GIMP Levels
+Title: Tone mapping and shadow recovery using GIMP's 'Colors/Exposure'
Date: 2016-03
Modified: 2016-03
Author: Elle Stone
@@ -14,23 +14,24 @@ canonical: http://ninedegreesbelow.com/photography/gimp-tone-map-with-levels.htm
<!-- BEGIN ARTICLE -->
-A very common editing problem is how to lighten the shadows and midtones of an image while retaining
highlight details, a task sometimes referred to as "shadow recovery" and more generally speaking as "tone
mapping". This step-by-step tutorial shows you how to use GIMP's unbounded Levels operations to add one or
more stops of positive exposure compensation to an image's shadows and midtones while retaining highlight
details.
+A very common editing problem is how to lighten the shadows and midtones of an image while retaining
highlight details, a task sometimes referred to as "shadow recovery" and more generally speaking as "tone
mapping". This step-by-step tutorial shows you how to use high bit depth GIMP's floating point
"Colors/Exposure" operation to add one or more stops of positive exposure compensation to an image's shadows
and midtones while retaining highlight details.
**Page Contents**
[TOC]
-
-## High bit depth GIMP unbounded Levels: much better than Curves for lightening the shadows and midtones of
an image without blowing the highlights
+## High bit depth GIMP's floating point "Colors/Exposure": much better than Curves for lightening the
shadows and midtones of an image without blowing the highlights
A very common editing problem is how to lighten the shadows and midtones of an image without blowing out the
highlights, which problem is very often encountered when dealing with photographs of scenes lit by direct
sunlight. Precanned algorithms for accomplishing this task are often referred to as "shadow recovery"
algorithms. But really these algorithms are special-purpose tone-mapping algorithms, which sometimes work
pretty well, and sometimes not so well, depending on the algorithm, the image, and your artistic intentions
for the image.
-This step-by-step tutorial shows you how to use GIMP's unbounded floating point Levels operations to recover
shadow information—that is, add one or more stops of positive exposure compensation to an image's
shadows and midtones—without blowing out or unduly compressing the image highlights. The procedure is
completely "hand-tunable" using masks and layers, and is as close as you can get to non-destructive image
editing using high bit depth GIMP 2.9/2.10.
+This step-by-step tutorial shows you how to use GIMP's unbounded floating point "Colors/Exposure" operation
to recover shadow information — that is, add one or more stops of positive exposure compensation to an
image's shadows and midtones — without blowing out or unduly compressing the image highlights. The procedure
is completely "hand-tunable" using masks and layers, and is as close as you can get to non-destructive image
editing using high bit depth GIMP 2.9/2.10.
+
<figure>
<img src='power-lines.jpg' alt='power-lines'>
<figcaption>
-<em style='font-weight: 400;'>Power lines at noon</em>, before and after tone mapping (aka "shadow
recovery") using high bit depth GIMP's unbounded floating point Levels.<br>
+<em style='font-weight: 400;'>Power lines at noon</em>, before and after tone mapping (aka "shadow
recovery") using high bit depth GIMP's floating point "Colors/Exposure".<br>
+(Click to view):<br>
<span class='toggle-swap' data-fig-swap='before-auto-stretch-contrast.jpg'>Scene-referred interpolated raw
file.</span><br>
<span class='toggle-swap' data-fig-swap='power-lines.jpg'>After tone mapping/shadow recovery using GIMP
unbounded Levels.</span>
</figcaption>
@@ -48,27 +49,25 @@ Scene-referred interpolated raw file.
<!--
Accepted wisdom is that Curves provides more versatility than Levels for modifying image tonality. Of course
you can use Curves to accomplish somewhat similar results to the procedure described in this tutorial. But
GIMP Curves is a highly destructive editing operation, immediately "baking" the resulting tonality into the
layer on which Curves is done, clipping any out of gamut RGB values, and leaving you with no way to fine-tune
the results without starting over. -->
-Hight bit depth GIMP is my primary image editor, and I've used the procedure described below for the last
couple of years as my "go to" way to modify image tonality. The same general procedure can be used to darken
as well as lighten portions of an image, again controlling the effect using a layer mask. This isn't exactly
nondestructive editing because at some point you need to make a "New from Visible" layer. But unlike using
Curves, using high bit depth GIMP's Unbounded Levels doesn't clip RGB channel values and allows you to
fine-tune the results by modifying and remodifying the layer mask until you are completely happy with the
resulting tonality.
+Hight bit depth GIMP is my primary image editor, and I've used the procedure described below for the last
couple of years as my "go to" way to modify image tonality. The same general procedure can be used to darken
as well as lighten portions of an image, again controlling the effect using a layer mask. This isn't exactly
nondestructive editing because at some point you need to make a "New from Visible" layer. But unlike using
Curves, using high bit depth GIMP's floating point "Colors/Exposure" doesn't clip RGB channel values and
allows you to fine-tune the results by modifying and remodifying the layer mask until you are completely
happy with the resulting tonality.
-
-## An example showing how to recover shadow information using high bit depth GIMP's unbounded Levels
+## A step-by-step example showing how to recover shadow information using high bit depth GIMP's floating
point "Colors/Exposure"
<figure>
<img src='tree-exposed-for-sky-ground-is-dark.jpg' alt='tree-exposed-for-sky-ground-is-dark'>
<figcaption>
-Using high bit depth GIMP Levels to lighten the ground by one stop without blowing out portions of the sky.
+Using high bit depth GIMP's "Colors/Exposure" to lighten the ground by one stop without blowing out portions
of the sky.
<ul>
<li><em>Left:</em> The original image, an interpolated camera raw file that was deliberately underexposed in
camera to avoid blowing out the sky. It might not appear to be the case, but this image is already very close
to having out of gamut RGB channel values in the sky, and a simple Auto Stretch Contrast won't lighten the
image at all.</li>
-<li><em>Right:</em> The same image after using high bit depth GIMP Levels at 32-bit floating point linear
precision to add one stop of positive exposure compensation. An inverse grayscale mask was used to keep the
highlights from blowing out.</li>
+<li><em>Right:</em> The same image after using high bit depth GIMP's "Colors/Exposure" at 32-bit floating
point linear precision to add one stop of positive exposure compensation. An inverse grayscale mask was used
to keep the highlights from blowing out.</li>
</ul>
</figcaption>
</figure>
-
-This worked example provides a sample image and is broken down into five steps, starting with downloading
the image. Steps 3, 4, and 5 describe the actual procedure, so here's an overview:
+This step-by-step example provides a sample image and is broken down into five steps, starting with
downloading the image. Steps 3, 4, and 5 describe the actual procedure, so here's an overview:
<ol start='3' style='padding-left: 3rem; font-style: italic;' markdown=1 >
@@ -82,42 +81,44 @@ This worked example provides a sample image and is broken down into five steps,
<ol style='max-width: 35rem;' markdown=1>
-1. **Download [tree.png](tree.png)**, which is a 16-bit integer sRGB image. High bit depth GIMP really is an
"sRGB only" image editor, so it's best if you don't even try to edit in other RGB working spaces.
+<li><b>Download <a
href="http://ninedegreesbelow.com/photography/gimp-tone-map-with-unbounded-rgb/tree.png">tree.png</a></b>,
which is a 16-bit integer sRGB image. High bit depth GIMP really is an "sRGB only" image editor, so it's best
if you don't even try to edit in other RGB working spaces.</li>
-2. **Open tree.png and convert it to 32-bit floating point linear precision**: Go to "Image/Precision",
select "32-bit floating point", and when the Dither dialog pops up, select "Linear light".
+<li><b>Open tree.png with GIMP and assign the GIMP built-in sRGB profile (the image colors won't change a
bit). Then convert the image to 32-bit floating point linear precision</b>: Go to "Image/Precision", select
"32-bit floating point", and when the Dither dialog pops up, select "Linear light" (this ensures that the
Normal blend mode produces radiometrically correct results).</li>
<li markdown=1>
-Make a copy of the "tree.png" layer, and label it "Levels: +1 stop exp. comp". Then **use Levels to add one
stop of positive exposure compensation**—Figure 3 below shows the proper settings for the Levels
dialog, and Figure 4 shows the result:
+Make a copy of the "tree.png" layer, and label it "+1 stop exposure comp". Then <b>use "Colors/Exposure" to
add one stop of positive exposure compensation</b> — Figure 3 below shows the proper settings for the
"Colors/Exposure" dialog, and Figure 4 shows the result:
<figure>
-<img src="levels-add-one-stop-positive-exposure-compensation.jpg"
alt="levels-add-one-stop-positive-exposure-compensation" >
+<img src="gegl-exposure-add-one-stop-positive-exposure-compensation.jpg"
alt="levels-add-one-stop-positive-exposure-compensation" >
<figcaption>
-Using Levels to add one stop of positive exposure compensation—<i>make sure the "Gamma hack" box is
checked!</i>
+Using "Colors/Exposure" to add one stop of positive exposure compensation.
</figcaption>
</figure>
-When using Levels to add one stop of positive exposure compensation, make sure the image really is at
floating point precision, because integer precision will clip the highlights. Also make sure the "Gamma hack"
box is checked—<a title="GIMP bug report: Curves and Levels should operate by default on linear RGB and
present linear RGB Histograms." href="https://bugzilla.gnome.org/show_bug.cgi?id=757444">otherwise the Levels
operation will operate on perceptually uniform RGB</a>, despite the fact that the image is at "Linear light"
precision. Trying to add one stop of positive exposure compensation using RGB values encoded using the sRGB
TRC would require moving the upper right Levels Value slider to the entirely unobvious and nonintuitive value
of 73.53, and in the process the shadow and midtone tonalities would be distorted because the sRGB TRC is not
a true gamma TRC. (An easier alternative might be to use the GEGL Exposure operation: "Colors/Exposure",
which always op
erates on linearized RGB).
+When using "Colors/Exposure" to add one stop of positive exposure compensation, make sure the image really
is at floating point precision, because integer precision will clip the highlights.
<figure>
-<img width="772" src="one-stop-positive-exposure-compensation-added.jpg"
alt="one-stop-positive-exposure-compensation-added" >
-<figcaption>At floating point precision, GIMP's Levels operations are unbounded. This means you can use
Levels to add positive exposure compensation without blowing out the highlights.<br>
-Notice the RGB channel values for the four sample points: the channel information that would have been
clipped using integer precision is encoded using channel values that are greater than 1.0 floating point.
+<img src="gegl-exposure-one-stop-positive-exposure-compensation-added.jpg"
alt="one-stop-positive-exposure-compensation-added" >
+<figcaption>At floating point precision, GIMP's "Colors/Exposure" operation is unbounded. This means you can
use "Colors/Exposure" to add positive exposure compensation without blowing out the highlights.
+
+<p>Notice the RGB channel values for the four sample points: the channel information that would have been
clipped using integer precision is encoded using channel values that are greater than 1.0 floating point.</p>
</figcaption>
</figure>
-The image in Figure 4 clearly has "blown" highlights in the sky. But the highlights aren't really blown
(that is, clipped to 1.0 in one or more channels). Instead the highlight information is still there, but the
RGB channel values fall outside the RGB <a title="Models for image editing: Display-referred and
scene-referred." href="http://ninedegreesbelow.com/photography/display-referred-scene-referred.html">display
channel value range</a> of 0.0f to 1.0f. The sample points dialog in Figure 4 above shows four sample points
that have RGB channel values that are greater than 1.0. As shown in Figure 5 below, adding a mask allows you
to recover these highlights by bringing them back down into the display range.
+<p>The image in Figure 4 clearly has "blown" highlights in the sky. But the highlights aren't really blown
(that is, clipped to 1.0 in one or more channels). Instead the highlight information is still there, but the
RGB channel values fall outside the RGB <a title="Models for image editing: Display-referred and
scene-referred." href="http://ninedegreesbelow.com/photography/display-referred-scene-referred.html">display
channel value range</a> of 0.0f to 1.0f. The sample points dialog in Figure 4 above shows four sample points
that have RGB channel values that are greater than 1.0. As shown in Figure 5 below, adding a mask allows you
to recover these highlights by bringing them back down into the display range. </p>
-If you had used integer precision instead of floating point, the highlights really would be blown: The
sample points would have a maximum channel values of 255, 65535 or 4294967295, depending on the bit depth.
And masking would only "recover" a solid expanse of gray, completely lacking any details (try for yourself
and see what happens).
+<p>If you had used integer precision instead of floating point, the highlights really would be blown: The
sample points would have a maximum channel values of 255, 65535 or 4294967295, depending on the bit depth.
And masking would only "recover" a solid expanse of gray, completely lacking any details (try for yourself
and see what happens).</p>
</li>
-<li><img style='float: right;' src="add-inverse-grayscale-mask.jpg" alt="add-inverse-grayscale-mask" >
-<b>Add an inverse grayscale layer mask</b>: Right-click on the layer and select "Layer/Mask/Add Layer Mask",
and when the "Add a mask to the Layer" dialog pops up, choose "Grayscale copy of layer" and check the "Invert
mask" box. <p>As shown in Figure 5 below, at this point the highlights will be brought back into the display
range, meaning all RGB channel values are between 0.0f and 1.0f. But the image will probably look a little
odd (sort of cloudy and flat), and depending on the image, the brightest highlights might actually have dark
splotches—don't worry! this is temporary.</p>
-
+<li>
+<img style='float: right;' src="add-inverse-grayscale-mask.jpg" alt="add-inverse-grayscale-mask" >
+<b>Add an inverse grayscale layer mask</b>: Right-click on the layer and select "Layer/Mask/Add Layer Mask",
and when the "Add a mask to the Layer" dialog pops up, choose "Grayscale copy of layer" and check the "Invert
mask" box.
+<p>As shown in Figure 5 below, at this point the highlights will be brought back into the display range,
meaning all RGB channel values are between 0.0f and 1.0f. But the image will probably look a little odd (sort
of cloudy and flat), and depending on the image, the brightest highlights might actually have dark splotches
— don't worry! this is temporary.</p>
<figure >
-<img width="772" src="inverse-grayscale-mask-added.jpg" alt="inverse-grayscale-mask-added" >
+<img src="gegl-exposure-inverse-grayscale-mask-added.jpg" alt="gegl-exposure-inverse-grayscale-mask-added" >
<figcaption>Result of adding an inverse grayscale layer mask to bring the highlights back into the display
range.<br>
-Adding an inverse grayscale layer mask brings the highlights back into the display range, but at this point
most images will look flat and cloudy, and some images will have dark splotches in the highlights. The next
step—"Auto Stretch Contrast" performed on the mask—will take care of this problem.
+<p>Adding an inverse grayscale layer mask brings the highlights back into the display range, but at this
point most images will look flat and cloudy, and some images will have dark splotches in the highlights. The
next step—"Auto Stretch Contrast" performed on the mask—will take care of this problem.</p>
</figcaption>
</figure>
</li>
@@ -126,129 +127,126 @@ Adding an inverse grayscale layer mask brings the highlights back into the displ
<li>
<img src="auto-stretch-contrast-mask.jpg" alt="auto-stretch-contrast-mask" style='float:right; margin-left:
1rem;' >
<b>Click on the layer mask to select it for editing, and then select "Colors/Auto/Stretch Contrast"</b>:
-<p>"Keep Colors" should be checked (though it doesn't really matter on a layer mask) and <i>the "Gamma hack"
box should <b>not</b> be checked!</i> Unlike Levels, Stretch Contrast operates on linear RGB by default.
Figure 6 below shows the final result:</p>
+<p>"Keep Colors" should be checked (though it doesn't really matter on grayscale images such as layer
masks). Figure 6 below shows the final result:</p>
<figure>
-<img src="mask-auto-stretched.jpg" alt="mask-auto-stretched" >
-<figcaption>Doing "Auto/Stretch Contrast" on the layer mask removes the "cloudy" appearance, leaving a
nicely brightened image with intact highlights.
-<p>"Auto/Stretch Contrast" on the mask is necessary because just like the image layer has out of gamut RGB
channel values, the inverted grayscale mask contains out of gamut grayscale values. "Auto/Stretch Contrast"
brings all the mask grayscale values back into the display range, allowing the mask to proportionately
compensate for the layer's otherwise out-of-gamut RGB channel values, masking more in the layer highlights
and less/not at all in the image's shadows and midtones.</p>
+<img src="gegl-exposure-mask-auto-stretched.jpg" alt="gegl-exposure-mask-auto-stretched" >
+<figcaption>Doing "Auto/Stretch Contrast" on the layer mask removes the "cloudy" appearance, leaving a
nicely brightened image with intact highlights. <p>"Auto/Stretch Contrast" on the mask is necessary because
just like the image layer has out of gamut RGB channel values, the inverted grayscale mask contains out of
gamut grayscale values. "Auto/Stretch Contrast" brings all the mask grayscale values back into the display
range, allowing the mask to proportionately compensate for the layer's otherwise out-of-gamut RGB channel
values, masking more in the layer highlights and less/not at all in the image's shadows and midtones.</p>
-<p>Notice that one of the sample points still has a blue RGB channel value that is slightly out of gamut.
The easiest way to deal with this is to do a Levels Gamma=0.45 adjustment <i>on the mask</i>, not on the
actual image layer. You can make this gamma adjustment either on the entire mask (works well, less effort).
Or else you can make the adjustment just on the mask shadows (which correspond to the layer highlights), in
which case you'd load the mask as a selection, invert the selection, and make the Levels gamma=0.45 slider
adjustment. Or if the remaining out of gamut channel values are only very slightly out of gamut, make a "New
from Visible" layer and then "Auto/Stretch Contrast" the result to bring the remaining channel values back
into gamut.</p>
-</figcaption>
+<p>Notice that one of the sample points still has a blue RGB channel value that is slightly out of gamut.
The easiest way to deal with this is to "Colors/Exposure" to make a Gamma adjustment of 0.45 <i>on the
mask</i>, not on the actual image layer. You can make this Gamma adjustment either on the entire mask (works
well, less effort). Or else you can make the adjustment just on the mask shadows (which correspond to the
layer highlights), in which case you'd load the mask as a selection, invert the selection, and make the Gamma
adjustment. Or if the remaining out of gamut channel values are only very slightly out of gamut, make a "New
from Visible" layer and then "Auto/Stretch Contrast" the result to bring the remaining channel values back
into gamut.</p></figcaption>
</figure>
</li>
</ol>
-That's the whole procedure for using Levels to add a stop of positive exposure compensation to the shadows
without blowing out the highlights. Now you can either fine-tune the mask, or else just make a "New from
Visible" layer and continue editing your nicely brightened image. Depending on the image and also on your
artistic intentions for the image, the mask might not need fine-tuning. But very often you'll want to modify
the resulting tonal distribution by doing a Levels gamma correction or Curves operation on the mask, or even
by painting directly on the mask. And sometimes you'll want to blur the mask to <a
href="#blur-to-restore-micro-contrast">restore micro contrast</a>.
+That's the whole procedure for using "Colors/Exposure" to add a stop of positive exposure compensation to
the shadows without blowing out the highlights. Now you can either fine-tune the mask, or else just make a
"New from Visible" layer and continue editing your nicely brightened image. Depending on the image and also
on your artistic intentions for the image, the mask might not need fine-tuning. But very often you'll want to
modify the resulting tonal distribution by doing a "Colors/Exposure" gamma correction, or perhaps a Curves
operation on the mask, or else by painting directly on the mask. And sometimes you'll want to blur the mask
to <a href="#blur-to-restore-micro-contrast">restore micro contrast</a>.
## Use Notes
<ol class="double-space">
-<li>Depending on your particular artistic intentions for an image, <b>some images are more likely than
others to benefit from being tone mapped using unbounded Levels.</b> Your mileage may vary, but typically the
procedure described on this page works best for photographs of scenes with a pronounced tonal difference
between the highlights and shadows, as per typical sunny day "sky-ground" photographs.</li>
+<li>Depending on your particular artistic intentions for an image, <b>some images are more likely than
others to benefit from being tone mapped using floating point "Colors/Exposure".</b> Your mileage may vary,
but typically the procedure described on this page works best for photographs of scenes with a pronounced
tonal difference between the highlights and shadows, as per typical sunny day "sky-ground" photographs.</li>
-<li><b>For adding just one stop of positive exposure compensation, the procedure described on this page
works really well.</b> Depending on the image you might want to blur the mask using an edge-respecting blur
algorithm, and/or tweak the mask using the Levels gamma slider, Curves, etc. But only modify the mask
<i>after</i> using Auto Stretch Contrast on the mask. Otherwise results will be unpredictable: <a
href="http://ninedegreesbelow.com/photography/unbounded-srgb-levels-gamma-slider.html">Levels gamma slider
adjustments produce odd results when operating on out of gamut values</a>, and Curves will summarily clip out
of gamut values.</li>
+<li><b>For adding just one stop of positive exposure compensation, the procedure described on this page
works really well.</b> Depending on the image you might want to blur the mask using an edge-respecting blur
algorithm, and/or tweak the mask using "Colors/Exposure", Curves, etc. But only modify the mask <i>after</i>
using Auto Stretch Contrast on the mask. Otherwise results will be unpredictable: <a
href="http://ninedegreesbelow.com/photography/unbounded-srgb-levels-gamma-slider.html">Gamma adjustments
produce odd results when operating on out of gamut values</a>, and Curves will summarily clip out of gamut
values.</li>
-<li><b>For adding more than one stop of exposure compensation, you can use one or several
positive-exposure-compensation layers.</b> Either way the layer mask(s) will need careful tweaking that's
very image-specific and also specific to your intended result. An example using two layers to add two stops
of exposure compensation is show in Figure 7 below:
+<li><b>For adding more than one stop of exposure compensation, you can use one or more than one
positive-exposure-compensation layers.</b> Either way the layer mask(s) will need careful tweaking that's
very image-specific and also specific to your intended result. Figure 7 shows an example of using two
exposure compensation layers to add two and a half stops of exposure compensation to the shadows and midtones
of an image:
<figure>
-<img src="orchard-truck.jpg" alt="orchard-truck" >
-<figcaption>Using GIMP's floating point unbounded Levels plus layer masks to add two stops of positive
exposure compensation to the shadows and midtones of a photograph of an apple orchard truck that was taken in
bright sunshine.
+<img src="apple-orchard-truck-tone-mapped-using-gimp-colors-exposure.jpg"
alt="apple-orchard-truck-tone-mapped-using-gimp-colors-exposure" >
+<figcaption>Using GIMP's floating point unbounded Levels plus layer masks to add two stops of positive
exposure compensation to the shadows and midtones of a photograph of an apple orchard truck that was taken in
bright sunshine.<br>
+(Click to view):<br>
+<span class='toggle-swap' data-fig-swap='apple-orchard-truck-from-camera.jpg'>1. Image from the camera,
underexposed to avoid blowing out highlights..</span><br>
+<span class='toggle-swap' data-fig-swap='apple-orchard-truck-tone-mapped-using-gimp-colors-exposure.jpg'>2.
After tone mapping/shadow recovery using high bit depth GIMP's floating point "Colors/Exposure".</span><br>
+<span class='toggle-swap' data-fig-swap='apple-orchard-truck-tone-mapped-using-gegl-mantuik.jpg'>3. For
comparison, Mantuik tone-mapping using the GEGL default settings.</span><br>
-<ol>
-<li><i>Top:</i> the final image after using high bit depth GIMP's floating point unbounded Levels to add two
stops of positive exposure compensation to the image shadows and midtones, plus a bit of GEGL saturation
masked to mostly affect the sky.</li>
-<li><i>Lower left:</i> the original image from the camera, underexposed to avoid blowing out highlights.</li>
-<li><i>Lower right:</i> for comparision, the result of using GEGL's Mantiuk tone mapping on the original
image, using the default settings. IMHO, Mantiuk and other "automagic" tone mapping algorithms tend to
produce rather artificial results compared to what you can achieve using masks and layers combined with
GIMP's unbounded floating point Levels.</li>
-</ol>
-<p style='text-align: center;'>
- <img class="imgcenter" src="orchard-truck-layer-stack.jpg" alt="orchard-truck-layer-stack" >
-</p>
-<div style='clear:both;'></div>
-<p>This screenshot of the layer stack shows the individual layers and masks that were used to add the two
stops of positive exposure compensation to the shadows and midtones of the photograph of the apple orchard
truck.</p>
+<p>Using GIMP's floating point floating point "Colors/Exposure" plus layer masks to add two and a half stops
of positive exposure compensation to the shadows and midtones of a "bright sun" photograph of an apple
orchard truck.</p>
+
+<p><img style='float:right;' src="orchard-truck-layer-stack.jpg" alt="orchard-truck-layer-stack" >To the
right is a screenshot of the layer stack that I used to tone-map the photograph of the apple orchard truck.
Tone-mapping by hand gives you complete control over the resulting image. Mantuik and other "automagic"
tone-mapping algorithms are CPU-intensive, unpredictable, and often produce unnatural-looking results.</p>
</figcaption>
</figure>
</li>
-<li>Before using Levels to add positive exposure compensation, <b>the base layer should already be stretched
to its maximum dynamic range.</b> The easiest way to stretch the base layer to its maximum dynamic range is
to do "Colors/Auto/Stretch Contrast" and make sure that "Keep colors" is checked (and <i>don't</i> use the
Gamma hack).
+<li><p>Before using "Colors/Exposure" to add positive exposure compensation, <b>the base layer should
already be stretched to its maximum dynamic range.</b> The easiest way to stretch the base layer to its
maximum dynamic range is to do "Colors/Auto/Stretch Contrast" and make sure that "Keep colors" is checked.
</p>
<p>If you've never used an unbounded floating point image editor before, "Colors/Auto/Stretch Contrast" can
produce an unexpected result: The image might actually end up with a severely reduced dynamic range, having
either lighter shadows or darker highlights or both:</p>
+
<figure>
<img src='before-auto-stretch-contrast.jpg' alt='before-auto-stretch-contrast'>
<figcaption>
-Before and after doing "Colors/Auto/Stretch Contrast" on the base layer, plus the final image after tone
mapping using Levels.<br>
+Before and after doing "Colors/Auto/Stretch Contrast" on the base layer, plus the final image after tone
mapping using "Colors/Exposure":<br>
(Click to view):<br>
<span class='toggle-swap' data-fig-swap='before-auto-stretch-contrast.jpg'>1. Image from the
camera.</span><br>
<span class='toggle-swap' data-fig-swap='after-auto-stretch-contrast.jpg'>2. After doing
"Colors/Auto/Stretch Contrast".</span><br>
<span class='toggle-swap' data-fig-swap='power-lines.jpg'>3. Final "Power lines" image.</span>
<ol style='margin-top: 1rem;'>
-<li>
-This scene-referred interpolated raw file from the PhotoFlow raw processor (which provides a GIMP plug-in
for easy opening of raw files) has out-of-display-range RGB channel values that will be brought back into the
display range by doing "Colors/Auto/Stretch Contrast".</li>
-<li>
-After doing "Colors/Auto/Stretch Contrast", shadows are lighter and highlights are darker because the
dynamic range has been compressed to fit within the display range. This looks like an editing step in the
wrong direction! but actually it's necessary.</li>
+<li>This scene-referred interpolated raw file from the PhotoFlow raw processor (which provides a GIMP
plug-in for easy opening of raw files) has out-of-display-range RGB channel values that will be brought back
into the display range by doing "Colors/Auto/Stretch Contrast".</li>
+
+<li>After doing "Colors/Auto/Stretch Contrast", shadows are lighter and highlights are darker because the
dynamic range has been compressed to fit within the display range. This looks like an editing step in the
wrong direction! but actually it's necessary.</li>
+
<li>Here's the final "Power lines" image after tone mapping the scene-referred interpolated raw file using
the procedure described in this tutorial.</li>
</ol>
<p>As captured by the raw file, this picture of power lines marching into the distance is a typical result
of taking a photograph at noon on a bright sunny day: The sky and clouds looked pretty good right out of the
camera, but the ground was far too dark. So the image could benefit from some tone mapping to raise the
shadows and midtones. The first step is to do "Colors/Auto/Stretch Contrast" to bring any channel values that
are less than 0.0f or greater than 1.0f back within the display range of 0.0 to 1.0 floating point.</p>
-<p>Performing "Auto/Stretch Contrast" to bring the channel values back inside the display range doesn't
exactly look like an editing step in the right direction for tone-mapping this particular image! but really
it is. Using Levels to add positive exposure compensation to the shadows and midtones won't work if the image
has channel values that fall outside the display range.</p>
+<p>Performing "Auto/Stretch Contrast" to bring the channel values back inside the display range doesn't
exactly look like an editing step in the right direction for tone-mapping this particular image! but really
it is. Using "Colors/Exposure" to add positive exposure compensation to the shadows and midtones won't work
if the image has channel values that fall outside the display range.</p>
</figcaption>
</figure>
</li>
-<li> <b>Dispensing with "useless" shadow and highlight information:</b> Sometimes interpolated raw files of
photographs of high dynamic range scenes end up with a sprinkling of highlight and shadow pixels that
contains essentially no useful information. The easiest thing to do with such pixels is to use Levels to set
the desired black and white points, and then clip the resulting out of gamut channel information.
+<li> <b>Dispensing with "useless" shadow and highlight information:</b> Sometimes interpolated raw files of
photographs of high dynamic range scenes end up with a sprinkling of highlight and shadow pixels that
contains essentially no useful information. The easiest thing to do with such pixels is to use
"Colors/Exposure" to set the desired black and white points, and then clip the resulting out of gamut channel
information.
<ol style="list-style-type: lower-roman">
<li><i><b>Useless highlight information:</b></i>
-<p><img src="histogram-specular-highlights.jpg" alt="histogram-specular-highlights"><br>
+<p><img style='float:right;' src="histogram-specular-highlights.jpg" alt="histogram-specular-highlights">
For the "Power lines" picture shown in Figure 8 above, after doing "Color/Auto/Stretch Contrast", a measly
48 pixels occupied nearly half the tonal range (see the histogram to the right). A little investigation with
GIMP's Threshold tool revealed that all 48 pixels are the peak values of specular highlights on the ceramic
insulators on the power line pole in the foreground.</p>
-<p>In cases where nearly half the histogram is occupied by a sprinkling of specular highlights, you could
use Curves to compress these specular highlights so they occupy a smaller proportion of the tonal range. But
for the "Power lines" image, the 48 pixels in question carried essentially zero information. So I used Levels
to raise the white point by setting the upper right Levels Value slider to 67.00, and then used "Tools/GEGL
Operation/Clip RGB" to actually clip the channel information in the highlights (this time making sure the
"Clip high pixel values" box was checked). </p>
+<p>In cases where nearly half the histogram is occupied by a sprinkling of specular highlights, clipping the
pixels is often the best and easiest solution. For the "Power lines" image, the 48 pixels in question carried
essentially zero information. So I used "Colors/Exposure" to raise the white point, and then used "Tools/GEGL
Operation/Clip RGB" to actually clip the channel information in the highlights (this time making sure the
"Clip high pixel values" box was checked). </p>
</li>
- <li><i><b>Useless shadow information:</b></i>
- <p>Some raw processors can output images with negative channel values. And previous edits using high bit
depth GIMP might have produced negative channel values. If doing an "Auto/Stretch Contrast" on your base
image layer makes the image a whole lot lighter in the shadows, the problem is negative RGB channel values.
One solution is to use Levels to move the black point to where you want it to be, and then clip the negative
channel values. Here are two ways to clip negative channel values:</p>
- <ul class="disc"><li>Use "Tools/GEGL Operation/Clip RGB", making sure to uncheck the "Clip high pixel
values" box. </li>
- <li>Or else create a solid black layer above your base image layer, set the blend mode to "Lighten
only", and make a "New from Visible" layer.</li>
- </ul>
- <p>If you don't want to clip the shadow information, Curves can be used to compress the shadow channel
values. Using Curves immediately clips all out of gamut channel values, so Curves should be used with caution
unless you've already auto-stretched the image layer, and/or you are sure that there's no highlight
information worth retrieving.</p>
- </li>
+<li><i><b>Useless shadow information:</b></i>
+ <p>Some raw processors can output images with negative channel values. And previous edits using high
bit depth GIMP might have produced negative channel values. If doing an "Auto/Stretch Contrast" on your base
image layer makes the image a whole lot lighter in the shadows, the problem is negative RGB channel values.
One solution is to use "Colors/Exposure" to move the black point to where you want it to be, and then clip
the negative channel values. Here are two ways to clip negative channel values:</p>
+ <ul class="disc">
+ <li>Use "Tools/GEGL Operation/Clip RGB", making sure to uncheck the "Clip high pixel values"
box. </li>
+ <li>Or else create a solid black layer above your base image layer, set the blend mode to
"Lighten only", and make a "New from Visible" layer.</li>
+ </ul>
+ </li>
</ol>
</li>
+<!-- pld -->
<li id='blur-to-restore-micro-contrast'><b>Blurring the mask to restore micro contrast:</b> Putting an
inverse mask on a layer that's used to add positive exposure compensation necessarily slightly flattens micro
contrast. Depending on your artistic intentions for the image, you might want to blur the mask to restore
micro contrast. The trick is how to blur the mask without introducing "halos" around the edges of objects in
the image. Small radius gaussian blurs produce small but distressingly obvious halos around dark edges. A
large radius gaussian blur sometimes works but just as often produces a large obvious halo separating the
brighter and darker portions of the image. For many images a better solution is to blur the mask use an
edge-respecting filter such as the GIMP <a href="https://github.com/dtschump/gmic">G'MIC</a> bilateral smooth
filter:
<figure>
<img src='without-bilateral-smoothing-of-mask.jpg' alt='without-bilateral-smoothing-of-mask'>
-<figcaption>Adding exposure compensation with and without bilateral smoothing of the mask.
+<figcaption>Adding exposure compensation with and without bilateral smoothing of the mask.<br>
(Click to view):<br>
<span class='toggle-swap' data-fig-swap='without-bilateral-smoothing-of-mask.jpg'>Without applying bilateral
smoothing to the mask, micro contrast is flattened.</span><br>
<span class='toggle-swap' data-fig-swap='with-bilateral-smoothing-of-mask.jpg'>After applying bilateral
smoothing to the mask, micro contrast is restored.</span>
-<p>Adding exposure compensation combined with an inverse grayscale mask does flatten micro contrast, which
might or might not be desireable depending on your artistic intentions for the image. To restore micro
contrast, try using an edge-respecting blur such as G'MIC's bilateral smoothing filter. GIMP G'MIC doesn't
work on layer masks. A workaround is to to turn the unblurred mask into a selection, save the selection as a
channel, and then drag the channel to the layer stack for blurring.<br>
-</p>
+<p>Adding exposure compensation combined with an inverse grayscale mask does flatten micro contrast, which
might or might not be desireable depending on your artistic intentions for the image. To restore micro
contrast, try using an edge-respecting blur such as G'MIC's bilateral smoothing filter. GIMP G'MIC doesn't
work on layer masks. A workaround is to to turn the unblurred mask into a selection, save the selection as a
channel, and then drag the channel to the layer stack for blurring.</p>
</figcaption>
</figure>
</li>
-<li>An essential component of the procedure for using Levels to add positive exposure compensation to images
with dark shadows and midtones needs to be explicitly mentioned: Not only is the high bit depth GIMP's Levels
operation unbounded at floating point precision—<a title="GIMP bug report: Some filters / operations
provide float values superior to 1.0." href="https://bugzilla.gnome.org/show_bug.cgi?id=737925">layer masks
are also unbounded</a>. <p>If the inverted grayscale masks were summarily clipped (as is the case when
editing at integer precision), then the procedure described in this tutorial wouldn't work. However, if you
are trying this procedure in a floating point image editor that doesn't allow for retaining out of display
range values on a layer mask, you can make an inverse grayscale mask from the base layer, auto-stretch the
resulting mask, turn it into a selection, add it to the "Levels positive exposure compensation" copy of the
base layer, and then d
elete or disable the mask on the base layer.</p></li>
+<li>An essential component of the procedure for using "Colors/Exposure" to add positive exposure
compensation to images with dark shadows and midtones needs to be explicitly mentioned: Not only is the high
bit depth GIMP's "Colors/Exposure" operation unbounded at floating point precision — <a title="GIMP bug
report: Some filters / operations provide float values superior to 1.0."
href="https://bugzilla.gnome.org/show_bug.cgi?id=737925">layer masks are also unbounded</a>.
+<p>If the inverted grayscale masks were summarily clipped (as is the case when editing at integer
precision), then the procedure described in this tutorial wouldn't work.</p></li>
</ol>
## Conclusion
-<p>Photographs taken in bright direct sunlight typically are of high dynamic range scenes, and the resulting
camera file usually requires careful tone mapping to produce a satisfactory final image. High bit depth
GIMP's floating point unbounded Levels provides a very useful tool for dealing with this type of image, and
of course is equally useful for any image where the goal is to raise the shadows and midtones without blowing
out the highlights. </p>
+<p>Photographs taken in bright direct sunlight typically are of high dynamic range scenes, and the resulting
camera file usually requires careful tone mapping to produce a satisfactory final image. High bit depth
GIMP's floating point floating point "Colors/Exposure" provides a very useful tool for dealing with this type
of image, and of course is equally useful for any image where the goal is to raise the shadows and midtones
without blowing out the highlights. </p>
-<p>High bit depth GIMP's unbounded Levels combined with a suitable layer mask can also be used to darken
portions of the image, either by moving the upper left Value slider to the right (darkens the image by
increasing contrast and also increases saturation; requires careful masking to avoid producing regions of
solid black), or moving the lower right Value slider to the left (darkens the image by decreasing contrast,
useful for de-emphasizing portions of the image).</p>
+<p>High bit depth GIMP's floating point "Colors/Exposure" combined with a suitable layer mask can also be
used to darken portions of the image, either by moving the upper left Value slider to the right (darkens the
image by increasing contrast and also increases saturation; requires careful masking to avoid producing
regions of solid black), or moving the lower right Value slider to the left (darkens the image by decreasing
contrast, useful for de-emphasizing portions of the image).</p>
<p>This is a GIMP-specific tutorial. However, the same technique can be employed using the <a
href="http://photoflowblog.blogspot.com/">PhotoFlow raw processor</a> and possibly other image editors that
allow for 32-bit floating point processing using unbounded RGB channel values. The neat thing about using
this technique in PhotoFlow is that PhotoFlow uses nodes, which allows for completely non-destructive editing
of the inverted grayscale mask that's used to recover the highlight detail after applying positive exposure
compensation to raise the tonality of the shadows and midtones (even if you close and reopen the image, if
you save the image's PFI file).</p>
diff --git a/content/tutorials/Tone_Mapping_Using_GIMP_Levels/orchard-truck-layer-stack.jpg
b/content/tutorials/Tone_Mapping_Using_GIMP_Levels/orchard-truck-layer-stack.jpg
index 501ab6c..7fceb17 100644
Binary files a/content/tutorials/Tone_Mapping_Using_GIMP_Levels/orchard-truck-layer-stack.jpg and
b/content/tutorials/Tone_Mapping_Using_GIMP_Levels/orchard-truck-layer-stack.jpg differ
diff --git a/content/tutorials/Tone_Mapping_Using_GIMP_Levels/power-lines.jpg
b/content/tutorials/Tone_Mapping_Using_GIMP_Levels/power-lines.jpg
index f676fab..f509ed6 100644
Binary files a/content/tutorials/Tone_Mapping_Using_GIMP_Levels/power-lines.jpg and
b/content/tutorials/Tone_Mapping_Using_GIMP_Levels/power-lines.jpg differ
diff --git a/content/tutorials/Tone_Mapping_Using_GIMP_Levels/tree-exposed-for-sky-ground-is-dark.jpg
b/content/tutorials/Tone_Mapping_Using_GIMP_Levels/tree-exposed-for-sky-ground-is-dark.jpg
index e3d31e3..107bccd 100644
Binary files a/content/tutorials/Tone_Mapping_Using_GIMP_Levels/tree-exposed-for-sky-ground-is-dark.jpg and
b/content/tutorials/Tone_Mapping_Using_GIMP_Levels/tree-exposed-for-sky-ground-is-dark.jpg differ
diff --git a/content/tutorials/Tone_Mapping_Using_GIMP_Levels/with-bilateral-smoothing-of-mask.jpg
b/content/tutorials/Tone_Mapping_Using_GIMP_Levels/with-bilateral-smoothing-of-mask.jpg
index b83271c..1c6d6ea 100644
Binary files a/content/tutorials/Tone_Mapping_Using_GIMP_Levels/with-bilateral-smoothing-of-mask.jpg and
b/content/tutorials/Tone_Mapping_Using_GIMP_Levels/with-bilateral-smoothing-of-mask.jpg differ
diff --git a/content/tutorials/Tone_Mapping_Using_GIMP_Levels/without-bilateral-smoothing-of-mask.jpg
b/content/tutorials/Tone_Mapping_Using_GIMP_Levels/without-bilateral-smoothing-of-mask.jpg
index 9a836a2..d163b7d 100644
Binary files a/content/tutorials/Tone_Mapping_Using_GIMP_Levels/without-bilateral-smoothing-of-mask.jpg and
b/content/tutorials/Tone_Mapping_Using_GIMP_Levels/without-bilateral-smoothing-of-mask.jpg differ
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]