Aurélien Pierre

Letture sulla teoria del colore

Quali risorse si possono trovare online e nelle biblioteche per aiutare a comprendere un po’ di teoria del colore?

Errori concettuali comuni

Questa pagina affronta la maggior parte degli errori e degli equivoci su Ansel che si possono trovare online.

La matematica di diffuse or sharpen

Questo articolo documenta la matematica attualmente implementata nel modulo diffuse or sharpen di Ansel, così come si trova in src/iop/diffuse.c, src/common/bspline.h, data/kernels/diffuse.cl e data/kernels/bspline.cl. Non è una guida all’uso. È una ricostruzione del modello numerico a partire dal codice sorgente, con le affermazioni scientifiche ricondotte ai riferimenti citati nei commenti del codice.1

La matematica dei guided laplacians e della trasposizione armonica

Questo articolo presenta la matematica della ricostruzione delle alte luci di Ansel: il progetto originale dei guided laplacians del 2021, le cui idee generali erano state solo abbozzate sul forum pixls.us,1 e la trasposizione armonica, il metodo che l’ha sostituito dopo che uno studio con ground truth ha rivelato un bug nel recupero della magnitudine.2 È organizzato in modo che ogni lettore trovi la propria sezione: i risultati e la sezione Intuizione e contesto di ogni metodo non richiedono matematica; gli sviluppatori troveranno le sottosezioni Implementazione e ottimizzazioni e lo studio sulle prestazioni; i risultati teorici e l' appendice del cimitero sono scritti per essere riutilizzabili al di fuori della fotografia; e come questo lavoro è stato effettivamente svolto documenta il protocollo di ricerca uomo–macchina che vi sta dietro.

Gestione del colore per gli utenti Linux

Linux è ancora ampiamente in ritardo rispetto a MacOS e persino a Windows quando si tratta di garantire la coerenza dei colori visualizzati sul monitor. L’adozione forzata su larga scala del server grafico Wayland nella maggior parte delle distribuzioni Linux ha danneggiato ulteriormente questa situazione, poiché la gestione del colore è stata a lungo rifiutata dagli sviluppatori di Wayland. La specifica per un CMS in Wayland è stata finalmente redatta nel 2020 e il codice è stato integrato a monte in Wayland nel 2025, da collaboratori esterni, e dopo una lunga battaglia degli sviluppatori dei precedenti software CMS contro gli sviluppatori storici di Wayland.1 Da allora, lo stato del supporto CMS è molto altalenante tra i vari ambienti desktop e le varie distribuzioni. Eppure, i risultati preliminari della telemetria di Ansel mostrano un’adozione di Wayland del 67 % tra gli utenti di Ansel.

Diamo il benvenuto al nuovo maintainer di Ansel

Jiyoné (Guillaume Stutin) ha assunto la manutenzione di Ansel da ottobre 2025. L’obiettivo attuale è trasformare Ansel in una cooperativa  in cui gli utenti possano diventare membri e controllare democraticamente gli orientamenti e le priorità del progetto, ma anche garantire una retribuzione equa e un ambiente di lavoro sicuro a chi dedica la propria forza lavoro al progetto. Ho esposto la descrizione del problema e la soluzione proposta nella pagina democrazia.

Cambiamenti nella distribuzione dei pacchetti di Ansel

Development

Target clones

Compilare il software nativamente sul computer permetteva di migliorare i tempi di esecuzione su CPU di circa il 30 %, rispetto ai pacchetti precompilati. Il motivo è che il compilatore effettua ottimizzazioni specifiche per l’hardware di destinazione su cui viene compilato, mentre i pacchetti precompilati devono restare generici e attivare ottimizzazioni più conservative per garantire un ampio supporto. Nota che i kernel OpenCL vengono comunque compilati per la tua GPU specifica tramite il tuo driver OpenCL, quindi lì la storia è diversa.

I controlli del colore finalmente corretti

Development Design

