Add bulk SAR mocomp operator - #1230
Open
tbensonatl wants to merge 4 commits into
Open
Conversation
Add an experimental operator to apply bulk motion compensation to frequency domain SAR phase history history. It applies a frequency-dependent phase ramp to each pulse, referencing its phase to the specified per-pulse reference range. Add a --bulk-mocomp option to the sarbp example that applies bulk mocomp based on the reference ranges contained in the CPHD file (or in the sarbp input file, which is typically generated from a CPHD). Applying mocomp to data that has already been mocomped will effectively reference the phase to the wrong point (i.e., mocomp is not idempotent and applying it multiple times will generate errors). Most CPHD files are already mocomped, so this option is for special cases where the data is not mocomped or the sarbp input file was generated with non-mocomped data. Signed-off-by: Thomas Benson <tbenson@nvidia.com>
Contributor
Greptile SummaryThe PR adds an experimental lazy operator for frequency-domain SAR bulk motion compensation and integrates it into the SAR backprojection example.
Confidence Score: 5/5The PR appears safe to merge because no blocking failure remains. No blocking failure remains. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart LR
A[FX phase-history input] --> B{Input encoding}
B -->|Complex| C[FX tensor]
B -->|Int16 IQ| D[Scale and convert to complex]
D --> C
C --> E[Optional range window]
R[Per-pulse range to MCP] --> F[Bulk motion compensation]
P[Center frequency, sample spacing, sign] --> F
E --> F
F --> G[Range compression and upsampling]
G --> H[SAR backprojection]
R --> H
H --> I[Focused SAR image]
Reviews (4): Last reviewed commit: "Run previously JIT-only mocomp tests thr..." | Re-trigger Greptile |
Collaborator
Author
|
/build |
When the ranges are double-precision and the FX data is complex<float>, add a fast-path that uses double-precision for range reduction and then uses sincospif() rather than sincospi() for the complex exponential. Thus, the complex exponential itself is reduced precision relative to the double-precision version, but ultimately we will narrow to complex<float> in the stored FX data, so loss is minimal in applying sincospif() on a reduced input argument. Signed-off-by: Thomas Benson <tbenson@nvidia.com>
Collaborator
Author
|
/build |
Include an example from the unit test suite in the documentation rather than an inlined example that is never executed. Signed-off-by: Thomas Benson <tbenson@nvidia.com>
cliffburdick
approved these changes
Aug 24, 2026
Signed-off-by: Thomas Benson <tbenson@nvidia.com>
Collaborator
Author
|
/build |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add an experimental operator to apply bulk motion compensation to frequency domain SAR phase history history. It applies a frequency-dependent phase ramp to each pulse, referencing its phase to the specified per-pulse reference range.
Add a --bulk-mocomp option to the sarbp example that applies bulk mocomp based on the reference ranges contained in the CPHD file (or in the sarbp input file, which is typically generated from a CPHD). Applying mocomp to data that has already been mocomped will effectively reference the phase to the wrong point (i.e., mocomp is not idempotent and applying it multiple times will generate errors). Most CPHD files are already mocomped, so this option is for special cases where the data is not mocomped or the sarbp input file was generated with non-mocomped data.