Aurélien Pierre

Color theory readings

What resources can be found online and in libraries to help understand some color theory ?

Common misconceptions

This page addresses most of the mistakes and misconceptions about Ansel that can be found online.

De wiskunde van diffuse or sharpen

Dit artikel documenteert de wiskunde die momenteel is geïmplementeerd in Ansels diffuse or sharpen-module, zoals te vinden in src/iop/diffuse.c, src/common/bspline.h, data/kernels/diffuse.cl en data/kernels/bspline.cl. Het is geen gebruikshandleiding. Het is een reconstructie van het numerieke model op basis van de broncode, waarbij de wetenschappelijke beweringen worden herleid tot de referenties die in de codecommentaren worden aangehaald.1

De wiskunde van guided laplacians en harmonische transpositie

Dit artikel presenteert de wiskunde achter Ansels reconstructie van hooglichten: het oorspronkelijke guided laplacians-ontwerp uit 2021, waarvan de algemene ideeën alleen ooit waren geschetst op het pixls.us-forum,1 en harmonische transpositie, de methode die het verving nadat een ground-truth-onderzoek een bug in het herstel van de magnitude aan het licht bracht.2 Het is zo opgebouwd dat elke lezer zijn eigen sectie vindt: de resultaten en de Intuïtie & achtergrond van elke methode vereisen geen wiskunde; ontwikkelaars vinden de Implementatie & optimalisaties-subsecties en het prestatie-onderzoek; de theoretische bevindingen en de kerkhofbijlage zijn geschreven om ook buiten de fotografie herbruikbaar te zijn; en hoe dit werk werkelijk is gedaan documenteert het mens–machine-onderzoeksprotocol erachter.

Kleurbeheer voor Linux-gebruikers

Linux loopt nog steeds enorm achter op MacOS en zelfs op Windows als het gaat om het waarborgen van de consistentie van de kleuren die op de monitor worden weergegeven. De breed opgedrongen invoering van de Wayland-grafische server in de meeste Linux-distributies heeft deze situatie nog verder verslechterd, aangezien kleurbeheer lange tijd door de Wayland-ontwikkelaars is geweigerd. De specificatie voor een CMS in Wayland werd uiteindelijk opgesteld in 2020 en de code werd in 2025 samengevoegd in upstream Wayland, door externe bijdragers, en na een lange strijd van de ontwikkelaars van eerdere CMS-software tegen de historische ontwikkelaars van Wayland.1 Sindsdien is de staat van CMS-ondersteuning zeer wisselvallig tussen desktopomgevingen en distributies. En toch tonen de voorlopige resultaten van Ansel-telemetrie 67 % Wayland-invoering onder Ansel-gebruikers.

Verwelkom de nieuwe Ansel-beheerder

Jiyoné (Guillaume Stutin) heeft sinds oktober 2025 het beheer van Ansel overgenomen. Het huidige doel is om Ansel om te vormen tot een coöperatie  waarin gebruikers lid kunnen worden en op democratische wijze de richting en prioriteiten van het project kunnen bepalen, maar die ook een eerlijke vergoeding en een veilige werkomgeving garandeert voor wie zijn arbeid aan het project besteedt. Ik heb de beschrijving van het probleem en de voorgestelde oplossing uiteengezet op de democracy-pagina.

Wijzigingen in de distributie van Ansel-pakketten

Ontwikkeling

Target clones

Het native compileren van de software op de computer verbeterde vroeger de looptijden op de CPU met ongeveer 30 %, vergeleken met voorgebouwde pakketten. De reden is dat de compiler specifieke optimalisaties maakt voor de doelhardware waarop hij wordt gecompileerd, terwijl voorgebouwde pakketten generiek moeten blijven en behoudender optimalisatie inzetten omwille van brede ondersteuning. Merk op dat OpenCL-kernels sowieso worden gecompileerd voor jouw specifieke GPU met behulp van jouw OpenCL-driver, dus daar ligt het verhaal anders.

Kleurbediening eindelijk correct

Development Design

Inleiding

Gereedschappen versus machines, ambachten versus industrie