Introduzione

Strumenti contro macchine, artigianato contro industria

Nel suo libro, La società tecnologica (1954), Jacques Ellul presenta la differenza tra l’epoca pre- e post-rivoluzione industriale nel modo seguente:

L’era preindustriale è il regno dello strumento e dell’artigianato. La proprietà principale degli strumenti è di essere generici, versatili e adattabili. Spetta all’artigiano sviluppare le proprie abilità per far seguire agli strumenti la sua intenzione, così che la mano compensi i limiti dello strumento. Questo concetto è ancora ben noto ai musicisti di oggi: bisogna esercitarsi, imparare, provare, fallire, riprovare… non ci sono scorciatoie. Ellul sottolinea l’idea di parsimonia che accompagna gli strumenti: le risorse sono limitate, quindi il tuo insieme di strumenti è praticamente definito da ciò che puoi permetterti, trasportare, padroneggiare e costruire localmente. Le tendenze cambiano lentamente e sono locali, perché usano risorse locali e si adattano a bisogni locali, e gli strumenti seguono lo stesso schema. Gli strumenti sono cimeli tramandati dal maestro all’apprendista, dal genitore al figlio. Non diventano incompatibili né obsoleti.

Riprogettare il tavolo luminoso e la cache mipmap

Development Redesign Prestazioni

Tra gennaio 2022 e marzo 2026, Ansel ha registrato 297 commit non di merge riguardanti la griglia del tavolo luminoso, le sue miniature e la loro pipeline di rendering e caching. Ho cercato di arrangiarmi con il trasandato codice del tavolo luminoso di Darktable, solo sgrassato, il più a lungo possibile, ma purtroppo era puro debito tecnico ed era penosamente lento.

In effetti, Darktable «gestisce» la scadente qualità del suo tavolo luminoso riducendone le dimensioni: i pannelli laterali di sinistra e di destra occupano molta superficie di visualizzazione, il che lascia ancora meno area da ridisegnare per il tavolo luminoso. Poiché Ansel ha rimosso il pannello laterale di destra, fondendone il contenuto con quello di sinistra e con il menu globale, c’era più superficie da disegnare, più lavoro per la CPU da svolgere, e il pessimo design del tavolo luminoso è diventato tanto più dannoso.

Revisione completa della pipeline

Development

Da quando ho iniziato a usare Darktable, intorno al 2012, sono sempre rimasto sorpreso dalla poca RAM che utilizzava. La gente pensa che sia una buona cosa che un’applicazione usi la memoria con parsimonia, e questo è senz’altro vero se parliamo del tuo ambiente desktop. Ma parlando di un software di produzione che esegue un pesante rendering dei pixel su immagini da 12 a 54 Mpixel, questo significa che gli stessi calcoli pesanti vengono ripetuti più e più volte invece di essere salvati per essere riutilizzati in seguito. È a questo che serve una cache: evitare calcoli costosi. E dovrebbe usare tutta la RAM disponibile a tale scopo, perché calcolare significa sprecare energia, e questo ha un impatto concreto se stai lavorando a batteria. Inoltre, hai pagato per quella RAM e usarla non ti scarica la batteria. La CPU/GPU d’altro canto…

La fusione della cronologia resa robusta e prevedibile

Development

Memorie di un tizio che ha passato troppo tempo a ripulire la merda degli altri e a pagare per le loro cattive decisioni, episodio #troppi.

Copiare/incollare cronologie e stili sono funzioni fondamentali in Ansel, e quella che gli fa meritare (o meno) il suo titolo di «app per il flusso di lavoro». Ma è anche tra le più difficili da realizzare correttamente a livello interno. Gli utenti vedono un elenco di modifiche, ma sotto il cofano quelle modifiche dipendono dall’ordine della pipeline, dalle istanze dei moduli e dalle maschere. Se due immagini hanno topologie di pipeline diverse, copiare le modifiche in modo ingenuo può produrre incoerenze.

