Spectral film simulations from scratch

I am the maintainer of ART in nixpkgs and I wouldn’t mind having this in there at all :wink:

6 Likes

And just like that you got it! Awesome man!!!

2 Likes

Great addition! The initial implementation here seems to have a rather hard falloff, which creates an obvious dark halo and makes the effect seem less integrated into the photo.

Took a while to find actual analogue references, but from what I see the falloff is super soft:

9 Likes

Thank you for the reference photos!

1 Like

Haha 3rd photo down is one of my images!

Something to note is if an exposure is 4 secs long and i want to add diffusion i have to add more density, about 1/3 a stop if i do 50% diffusion.

Base Print Exposure:
4sec f8

Print Exposure with Diffusion:
2.5sec f8 + 2.5secs with diffusion over lens

(and usually i use like a plastic negative sleeve that my negatives come on when i get them developed)

Idk if this helps andre as printing can be deeply personal quess work.

3 Likes

Nice shot! :wink:

Spektrafilm/ART/vkdt workshop @ Grazer Linuxtage.

@arctic @agriggio @grubernd @hanatos

I hope I/we did not spread too much false info.

Special thanks to @grubernd for participating in the discussion.

7 Likes

When your digital photo sits at the top of the AnalogComunity on Reddit, you know that the emulation is good :wink:

8 Likes

I was thinking of a way to automatically neutralize the color cast introduced by the film simulation, so not really something in the spirit of this topic but it could be usefull.

The color cast could be removed with rgb curves or with mathematical operator too.

Let’s start with a starting image:

The first step is to apply the film simulation on the original image, we could call this image rgb_film_simulation_cc (pratically every pixels in this image are the rgb film simulation results multiplied by a color cast factor):

The second step is to apply the film simulation on the grayscale version of the original image, we could call this image gray_film_simulation_cc (pratically every pixels in this image are the grayscale film simulation results multiplied by a color cast factor):

The third step is to remove the saturation from the latest image in step 2:

Now we just need to apply the follow expression:

Film simulation without color cast = (rgb_film_simulation_cc / gray_film_simulation_cc) * gray

And this is the result:

How it works?
this part
(rgb_film_simulation_cc / gray_film_simulation_cc)
could be written as follow
(rgb_film_simulation * color_cast) / (gray_film_simulation * color_cast)
the result is now without the color cast
rgb_film_simulation / gray_film_simulation
We just neeed to mutiply this result by the gray_film_simulation image to obtain the rgb_film_simulation without color cast
rgb_film_simulation / gray_film_simulation * gray_film_simulation

1 Like

Hi,

I’ve installed spektrafilm using pip from the dev branch.
The program run just fine but when I try to save the result I have a “segmentation fault” error then crash.

I’ve tried on small size image and different output type of file without any effect.

Do you know what could be the root cause of this ?

Note that I’m testing this on windows 10 not yet tested on Linux also agx-emulsion worked great.

Thanks a lot for this tool, this is something I was looking for for quite a long time !