Spectral film simulations in ART

Here is a .rw2 that involves a large amount of red that I can see fairly obvious differences in (without agx_emulsion as you said.) (one month expiry)

My reproduction steps on plasma 6 (x11) on a very recent / head git commit:

  1. Configure ART to use system ICC profile configured for my monitor.
  2. Open raw file in ART
  3. Change color management → output profile from sRGB (ICC v2) → sRGB (ICC v4) → Display P3 → Linear Rec. 2020 (ICC v4)
  4. Observe different shades of red in the preview window on each selection - i haven’t actually experimented with exporting, I assume this tags everything correctly, however I found it confusing that this was changing the preview?

My monitor has a color gamut approximately around the Display P3 range, however it seems to still display a difference between Display P3 and Linear Rec. 2020.

I played around with some other files and noticed it’s not as bad, so perhaps I just got unlucky and chose some images with very wide colour gamuts (spaces? range? i am not sure the terminology for this)

Let me know if you feel I should submit a bug properly :slight_smile: otherwise i’d love to know whats going on here, I am sadly a bit new to this area. Should I be selecting my output colorspace while editing then just tuning to that? Usually I would edit a photo to my liking then soft-proof it to sRGB and Display P3 / a print profile if needed. Do you have a recommendation for a workflow here?

I gave these a go also, they are pretty good actually, I think I had to install the ACES scripts or something to get them right? Great feature! :slight_smile:

The RGB grain is very nice now, though I did observe some repeated patterns I guess in it? it looks like the grain has a mesh sort of pattern to it. Please see this image to see what I mean.

However I understand this is still under development since I pulled it off git. I am sure that will get ironed out :slight_smile:

Great work though, I don’t mean to be overly critical or anything, it’s really great! I have found using ART to be quite exciting!

2 Likes

Hi,

thanks for the example! I indeed see the difference as well, but I confirm this is the intended behaviour, not a bug.

Different software takes different approaches here, so don’t take my words as gospel :slight_smile:
With that said, IMHO the output profile is part of the image, so the fact that changing the output profile is reflected in the preview is the right thing :stuck_out_tongue:
Soft proofing is something else: it’s a way of estimating how an image will look when displayed on another medium (e.g. another monitor, or a print…). So, soft proofing is about the color profile of the display medium, not of the output image.

Another thing to keep in mind: if you use the “tone curve” tool in “Neutral” mode, it applies a gamut mapping step that explicitly takes into account the output profile. So, changing that will also have an impact in the rendering.

Not really, they are built in.

I’ve seen that happening too, especially visible in RGB mode. I haven’t been able to pinpoint the cause, but I will keep investigating. Increasing the coarseness mitigates it though.

No worries! On the contrary, thanks a lot for the feedback!

2 Likes

Hi Alberto, many thanks for another great tool in ART. Followed your instructions, worked like a charm on Fedora 41 with self-built ART.
And thanks a lot for the original developer @arctic

Hi Alberto,

I found that if we use this function with uv, uv must be installed in .local/bin under user’s home directory and if we install uv with any package manager, we cannot use this function with uv in ART because uv is not installed in .local/bin and ART cannot get the data from axg-emulsion. But why does this happen?

And I start my ART from the directory under the home.

Hi,
This sounds quite implausible to be honest. It’s probably just a matter of finding the right command line. However, I am not a uv user so I can’t really help you much here, sorry…

After further investigation, I found the cause.
It seems that if uv is installed using a link, such as in /usr/bin, ART cannot recognize it and fails. In that case, I found that specifying uv using the full path of the location where it was originally installed, instead of the location of the link, works.

FYI, I found the cause and it should be gone now. The new version just released (1.25.3.1) should not produce any weird pattern

3 Likes

Hi all.
Herein attached you find a pdf which is a step-by-step “howto” for the integration of agx-emulsion into ART using Windows OS.
Please note that, as I report into the document, NOT all the version of agx-emulsion work fine!
In fact, I struggled for some days using the original (2025-02-07) version of agx-emulsion, but I wasn’t able even to run its GUI using both uv and Python venv.