Riscrivere da zero le scorciatoie da tastiera (acceleratori)

GUI Usabilità

Nel mio articolo fondativo, Darktable: schiantarsi contro il muro al rallentatore, ho presentato il disastro che era il nuovo «Grande turducken MIDI». Lo scopo di questo turducken1 era riscrivere il sistema di scorciatoie da tastiera per estenderlo ai dispositivi MIDI.

Ancora oggi sono arrabbiato per questa impresa di distruzione di massa, ecco un riepilogo delle ragioni:

  1. nel 2021 ha sostituito un sistema di scorciatoie da tastiera che era piuttosto buono, completo di funzioni, ben testato, stabile e scritto in meno di 1500 righe (commenti inclusi),
  2. …per aggiungere il supporto ai dispositivi MIDI e ai gamepad PlayStation (!?!)…
  3. …ma nel mio sondaggio Darktable del 2022, un anno dopo questa nuova funzione, su oltre 1251 utenti che vi hanno partecipato:
    • l'81% degli utenti non aveva un dispositivo MIDI e non aveva intenzione di procurarsene uno,
    • il 2% non sapeva nemmeno cosa fosse un dispositivo MIDI.
    • l'8% degli utenti aveva un dispositivo MIDI ma non lo usava con Darktable,
    • il 6% stava valutando l’idea di procurarsi forse un dispositivo MIDI in futuro,
    • il 2% degli utenti aveva un dispositivo MIDI che usava davvero in Darktable,
  4. il codice era assolutamente terribile, in termini di:
    • qualità del codice: istruzioni if/switch-case illeggibili annidate su 4 livelli, nel bel mezzo di funzioni da 1000 righe (ho pubblicato esempi di frammenti nel mio articolo),
    • volume del codice:
      • 3546 righe di codice per Darktable 4.0,
      • 4397 righe di codice per Darktable 5.0,
      • l’aumento di volume è una conseguenza diretta del tentativo di correggere bug in un’architettura che non può essere corretta perché la sua complessità favorisce ulteriore complessità. Tutto ciò deriva dal design, ma risolvere problemi creati dalla complessità aggiungendo altra complessità non è una soluzione.
    • complessità del codice:
      • complessità ciclomatica :
        • 1088 per Darktable 4.0,
        • 1245 per Darktable 5.0 (dettagli ),
      • complessità cognitiva :
        • 1885 per Darktable 4.0,
        • 2098 per Darktable 5.0 (dettagli ).
      • è di gran lunga la funzione più complessa del software, anche se non opera sulle immagini. Per fare un confronto, la seconda funzione più complessa è la decodifica dei metadati EXIF, che ha una complessità cognitiva di 1348.
  5. non decodifica i modificatori dei tasti per progettazione, ma gestisce soltanto le pressioni fisiche dei tasti, il che significa che:
    • l’input «1» dal tastierino numerico viene decodificato come Keypad End,
    • l’input «1» da una tastiera francese AZERTY viene decodificato come Shift+&, o Shift+" su BÉPO,
    • devi quindi duplicare tutte le tue scorciatoie basate sui numeri per ogni modo di inserire un numero, ed essere pronto al fatto che la finestra delle impostazioni delle scorciatoie non contenga alcun numero effettivo nelle combinazioni di tasti.
  6. il design lato utente è assolutamente terribile, con troppe azioni ed emulazioni da configurare («effetti»), che dopo 4 anni non sono nemmeno completamente documentate (cos’è «ctrl-toggle»? «right-activate»?), e la configurazione delle scorciatoie usa una strana finestra divisa che non ha alcun senso,
  7. anche l’implementazione è terribile: la funzione è a conoscenza di tutta la GUI del software, e la GUI del software è a conoscenza del codice delle scorciatoie. Qui non c’è alcuna modularità, e modificare qualsiasi cosa nel codice delle scorciatoie può avere effetti inaspettati e indesiderati in qualsiasi punto del software.2 Basta guardare il grafo delle dipendenze qui sotto,
  8. diverse «scorciatoie» (o associazioni MIDI) possono essere collegate alla stessa azione, il che significa che ogni interazione dell’utente deve consultare l’intera lista delle azioni disponibili, comportando una gestione delle scorciatoie molto inefficiente, in alcuni casi rallentamenti della GUI e falsi positivi «combinazione di tasti sconosciuta» in casi particolari.
