populate background from heuristic solve#815
Conversation
|
Something we could consider for this PR or subsequent ones, is that we could increase the complexity and store |
|
@unbohn Comparing similar pixels in
-- The resulting bg_rfl spectra for this same location ^^
|
|
Super interesting @brentwilder! I was curious why the analytical line w/ bkg solve didn't better match with the OE. I actually think as it's currently written, the two forward models (OE vs AOE) are not equivalent. The linearization we do in the analytical line in its present form assumes that If this is the case, we just need to back out the non-simplified form of the linearized forward model and hook up Full forward model: Assumptions: Simplifies to Assume: AOE solves for the following linear fn w.r.t state-vector, Is this right? Edit: with the glint model: Assuming: AOE solves for the following linear fn w.r.t state-vector, May actually help stability... The tricky thing is how this can be "architectured" to be flexible w.r.t running w/ background and w/o background. |
|
Thanks for these updates, guys! @brentwilder I think your plot tells exactly the story that the current AOE implementation sets the target reflectance equal to the background, so that we can't get a match to the per pixel solve that includes the background. @evan-greenbrg I skimmed your equations and they look right to me. To your last point: In my opinion, we should always run with background, as the diffuse reflectance will never originate from the target pixel alone. |
|
@unbohn @evan-greenbrg On your last point Niklas I'd agree that being computationally cheap, you would always want to have this mode on. But I can definitely attempt to write it out to be optional, and we can decide on it as a group. In writing this I realized also that the full bg_rfl file needs to be shared to analytical line call , to facilitate these above equations. But I think the way Evan has mapped it out here is very nice and can be used to improve AOE ... Essentially even for the 1C case, instead of using the superpixel |
|
@brentwilder Yes, I fully agree! We've had some discussions about the usage of the background reflectance term in both OE and AOE a long while ago, and I think David came up with the idea of using the superpixel reflectance as background. Apparently, nobody thought about utilizing the heuristic solve back then. |
| theta = L_tot + (L_tot * background / (1 - background)) | ||
| # theta = L_tot | ||
| # Isolate signal from target | ||
| theta = L_tot - L_bg |
There was a problem hiding this comment.
Not sure if you've tested yet, but this may be incorrect.
here it should be:
I don't think is equivalent to the definition of inverse_simple.
There was a problem hiding this comment.
No I think you are right, this was hasty on me and trying to reconcile 3c v 6c. I'll put as
|
To make this also useful for the per pixel and LUTSurface solutions, I expanded the meaning of I'd assume we would never want to do the background solve without super pixel. And then there is a check right before main config is built to set it back to The main improvement from this latest commit is that it would allow @unbohn and I to run the Snow model with the advancements here in this PR. |
|
📊 Generated results:
URL: isofit/isofit-test-results#21 |
|
Ready for vigorous testing now. |



Right now isofit relies on AOE to handle influence of adjacency effects and background pixels. A solution that would work for per-pixel and AOE, would be to set
geom.bg_rflbased on heuristic solve averaged across x km window. Of course, there are a multitude of ways to do the aggregation, but this could be a logical first step.We could also perform some spectral smoothing here or other ideas if we are worried about the quality of the background spectra.The full image heuristic solve would be cheap. This allows similar physics for the background/adjacency regardless if using AOE or not. And would not require any changes to
radiative_transfer.pybecause the hooks are already in place.