-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CinemaDNG/video mode #54
Comments
It would definitely be possible do something like that, but I think that would be beyond the scope of this software. Some other changes would have to be made, specifically:
The time would actually likely not be that bad. I expect it could manage real time conversion since the video files would be what 4K? 6K? 8K would be a bit of a struggle. |
Do you have any programming experience? The application has a command line interface which you could script this functionality with. Alternatively, are there any publicly available clips to test this on? |
Thanks for the clarification.
I did not know there was a CLI, do you mean https://github.com/martin-marek/hdr-plus-pytorch? If not, is there documentation available somewhere? I would definitely like to try it with this, robust implementation
"Mountain Bike" from BMPCC Gallery is publicly available and CinemaDNG. Or, alternatively, there is MotionCam app for Android phones that can film CinemaDNG. And it can also do frame stacking but only when converting from their own container format, not with a normal DNG sequence, and I don't know what algorithm they use. |
The "CLI" is in https://github.com/martin-marek/hdr-plus-swift/blob/main/burstphoto/cli.swift . It's not really a CLI since it uses hardcoded values. You will also have to build the package from source. See #5 (comment) for how to set it up to not require a developer account to run. I will look take spend a bit of time changing the CLI to be a real CLI, and see if It could be packaged into the main application itself (even if as a second binary).
I'll take a look at that mountain bike example and play around with it. On an initial test, it looks like something is wrong with the exposure control when using these files. So I reccomend you leave the exposure_control setting to Off. Keep in mind that the interface is not meant for this, and will be slower than it would have to be since for each image it will re-load all N+1 files (centre and N files before and after) when processing each image. |
If you replace hdr-plus-swift/burstphoto/cli.swift Lines 60 to 63 in 67e1e06
with: let N = 2
for i in N..<image_urls.count-N {
// ProcessingProgress is only useful for a GUI, but we have to instantiate one anyway
let progress = ProcessingProgress()
let urls = Array(image_urls[i-N...i+N])
// align+merge
let out_url = try perform_denoising(image_urls: urls, progress: progress, merging_algorithm: merging_algorithm, tile_size: tile_size, search_distance: search_distance, noise_reduction: noise_reduction, exposure_control: exposure_control, output_bit_depth: output_bit_depth, out_dir: out_dir, tmp_dir: tmp_dir)
print("Image saved in:", out_url.relativePath)
} This will do what you're asking for. Since the loop is happening inside Burst Photo, it can take advance of the cache we've build into it. With that, I'm getting processing times of ~0.45s/frame with N=2 (i.e. frame + 2 frames before and 2 frames after) and mode "Fast". Of that 0.45s, 0.075s is reading the next frame from disk and 0.35 is writing it to disk. You could change it to mode "High Quality" and that time bumps up to ~0.65s/frame. Overall, the process is really limited by how we currently write DNGs and their metadata back to disk. |
Thank you for the code, I could successfully compile the CLI.app and run it In the limited testing in High Quality mode, small tile size and high search radius there's quite a bit of wobbling in the output. So you were right it will need some changes to be usable, but at least the speed is indeed better than I expected and the motion clarity is generally pretty good If you make any changes regarding temporal stability in the future, I would be glad to test them too |
I also recommend you turn search distance lower unless there's a lot of movement in your scene between frames. The search distance has a tendency to do that. How many images were you using for N? Also keep in mind that the script above won't output the first N frames, so you won't be able to compare frame by frame without padding. |
Unfortunately doesn't seem to help much
2 for all tests, which should be a good compromise between noise level and motion clarity IMO
Yes, sure, I was comparing the results in the middle of the sequence |
Would it be possible to make it work with CinemaDNG sequences, moving frame by frame stacking n frames before and after the target frame? Like if you choose to stack 5 frames total in some settings menu it would stack 2 frames before the current frame, the current frame and 2 frames after the current frame, then do the same with the next frame in a sequence. I understand it'll take a long time to process everything and that some new GUI may be needed
The text was updated successfully, but these errors were encountered: