Skip to content

Releases: shinf1x/chiaro

0.4.0

Choose a tag to compare

@shinf1x shinf1x released this 03 Sep 21:51
e548d74

Depth-Aware Fusion and Resolution Reconstruction

Chiaro 0.4.0 is somewhat of a major update to the computational photography pipeline, adding dense depth-aware multi-camera alignment, locally verified resolution reconstruction, improved RAW recovery, and expanded use of the L16's factory calibration data.

Depth-aware multi-camera fusion

Fusion is no longer limited to a single refined homography for each camera module.

Chiaro now builds a calibrated multi-camera inverse-depth field after global alignment:

  • semi-global matching provides coarse depth hypotheses;
  • finite depth is accepted only when supported by independent camera evidence;
  • accepted hypotheses are remeasured at finer resolution with edge-aware support;
  • each camera can continuously refine the shared depth and a bounded local residual;
  • unsupported, distant, or ambiguous regions safely fall back to the global alignment rather than receiving invented depth;
  • likely occlusions and contradictory edge samples are suppressed.

This substantially improves reconstruction of scenes containing objects at different distances and reduces the double edges and ghosting caused by parallax.

Focus-aware detail ownership

Fusion now considers the captured focus state of each physical camera when deciding which module should contribute fine detail.

A magnified camera that was focused behind a nearby subject is suppressed where its parallax and focus state disagree with that foreground surface.

At the same time, a sharper telephoto module can take ownership of fine structure when it genuinely reproduces the same scene detail.

Thin structures such as branches and wires receive additional protection against being erased by many individually weak background samples.

True multi-camera resolution reconstruction

0.4.0 introduces a new reconstruction stage that uses the physical samples from multiple camera modules rather than simply resampling the fused image.

The pipeline:

  • aligns contributing modules at a common bandwidth;
  • determines the finest locally verified optical tier;
  • measures whether the available cameras provide useful sub-pixel sampling diversity;
  • combines compatible multiscale detail while retaining the reference camera's tone and colour;
  • allows a denser telephoto observation to transfer genuine additional detail where alignment is trustworthy.

Maximum-mode fusion can produce images up to 82 MP by default.

Both Gallery and the command-line tools allow switching between conventional resampling and multi-camera reconstruction.

Improved RAW highlight recovery

Highlight reconstruction now begins before demosaicing in the RAW Bayer domain.

Available recovery strategies include:

  • local edge-aware Bayer reconstruction;
  • multiscale Bayer reconstruction;
  • multi-camera recovery.

Multi-camera recovery can borrow radiance from another module only when multiple aligned, unclipped observations agree.

Each reconstructed sample carries confidence information, and clipped samples retain the sensor-white lower bound.

The existing smooth display highlight shoulder remains as a final safeguard for display-ready output.

Adaptive RAW crosstalk correction

Chiaro now uses the L16's factory 17×13 four-phase crosstalk mesh directly and can optionally refine it for the current capture.

The default adaptive mode:

  • keeps the factory calibration as the prior;
  • estimates only a small white-balance-aware residual from smooth aligned overlap;
  • validates the correction against held-out image regions;
  • falls back to the original factory calibration when the capture-specific model does not improve the measurement.

This improves inter-module colour consistency without replacing the camera's factory calibration with an unconstrained scene-derived fit.

Factory colour-profile interpolation (somewhat WIP)

Colour conversion now makes fuller use of the L16's factory colour calibration.

Instead of forcing the D65 profile, Chiaro interpolates the camera's A, F11, and D65 profiles according to the capture white balance in reciprocal-temperature space.

A new chiaro-color-profile diagnostic tool can inspect and export:

  • ColorMatrix and ForwardMatrix records;
  • grey ratios;
  • Macbeth chart measurements;
  • illuminant and sensor spectra;
  • gold_cc calibration records;
  • interpolation weights and confidence.

Experimental Macbeth-derived refits are evaluated using held-out colour accuracy and inter-camera consistency and are only promoted when they outperform the supplied factory matrices.

