PhotoFlow 0.2.7 released

After six months of development since version 0.2.6 was out, I have finally released a new PhotoFlow version, numbered 0.2.7.

Windows and OSX packages are already available from the GitHub release page.

This is definitely the most stable version released so far, as lots of bugs have been cured in both the standalone application and the GIMP plug-in.

Here is the full changelog since previous version, and few highlighted cool new features:

HIGHLIGHTS

  • Wavelet-based multi-scale decomposition
    PhotoFlow has a new tool that performs wavelet-based multi-scale decomposition non destructively.
    The code is based on the similar tool from GIMP, however the PhotoFlow version allows to interactively edit the different decomposition scales.
    The process of de-composing and re-composing the detail scales can be automated with ad-hoc presets. One sample preset for a 5-scales decomposition is provided with the PhoFlow distribution (see here).
    Using this preset, each detail scale is accessible as a separate non-destructive layer, and each layer can be edited to either remove or enhance details at the corresponding scale. By default, the scales are re-combined from bottom to top in “grain merge” mode, such that the result of the recombination exactly matches the original image.
    The individual scale layers can be edited to erase details, for example by painting with a 50% gray color, or adding a layer uniformly filled with 50% gray and then using a layer mask to limit the effect to a specific region.
    On the other hand, each layer can also be re-combined directly with the original image to enhance the details at a given scale, for sharpening or local contrast adjustment.

  • Noise reduction
    Two new filters have been added for noise reduction, both based on the darktable sources:

    • the “hot pixels” filter which is found in the “RAW developer” tool together with the chromatic aberration corrections: the “hot pixels” filter detects the dead pixels which are always saturated, and replaces them with an average of the neighbouring ones
    • the “non-local means” noise reduction filter which is found in the “noise reduction” tool, where the “impulse noise reduction” filter can also be found

Full changelog

New features:

  • Added default application icon and desktop file
  • [base] implemented “insert image as layer” funcionality
  • [raw processing] added initial support for X-Trans sensors
  • [tools] added wavelet-based multi-scale decomposition tool based on GIMP “wavelet decompose” filter (*)
  • [tools] added “hot pixels filter” algorithm ported from Darktable (*)
  • [tools] added non-local means noise reduction algorithm ported from Darktable
  • [tools] added initial implementation of shadows/highlights tool from Darktable (only gaussian blurring)
  • [tools] added “defringe” algorithm ported from Darktable (by Edgardo Hoszowski)
  • [freehand drawing] added option for choosing a transparent background
  • [basic adjustments] added “gamma” adjustment
  • [gimp plug-in] the plug-in configuration gets now stored as meta-data in the associated GIMP layer
    This gives the possibility to directly paint over a layer with the pencil
  • Added (optional) bundling of GExiv2 v0.10.3

(*) contributed by Edgardo Hoszowski

Improvements:

  • [base] implemented sharing of cache buffers between preview and export
    This dramatically improves the export speed when caching is completed
  • [base] changed pixel format of preview pipeline to float
    All computations are now performed in floating-point precision
  • [icc conversion] disabled ICC transforms when input and output colorspaces are the same
  • Removed dependency on LibRAW
  • [clone layer] it is now possible to select a single channel as clone target
  • [denoise, sharpening] it is now possible to restrict the effect to a single channel
  • [gui] last visited folders saved into options file
  • [base] changed application data folder under Windows to PROGRAMDATA
  • [processing] optimised VipsImage processing order to avoid over-computation of tiles
  • [raw processing] improved speed of RAW decoding
  • [base] introduced memory-based caching.
    The caching reverts to disk storage if the buffer is larger than 500MB or if memory allocation fails
  • [gimp plug-in] added ICC conversion to GIMP working profile when returning the output image from the PhotoFlow plug-in
  • [rescaling] the image rescaling tool now uses the default high-quality algorithm from vips_resize() function
  • [gimp plug-in] improved RAW file matching
  • [gimp plug-in] improved detection of input BABL format and GIMP working profile
    Now the code works correctly for both gamma-encoded and linear input image data