Only when I decided to move to agx-emulsion 2025-03-07 version, I was successfull in installing it!
Then its integration with ART was very easy, after Alberto explanations (many thanks to him!)

So I tested agx-emulsion installation only by using uv that was the only method I applied after the discovery of the the problems I had with agx-emulsion versions.
Maybe that, once a correct release is used, agx-emulsion could install also in a python venv.
No idea about conda.

HTH
Topoldo

ART & agx-emulsion.pdf (231.9 KB)

4 Likes

Hi @Topoldo,
thank you for the contribution! Would you be interested in converting the doc to Markdown? That way I could add it to the “official” docs on the webpage of ART, where it could (maybe) reach a wider audence…

1 Like

I’m trying to convert my “source” .odt file into a .md one.

For doing this I lost all the day, to learn:

  1. Which tool to use for a decent conversion;
  2. A simple and at the same time good markdown editor for Windows.

At the end I was successfull in finding something and now I’m starting to correct something that wasn’t converted correctly.
Maybe tomorrow or - more easily - on Friday, I think I can submit my work here.

Regards,
Topoldo

  1. Pandoc
  2. Notepad++ or Vs code

Wow, thanks a lot! Next time just a txt export would be fine already :slight_smile:

Here I am!
Sorry for the delay: I was involved in other works… :innocent:
Anywhere herein I attach the md version of my “ART & agx-emulsion Howto” for MS Windows.
I hope it is correctly formatted.
Unfortunately I’ve no idea if the accompanying image is inserted correctly or not. If this is not, please correct its syntax.

In fact I’m still a markdown newbie and:
a) I still have to understand how to do insert images
or
b) my markdown viewer is not able to show local images. :thinking:

Regards,
Topoldo

ART & agx-emulsion Howto.zip (70.6 KB)

4 Likes

I was able to install the agx-emulsion stuff using uv on Arch Linux, and I tested today the latest additions in the latest ART.
I really like it, and I find it faster than I thought.
Very cool stuff, great work @arctic and @agriggio .

1 Like

Thanks! Added here: Spectral film simulations in ART with agx-emulsion | ART raw image processor

2 Likes

Maybe you should make the agx-emulsion link to point to the tags directory instead of the specific .zip, so that users in the future can download more recent versions?
Also, I see that many points are identical for other platforms, at least Linux, maybe I can contribute to this page?

Hi,

That would be very appreciated!

Hi all!
After the change to agx-emulsion provided by @arctic yesterday, the “Howto” I provided, is NOT valid anymore.

In fact:

  1. I was able to build agx-emulsion module using uvx but - in my hands - its GUI (napari), which starts automatically after the module was built, opens but gives some errors on the cmd shell if I try to open an image (problem not connected to ART).
  2. I can’t find the right command to use at line 12 inside ART_agx_film.json ie the tool to “join” agx-emulsion to ART.

Topoldo

  1. download and install Python 3.11.9 for windows
  2. get the latest version of agx-emulsion
  3. open a cmd shell, and create a virtual env:
    c:\> cd c:\agx-emulsion
    c:\agx-emulsion> python -m venv venv
    
  4. activate the virtual env:
    c:\agx-emulsion> venv\Scripts\activate.bat
    
  5. install the package:
    c:\agx-emulsion> python -m pip install -e .
    
  6. get the latest version of ART_agx_film.json and agx_emulsion_mklut.py from the ART repository
  7. edit the command in ART_agx_film.json like this:
        "command" : "c:\\agx-emulsion\\venv\\Scripts\\python.exe agx_emulsion_mklut.py --server",
    
  8. Done! (at least, it works for me)

1 Like

On linux, I also updated agx-emulsion using uvx. Now in ART_agx_film.json the following command works:
uv run --python 3.11 --no-project --with-editable /path/to/agx-emulsion agx_emulsion_mklut.py --server

It also works if I remove --no-project, I don’t know if I should keep it or not.

1 Like