image
Tasti numerici non decodificati e strana divisione della finestra tra «azione» e «scorciatoia».
image

Il grafo delle dipendenze di src/gui/accelerators.c (Grande turducken MIDI) prima della riscrittura. Indovina perché lo chiamiamo «spaghetti code »… Questo rende evidente che esiste una dipendenza a doppio senso tra il codice degli acceleratori e il resto del codice della GUI. È un incubo da mantenere.

Benvenuto Ansel GPT !

Annuncio

Dopo aver finalmente collegato l’intero sito web e la documentazione a un flusso di lavoro di traduzione a tenuta stagna (usando po4a sopra Hugo), che per inciso utilizza esattamente lo stesso insieme di strumenti e la stessa logica dell’applicazione Ansel, mi è venuta l’idea di automatizzare le traduzioni vuote, prima a partire dai file di traduzione del software, poi tramite l’API di ChatGPT, che fa un lavoro davvero discreto nel tradurre la sintassi Markdown.

Film scanning

Film Negative

Alain Oguse learned photographic printing with Claudine  and Jean-Pierre Sudre  in the late 1960’s, and spent his early career in commercial photography. After retiring, he started to investigate how to bring back the photographic (silver halide) grain in digital scans of film negatives, finding the same sharpness and quality he had with near-point light enlargers in the 1970’s.

The point light printing technique uses a very tiny source of light that gives a very precise and detailed reproduction of B&W film negatives, as opposed to diffuse lighting. It is very demanding, as its unforgiving sharpness and contrast do not hide scratches and dust on the film surface. Prints done this way would often need manual (painted) corrections on paper, inducing more work and more costs. By the end of the 1970’s, it was usually replaced by diffuse light… better at hiding manipulation mistakes and at maximizing print labs profits.

Benvenuta, documentazione per sviluppatori !

Development

Già nel dicembre 2019, chiesi che qualcuno si occupasse di fornire pacchetti AppImage  per Darktable. Il vantaggio evidente sarebbe stato quello di consentire test anticipati, prima della versione, da parte di persone che non sono in grado di compilare da sole il codice sorgente, così da si spera fornire un riscontro anticipato e aiutare a fare il debug prima di rilasciare. Questo non è mai stato una priorità, il che significa che andava bene avere una corsa a correggere i bug sia prima sia dopo la pubblicazione.

White balance(s)

We all know what “white” is. We can picture a white sheet of paper. We know it is white because we learned it. But if you put your paper sheet under a summer sun, or a cloudy sky, or at home with those warm living-room bulbs, that white will change color. It might disturb you for the first few seconds, then you will just forget about it: your brain will adapt. But adapt (to) what ?

Troubleshooting color issues

This will apply to upstream Darktable as to Ansel since they share most of their color pipeline. The following procedure will help you troubleshoot your color issues, whether it is inconsistent appearance between export vs. preview, or between screen vs. print, or between 2 apps.

Setup your desktop properly

The inherent problem of color is it exists only as a perception, and that perception is highly contextual and fluid. If I take any color patch and display it over a white, middle-grey or black background, it will not appear the same even though a colorimeter would confirm it’s the exact same color. I have built a little web animation to showcase this effect, displaying sRGB gamut slices at constant hue, over user-defined background lightness : the sRGB book of color .

Sistemare la cache della pipeline e bug vecchi di 10 anni

Development

