jcelaya / hdrmerge

HDR exposure merging
http://jcelaya.github.io/hdrmerge/
Other
367 stars 78 forks source link

Additional blending modes: median, mean, peak hold, etc. #60

Open jannefoo opened 9 years ago

jannefoo commented 9 years ago

When a bunch of images are supplied to the program with the same exposure (so no HDR going on), there could be option to average the pixel values across the stack. This would be handy for reducing noise and creating virtual long exposures from shorter ones.

Another cool application could be peak hold stacking mode (or maximum value stack), where the brightest pixels across the stack are selected to the final image. Like star trails.

porst17 commented 9 years ago

I was searching for a program having exactly these features and finally arrived here. Not 100% what I wanted, but pretty close! hdrmerge does almost everything we would need for this task and this new feature is also relatively easy to code. Here are some applications:

I am sure there are many other useful methods for combing images (just look at the various noise reduction techniques from astro photography and the pull down menus for combining image layers in Photoshop and the GIMP). But I think, the above are a good starting point.

I would love to see these features implemented in the program and I would also be happy to assist during the implementation provided that the basic infrastructure is already implemented (like the dialog box for selecting the blend mode and at least one basic example).

jcelaya commented 9 years ago

I think this should be done with a different program, although they could share part of the code.

porst17 commented 9 years ago

I would say they would share almost all the code. The only difference would be the method to merge the different images which could be selected by some drop-down menu.

I already made some test implementations for this feature (using a hard coded selection of the method instead of a pull-down menu). It works ok, but I am still having problems with things like over-exposure (star trails in the lighten method are usually overexposed).

I'll try to upload my basic proof-of-concept code later this week and maybe you can take a look.

Entropy512 commented 5 years ago

@porst17 I have a pretty strong interest in a median stacking solution and either finding or implementing something is next on my TODO list. I see that you did push some code to your own repository a few years ago - https://github.com/porst17/hdrmerge/commit/e8b440c6534351d79bc658de43eb43ead586a1b5 - did you have any other proofs of concept elsewhere?

Siril may be better suited to these tasks, although it's heavily oriented towards astronomy purposes. Most notably its supported file formats could be unfriendly to many people's workflows.

Edit: siril only outputs FITS files, which are a major PITA to get into RT.

porst17 commented 5 years ago

@Entropy512 Unfortunately, I don't have anything else to show. Only the stuff you already found. Implementing the requested features is probably not that hard if you have some knowledge on how hdrmerge is processing the RAW images. The operations themselves (median, average, average of several images around the median, brightest/darkest) are trivial to implement (I could still do that if needed), but I failed fitting them into the RAW processing. Sometimes the result was just garbage.

I am not aware of any other program that could possibly do things like median stacking on RAW images. All software I am aware of requires developed images (.jpeg etc.), which doesn't fit well into my workflow. For focus stacks, I use HeliconFocus, which is able to process DNG images (or any other RAW format that can be converted to DNG via Adobe DNG converter) and also outputs DNG, so you can stack once, throw away the hundreds of images of the original stack and just keep the stacking result as DNG for RAW development. I works nicely, but unfortunately only for focus stacks (which is actually much harder compared to operations like media etc).

Entropy512 commented 5 years ago

@porst17 Thanks. The only thing I've seen that allows median or mean stacking of mosaiced RAW images is siril - which has the minor headache of having to have a bunch of intermediary FITS files (one for each image) and the major headache of having to manually convert a FITS file back into DNG for further processing. Its registration functions also do not appear to play well with mosaiced RAW images, effectively "mushing" color channels together by treating the file as a single greyscale image. HDRMerge seems to be one of the only FOSS apps that can handle registration/alignment of mosaiced images without causing issues. (Tim Brooks' HDR+ reimplementation is the only other example I have found, and making that spit out DNGs is on my TODO list, but its tile-based alignment is only beneficial for certain use cases.)

As to whether it belongs in this program or another - my argument is that median/mean stacking is an alternative approach to HDR merging, one which is becoming more and more common (in fact, it's THE standard method for HDR merging in mobile devices) because while it usually requires more input images (and can thus be somewhat more computationally intensive), since each exposure is short, it's easier to detect and reject subject motion within the burst. Thus it should have a place as an alternative approach within HDRMerge