Bug fixes:

  • [gmic/film emulation] fixed malformed gmic commands for B&W and print film presets
  • [raw processing] Fixed output to Lab colorspace
  • [demosaicing] Fixed corrupted image border for “Fast” and “IGV” methods
  • [lensfun] using LoadDirectory() to open database for bundled lensfun version
  • [scale/rotate tool] fixed issue with non-initialized crop area
  • [hand drawing] fixel various bugs related in the strokes rendering
  • Fixed crash when closing the application or one of the image tabs (see issue #106)
  • [gimp plug-in] Fixed crash when closing the GIMP plug-in from either the "Close"button or the window close button
  • [gui] increased size of preview tile cache to accommodate 4k displays
  • [gui] fixed crashed due to GUI updates inside processor thread
5 Likes

Typo?
Edit: Or CopyPasta bug? :wink:

CopyPasta bug… :smiley:

:slight_smile: 1

^ added 1 for the 4 char limit in last post :stuck_out_tongue:

2 Likes

Hello Carmelo_DrRAW,

Just installed this new version on Windows 7 (64 bit).
It is extremely powerful and impressive !

Once in a while, it crashes as well :slight_smile:
For instance, when I have applied the sharpen filter or when I have tried to close the software itself. Later on, I was unable to repeat the same crash.

Just a few personal remarks:

Tooltips are extremely difficult to read.
In essence, their white background coupled with their light-gray description make them hard to see. At first, I even thought they were not implemented yet…

I have tried several verions of PhotoFlow but I have never been able to use the “Clone stamp tool”.
In short, I select my area and I press Ctr as I do with Gimp (later on I have tried with Alt or right click) in order to select it. Afterwards, I try to apply the Clone stamp tool on the part of the image to correct but nothing ever occurs…
With this tool, I only increase the size of the brush with the other settings unchanged.

Freehand drawing icon looks much more like an “eye dropper”.
With Gimp you select a color on your image with this tool - icon (it works as a color picker).

When I add a new layer > Misc > Digital Watermark, I am always unable to see my text on my image…
I have tried on several images (jpeg, nef etc) with different background but my watermark text is never visible
I suppose it should be available and applied on the right bottom side…
With this tool I increase the size of the text to the top value but my watermark is not applied ultimately.

This beins said, once again, THANKS a lot for releasing PhotoFlow because it is extremely useful !
IMHO, at present, it only needs some polishing since it is alredy chock-full of features :slight_smile:

Hi Silvio!

This is definitely a bug in the theme I am using for the Windows version… I will update the package in the release page as soon as I manage to change the tooltip text to a lighter color

The source area is selected with Ctrl-Alt-click. I am now starting to put in the GitHub wiki some documentation about the mouse click gestures used in photoflow…

The digital watermark is inserted in the frequency domain of the image, via a fourier transform… the tool uses the “Fourier watermark” GMIC filter, and the watermark can be made visible using the “Fourier analysis” GMIC filter.

I should change the name of the tool to something like “Digital Watermak (frequency domain)” to make this clearer…

The idea is that normal watermarks are ugly and also relatively easy to crop/delete, while an invisible watermark in the frequency domain is more difficult to remove.

Could you re-install photoflow from the package currently available in the GitHub release page, and check if the tooltips are now readable?

Thanks!

Hello Carmelo_DrRAW,

Just installed the new version from github.
Now the tooltips are perfectly visible and the new theme is very nice on Windows too !

Just a small problem, the 2 right bottom button (icons) to toggle the shadow - highlight clippings are not clear enough, IMHO.
In short, it is not easy to see when they are on or off.
With Rawtherapee (gtk3 verions) when they are on (active clipping) there is dark background on them. Therefore, you can easily spot the difference at first glance.

Clone stamp tool now kind of works with the ctr+alt shortcut.
Unfortunately, it always crashes when you repeat the clone action in different part of your image. Tried many times and Photoflow always crashes in the end.
BTW, why don’t you use a “classical” shortcut for this tool (that is, Ctr as with Gimp or Alt as with Photoshop) ? :slight_smile:

The watermark tool is really geeky :slight_smile:
I was aware of the “Fourier method” : I suppose you implemented it from G’MIC.
But, really, If I want to add a watermark, it needs to be a real watermark : with G’MIC you have the “Quick copyright” filter to do so.
With my Raw images I have already added a short “hidden” text note on the Exif metadata. This text is added by my Nikon D700 camera on every image I take.
But yes, this is only my opinion of course :slight_smile:

BTW, when you unistall Photoflow on Windows you get 2 different options to do so, which is a bit confusing.
The first upper one is: Unistall Photoflow-0.2.7 (the option I always choose).
The second one is : Unistall Photoflow-20150403
At first, it is difficult to choose which one is the better option :slight_smile:

Thanks a lot indeed for your reply !

I wouldn’t consider anything in EXIF metadata to be hidden in any sense. Many imaging sites strip EXIF and other image data to protect their unknowning users from exposing themselves.

 

First of all
#Thank YOU very much#

 
I’m quite fond of Photoflow ( “photoflood” for the stubborn dictionary) and I really do appreciate all the effort you’re putting into it =)

 
My main issues with the standalone use of Photoflow are speed and responsiveness. I’m not currently at my usual terminal (so I cannot compare it accurately with normal use behaviour) and lack the time needed for thorough feedback; nevertheless here are some quick & dirty notes I’ve taken:

