-
Notifications
You must be signed in to change notification settings - Fork 78
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
Compressed/Uncompressed DNGs #191
Comments
I'm reasonably sure RawSpeed now supports all the various kinds of uncompressed DNG's.
What is a normal DNG? (there is no such thing). If you consider the DNG's that are produced
Again, depends on the baseline for the comparison.
To me that reads as very poor attempt to explain what floating point is, as compared to scalar integer.
Compression and data type/bitdepth are separate fields in EXIF.
I'm not sure what you want to see there.
You have pixel values from 0.0f up to 16384.0f (e.g., assuming 14-bit input), and you divide
Well, kinda.
There is no mathematical need to normalize floating-point values
I really hope all internal calculations are done in 32-bit floating point, which would explain that it |
In int encoding you have two values for the first step (0 and 1), two values for the second step (2 and 3), four values for the third step (4, 5, 6, 7), 8 values for the forth step and so on. In float encoding you have the same number of values for each step, which also means, in 16-bit float-encoding you have less distinct values in the 2048;65535 range compare to 16-bit int, but more distinct values in the 0;1024 range compared to 16-bit int. For range 1024;2048 the number of distinct values is the same for 16-bit int and 16-bit float |
@heckflosse what is meant here by "step" and "value"?
everything i saw in HDRMerge so far update: i was wrong, HDRMerge uses |
That's precisely the problem. If you have an |
Storage encoding (linear, gamma encoded, logarithmic) is distinctly different from the representation (integer, floating point, fixed point etc). @heckflosse is describing what happens with a linear encoded integer representation for photographic stops, i.e. for each doubling in light, how many in between values can you represent. in rough terms (ignoring noise, black level etc), if the lowest stop is the difference between 0 and 1 (range of 1 ~1bit or precision), then the next stop is 2 times that (2 bits), double again and you have your next stop (3 bits), each stop has more values representing that range, so as you keep doubling the range you can represent finer and finer differences, but you quickly run out of range due to the exponential increase each time. In a floating point representation, you typically have the same number of available values per stop, but for the same storage space you lower your maximum precision. e.g. For 16 bit half you have 11 bits of precision for normal values, which means if you you want to represent integer values you start to have issues above 2048 as you need more bits to count all possible integers, in that circumstance integer is the right storage form. However if you care about the smaller values, and you want to represent more than just integer values then half can be better, as you will not need to round the values to the nearest integer. In some circumstances instead of trading off integer vs float, people might choose a 'log' representation for the data this can behave quite similar to the float case, but you can play with the scaling to better represent the range and precision you need. |
More about different encoding schemes for HDR and trade-offs @KevinJW is mentioning can be found here It seems to suggest OpenEXR 48-bit/pixel (16b half float per color) strikes a good compromise, which is also what HDRMerge can use to store in the DNG container (with DEFLATE lossless compression on top for size saving). |
Hello.
so.. i'm lost again :) (as usual). I've collected some scattered information about how HDRMerge writes DNGs:
Source 1:
Originally posted by @LebedevRI in LibRaw/LibRaw#39 (comment)
Source two:
https://discuss.pixls.us/t/hdrmerge-status-update/2009/14
https://discuss.pixls.us/t/hdrmerge-status-update/2009/15
Source 3: #86
Source 4: from HDRMerge website:
What is going on here!
I hope my questions make sense. i am confused because looking at
ImagStack::compose
i noticed that HDRMerge doesn't take into consideration the selected bitrate.. so after some digging i ended up here :)The text was updated successfully, but these errors were encountered: