-
Notifications
You must be signed in to change notification settings - Fork 0
Description
In the other plenoptic synthesis methods, the public version of the to-be-optimized tensor is the same as the private (metamer / _metamer, _mad_image / mad_image), I just use @property to avoid users accidentally overwriting it. However, geodesic is the concatenation of image_a, _geodesic, image_b. The geodesics consist of N different images. Two of those are the endpoints (image_a, image_b), which are set by the user at initialization and never change. The remaining N-2 are stored as _geodesic, are the transition between those two endpoints and are what we change during optimization. geodesic, then, is a bit of a convenience variable here, because any time you visualize or compute a diagnostic, you want to make sure you're including the endpoints.
However, this has the consequence when you initialize the optimizer, it needs to be _geodesic, because if you used geodesic, you'd be changing the endpoints. That's not good, because we want users to avoid having to interact with private methods. This will remain as is for now, until Geodesic is more robust, but might require making two separate public attributes for the versions with and without endpoint or, if possible, just slicing correctly whenever we currently refer to _geodesic.
(Copying from @sjvenditto's comments in plenoptic-org/plenoptic#317)