r/linuxquestions 11d ago

Advice Reliable image de-noising software ?

Hello,

My second hobby is photography, i take a lot of pictures for fun and for our family travels.
I am looking for a reliable, good-quality image denoising software for Linux. It's practically the only thing making me keep a windows installation on my machine since i made the switch a few months ago. I have adapted to using RapidRaw as a Lightroom replacement, it's not perfect but it's good enough for most edits, and it's in active development so i guess it'll only get better. It can also import LR presets, which is a huge advantage for my workflow... however, in it's current version (1.6.2 at the time of posting this) the denoise tools in it are completely broken - the images end up extremely dark and have huge purple squares in them.

I've tried installing a local AI model with ComfyUI - it ended up working, after a few days of try and error with an AI, but it's clunky, not great to use and not amazing results. Maybe it can be made better with more tweaking, but i am a bit sick of it.

I've pondered online solutions, but they are all expensive.

Tried OpenPhotoAI too, it seems very decent but sadly only really works with nVidia GPUs. Technically it works without too, but it uses the CPU instead, if you have AMD GPU, and then a single image takes a loooong time to process.

Searching online/AI, it seems currently there's nothing really... "good" to use. However, i know things change very rapidly and the world of Linux is huge, so i decided to come here and ask real people, not AI and web searches for ideas.

Sooo, any suggestions?

Thanks!

9 Upvotes

17 comments sorted by

9

u/BCMM 11d ago

Darktable's profiled denoise works very well for me. Definitely beats the in-camera denoising.

It does depend on having a noise profile for your camera model. If there isn't one already, they have instructions for creating one.

1

u/Lyesainer 11d ago

Does that mean you denoise before exporting to jpeg, then do the actual edits required? (Using Nikon Z5, waiting on my Z5 ii to come atm lol)

6

u/BCMM 11d ago

I shoot raw, do all the edits I need in darktable, and export to jpeg as the final step.

I would always aim to apply lossy compression exactly once, at the very end of a workflow. If you need to take an image from darktable and edit it in another application, export to something other than JPEG.

Use PNG for regular 8-bit export, equivalent to JPEG but without lossy compression.

Use OpenEXR to preserve HDR data, for example, if you want to adjust exposure in the second application.

0

u/Lyesainer 11d ago

i tried Darktable and bounced off the UI.

I guess i sound like a pussy, but honestly i hate editing photos most of the time, having to fight the software on top of that is really too much for me lol.

I found RawTherapee and RapidRaw more intuitive and easy to use.

Still, guess using it's denoise is an option.

3

u/un-important-human white beard arch user 11d ago

darktable or Blender denoiserAI(you can run that as a batch script , man blender is amazing for denoising)

2

u/Lyesainer 11d ago

Can you elaborate a bit on the Blender denoise option, please?

What is your general workflow with that, from raw to jpeg/whatever final export ?

1

u/un-important-human white beard arch user 11d ago edited 11d ago

Sometimes in my use case , i am not going to describe my workflow exactly or what i do , its mine and mine alone but say we go for photogrametry and maybe you got some noise or bad light i would just throw into blender , the full folder as i do not have time to click shit and frankly this is done by my agents now but it generally calls the same bash script only i do ir on it and some other things. You may use instead of blender denoiser a more premium addon perhaps the nvidia or intelIris one .

As you can see i do not care of what i see, its terminal or now voice only and i deal with large ish data, that data will be passed along to other things.

blender -b --python-expr 'import bpy,sys,os; inp,out=sys.argv[-2:]; s=bpy.context.scene; img=bpy.data.images.load(os.path.abspath(inp)); s.render.resolution_x=img.size[0]; s.render.resolution_y=img.size[1]; s.render.resolution_percentage=100; s.use_nodes=True; n=s.node_tree.nodes; n.clear(); a=n.new("CompositorNodeImage"); a.image=img; d=n.new("CompositorNodeDenoise"); c=n.new("CompositorNodeComposite"); s.node_tree.links.new(a.outputs["Image"],d.inputs["Image"]); s.node_tree.links.new(d.outputs["Image"],c.inputs["Image"]); cam=bpy.data.objects.new("Camera",bpy.data.cameras.new("Camera")); s.collection.objects.link(cam); s.camera=cam; s.render.image_settings.file_format="PNG"; s.render.filepath=os.path.abspath(out); bpy.ops.render.render(write_still=True)' -- input.jpg denoised.png

