Tuesday, August 12, 2014

Tutorial: non-destructive Orton effect in PhotoFlow

In this first tutorial we will realize the so-called Orton effect with photoflow.
This example will allow to learn the basic usage of layers and editing tools in photoflow. You can doenload the input image as well as the final orton.pfi file from here.

First of all, open an exisiting image (TIFF or JPEG). The photoflow interface should look like here below: a preview window on the left, some controls to change the zoom level and the previw mode below it, and a widget showing the layer structure on the right. Below the layer widget you have the buttons that let you add a new layer (marked with "+"), a new group layer (the "G+" button) and a button to remove the selected layer (marked with "-").

The next step is to add a group layer that will contain all the Orton effect adjustments. Click on the "G+" button to open the group layer configuration dialog. Set the layer blending mode to "normal" (so that we will be able to change its opacity and therefore the overall strength of the Orton effect) and give it a meaningful name.

The first layer that we will add into the group is a "buffer layer". You can think of it as a kind of "alias" for whatever lies below the buffer in the layer stack. Why this is useful will hopefully become clear a bit later. For the moment, keep in mind that the buffer tool has a negligible impact in terms of memory and cpu time, therefore you can insert as many of such layers as you need.

In the buffer layer configuration dialog, we set the name to "orton input" (or whatever you like), the blend mode to passthrough and the target channel to "RGB", as shown below.

The first real step to reproduce the Orton effect is to blend a copy of the original image with itself in "sceen" mode. This will result in an image with increased brightness.
Actually, in photoflow the images are never kept entirely into memory, therefore it is not "technically" possible to make a copy of a given layer. However, photoflow provides a powerful "clone" tool that allows to reuse the pixels of a givel layer somewhere else in the processing pipeline, without allocating additional memory.
This is what we are going to use for the "screen" blend: select the buffer layer you just created in the previous step, click on the "+" button to open the tools list and select the the one collaed "Clone layer".

In the clone layer configuration dialog, we set the name to "screen blend" (just to remember what this layer is for) and the blend mode to "screen". The configuration dialog contains a drop-down list to select the layer that should be cloned; here we need to choose the one called "Orton effect/orton input", i.e. the "orton input" layer found inside the "Orton effect" group. The preview image should look brighter than before, and the configuration dialog should look like this:

The next step of the Orton effect requires to make a out-of-focus (blurred) copy of the screen blend result and to blend it again in multiply mode. This involves two separate edits (the cloning and the blurring) and therefore it cannot be achieved with one single layer. Instead, we will create a new group layer inside which we will put the clone and gaussian blur layers; setting the blend mode of the group layer to "multiply" will give the desired result.
First, add a new group layer above the screen blend layer, and call it "Blurred"; set the blend mode to "multiply".

Then, add a new clone layer inside thr "Blurred" group. Select the "Orton effect/screen blend" layer in the drop-down menu and set the blend mode to "passthrough", as shown below:

Next we add a gaussian blur layer above the screen blend clone. Set the radius to 7 pixels and the blend mode to passthrough (the value of the blur radius depends on the resolution of the image and on the effect you want to achieve; experiment with higher or lower values and check the result in the preview window until you are satisfied).

The final result should look like in the screenshot below. You can reduce the strength of the effect by double-cliking on the "Orton effect" group layer and adjusting the "opacity" value below 100.

Saving and exporting: in order not to loose all your hard work, and to be able to tweak the settings in the future, you can save the edited image in photoflow's own format. To do that, click on the "Save as" button and choose a proper file name with the ".pfi" extension. Photoflow will generate a PFI file in XML format, which stores the layer structure and the associated layer and tool settings. No raster data is saved into the PFI file; instead, you have to keep a copy of the original input file on your had disk. Whenever you will re-open the PFI file, the input image will be read again and all adjustments will be re-applied on the fly. The advantage is that the PFI file is a simple text file with a very small size, which gets save very quickly. Hence, you can keep several versions of your editing without accupying much disk space, and without ever touching your original input image.