Riepilogo delle puntate precedenti

  1. Tra il 2020 e il 2022, Darktable è stato oggetto di un’impresa di distruzione di massa, da parte di una manciata di tizi con più tempo libero e benevolenza che vere competenze,
  2. Nel 2022, ho iniziato a notare un fastidioso ritardo  tra le interazioni dell’interfaccia grafica con i controlli a cursore e il feedback/aggiornamento di detti cursori. Per mancanza di un feedback che indicasse che la modifica del valore era stata registrata, gli utenti potevano cambiarlo di nuovo, avviando così ulteriori ricalcoli della pipeline e di fatto congelando il computer perché la stupida interfaccia grafica non diceva mai «ricevuto, ora aspetta un momento».
  3. Ho scoperto che gli ordini di ricalcolo della pipeline venivano emessi due volte per clic (una volta sull’evento «pulsante premuto», una volta sull’evento «pulsante rilasciato»), e ancora una volta per ogni movimento del mouse, ma anche che gli stati dell’interfaccia grafica venivano aggiornati apparentemente dopo il ricalcolo della pipe.
  4. Ho sistemato la cosa riscrivendo quasi del tutto i controlli personalizzati dell’interfaccia grafica (libreria Bauhaus). Pensavo che impedire gli ordini di ricalcolo sconsiderati avrebbe risolto il ritardo: non è stato così. Poi ho scoperto che richiedere un nuovo ricalcolo della pipeline prima che il precedente terminasse attendeva la fine del precedente, nonostante un meccanismo di arresto implementato molti anni prima che avrebbe dovuto funzionare.
  5. Ho sistemato la cosa implementando un meccanismo di kill-switch sulle pipeline, seguendo i commenti nel codice risalenti agli anni 2010 e utilità interne che potrebbero benissimo non aver mai funzionato. Questo non funzionava sempre perché l’ordine di terminazione arrivava spesso con un ritardo evidente. Ancora una volta, il ritardo dell’interfaccia grafica non era risolto.

Riscrivere lo strumento di importazione

Development Redesign

Ansel eredita da Darktable la sua struttura portante di database: le cronologie di modifica non distruttive vengono salvate per ogni immagine in un database SQLite, insieme ai metadati e ad altri dati definiti dall’utente. Rendere il database consapevole di nuove immagini avviene tramite l’«importazione» delle immagini da un disco o da una scheda di memoria. È qui che entra in gioco lo strumento di importazione.

Purtroppo, l’importatore di Darktable è un’altra di quelle cose massacrate intorno al 2020 e trasformate in qualcosa di profondamente sconcertante, essendo un file browser che non somiglia a nessun file browser precedentemente noto, e che riesce a mancare di funzioni basilari (come Ctrl+F o l’anteprima EXIF) pur restando appesantito da funzioni inutili (vedi sotto). È qui che perdiamo molti futuri utenti, ed è solo lo step 0 del flusso di lavoro. Che magnifica vetrina di ciò che una «app per il flusso di lavoro» sa fare!

Lessico del colore

mindmap
  root((COLOR))
    color appearance model
      uniform color space
        chromaticity
          U, V
          a, b
        lightness
          L
        delta E
      chromatic adaptation transform
        illuminant
          color reproduction index
          color temperature
      surround lighting
      background lightness
    dimensions
      Munsell
        hue
        chroma
        value
      natural color system
        blackness
        saturation
        hue
      CIE
        lightness
        brightness
        saturation
        chroma
        colorfulness
        hue
    measure
      colorimetry
        tristimulus
          sensor
            Luther-Ives criterion
            metamerism
            dynamic range
            noise
            mosaicing
              Bayer
              XTrans
              zipper artifacts
          spaces
            rgb(RGB)
              HSV
              HSL
            LMS
              Yrg
            XYZ
              Yxy
                Yuv
                  Ych
            CYM
              CYMK
            primaries
              cone cells
              LED
                ITU BT.Rec 709
                ITU BT.Rec 2020
                DCI P3
              inks
      spectrometry
        light spectrum
          wavelengths
          energy
      photometry
        luminance
    correction
      profile
        matrix
        lookup table
        transfert function
      color grading
        ASC CDL
        channel mixer
        curves
      white balance

