martin-marek / hdr-plus-swift

📸Night mode on any camera. Based on HDR+.
https://burst.photo
GNU General Public License v3.0
208 stars 11 forks source link

Added support for bursts with bracketed exposure #17

Closed chris-rank closed 1 year ago

chris-rank commented 1 year ago

closes #11

New features for bursts with Bayer pattern

Additional improvements

References used for inspiration

Google Research Blog: HDR+ with bracketing on pixel phones (https://ai.googleblog.com/2021/04/hdr-with-bracketing-on-pixel-phones.html) Reinhard et al. 2002: Photographic tone reproduction for digital images (https://www-old.cs.utah.edu/docs/techreports/2002/pdf/UUCS-02-001.pdf)

It is recommended to inspect the example at 100% zoom level.

bracketed_exposure

Alex-Vasile commented 1 year ago

This is based on #16, and should be merged in only after that one.

Alex-Vasile commented 1 year ago

Does the current implementation work if the user manually specifies ISO/speed/ and f-stop? Related question, will it work if the f-stop is not stored in the metadata? (e.g. assume f-stop is the same between shots) I sometimes shoot either vintage or not-electronically coupled lenses and would still like to get the benefit from this approach.

chris-rank commented 1 year ago

Does the current implementation work if the user manually specifies ISO/speed/ and f-stop? Related question, will it work if the f-stop is not stored in the metadata? (e.g. assume f-stop is the same between shots) I sometimes shoot either vintage or not-electronically coupled lenses and would still like to get the benefit from this approach.

The required information is the exposure bias specified in the EXIF. You can typically manipulate it on your camera with the exposure compensation dial (e.g. -1EV, +1EV, ...). To shoot a burst with different exposure bias settings, many cameras have an automatic exposure bracketing mode. When you set the camera at base ISO and fix the f-stop, the camera should automatically adjust the exposure time depending on the exposure bias setting. So I assume it should also work with manual lenses as long as your camera can write the exposure bias into the EXIF information.

Alex-Vasile commented 1 year ago

The required information is the exposure bias specified in the EXIF. You can typically manipulate it on your camera with the exposure compensation dial (e.g. -1EV, +1EV, ...). To shoot a burst with different exposure bias settings, many cameras have an automatic exposure bracketing mode. When you set the camera at base ISO and fix the f-stop, the camera should automatically adjust the exposure time depending on the exposure bias setting. So I assume it should also work with manual lenses as long as your camera can write the exposure bias into the EXIF information.

I am considering a scenario where I have a static scene and I will manually change exposure (by changing shutter speed) to properly expose for different regions rather than use a uniformly spaced burst. Though I may be in a very small minority and most people may simply change the EV.

Alex-Vasile commented 1 year ago

I think it would be useful to provide the tone mapping equation for the different settings so that people could apply the inverse in their raw editor if they wish to get back the linear (or expected) response while still preserving the benefits of having the curve applied to the raw file.

martin-marek commented 1 year ago

Thank you @chris-rank and @Alex-Vasile for the amazing work! I've released this as v1.4 on GitHub and will submit it to App Store for review tomorrow. Please feel free to make any further documentation changes if you think of anything that might be helpful.