There is just one limitation: you should not change the location of the original input image on your hard drive, otherwise photoflow will not be able to open it correctly when reading the PFI file.

Let me now try to show you the importance of putting a buffer layer at the bottom of the "Orton effect" group. Select the background layer, and then add an "Invert" layer on top of it. The result is what one would expect: the Orton effect is applied to the inverted input image. That would not have been the case if we had cloned directly the background layer in the screen blend step. In other words, using a buffer layer as the input of the Orton effect lets you apply the effect to whatever is the merged result of the layers below it. Toggle the visibility of the invert layer (using the checkbox at the left of the layer name) to see what I mean.

Moreover, if you change the input image (for that you have to double-click on the background layer and choose a different file name in the configuration dialog that will pop-up) the change will be automatically propagated to all the adjustment layers, and the Orton effect will be correctly applied to the new image. This is another advantage of the fully non-destructive processing pipeline used by photoflow.

Wednesday, August 6, 2014

What tools are available in PhotoFlow?

If you are wondering what kind of image editing can be performed with the current version of PhotoFlow, this post should give you some useful guidelines.

PhotoFlow is far from being a complete photo retouching software, but it already provides several of the "classical" tools.

Here is a brief list of the tools that are already implemented and working:
  • RAW image processing: 
    • Files from most of the existing cameras with bayer sensors can be loaded and processed. 
    • The demosaicing is based on the Amaze or IGV algorithms and is directly derived from RawTherapee code.
    • The basic RAW processing tools are provided: exposure compensation, white balance (limited to camera WB, sport WB and "color" spot WB for the moment), and camera color processing.
  • Raster image loading: photoflow can load raster images in TIFF and JPEG format, and  applies any embedded icc profile that is found in the image metadata.
  • The basic tools for color processing are available:
    • "invert" tool
    • "brightness-contrast" tool: the classic tool for changing the overall brightness and/or contrast of the image. It is still a bit buggy, but mostly functional...
    • "curves" tool: this is in my opinion the "swiss army knife" of image editing, and several other tools (invert, brightness-contrast, levels, etc...) can be realized using appropriate curves... the tool is implemented in a quite complete way: separate curves can be applied to the different image channels, controls points can be added and removed, their position can be changed by dragging the mouse or setting the input and output values by numbers. The main thing which is missing is the possibility to set the control points by clicking in the input image with the mouse. Here is an example of how the curves tool looks like:
    • "desaturate" tool
    • "channel mixer" tool: it computes a given mixture of the RGB channels and copies the result into a target channel(s). For the moment the result is copied into all three RGB channels the same way, thus producing a grayscale image. This is a simple and flexible way to convert an image into B/W.
  • Colorspace conversion: photoflow is designed to be able to edit images in RGB, gayscale, Lab and CMYK colorspaces, and to provide tools to convert between those colorspaces on-the-fly. Presently only conversions to Lab and sRGB colorpsaces are fully functional.
  • Image geometry: resizing, cropping and rotation are foreseen in future versions; only a preliminary crop tool is available at the moment
  • Hand drawing: photoflow includes a simple tool for hand drawings, using a pencil with user-selectable size, color and opacity. This is particularly convenient for creating custom masks for the local application of other editing tools.
  • Blurring & sharpening: photoflow include the well-known gaussian blur and unsharp mask tools; other sharpening methods (like RL deconvolution) will be included in the future.

As you can see, photoflow includes a minimal set of tools which probably covers 90% of the photo editing needs, unless you go for some heavy retouching beyond local and global color and contrast adjustments, sharpening and B/W conversion. Moreover, the set of available tools is constantly growing. The first items on the TODO list are:
  • Improvement of the curves tool, in particular the addition of control points via direct mouse clickinginside the image
  • Resizing and rotation tools, and improvement of the cropping tool
  • Addition of false color correction to the RAW data demosaicing
  • "Clone stamp" tool
  • Several performance improvements
  • Lots of bug fixes
  • ...

In future blog posts I will give tutorials and examples of usage of the different tools, and news about new tools or improvements of the existing ones. You will also find useful informations in the photoflow's wiki.