Translated from English by : Claude. In case of conflict, inconsistency or error, the English version shall prevail.

Implementazione del kill-switch sulla pipeline

Development

Ho pensato, per moltissimo tempo, che ci fosse qualche meccanismo di kill-switch sulla pipeline dei pixel. Il caso d’uso è il seguente :

  1. stai modificando il parametro di un modulo,
  2. le anteprime (quella centrale della camera oscura e la miniatura nel pannello di sinistra, usata anche per l’istogramma e i selettori di colore) ricalcolano la loro pipeline per tenere conto di quella modifica,
  3. una delle anteprime finisce il rendering prima dell’altra, e il risultato non è ovviamente ciò che volevi,
  4. modifichi di nuovo il parametro del modulo, senza aspettare che il ricalcolo finisca.

In quel caso, vuoi terminare tutte le pipeline attive perché il loro output non verrà usato, e iniziare immediatamente a ricalcolare tutto con i nuovi parametri. Solo che Darktable non fa questo, lascia che la pipeline finisca prima di riavviarla e, guardando i commenti nel codice sorgente, sembra essere una regressione piuttosto recente e non il comportamento originariamente previsto.

Un-darktable-izzare i controlli della GUI

Development

Darktable ha una propria libreria di widget per la GUI, per gli slider e le combobox (ovvero i menu a tendina o caselle di selezione), chiamata Bauhaus (nel codice sorgente si trova in src/bauhaus/bauhaus.c). Sebbene usino Gtk come backend, i Bauhaus sono oggetti personalizzati. E come molte cose in Darktable, personalizzato equivale a marcio.

Nel 2022 ho notato ridisegni parassiti e latenze  usandoli, che portavano a un’esperienza utente frustrante: il ridisegno del widget sembrava attendere il completamento dei ricalcoli della pipeline, il che significava che gli utenti non erano davvero sicuri che la loro modifica di valore fosse stata registrata, cosa che poteva indurli a riprovare, avviando un altro ciclo di costoso ricalcolo e di fatto congelando il loro computer per diversi minuti molto frustranti di inutili ricalcoli intermedi della pipeline.

Modifiche al supporto di distribuzione per il pacchetto AppImage di Linux

Annuncio

Rawspeed (la libreria che fornisce i decodificatori per i file raw delle fotocamere) ha deprecato il supporto per GCC < 12. Di conseguenza, non posso più compilare l’AppImage su Ubuntu 20.04 (usando i runner di Github), ma devo compilarla su 22.04.

Ciò significa che qualsiasi distribuzione Linux con libc più vecchia della 2.35 non sarà in grado di avviare le nuove AppImage a partire da oggi. Questo non dovrebbe interessare la maggior parte degli utenti che usano distribuzioni aggiornate nel 2021 o più di recente. Ubuntu 20.04 e altre distribuzioni LTS/stabili datate (Debian stable) potrebbero essere interessate.

Printing

The scene-referred workflow promises an editing independent from the output medium. It will typically produce an image encoded in sRGB colorspace with 8 bits, that is code values between 0 and 255. To simplify, we will consider here only the 8 bits case. Concepts are the same in 16 bits, only the coding range goes from 0 to 65535, which is anecdotal.

The printing problem

Unfortunately, nothing guarantees that the printer is able to use the whole encoding range. The minimum density (Dmin in analog) is reached with naked paper, and matches an RGB code value 255. The maximum density (Dmax in analog) is reached with 100% ink coverage.1 Problem is, if Dmin matches an RGB code value of 255, Dmax never matches an RGB value of 0.

Nuove opzioni di build per Linux

Development