overall handling seems more responsive

raster export seems way faster

clone tool working nicely on OSX version (10.11.6)

 

ZOOMING

  • actual visual % scale of the image needed and zoom shortcut to use with mouse wheel

  • a (mouse) selectable zoom option would also be nice

  • image looks is deceiving (“inaccurate”) when not at 100%

 
SPEED

  • puzzling that takes so long to render a small (zoomed out) preview

  • {idea} region of interest (ala after effects) for faster partial renders

  • possibility of choosing tmp or cache folders IF that can speed previews

  • {1} maybe an idea for alleviating layer accumulative effect would be (like in GIMP) to save a flattened (32b) tif copy reimported as a single layer to keep working but already with the effects rendered

 
MISC

  • undo or some history log would be nice

  • is there a grain (dither) tool, like the one in GMIC’s film?

  • hot pixels does’t work 4 me, the “red lights” still there, Hal wants us all dead

 
LAYERS

  • layer’s stack order is inverted, confusing

  • creating a group layer could include the selected layers; otherwise, if not done from the start, one has to drag them one by one and they weight 200 kilos each :stuck_out_tongue:

  • basic transformable elliptical shape of somekind with fade/fallof and invert for quick use in layer’s mask mode

  • merging layers would also be useful {1}

  • What is a buffer layer?

Hi Silvio!

I will see how to improve the “active” state visibility…

I hope to be able to reproduce the problem, thanks for reporting this.

Ctrl is reserved for image zooming/panning: Ctrl-click & drag lets you move the preview area, while Ctrl-double-click toggles between 100% view and zoom-to-fit mode

Alt was my first idea, but then I discovered that some window manager under Linux reserve the Alt-click gesture for grabbing and moving the window. So I ended uo with Ctrl-Alt, which at least works on all systems…

This need to be fixed, I’ll have a look.

Thanks!

@chroma_ghost Thanks for your feedback, very much appreciated!

Now coming to the individual points:

ZOOMING:

  • I agree fir the visual % scale, I will add this
  • you can already toggle between 100% and zoom-to-fit with Ctrl-double-click on the preview area.
  • zooming with the mouse wheel is not possible at the moment, for a simple technical reason: the widget used for the preview area reserves the mouse wheel for adjusting the vertical scrolling of the image, and I have not yet found a way to intercept and customise this behaviour…

SPEED:

  • PhotoFlow has no SSE optimisations yet, it is pure C++ code that runs in multi-threaded mode. So there is certainly some margin for improving the speed in future. So far I preferred to focus on stability, and I’ll start doing optimisations on tools that are already rock-solid.
  • Some tools are intrinsically slow, so there is some limit to the achievable improvements… could you check the speed when using only “simple tools” like curves, basic adjustments, gradients, uniform fill?

This is actually what the code already does: only the visible portion of the preview is re-computed when some parameter is changed.

Some slow tools automatically perform caching of their output image (for example the RAW developer, or the local contrast when bilateral blurring is selected). The cached image is computed in the background, and automatically re-computed whenever needed.

I totally agree, and it is in my todo list

No, this is not existing.

Did you try this with RAW or Jpeg images?

Layers

What do you mean? The top layer is at the top of the stack, like in gimp…

That’s a very nice suggestion, and should be easy enough to implement :thumbsup:

There are two possibilities already available:

  • the gradient tool has a “radial” option
  • the “path mask tool”

Anyhow, I indeed plan to include some additional basic shapes for selections, like rectangles, ellipses, etc…

This is actually not possible, because the output of a given layer is always computed on-the-fly, except when it is cached

It is a NULL operation that can be used to “mark” a certain point in the layer stack. In next version, I will add the possibility to enable the caching of a buffer layer, so that one can pre-compute the image at a certain point of the edit for speeding up the computations…

I hope this clarifies most of your questions…

Thanks!

Thanks @Carmelo_DrRaw for the promptly and super comprehensive reply :slight_smile:

So far I preferred to focus on stability, and I’ll start doing optimisations on tools that are already rock-solid

Gotcha

could you check the speed when using only “simple tools” like curves, basic adjustments, gradients, uniform fill?

I mosdef will, right now I’m on gypsy mode so can’t do

Did you try this with RAW or Jpeg images?

Raw and I ended up using the cloning, I’ll test it more thoroughly and post examples… same as above

There are two possibilities already available:

the gradient tool has a “radial” option
the “path mask tool”

Gotcha, the path one I knew, but not the radial gradient, NEAT! On choosing radial, controls stopped being interactive though

 

ZOOM
I understand the limitations, for clarififying my POV, in a often used task liked zoom in/out and panning instead of having to move the button to + or - loupe it seems the combination (key) + wheel or even mouse’s wheel alone would be faster, as ctrl + left click already works perfectly panning the image. No big deal

Regarding “region of interest” - something that I see myself only using with sharpening or like so filters - I have a doubt; is this true when rendering 1:1 preview? Does it render only what’s (cropped) inside program’s window?

LAYERS
Also clarifying, on the left panel (effects) the order is “logical”, but then on the right (expandable) area they appear in reverse order, which - at least in my very subjective view - makes contra intuitive movement of having to go further and further down when in need of changing settings. Also no big deal

 
SCOPES
As you seem refreshingly open to suggestions, a read of RGB’s values would also be super useful; even if it’s not live and/or on by default and we have to google it on/off. I wonder why there’s not a broader implementation of waveform and RGB parade scopes…

If it was me, I’ll add vibrance to basic correction, move desaturate (which is nice) a bit further down and make space for a propper colour balance tool’s direct button, but I can hardly multiply 9 by 3 :stuck_out_tongue:

Regarding histogram, could be bigger (resizable) but far more importantly could be read better, either with a lighter background or an option for having a white solid in joined values.

Okay, have to run, big thank you

 
PD
djv’s histogram

 
Affinity Photo’s floating window with (also layer “solo” opt) histogram and RGB parade’s scopes
 

1 Like

Yes, it is true also at 1:1 preview. However, one should take into account that many filters are slower at 1:1 preview, because of the way the computations are done internally: for example, a 100px blur at 50% zoom level is in fact applied as a 50px blur to the already-zoomed-out image.

Moreover, some tools just don’t do anything if the zoom level is too small, because the effect would not be visible. For example, a blur of less than 0.5px is skipped when generating the preview (but still applied when exporting the image to TIFF or Jpeg).

Concerning histogram and RGB color readings, the latter are much higher in my personal TODO list… the histogram is basic and ugly, but it is there, while color readings aren’t…

Hello Carmelo
I´ve installed the Photoflow 0.2.7 on Windows 10 64bits.
The principles are those I´ve hoped from Gimp for years. Bravo !
Not completely obvious but the logic comes … and I´ve started to create some presets.
Today I´ve created a new one based a tutorial for Gimp from Nine Degrees Below site (tone mapping).
It works when I create it. But once saved, every time I try to load it Photoflow crashes.
What is the most convenient way to send you the corresponding file (if you want of course) ?
Again, Great job !
Philippe

You can upload the file here or use a service like filebin.net and link it here.

User cannot load attachment, so filebin.net: https://filebin.net/z64mqoevcnc0rrb2

A couple more suggestions, to add to the zoom stuff, group selection, panels behaviour and the cool copy paste thing that’s coming:

  • I think Photoflow GUI is pretty nice and keeps going the right direction. Personally though, cannot understand the function of the “X” red button in the expanded settings panels and some of the GUI’s behaviours feel a bit awkward/contra-intuitive; just a bit. Please bare with me.
    Let’s call it live mode – where one’s possessed by Davinci’s white hair and marzipan castles’ ideas, the artist never erases anything says the art dealer rubbing his hands – so in this mode when I am SINGLE clicking the layer on the main panel is SOLELY because I want to change the settings (as name can only be changed in the upper box, I do like that separation), so it would expedite the process if when I single click on the layer, settings are already shown in the right expanded panel, there’s no margin for error here; hope it makes sense. Following this rationale, and now that panel is expanded, for me it is not as important to be able to close the panel as it is to be able to shrunk (up) or expand (down), to expand or stack them directly from this spot… thus making the normal order also more practical. Just in case could be there a button combination (ctrl+click or something’) to momentarily enable standard behaviour in order to delete layers. Direct button access to this (live) mode could be a mini-gioconda :kissing_closed_eyes:

  • To be able to preview one layer alone on a single click- “solo” mode - would help, say alt+click (PS style) or shift+click (GIMP style). That could be applied also in the expanded layers (on off switch), as it already reflects behaviour. “Solo mode” could also use a colour as visual ref… I like grey, but hey a little green or red never hurt nobody :stuck_out_tongue:

  • BTW what the merkel is the sticky flag thingie?

  • I really would love if the mighty HSL curves secondaries could be available for all the effects and not only for basic adjustments.

  • PF crashed several times (strangely didn’t hear any noise) when trying to delete several selected layers :egg:

 
Thank you Andrea

 
Developed with Photoflow and downscaled with Hanning + gamma correction (XN convert)

About the preset which crashes. Doing the same without changing the names of blocks makes it loadable without any issue.