Camera-specific cleanup profiles

Fusion and night stacking can now apply optional .chiaro-cleanup profiles generated by Chiaro Hotpixel.

These profiles learn camera-specific, temperature-, exposure-, and gain-dependent:

  • persistent sensor defects;
  • row artifacts;
  • column artifacts.

Correction is performed on RAW frames before highlight recovery, alignment, and synthesis.

Cleanup profiles are tied to the exact factory hotpixel.rec used during training to prevent accidental use with a different physical camera.

Better night-mode processing

Night stacking now uses the L16's calibrated signal-dependent sensor noise models when evaluating temporal samples.

Noise models are interpolated for the recorded sensor gain, with capture-embedded calibration taking priority and device calibration filling missing entries.

Monochrome modules use their factory panchromatic noise characterization rather than being treated as a Bayer colour channel.

Night processing also gains the new depth reconstruction, resolution reconstruction, RAW highlight recovery, adaptive crosstalk, cleanup-profile, and colour-calibration improvements used by normal fusion.

Faster demosaicing

AMaZE and LMMSE now include runtime-selected AVX2 implementations on supported x86-64 processors.

The same portable binaries continue to run on CPUs without AVX2 and on non-x86 platforms using the scalar implementations.

No AVX2-specific build is required.

Diagnostics

Fusion reports and debug output now expose substantially more information, including:

  • quantitative inverse depth;
  • depth visualization and provenance;
  • per-camera depth/alignment statistics;
  • luminance and colour source ownership;
  • resolution-reconstruction coverage and confidence;
  • sub-pixel phase support;
  • cleanup-profile correction statistics;
  • factory colour-profile interpolation data;
  • RAW highlight-recovery confidence.

0.3.4

Choose a tag to compare

@shinf1x shinf1x released this 01 Sep 01:55

Chiaro 0.3.4 Night-Mode Processing

This release adds a complete experimental processing path for night-mode captures, and includes motion-aware temporal stacking, calibrated multi-camera fusion, Gallery integration, and several demosaicing methods.

Night-mode stacking

New processing pipeline and command-line application for L16 night captures.

Unlike standard captures, night-mode LRIs contain bursts of repeated exposures from each physical camera. Chiaro Stack now uses these frames to create a denoised image for each module before combining the modules through the existing calibrated fusion pipeline.

The temporal pipeline includes:

  • gyro-seeded motion alignment using the L16's row-indexed gyroscope data;
  • rolling-shutter-aware initial motion estimates;
  • image-correlation refinement of the gyro estimate;
  • shared rig motion projected between modules according to focal length;
  • per-pixel rejection of inconsistent or moving samples;
  • automatic fallback to the selected sharp reference frame where temporal samples cannot be aligned reliably;
  • calibrated geometry and colour correction for final multi-camera synthesis.

The same temporal reference is maintained across the physical camera modules to keep the final reconstruction consistent.

New chiaro-stack CLI

The release includes the new chiaro-stack application for processing night captures independently of Gallery.

It supports both complete multi-camera night fusion and processing an individual physical camera for inspection or downstream workflows.

Optional diagnostics can output:

  • the selected reference frame;
  • an effective-frame-count map showing how many exposures contributed to each region;
  • alignment and processing information in JSON.

Linear output is also available for further processing in external imaging tools.

Night-stack export in Gallery

Night captures can now be processed directly from Gallery through a new Night stack export pipeline.

Each completed night image is accompanied by a .night-fusion.json diagnostic report (for now).

Gallery now understands which type of capture each export pipeline accepts. Standard export pipelines skip night-mode captures, while Night stack accepts only night-mode captures. Mixed selections clearly show which files will be excluded before processing begins.

Selectable demosaicing

Chiaro now provides five Bayer demosaicing algorithms throughout the processing tools:

  • Simple
  • AMaZE
  • RCD
  • LMMSE
  • IGV

The choice is available in Gallery, Hotpixel, Fuse, Stack.

AMaZE becomes the default for normal photographic processing.

LMMSE is the default for night stacking, with IGV available as an alternative designed to behave well with noisy or moiré-prone detail.

RCD is available as an alternative particularly suited to individual night-sky exposures.

Shared night-processing library

The new reusable chiaro-stack crate provides the underlying temporal RAW-processing functionality shared by the CLI and Gallery.

The fusion and RAW-processing libraries were also extended so the new demosaicing and night-processing paths use the same correction and synthesis infrastructure as the existing tools.

Current limitations

Temporal rejection operates per pixel, but cross-camera alignment currently uses a single refined homography for each physical module.

Scenes with strong depth-dependent parallax still sucks (in both stack and fuse pipelines) untill depth estimation is implemented.

0.3.3

Choose a tag to compare

@shinf1x shinf1x released this 30 Aug 17:42
5d2d63d

Adds optional (default is on) color correction in overexposed regions (pink color in highlight)

0.3.2

Choose a tag to compare

@shinf1x shinf1x released this 28 Aug 21:35

Chiaro 0.3.2 — Calibration and Stitching Improvements

This release improves calibration handling in Chiaro Gallery and substantially increases the reliability of multi-camera fusion.

Device-matched calibration

Gallery now keeps persistent local copies of each L16 camera's factory calibration.

When a camera is indexed, Gallery automatically caches its:

  • hotpixel.rec
  • calibration.lri
  • zoom_calib_v0.lri

Calibration is associated with the physical camera's device ID.

This means:

  • calibration from one L16 will no longer be automatically applied to captures from another;
  • captures copied to local storage can reuse the correct calibration without requiring the original camera to remain connected;
  • the combined Gallery preview can use the complete cached camera geometry;
  • Gallery exports automatically use the matching cached calibration when available.

Manually selected calibration files continue to take precedence.

More reliable stitching

Multi-camera alignment now evaluates how strongly image correspondences agree with the estimated alignment.

Modules with insufficient correspondence consensus are rejected from synthesis rather than allowing a poorly aligned camera to corrupt the final image.

Accepted modules are also weighted by alignment confidence. This is particularly important for telephoto cameras, whose higher resolution could previously cause a weakly aligned frame to dominate better-supported cameras.

Improved colour matching

Photometric correction has been improved for cameras with only a small overlap with the reference frame.

Instead of extrapolating a sparsely constrained correction grid across the entire image, narrow-overlap modules now use a robust global correction derived from their actual overlapping region.

This reduces large colour artifacts, particularly magenta or green regions, that could appear in fused images.

Improved focus calibration

Focus-dependent camera intrinsics are now interpolated in lens Hall-position space.

When a capture's focus position falls slightly outside the factory calibration samples, Chiaro now continues the nearest calibration segment instead of immediately freezing at the closest sample.

This behaviour is now the default for both Gallery and chiaro-fuse.

Improved vignetting correction

Vignetting calibration is now interpolated between neighbouring factory meshes according to the capture's mirror Hall position.

Previously, Chiaro simply selected the nearest calibrated mesh.

This provides smoother and more accurate flat-field correction when the mirror position lies between factory calibration samples.

0.3.1

Choose a tag to compare

@shinf1x shinf1x released this 28 Aug 17:11
866afd7

Chiaro 0.3.1

This release improves Chiaro Gallery with a new calibrated multi-camera preview and persistent local catalog.

Calibrated multi-camera preview

Opening a capture now shows all available camera frames together on a combined calibrated canvas.

  • Frames are mapped into the reference camera view using embedded camera intrinsics, distortion, and module geometry.
  • When complete geometry is unavailable, Gallery falls back to focal-group scaling.
  • Hover over a frame in the list to bring it to the foreground.
  • Click a frame or the composite canvas to open the full-resolution pan-and-zoom preview.
  • The crop corresponding to the capture's final focal length is displayed on the composite.
  • Embedded colour calibration and white balance are now applied to the preview.
  • The previous individual-camera grid remains available through Settings.