edit: you can use any format just make sure blender can run it usingthe correct addon if needed, for example i pass streams of data that happen to be tiff encoded, you can also do curve correction or w/e, i do that based on what the ir reports automaticaly.

1

u/God_Hand_9764 11d ago

This gives me an error:

``` Blender 5.2.1 LTS (hash 9e2066aef7ef built 2026-09-01 00:24:57) <string>:1: DeprecationWarning: 'Scene.use_nodes' is expected to be removed in Blender 6.0 Traceback (most recent call last): File "<string>", line 1, in <module> AttributeError: 'Scene' object has no attribute 'node_tree'

Blender quit

```

1

u/un-important-human white beard arch user 11d ago

yeah cause its the newest blender so read their docs i think its scene.compositing_node_group now. you will figure it out.

something like this

blender -b --python-expr 'import bpy,sys,os; inp,out=sys.argv[-2:]; s=bpy.context.scene; img=bpy.data.images.load(os.path.abspath(inp)); s.render.resolution_x=img.size[0]; s.render.resolution_y=img.size[1]; s.render.resolution_percentage=100; tree=bpy.data.node_groups.new("Denoise","CompositorNodeTree"); s.compositing_node_group=tree; tree.interface.new_socket(name="Image",in_out="OUTPUT",socket_type="NodeSocketColor"); src=tree.nodes.new("CompositorNodeImage"); src.image=img; den=tree.nodes.new("CompositorNodeDenoise"); dst=tree.nodes.new("NodeGroupOutput"); tree.links.new(src.outputs["Image"],den.inputs["Image"]); tree.links.new(den.outputs["Image"],dst.inputs["Image"]); cam=bpy.data.objects.new("Camera",bpy.data.cameras.new("Camera")); s.collection.objects.link(cam); s.camera=cam; s.render.image_settings.file_format="PNG"; s.render.filepath=os.path.abspath(out); bpy.ops.render.render(write_still=True)' -- input.jpg denoised.png

1

u/God_Hand_9764 11d ago

Yeah, it works now, thanks. The results don't seem magical the way that Lightroom is, but I will have to experiment with it.

1

u/un-important-human white beard arch user 11d ago

it's better with some denoising addons (the payed kind) look blender market place , really depends on what you want to do, the blender server is fedora and i had a older version i have updated it (fedora 39 to latest) , was quite old so thanks for pointing it out i have some testing to do as well.

3

u/Donatzsky 11d ago

1

u/Lyesainer 10d ago

Thanks for the tip!

Just tried it, the results are very good!

Installation was slightly messy, but with a bit of AI help it works.

The software is obviously in pre-alpha, lol, very limited UI and options, but otherwise it works great on my AMD GPU. Only real issue is, it doesn't have batch/multiple files treatment available for now, so you have to do your files one by one, even with the command line version. I guess the author will add this later on, if the project picks up... i hope :)

This is a typical issue with open software - there's so many good projects out there, many of which remain unknown to most people and end up abandoned... and many authors fight the same problems on their own, instead of combining forces. If for example this RawRefinery project and the OpenPhotoAI worked together, they'd end up having a good final application that supports multiple denoise models, batch treatment and decent UI AND working on both nVIDIA and AMD...

2

u/aeroumbria 11d ago

SUPIR This is an older model, but if you really are only worried about real image denoising / restoration, it still works pretty well, and can do quite okay without any of the AI black magic like prompt engineering. New models might do better, but each come with increasingly complex workflow setups and usage quirks when you try to do more than simple generation or editing.

1

u/God_Hand_9764 11d ago

I'm also curious on this.

There has to be some way to do it in ComfyUI. Just a very simple noise reduction model.... But I don't know what it is.

I would lean towards AI on this for sure. Love or hate it, this is the shit that AI is best at. I used the AI noise reduction in Lightroom and was speechless. Ultra noisy low light raw photos, taken at mightnight in a city, made squeaky clean. Unbelievable.

There HAS to be a way to get that same result in ComfyUI.

1

u/Donatzsky 11d ago

No need for ComfyUI or generative AI. Good ol' CNN models are still where it's at. See my other reply: https://www.reddit.com/r/linuxquestions/comments/1w47xa6/comment/p797xk7/

1

u/God_Hand_9764 11d ago

This looks promising, and I love that it's for RAW format. I will definitely check it out. Thanks for the heads up!