Replies: 5 comments
-
In relation to that, we were discussing the I'm adding a few images to support the discussion: Canon Log>>> colour.models.log_encoding_CanonLog(0.18, 10, out_legal=False, in_reflection=True)
# 0.32795389693580906 Sony S-Log2>>> colour.models.log_encoding_SLog2(0.18, 10, out_legal=True, in_reflection=True) * 1023
# 347.34177270035104 Sony S-Log3>>> colour.models.log_encoding_SLog3(0.18, 10, out_legal=True, in_reflection=True) * 1023
# 420.0 Fuji F-Log>>> colour.models.log_encoding_FLog(0.18, 10, out_legal=False)
# 0.46333651051465585 |
Beta Was this translation helpful? Give feedback.
-
Currently Discussion with @KevinJW suggests that referring to "IRE" may not be desirable either, as it is a misuse of the term (and Sony also confusingly refer to "linear IRE" in their documentation, which is something else again). Also changing
|
Beta Was this translation helpful? Give feedback.
-
Regarding cut points, it is a tricky question. We have always tried in general to follow the published literature, have we not? Modifying constants to produce a more accurate round-trip is deviating from that. In some cases we have to use a calculated cut point where the curve is published in only one direction (e.g. the Canon Log 3 IDT). For S-Log1 we follow the spirit rather than the letter of the published formula, since the threshold is given as the integer code value 90, which does not precisely code linear zero. Perhaps we need more comments or docstring detail to explain these choices. Similarly maybe we should have more explanation of the way the three S-Log encodings have been modified for consistent behaviour, where the Sony documentation varies in terms of "linear IRE" vs reflection, and code value vs IRE. |
Beta Was this translation helpful? Give feedback.
-
Yes, this is pretty much where I'm going to, maybe a line or two explaining why the code is this way. |
Beta Was this translation helpful? Give feedback.
-
@nick-shaw : I changed the arguments as discussed and added a bit of documentation so that one can get the values of the various tables in the references. Feel free to add more details or expand the docstrings if you think it is worth it. I will close this one for now. |
Beta Was this translation helpful? Give feedback.
-
I was looking at the join points of various definitions:
Canon Log
log_encoding_CanonLog(x, bit_depth=10, out_legal=True, in_reflection=True)
:Canon Log 2
log_encoding_CanonLog2(x, bit_depth=10, out_legal=True, in_reflection=True)
:Canon Log 3
log_encoding_CanonLog3(x, bit_depth=10, out_legal=True, in_reflection=True)
:Panasonic V-Log
log_encoding_VLog(L_in, bit_depth=10, out_legal=True, in_reflection=True, constants=VLOG_CONSTANTS)
:Sony S-Log
log_decoding_SLog(y, bit_depth=10, in_legal=True, out_reflection=True)
Sony S-Log3
log_decoding_SLog3(y, bit_depth=10, in_legal=True, out_reflection=True)
Fuji F-Log
log_decoding_FLog(F_out, bit_depth=10, in_legal=False, constants=FLOG_CONSTANTS)
There is a mix of hardcoded constants and computed join points but with a mix of various inconsistent argument values across definitions. I think we should try to be more consistent in the way we tackle that and in cases we need to deviate, comment the code accordingly. We might have discussed about some above cases but I don't remember.
@nick-shaw what do you think?
Beta Was this translation helpful? Give feedback.
All reactions