This File is part of bLUe software.
Copyright (C) 2017-2023 Bernard Virot
bLUe is a layer-based image editor. It aims to integrate a new perceptual 3D LUT editor with more traditional tools to provide a powerful GUI for photo editing. The program is fully modular : tools are implemented as independent adjustment layers using a common GUI. New features can be added easily: any imaging library exposing Python bindings can take advantage of the GUI.
bLUe can develop raw images in all usual formats : nef, cr2, arw, dng, ... It supports dng/dcp dual illuminant camera profiles : they are essential for rendering colors similar to that produced by camera software.
bLUe provides drawing layers and paint brushes with adjustable parameters: size, flow, hardness, opacity.
bLUe is aware of multiscreen environments and color profiles : it uses image and monitor profiles in conjunction to display accurate colors.
bLUe uses a pretrained neural network to provide automatic 3D LUTs for fast enhancement of images. The pretrained model and the code are taken from the recent work of Hui Zeng, Jianrui Cai, Lida Li, Zisheng Cao, and Lei Zhang.
Images being edited and their layer stack can be saved to .blu file format.
The program is written in Python.
A 3D LUT is a table representing a 3D cube of color nodes. Image pixels are associated with nodes, according to their color. Changes are applied to each node individually, giving full control over colors.
3D LUTs are edited in a perceptual editor by selecting, grouping and moving color nodes over a hue-saturation color wheel. Nodes are bound to an elastic grid and a grid smoothing algorithm is provided to even changes in color.
A group of nodes represents a meaning region of an image, for example : tree leaves, skin, hairs, water, blue sky, ...), and all nodes in a group should be edited in a similar way.
The editor's workflow is based on the grouping of nodes.
-
Nodes are selected and grouped from the image;
-
To edit the colors of all pixels in a group while keeping their brightnesses, simply move the group on the color wheel;
-
To control the brightnesses of pixels in a group, edit the brightness curve of the group.
The whole grid can be warped to produce a particular look (orange-teal, moonlight, ...)
Color transformations such as RGB curves, channel mixing, temperature,... can be easily integrated in the 3D LUT, in any order, by adding the corresponding adjustment layers to the stack and recording the whole stack as a single 3D LUT. An example 3D LUT can be found on the web site.
See the bLUe site for screenshots, tutorials and user manual.
- Neural-network-based automatic 3D LUT for image enhancement
- Soft proofing
- Simultaneous edition of multiple images in formats jpg, png, tif, nef, cr2, arw, dng,...
- Color profile management
- Adjustment layers : exposure, brightness, saturation, contrast, channel mixer, color temperature, inversion, filters, color grading.
- noise reduction, seamless cloning, segmentation, exposure fusion, curves, 2.5D LUTs, 3D LUTs.
- Drawing and painting layers; tablet support
- Extensible set of brushes and patterns; .abr files support
- Automatic contrast enhancement (histogram warping and CLAHE)
- Seamless cloning
- Exposure fusion
- Multiple blending modes; adjustable layer opacity
- Import and export of 3D LUTs in .cube format
- Editable masks
- Automatic import of camera specific profiles for development of raw images
- Library viewer
- Slide show
- Context-sensitive help
- Python >= 3.9
- Qt6 for Python (PySide6)
- opencv-python
- numpy
- Pillow
- RawPy
- PyWavelets
- PyTorch >= 1.4 and torchvision for auto adaptive 3D LUT
- tifffile
ExifTool should be installed.
On Windows, pywin32 is needed for multiscreen management.
On Ubuntu, gi and colord are needed to manage monitor profiles.
On MacOS, pyobjc is needed to use the ColorSync framework.
Edit config_win.json (Windows) or config.json (other OS) to specify system paths and options.
This project is licensed under the LGPL V 3.