In zijn boek The Technological Society (1954) presenteert Jacques Ellul het verschil tussen de tijd vóór en na de industriële revolutie als volgt:

Het pre-industriële tijdperk is het rijk van het gereedschap en van het ambacht. De belangrijkste eigenschap van gereedschappen is dat ze generiek, veelzijdig en aanpasbaar zijn. Het is aan de ambachtsman om zijn vaardigheden te ontwikkelen om de gereedschappen zijn bedoeling te laten volgen, zodat de hand de beperkingen van het instrument compenseert. Dit concept is vandaag de dag nog steeds welbekend bij muzikanten: je moet oefenen, leren, proberen, falen, opnieuw proberen… er zijn geen sluiproutes. Ellul benadrukt het idee van spaarzaamheid dat bij gereedschappen hoort: middelen zijn beperkt, dus je gereedschapsset wordt vrijwel bepaald door wat je je kunt veroorloven, kunt dragen, kunt beheersen en lokaal kunt bouwen. Trends veranderen langzaam en zijn lokaal, omdat ze lokale middelen gebruiken en zich aanpassen aan lokale behoeften, en gereedschappen volgen hetzelfde patroon. Gereedschappen zijn erfstukken die van meester op leerling worden doorgegeven, van ouder op kind. Ze worden niet incompatibel of verouderd.

De lichttafel en de mipmap-cache opnieuw ontwerpen

Ontwikkeling Herontwerp Prestaties

Tussen januari 2022 en maart 2026 landde Ansel 297 niet-merge commits met betrekking tot het lichttafel-raster, de miniaturen daarvan en hun renderpipeline en caching. Ik heb geprobeerd het zo lang mogelijk uit te houden met de sjofele Darktable-lichttafelcode, alleen ontvet, maar helaas was het pure technische schuld en het was pijnlijk traag.

Darktable „beheert" namelijk de belabberdheid van zijn lichttafel door de omvang ervan te verkleinen: de linker- en rechterzijpanelen nemen veel weergaveoppervlak in beslag, waardoor er nog minder ruimte overblijft voor de lichttafel om opnieuw te tekenen. Sinds Ansel het rechterzijpaneel verwijderde en de inhoud daarvan samenvoegde met het linkerpaneel en het globale menu, was er meer oppervlak om te tekenen, meer CPU-werk te doen, en werd het verschrikkelijke ontwerp van de lichttafel des te schadelijker.

Volledige revisie van de pipeline

Development

Sinds ik Darktable begon te gebruiken, rond 2012, was ik altijd verbaasd over hoe weinig RAM het gebruikte. Mensen denken dat het goed is dat een applicatie zuinig omgaat met het geheugen, en dat is zeker waar als we het over je desktopomgeving hebben. Maar als we het hebben over productiesoftware die zware pixelberekeningen uitvoert op afbeeldingen van 12 tot 54 Mpixels, dan betekent dit dat dezelfde zware berekeningen keer op keer worden uitgevoerd in plaats van te worden bewaard om later hergebruikt te worden. Daar dient een cache voor: het vermijden van dure berekeningen. En hij zou daarvoor alle beschikbare RAM moeten gebruiken, want rekenen is energie verspillen, en dat heeft een concrete impact als je op batterij werkt. Bovendien heb je voor die RAM betaald en het gebruiken ervan maakt je batterij niet leeg. De CPU/GPU daarentegen…

Samenvoegen van bewerkingsgeschiedenis robuust en voorspelbaar gemaakt

Development

Memoires van een kerel die te veel tijd besteedde aan het opruimen van andermans stront en het betalen voor hun slechte beslissingen, aflevering #te veel.

Bewerkingsgeschiedenis kopiëren/plakken en stijlen zijn kernfuncties in Ansel, en degene die het zijn titel „workflow-app" doet verdienen (of niet). Maar het is ook een van de moeilijkste om intern goed te krijgen. Gebruikers zien een lijst met bewerkingen, maar onder de motorkap zijn die bewerkingen afhankelijk van de pipeline-volgorde, de module-instanties en de maskers. Als twee afbeeldingen verschillende pipeline-topologieën hebben, kan het naïef kopiëren van bewerkingen tot inconsistenties leiden.

