Nope, looks like interesting reading, thanks for clarifying!
That’s not why primaries were added. The primaries are the core feature; the curve is of lesser importance. But let’s not drag dt agx into unrelated discussions.
Hi @ghost ,
My wording was a bit misleading, what I meant that I couldnt find a publicly available and working tool which tries to emulate the process of exposing negative color film layers and then printing/scanning it. A coplete pipeline from a raw image to a finished simulation. Of course there has been research done in this field and similar tools have been developed, be it for slightly different purposes.
Thanks!
hi everyone, I am very sorry for the long absence. life had a little toll on me, but i am slowly catching up and planning to get back up to speed
and update myself on what i missed.
i agree @ghost that the work here is not to be considered fully novel. i mean, the core knowledge is so digested that there are full books about it, including the ones i based most of the things, e.g. Digital Color Management by Giorgianni Madden 2008 Wiley.
and there are probably countless efforts in this direction.
i believe the novel aspects are:
- the use of a cutting edge spectral upsampler by @hanatos
- the use of datasheet-only spectroscopic data as input, and the way profiles are slightly tuned to ensure a stable gray output with exposure
- the simple coupler inhibition model to achieve a decent saturation
- the multilayer grain model
and in general the project started as a grain simulation that found its best way to be implemented into the full photography process model. so i agree that there is a lot of common sense photography knowledge reimplemented in this project (because wheels like to be built many times
, it’s them not us)
@Bruno if you wanna chat or have some input/help let me know, it’s fun that you are thinking of doing a thesis on these topics. i am even a little jealous ![]()
nice to see you’re back. sorry to hear you had a hard time, hope for the best going forward.
i believe @ghost was referring to @Bruno’s comment about research about prior work, assuming this was about references to literature. and also research is about diligently assembling tiny pieces until they become something new. i wouldn’t diminish your work here. none of us was capable of ingesting new film stock while you were away, can’t be that trivial.
I just read though Digitizing film using DSLR and RGB LED lights - #22 by damirk and wandered if at approach would meld well with this software. I then though, would there be any value in having a light source with a range of different spectrum LEDs that we could cycle through to build a source image with more than just RGB input spectrum?
LEDs are small and it would be easy to have a dense array of different bulbs. They could be software controlled. I’m thinking of a process like this:
- Take an image with each colour LED and no negative. Use that to figure out the raw response of the sensor+Bayer mask and fix any inconsistencies in backlight brightness uniformity. Also calibrate light brightness and or exposure as required.
- With film in place take an image with each colour light, correct the captured data with the information from 1.
- Generate a spectral image and import into the negative processing pipeline.
This would all have to be automated or it would be too cumbersome, so in use, it would be a matter of pressing the setup button with no negative, then pressing the capture button for each negative.
Would that result in a meaningfully better result?
probably yes! nothing looks as good as real data… before you start building stuff in hardware, i’d probably validate some of the overall idea via existing data. maybe search here: Hyperspectral Imaging Open Ecosystem which holds links to hyperspectral images like Spectral scene database · ISET/isetcam Wiki · GitHub which might be great input for the film simulation. best to combine with a standard format for spectral images, like https://cgg.mff.cuni.cz/wp-content/uploads/2021/06/jcgt_2021_spectral_exr.pdf or Compression of Spectral Images using Spectral JPEG XL
Wow, thanks, those are amazing. They are also highlighting that whilst I’m comfortable with hardware, my maths and software may be a bit lacking! I do think the idea is at least physically practical though.
in the ART and vkdt implementations, is there a recommended workflow? I mean obviously there are inside agxemulsion and outside of the tool slider that do similar things, e.g. change brightness - is it recommended to use the art/vkdt tools first or just do a very broad edit outside agxemulsion and then the rest inside agxemulsion?
Oftentimes I have the following situation: I switch off curves/tonemapping, then I adjust brightness, and then I switch on agxemulsion, and the the photo suddenly get very bright or dark - in such cases, is it recommended to fix this with the agxemulsion sliders or with the ART/vkdt-sliders?
any reason why you’d edit the image first before switching on the film sim? i see it as a display transform and i wouldn’t try to edit an image without film curve first (except when mastering for hdr monitors).
using the film/paper exposures has very different results, use for artistic intent. film exposure is equivalent to exposing the input in a preceeding module.
Wow, what an amazing project!
I found out about this Project from Nico at Demystify color. I’m sure you will be seeing a lot more people come in from there!
Anyway, was hoping for a bit of advice!
When I create and use a combination of negative and print LUTs in Davinci Resolve, I’m basically setting up a node structure like this:
IDT (to DWG/DI) → NEGATIVE → PRINTER LIGHTS IF DESIRED → PRINT FILM → ODT (R709/G2.4).
I’m noticing right off the bat I’m getting pretty extreme contrast ratios which are making me need to do a contrast trim somewhere in this chain.
If I put a contrast node before the negative, I’m concerned that I’ll be sending it a log image that it is not properly expecting. I’m usually needing to reduce contrast by about 50% at that stage. Alternatively, I’ve tried putting a contrast node inside a “timing” section between the negative and print nodes. This works, but it seems to sometimes cause strong hue shifts. I couldn’t tell if that’s normal for that timing process, or if I’m messing with the print lut’s expected input and shifting further away from the emulation’s intended math. Finally, I’ve done contrast trims after the print emulation. This definitely looks the most natural since we are essentially grading the printed image, but it leaves parts of our image clipped/crunched because they have already been affected by the curve’s toe/shoulder, so it’s not an ideal way to preserve contrast as a whole, rather it seems best for post look trims.
Am I missing something? Is it a combo of all of the above?
Not sure if there is some intention that I’m missing here as to what each LUT is being fed.
All of your help is much appreciated!
Best,
-Daniel
Hey @RTLdan and welcome! There are a few pieces of software discussed here, would you mind telling us which one you are referring to and perhaps link us to the tutorial that references the software in question?
Thanks!
Oh, my bad! Sorry for not being more clear - I’m currently experimenting with Spectral Film Lut from Jan Lohse (GitHub - JanLohse/spectral_film_lut: Generate LUT for film emulation based on film datasheets.).
I don’t have any tutorial for it other than the readme on that Github!
Also, sorry in advance, I’ve tried to read a lot of this thread previously, but haven’t got through it all. So if it’s already been discussed, apologies!
Hope that helps and thanks!
-Daniel
Oh, that looks like a cool project, but I don’t think this thread is about that software, but a different software called agx-emultion
oh nice, there’s b/w stock too!
Interesting project as well even if different. But the point still stands somewhat, the contrast can be a bit much. With the vkdt implementation, I have to quite often raise the exposure, try to fiddle with the parameters but also (locally or globally) lift shadows often before the filmsim node.
maybe post a concrete example, maybe as a playraw?
Cool.
Where did he mention agx-emulsion? Not finding anything on his channel.
Interesting! A Python project. I wonder how difficult it would be to build an .AppImage.
I know this isn’t a darktable thread, but sadly the LUT 3D module in darktable rather limited. But perhaps it would be possible to create LUTs in Spectral Film LUT that could be used in darktable?
Also, the grain module is monochrome only in darktable and grain gets applied pre-interpolation.
I’ll try to find some when I have the time. Though often the case is e.g. faces partly in shadow going too dark so I’ll have to find something else.