Ho scoperto per caso che lo script di build per Linux usava una build «package», il che significa che le ottimizzazioni della CPU sono limitate a quelle generiche per produrre binari portabili installabili su qualsiasi piattaforma x86-64. Con «usava» intendo che la build package non era esplicitamente disabilitata, quindi era abilitata per impostazione predefinita.

Comunque, ora è disabilitata per impostazione predefinita, dato che i pacchetti veri e propri (.exe e .appimage) non vengono compilati tramite quello script, che è pensato principalmente per aiutare gli utenti finali. Per ripristinare il comportamento precedente, dovresti eseguire:

Diario di sviluppo #2: presentazione di Chantal

Development

Il 2022 è stato talmente pessimo in termini di email spazzatura e rumore che ho avviato la Virtual Secretary , un framework Python per scrivere filtri email intelligenti incrociando informazioni provenienti da diverse fonti per indovinare cosa siano le email in arrivo e se siano importanti/urgenti o meno. Quando parlo di email spazzatura, intendo anche le notifiche di Github, i ping su pixls.us (grazie al cielo ho chiuso il mio account su quello stupido forum), YouTube ed email dirette da persone che sperano di ottenere un po’ di aiuto in privato.

Basic Editing

Here is how to get started with Ansel editing, going through only the most basic steps that should serve you well most of the time.

The video was recorded on Darktable 3, but the same modules and principles apply to Ansel.


Translated from English by : Claude. In case of conflict, inconsistency or error, the English version shall prevail.

Monochrome toning

Film Monochrome

This article will demonstrate how to perform monochrome toning on digital images in Ansel, to emulate the color rendition of cyanotypes, platinotypes, sepia and split-toning developments.

Step 0 : global preparation

Set the global exposure and filmic scene white and scene black, as in any other editing. See basic editing steps. This is our base image, by Glenn Butcher :

image

Diario di sviluppo

Development

Sono passati all’incirca 3 mesi da quando ho ribattezzato «R&Darktable» (che nessuno sembrava capire correttamente) in «Ansel», poi ho acquistato il nome a dominio e creato il sito web da zero con Hugo (non avevo mai programmato in Golang prima, ma si tratta perlopiù di codice di template).

Poi ho impiegato un totale di 70 h per far funzionare le build dei pacchetti nightly per Windows e Linux ai fini della distribuzione continua, qualcosa che Darktable non ha mai fatto bene («puoi compilarlo da solo, non è difficile»), solo per vedere il tracker dei bug esplodere dopo il rilascio (niente di meglio che concatenare lo sprint pre-rilascio con uno post-rilascio per ridurre la propria aspettativa di vita).

Darktable: schianto contro il muro al rallentatore

Cosa succede quando un gruppo di fotografi amatoriali, trasformatisi in sviluppatori amatoriali, a cui si aggiunge una manciata di sviluppatori back-end che sviluppano librerie per sviluppatori, decide di lavorare senza metodo né struttura su un software professionale destinato agli utenti finali, la cui competenza fondamentale (colorimetria e psicofisica) si colloca da qualche parte tra una laurea triennale in fotografia e una laurea magistrale in scienze applicate, promettendo al contempo di rilasciare 2 versioni all’anno senza gestione di progetto? Il tutto, ovviamente, in un progetto dove i fondatori e la prima generazione di sviluppatori sono passati ad altro e se la sono data a gambe?

The scene-referred workflow

Color Science Pipeline

In this article, you will learn what the scene-referred workflow is, how Ansel uses it and why it benefits digital image processing at large.

Introduzione

The scene-referred workflow is the backbone of the Ansel’s imaging pipeline. It is a working logic that comes from the cinema industry, because it is the only way to achieve robust, seamless compositing (also known as alpha blending) of layered graphics, upon which movies rely heavily to blend computer-generated special effects into real-life footage. For photographers, it is mostly for high dynamic range (HDR) scenes (backlit subject, sunsets, etc.) that it proves itself useful.

Search

You can also ask Chantal, the AI search engine.