Sneltoetsen (accelerators) vanaf nul herschrijven

GUI Bruikbaarheid

In mijn stellingnemende bericht, Darktable: crashing into the wall in slow-motion, presenteerde ik de treinramp die de nieuwe „Great MIDI turducken" was. Het doel van deze turducken1 was om het sneltoetsensysteem te herschrijven om het uit te breiden voor MIDI-apparaten.

Tot op de dag van vandaag ben ik nog steeds boos over deze onderneming van massavernietiging, hier is een samenvatting van de redenen:

  1. het verving in 2021 een sneltoetsensysteem dat behoorlijk goed was, functioneel compleet, goed getest, stabiel en gecodeerd in minder dan 1500 regels (commentaar inbegrepen),
  2. …om ondersteuning toe te voegen voor MIDI-apparaten en PlayStation-gamepads (!?!)…
  3. …maar in mijn Darktable-enquête van 2022, één jaar na deze nieuwe functie, van de meer dan 1251 gebruikers die deelnamen:
    • had 81% van de gebruikers geen MIDI-apparaat en was niet van plan er een aan te schaffen,
    • wist 2% niet eens wat een MIDI-apparaat was.
    • had 8% van de gebruikers een MIDI-apparaat maar gebruikte het niet met Darktable,
    • overwoog 6% misschien in de toekomst een MIDI-apparaat aan te schaffen,
    • had 2% van de gebruikers een MIDI-apparaat dat ze daadwerkelijk in Darktable gebruikten,
  4. de code was absoluut verschrikkelijk, wat betreft:
    • codekwaliteit: onleesbare if/switch-case-statements genest op 4 niveaus, midden in functies van 1000 regels (ik plaatste voorbeeldfragmenten in mijn artikel),
    • codevolume:
      • 3546 regels code voor Darktable 4.0,
      • 4397 regels code voor Darktable 5.0,
      • de toename in volume is een direct gevolg van het proberen te repareren van bugs in een architectuur die niet gerepareerd kan worden omdat de complexiteit ervan meer complexiteit bevordert. Dat komt allemaal voort uit het ontwerp, maar problemen die door complexiteit veroorzaakt worden oplossen met het toevoegen van meer complexiteit is geen oplossing.
    • codecomplexiteit:
      • cyclomatische complexiteit :
        • 1088 voor Darktable 4.0,
        • 1245 voor Darktable 5.0 (details ),
      • cognitieve complexiteit :
        • 1885 voor Darktable 4.0,
        • 2098 voor Darktable 5.0 (details ).
      • het is verreweg de meest complexe functie van de software, ook al werkt het niet op afbeeldingen. Ter vergelijking: de op één na meest complexe functie is de EXIF-metadata-decodering, die een cognitieve complexiteit van 1348 heeft.
  5. het decodeert door ontwerp geen toetsmodificatoren, maar behandelt alleen hardware-toetsaanslagen, wat betekent:
    • „1"-invoer van het numerieke toetsenblok wordt gedecodeerd als Keypad End,
    • „1"-invoer van een Frans AZERTY-toetsenbord wordt gedecodeerd als Shift+&, of Shift+" op BÉPO,
    • je moet daarom al je op cijfers gebaseerde sneltoetsen dupliceren voor elke manier om een cijfer in te voeren, en erop voorbereid zijn dat het sneltoetsinstellingenvenster geen enkel echt cijfer in de toetscombinaties bevat.
  6. het ontwerp aan de gebruikerskant is absoluut verschrikkelijk, met veel te veel te configureren acties en emulaties („effecten"), die zelfs 4 jaar later niet volledig gedocumenteerd zijn (wat is „ctrl-toggle"? „right-activate"?), en de sneltoetsconfiguratie gebruikt een raar gesplitst venster dat nergens op slaat,
  7. de implementatie is ook verschrikkelijk: de functie is op de hoogte van de hele software-GUI, en de software-GUI is op de hoogte van de sneltoetscode. Er is hier geen modulariteit, en iets veranderen in de sneltoetscode kan overal in de software onverwachte en ongewenste effecten hebben.2 Kijk maar naar de afhankelijkheidsgraaf hieronder,
  8. meerdere „sneltoetsen" (of MIDI-bindingen) kunnen aan dezelfde actie gekoppeld worden, wat betekent dat elke gebruikersinteractie de hele lijst met beschikbare acties moet doorzoeken, wat zeer inefficiënte sneltoetsafhandeling veroorzaakt, GUI-vertragingen in sommige gevallen en „onbekende toetscombinatie"-fout-positieven in bijzondere gevallen.
image
Niet-gedecodeerde cijfertoetsen en rare venstersplitsing tussen „action" en „shortcut".
image

De afhankelijkheidsgraaf van src/gui/accelerators.c (Great MIDI turducken) vóór de herschrijving. Raad eens waarom we het „spaghetticode " noemen… Dit maakt duidelijk dat er een tweezijdige afhankelijkheid is tussen de accels-code en de rest van de GUI-code. Dit is een nachtmerrie om te onderhouden.

Welkom Ansel GPT !

Aankondiging

Nadat ik eindelijk de hele website en documentatie had gekoppeld aan een waterdichte vertaalworkflow (met po4a bovenop Hugo), die toevallig exact dezelfde toolset en logica gebruikt als de Ansel-applicatie, kreeg ik het idee om lege vertalingen te automatiseren, eerst vanuit de vertaalbestanden van de software, daarna via de ChatGPT API, die Markdown-syntaxis behoorlijk goed vertaalt.

Als je alleen werkt, kun je niet rekenen op sociaal lijntrekken , dus moet je slim zijn. Je kunt de lijst met dingen die ik al geautomatiseerd heb op de achtergrond voor Ansel bekijken.

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.

Welkom, ontwikkelaarsdocumentatie !

Ontwikkeling

In december 2019 vroeg ik of iemand ervoor wilde zorgen dat er AppImage-pakketten werden aangeboden  voor Darktable. Het voor de hand liggende voordeel zou zijn geweest dat vroeg testen mogelijk werd, vóór de uitgave, door mensen die de broncode niet zelf kunnen bouwen, om zo hopelijk vroege feedback te geven en te helpen met debuggen voordat er werd uitgegeven. Dit is nooit een prioriteit geweest, wat betekende dat het prima was om zowel vóór de uitgave als na de uitgave in een stormloop bugs te moeten fixen.

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 .

De pipeline-cache en 10 jaar oude bugs oplossen

Ontwikkeling

Samenvatting van de vorige afleveringen

  1. Tussen 2020 en 2022 onderging Darktable een onderneming tot massavernietiging, door een handjevol gasten met meer vrije tijd en welwillendheid dan werkelijke vaardigheden,
  2. In 2022 begon ik een vervelende vertraging op te merken  tussen GUI-interacties met schuifregelaars en de feedback/update van diezelfde schuifregelaars. Bij gebrek aan feedback die aangaf dat de waardewijziging was geregistreerd, konden gebruikers de waarde opnieuw wijzigen, waardoor er extra pipeline-herberekeningen werden gestart en hun computer feitelijk bevroor omdat de stomme GUI nooit zei „begrepen, wacht nu even".
  3. Ik ontdekte dat opdrachten voor pipeline-herberekening tweemaal per klik werden uitgegeven (eenmaal bij het „knop ingedrukt"-event, eenmaal bij het „knop losgelaten"-event), en nog eens voor elke muisbeweging, maar ook dat de GUI-toestanden schijnbaar ná de pipe-herberekening werden bijgewerkt.
  4. Ik loste dat op door de aangepaste GUI-regelaars (de Bauhaus-bibliotheek) vrijwel te herschrijven. Ik dacht dat het voorkomen van roekeloze herberekenopdrachten de vertraging zou verhelpen: dat deed het niet. Vervolgens ontdekte ik dat het aanvragen van een nieuwe pipeline-herberekening vóórdat de vorige klaar was, wachtte tot de vorige klaar was, ondanks een uitschakelmechanisme dat vele jaren geleden was geïmplementeerd en dat had moeten werken.
  5. Ik loste dat op door een kill-switch-mechanisme op pipelines te implementeren, op basis van commentaar in de code uit de jaren 2010 en interne hulpprogramma’s die misschien wel nooit gewerkt hebben. Dit werkte niet altijd omdat de kill-opdracht vaak met een merkbare vertraging aankwam. Ook nu weer werd de GUI-vertraging niet verholpen.

De importtool herschrijven

Ontwikkeling Herontwerp

Ansel erft van Darktable de ruggengraat van zijn database: de niet-destructieve bewerkingsgeschiedenissen worden per foto opgeslagen in een SQLite-database, samen met metadata en andere door de gebruiker gedefinieerde gegevens. De database bewust maken van nieuwe foto’s gebeurt door foto’s te „importeren" van een schijf of een geheugenkaart. Daar komt de importtool in beeld.

Helaas is de Darktable-importeur nog zoiets dat rond 2020 werd verminkt en omgevormd tot iets diep verontrustends, want het is een bestandsverkenner die op geen enkele eerder bekende bestandsverkenner lijkt, en die erin slaagt om basisfuncties te missen (zoals Ctrl+F of EXIF-voorbeeld) terwijl hij tegelijk overladen is met nutteloze (zie hieronder). Hier verliezen we menig toekomstig gebruiker, en het is nog maar stap 0 van de workflow. Wat een geweldig visitekaartje van wat een „workflow-app" kan doen!

Color lexicon

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.

Een noodstop op de pipeline implementeren

Ontwikkeling

Ik heb heel lang gedacht dat er een of ander noodstopmechanisme op de pixelpipeline zat. Het gebruiksscenario is het volgende:

  1. je verandert een moduleparameter,
  2. de voorbeeldweergaven (die in het midden van de donkere kamer en de miniatuur in het linkerpaneel, ook gebruikt voor het histogram en de kleurenkiezers) herberekenen hun pipeline om rekening te houden met die verandering,
  3. een van de voorbeeldweergaven is klaar met renderen vóór de andere, en het resultaat is duidelijk niet wat je wilde,
  4. je verandert de moduleparameter opnieuw, zonder te wachten tot de herberekening klaar is.

In dat geval wil je alle actieve pipelines afbreken, omdat hun uitvoer toch niet gebruikt zal worden, en meteen alles opnieuw beginnen te berekenen met de nieuwe parameters. Alleen doet Darktable dat niet, het laat de pipeline eerst afronden voordat die opnieuw wordt gestart, en gezien de commentaren in de broncode lijkt het een vrij recente regressie te zijn en niet het oorspronkelijk bedoelde gedrag.

GUI-besturingselementen un-darktable-en

Ontwikkeling

Darktable heeft zijn eigen GUI-widgetbibliotheek, voor schuifregelaars en comboboxen (ook wel keuzelijsten of selectievakken genoemd), genaamd Bauhaus (in de broncode staat die in src/bauhaus/bauhaus.c). Hoewel ze Gtk als backend gebruiken, zijn Bauhaus-objecten aangepaste objecten. En zoals veel dingen in Darktable geldt: aangepast staat gelijk aan rot.

In 2022 ‍merkte ik parasitaire hertekeningen en vertragingen  op bij het gebruik ervan, wat tot een frustrerende gebruikerservaring leidde: het hertekenen van de widget leek te wachten tot de herberekeningen van de pipeline waren voltooid, wat betekende dat gebruikers niet echt zeker wisten of hun waardewijziging was geregistreerd, waardoor ze het opnieuw konden proberen en zo een nieuwe cyclus van dure herberekening startten, en hun computer effectief enkele zeer frustrerende minuten bevroren met nutteloze tussentijdse herberekeningen van de pipeline.

Wijzigingen in de distributieondersteuning voor het Linux AppImage-pakket

Aankondiging

Rawspeed (de bibliotheek die de decoders voor camera-raw-bestanden levert) heeft de ondersteuning voor GCC < 12 afgeschaft. Als gevolg daarvan kan ik de AppImage niet langer bouwen op Ubuntu 20.04 (met Github-runners), maar moet ik hem bouwen op 22.04.

Dit betekent dat elke Linux-distributie met een libc ouder dan 2.35 vanaf vandaag de nieuwe AppImages niet meer kan starten. Dat zou de meeste gebruikers die distributies draaien die in 2021 of recenter zijn bijgewerkt niet moeten treffen. Ubuntu 20.04 en andere LTS-/oude stabiele distributies (Debian stable) kunnen wel getroffen worden.

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.

Uitleg over Ansels herontwerp van modulegroepen

Ontwerp

Als je van Darktable komt, ben je in de donkere kamer misschien dit gewend:

image

terwijl Ansel je dit biedt:

image

Dat is geen toeval, en het is tijd om uit te leggen waarom, en waarom dit niet zal worden uitgebreid met aanpassingsmogelijkheden.

Nieuwe build-opties voor Linux

Ontwikkeling

Ik ontdekte per ongeluk dat het Linux-buildscript een „package"-build gebruikte, wat betekent dat de CPU-optimalisaties beperkt zijn tot generieke optimalisaties om portable binaries te produceren die op elk x86-64-platform geïnstalleerd kunnen worden. Met „gebruikte" bedoel ik dat de package-build niet expliciet was uitgeschakeld, dus was hij standaard ingeschakeld.

Hoe dan ook, dit is nu standaard uitgeschakeld, aangezien de eigenlijke packages (.exe en .appimage) niet via dat script gebouwd worden, dat in de eerste plaats bedoeld is om eindgebruikers te helpen. Om het vorige gedrag terug te krijgen, zou je het volgende moeten uitvoeren:

Dev-dagboek #2: introductie van Chantal

Ontwikkeling

2022 was zo slecht wat betreft rommelmails en ruis dat ik ben begonnen met de Virtual Secretary , een Python-framework om intelligente e-mailfilters te schrijven door informatie tussen verschillende bronnen te combineren om te raden wat inkomende e-mails zijn en of ze belangrijk/urgent zijn of niet. Als ik het over rommelmails heb, gaat het ook over Github-meldingen, pings op pixls.us (goddank heb ik mijn account op dat stomme forum opgeheven), YouTube, en directe e-mails van mensen die hopen in het privé wat hulp te krijgen.

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

Ontwikkelaarsdagboek

Ontwikkeling

Het is ongeveer 3 maanden geleden dat ik „R&Darktable" (wat niemand goed leek te snappen) omdoopte tot „Ansel", vervolgens de domeinnaam kocht en de website vanaf nul opbouwde met Hugo (ik had nog nooit in Golang geprogrammeerd, maar het is grotendeels templatecode).

Daarna besteedde ik in totaal 70 uur om de nightly-pakketbuilds voor Windows en Linux werkend te krijgen voor continuous delivery, iets wat Darktable nooit goed voor elkaar kreeg („je kunt zelf builden, het is niet moeilijk"), om vervolgens de bugtracker te zien ontploffen na de release (niets beter dan de pre-release-sprint aaneenrijgen met een post-release-sprint om je levensverwachting te verkorten).

Darktable: in slow motion tegen de muur aan

Wat gebeurt er wanneer een bende amateurfotografen, die amateurontwikkelaars zijn geworden, vergezeld door een stel back-endontwikkelaars die bibliotheken voor ontwikkelaars ontwikkelen, besluit om zonder methode of structuur te werken aan industriële software voor eindgebruikers, waarvan de kerncompetentie (colorimetrie en psychofysica) zich ergens tussen een bacheloropleiding fotografie en een masteropleiding toegepaste wetenschappen bevindt, terwijl ze beloven om elk jaar 2 versies te leveren zonder projectmanagement? Dat alles, natuurlijk, in een project waar de oprichters en de eerste generatie ontwikkelaars verder zijn getrokken en gevlucht?

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.

Inleiding

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.