Small GUI utility to Batch process Camera RAW images with OpenColorIO 3D Lut support. A tool designed as a helper tool for photogrammetry (3D scanning) image batch processing tool where speed is more important than feature-rich raw image processors.
- Support all camera raws supported in Libraw library, including ProRAW DNG
- Headless (CLI) mode
- Multithreaded and asynchronous batch processing
- Drag and drop interface with recursive subfolders support
- Half Resolution camera raws import
- Export as raw sensor data (bw), Bayers pattern (RGB), and different demosaic methods (supported in libraw)
- Smart (per folder_suffix/filename_suffix) 3D Lut grading presets (via OpenColorIO)
- Smart per-camera (Make, Model) LUT
- Export as 8/16/32bit int/float tiff/jpeg/jpeg2000/jpegxl/heic/PPM/PNG
- Export Exif and XMP metatags (only subset)
- tool configuration via TOML config file
Cropping RAWs is not guaranteed to be identical to commercial raw processors' crops.
Settings are available through *.toml config file and UI menu
Global app settings
Console = true/false
Choose these settings depending on your CPU, memory, and IO specs
Threads = 10
(TODO: check if still used)
ThredsMult = 1.0
If set to true, processed images will be stored in the lut_name folder. Otherwise, lut_name will be added as a suffix (aka. filename_lut_name.ext)
ExportSubf = true
relative path prefix. For example, "../Proc" will create a folder Proc in a parent folder to a camera raw images source folder.
PathPrefix = ""
0 = trace, 1 = debug, 2 = info, 3 = warning, 4 = error, 5 = fatal
- 0 = only fatal errors,
- 1 = error,
- 2 = warning,
- 3 = info (default),
- 4 = debug,
- 5 = trace (most outputs)
Verbosity = 3
(TODO: check if still needed; this part of code from Solidify)
- 0 - Unsigned 0.0 ~ 1.0
- 1 - Signed -1.0 ~ 1.0
- 2 - Signed to Unsigned -1.0
1.0 -> 0.01.0 - 3 - Unsigned to Signed 0.0
1.0 -> -1.01.0
RangeMode = 0
Export settings
- -1 - Same as input. If the input format can't be used for export (for example, CameraRAWs) app will use the default
- 0 - TIFF
- 1 - OpenEXR
- 2 - PNG
- 3 - JPEG
- 4 - JPEG-2000
- 5 - JPEG XL
- 6 - HEIC
- 7 - PPM
DefaultFormat = 3
FileFormat = -1
- -1 - Original
- 0 - uint8 (8bit unsigned int)
- 1 - uint16 (16bit unsigned int)
- 2 - uint32 (64bit unsigned int) !! most file formats do not support 32bit unsigned int
- 3 - uint64 (64bit unsigned int) !! most file formats do not support double-precision
- 4 - half (16bit float)
- 5 - float (32bit float)
- 6 - double (64-bit float) !! Most file formats do not support double-precision
DefaultBit = 4
BitDepth = -1
- 100 - lossless or best quality
- 0 - worst quality
Quality = 95
- -1 - Auto EXIF
- 0 - Unrotated/Horizontal
- 3 - 180 Horizontal
- 5 - 90 CW Vertical
- 6 - 90 CCW Vertical
RawRotation = -1
(TODO: Check if this is an actual color conversion in LibRAW or just a tagging)
- 0 - raw
- 1 - sRGB
- 2 - sRGB-linear (sRGB primaries, but a linear transfer function)
- 3 - Adobe
- 4 - Wide
- 5 - ProPhoto
- 6 - ProPhoto-linear
- 7 - XYZ
- 8 - ACES (only supported by LibRaw >= 0.18)
- 9 - DCI-P3 (LibRaw >= 0.21)
- 10 - Rec2020 (LibRaw >= 0.2)
RawColorSpace = 1
- -2 - raw data (Single channel)
- -1 - no demosaic (RGB)
- 0 - linear
- 1 - VNG
- 2 - PPG
- 3 - AHD (default)
- 4 - DCB
- 5 ~ 10 is not used
- 11 - DHT
- 12 - AAHD (Modified AHD)
Demosaic = 3
half_size = false
Use automatic white balance obtained after averaging over the entire image.
use_auto_wb = false
If possible, use the white balance from the camera.
use_camera_wb = true
- 0: do not use an embedded color profile
- 1 (default): use embedded color profile (if present) for DNG files (always); for other files only if use_camera_wb is set; -# 3: use embedded color data (if present) regardless of the white balance setting.
use_camera_matrix = 1
0-9: Highlight mode (0=clip, 1=unclip, 2=blend, 3+=rebuild).
highlights = 3
Correction of chromatic aberrations (red multiplier, blue multiplier)
aberrations = 1.0, 1.0
It is not recommended to use both wavelet denoising and FBDD noise reduction!
- 0 - disabled
- 1 - wavelength
- 2 - fbdd
- 3 - both
denoise_mode = 1
Use wavelets to erase noise while preserving real detail. The best threshold should be somewhere between 100 and 1000.
dnz_threshold = 100.0
Controls FBDD noise reduction before demosaic.
- 0 - do not use FBDD noise reduction
- 1 - light FBDD reduction
- 2 (and more) - full FBDD reduction
fbdd_noiserd = 2
At this moment, both auto and force work the same. TODO: merge them into the one
- -1 - disabled
- 0 - auto
- 1 - force
exif_crop = 0
UnRAWer uses OpenColorIO's built-in studio-config-latest config for LUT transforms. No external
config.ocio file or $OCIO environment variable is required.
On first run, UnRAWer creates a user config folder, copies the default unrw_config.toml, and copies the packaged
example LUTs into a LUTs subfolder. Existing user config files and existing LUTs folders are not overwritten.
- Windows:
%APPDATA%\UnRAWer - macOS:
~/Library/Application Support/UnRAWer - Linux:
${XDG_CONFIG_HOME:-~/.config}/unrawer
Dear ImGui state is stored in the same folder as imgui.ini.
Luts folder, absolute or relative to the TOML config file. UnRAWer automatically loads the list of LUTs in this folder in load time. Use a console to check if LUTs are correctly recognized. No LUT checking load time!! (TODO: check if non-default handle correctly)
LutFolder = "LUTs"
LUT mode. If set to Smart check if path or image file name have included lut preset name. For example, several folders with raw files: diffuse, cross, parallel, and you have dedicated LUT presets for such images. UnRAWer should automatically recognize and use a dedicated LUT preset.
- -1 - disabled
- 0 - Smart (file path/name)
- 1 - Force
LutTransform = 1
Force/Default preset
LutDefault = "hdr"
Per camera model presets
exif_lut = false
Unsharp mode:
- -1 - disabled
- 0 - smart
- 1 - Force
sharp_mode = 1
- 0 - gaussian (default)
- 1 - sharp-gaussian
- 2 - box
- 3- triangle
- 4 - blackman-harris
- 5 - mitchell
- 6 - b-spline
- 7 - catmull-rom
- 8 - lanczos3
- 9 - disk
- 10 - binomial
- 11 - laplacian
- 12 - median
sharp_kernel = 0
sharp window size
sharp_width = 3.0
sharp strength
sharp_contrast = 0.5
threshold
sharp_treshold = 0.125
source + contrast * (source - blur) if (source - blur) < threshold => result == source (no sharp)
Process single RAW file from CLI using default config file settings (less efficient way to use CLI)
UnRAWer.exe path_to_file.ext
Process a folder with raw files from CLI using default config file settings.
UnRAWer.exe path_to_folder
Process multiply folders with raw files from CLI using default config file settings and more silent verbosity
UnRAWer.exe -v=1 path_to_folder1 path_to_folder2
Process multiply inputs (folders and files) with raw files from CLI using default config file settings and more verbosity
UnRAWer.exe -v=4 path_to_folder1 path_to_folder2 path_to_file1.ext path_to_file2.ext path_to_file3.ext
Process multiply inputs (folders and lists) with raw files from CLI using custom config file settings and more verbosity
UnRAWer.exe -v=4 path_to_config.toml path_to_folder1 path_to_file_list.txt
- OpenImageIO
- LibRAW
- OpenImageIO
- libTIFF
- OpenJpeg (jpeg2000)
- libJpeg-turbo (jpeg)
- libjxl (jpeg xl)
- zlib-ng
- QT6
- etc.
Please consider supporting this project via https://www.patreon.com/MadProcessor
Copyright © 2021-2025 Erium Vladlen.
UnRAWer is licensed under the GNU General Public License, Version 3. Individual files may have a different but compatible license.