Persistent Gallery catalog

Gallery now maintains an inspectable SQLite catalog at gallery.sqlite3.

The catalog keeps track of:

  • capture identities and source locations;
  • cached thumbnails;
  • thumbnail usage and access history;
  • successfully exported captures.

Captures that have already been exported now show an output indicator directly in Gallery, and this state is preserved between sessions.

Thumbnail cache improvements

The preview cache is now backed by the Gallery catalog rather than relying on directory scanning.

Thumbnail files are also distributed across multiple hash-prefix directories, improving cache behaviour with large collections.

Existing cached previews are migrated automatically when the new catalog is initialized.

0.3.0

Choose a tag to compare

@shinf1x shinf1x released this 28 Aug 03:26
dd8dccf

Alignment, Fusion, and Gallery Export

This release adds processing and export to Chiaro Gallery by introduces the first standalone multi-camera fusion pipeline for Light L16 captures.

Chiaro Gallery

  • Added capture export directly from Gallery.
  • Added Hot-pixel corrected frames export, producing linear 16-bit PNGs grouped by physical camera.
  • Added Fused high-resolution frame export, producing a fused 16-bit PNG and a .fusion.json diagnostic report for each capture.
  • Added capture selection with checkboxes and Shift-click range selection.
  • Exports are queued and support progress reporting, cancellation, disk-space checks, and failure logging.
  • Gallery now automatically discovers hotpixel.rec, calibration.lri, and zoom_calib_v0.lri from connected L16 cameras and caches them locally for processing.
  • Added persistent Settings, including configurable preview caching and cache-size limits.
  • Decoded capture previews are now cached on disk, avoiding repeated image transfers and decoding when reopening previously indexed captures.

Chiaro Fuse

Added the new chiaro-fuse command-line application for aligning the camera modules of an L16 capture and synthesising a single high-resolution 16-bit image.

Fusion supports:

  • factory and device calibration data;
  • optional hot-pixel and corner-glow correction;
  • native, maximum-resolution, or custom-scale output;
  • selecting individual camera modules;
  • optional monochrome-module luminance;
  • cropped or full reference-camera framing;
  • display-encoded or linear output;
  • alignment refinement and diagnostic checkerboards;
  • per-capture .fusion.json reports with alignment and synthesis diagnostics.

chiaro-fuse is now included in release archives alongside Gallery and Hotpixel.

Shared processing infrastructure

  • Added the reusable chiaro-fusion library containing calibration, geometry, alignment, and image synthesis.
  • Refactored Hotpixel processing into chiaro-hotpixel-core, allowing Gallery, Hotpixel, and Fuse to use the same correction implementation.
  • Added fusion geometry fixtures and regression tests using real L16 calibration data.
  • Added synthetic/mock LRI generation support for development and testing.

Current limitations

Fusion currently targets only distant scenes. Near subjects WILL show ghosting or parallax because depth-aware alignment and fusion are not yet implemented.

Gallery's export pipelines currently do not support repeated night-mode captures. For astrophotography and night captures, use Chiaro Hotpixel to extract and process individual camera frames.

For best fusion results, use the calibration.lri and zoom_calib_v0.lri files from the same physical L16 camera as the capture.

0.2.3

Choose a tag to compare

@shinf1x shinf1x released this 20 Aug 15:22

Updated hotpixel algorithm for better noise removal

v0.2.2

Choose a tag to compare

@shinf1x shinf1x released this 20 Jul 18:45
  • Implemented multithreaded processing of previews in contact sheet cutting time from 5s to 0.5s for color correction.
  • Fixed parallel decoding and transfer sizes to load LRI to memory faster.

Full Changelog: v0.2.0...v0.2.2

v0.2.0

Choose a tag to compare

@shinf1x shinf1x released this 20 Jul 16:56
Readme updates