Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
I
imagej-elphel
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
3
Issues
3
List
Board
Labels
Milestones
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Elphel
imagej-elphel
Commits
e7771dbc
Commit
e7771dbc
authored
Jul 15, 2026
by
Andrey Filippov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
CODEX: Add float pose Jacobian oracle
Co-authored-by:
Codex
<
codex@elphel.com
>
parent
0259ecad
Changes
3
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
746 additions
and
1 deletion
+746
-1
CuasPoseRT.java
src/main/java/com/elphel/imagej/cuas/rt/CuasPoseRT.java
+28
-0
ErsCorrection.java
...n/java/com/elphel/imagej/tileprocessor/ErsCorrection.java
+29
-1
IntersceneLmaFloat.java
...a/com/elphel/imagej/tileprocessor/IntersceneLmaFloat.java
+689
-0
No files found.
src/main/java/com/elphel/imagej/cuas/rt/CuasPoseRT.java
View file @
e7771dbc
...
...
@@ -40,6 +40,7 @@ import com.elphel.imagej.tileprocessor.ErsCorrection;
import
com.elphel.imagej.tileprocessor.ImageDtt
;
import
com.elphel.imagej.tileprocessor.Interscene
;
import
com.elphel.imagej.tileprocessor.IntersceneLma
;
import
com.elphel.imagej.tileprocessor.IntersceneLmaFloat
;
import
com.elphel.imagej.tileprocessor.OpticalFlow
;
import
com.elphel.imagej.tileprocessor.QuadCLT
;
import
com.elphel.imagej.tileprocessor.QuadCLTCPU
;
...
...
@@ -833,6 +834,8 @@ public class CuasPoseRT {
private
static
boolean
peaks_path_reported
=
false
;
// once-per-program console note for the rung-3 normal-equation product path
private
static
boolean
lma_products_path_reported
=
false
;
// one raw-pixel/J comparison of the float oracle against the current double geometry
private
static
boolean
float_jacobian_oracle_reported
=
false
;
private
static
int
GPUTileProcessorDttSize
()
{
return
com
.
elphel
.
imagej
.
gpu
.
GPUTileProcessor
.
DTT_SIZE
;
...
...
@@ -1083,6 +1086,31 @@ public class CuasPoseRT {
null
,
// dbg_prefix
clt_parameters
.
imp
.
debug_level
);
// debug_level
if
(
rtProfile
!=
null
)
rtProfile
.
addElapsed
(
RtPoseProfile
.
LMA_PREPARE
,
profileStart
);
if
((
clt_parameters
.
curt
.
pose_lma_debug
>=
1
)
&&
!
float_jacobian_oracle_reported
)
{
float_jacobian_oracle_reported
=
true
;
final
boolean
[]
float_selection
=
new
boolean
[
cm
[
0
].
length
];
for
(
int
tile
=
0
;
tile
<
float_selection
.
length
;
tile
++)
{
float_selection
[
tile
]
=
(
cm
[
0
][
tile
]
!=
null
)
&&
(
cm
[
1
][
tile
]
!=
null
)
&&
(
cm
[
1
][
tile
].
length
>
2
)
&&
(
cm
[
1
][
tile
][
2
]
>
0.0
);
}
final
ErsCorrection
reference_ers
=
center_CLT
.
getErsCorrection
();
final
ErsCorrection
scene_ers
=
scene
.
getErsCorrection
();
final
IntersceneLmaFloat
.
Result
float_result
=
IntersceneLmaFloat
.
getFxDerivs
(
IntersceneLmaFloat
.
Camera
.
capture
(
reference_ers
),
IntersceneLmaFloat
.
Camera
.
capture
(
scene_ers
),
IntersceneLmaFloat
.
toFloat3
(
ZERO3
),
IntersceneLmaFloat
.
toFloat3
(
ZERO3
),
IntersceneLmaFloat
.
toFloat3
(
scene_xyzatr0
[
0
]),
IntersceneLmaFloat
.
toFloat3
(
scene_xyzatr0
[
1
]),
IntersceneLmaFloat
.
flattenCenters
(
cm
[
0
]),
float_selection
,
null
);
// validate raw pixel/J first; eigen transform is a separate layer
final
IntersceneLmaFloat
.
Comparison
float_comparison
=
IntersceneLmaFloat
.
compareToDouble
(
float_result
,
reference_ers
,
scene_ers
,
ZERO3
,
ZERO3
,
scene_xyzatr0
[
0
],
scene_xyzatr0
[
1
],
cm
[
0
],
float_selection
,
null
,
-
1
);
System
.
out
.
println
(
"CuasPoseRT "
+
float_comparison
);
}
cycle_rms_meas
[
nlma
]
=
intersceneLma
.
getLastRms
()[
1
];
// re-measured pure RMS at this cycle's pose // By Claude on 07/12/2026
// pose_lma_debug >= 2: per-inner-step solver lines; header attributes them to
// their outer cycle (the solver lines carry no scene/cycle context).
...
...
src/main/java/com/elphel/imagej/tileprocessor/ErsCorrection.java
View file @
e7771dbc
...
...
@@ -910,6 +910,35 @@ public class ErsCorrection extends GeometryCorrection {
}
/**
* Snapshot the per-line ERS state in the primitive layout used by the float
* pose-Jacobian oracle. Each line contains xyz[3], xyz_dt[3], quaternion[4]
* and quaternion_dt[4]. Package-private on purpose: this is an implementation
* bridge for {@link IntersceneLmaFloat}, not a new public camera API.
*/
float
[]
copyErsPoseStateFloat
()
{
setupERS
();
final
int
stride
=
IntersceneLmaFloat
.
ERS_LINE_STRIDE
;
final
float
[]
state
=
new
float
[
pixelCorrectionHeight
*
stride
];
for
(
int
line
=
0
;
line
<
pixelCorrectionHeight
;
line
++)
{
final
int
base
=
line
*
stride
;
for
(
int
i
=
0
;
i
<
3
;
i
++)
{
state
[
base
+
IntersceneLmaFloat
.
ERS_XYZ
+
i
]
=
(
float
)
ers_xyz
[
line
][
i
];
state
[
base
+
IntersceneLmaFloat
.
ERS_XYZ_DT
+
i
]
=
(
float
)
ers_xyz_dt
[
line
][
i
];
}
state
[
base
+
IntersceneLmaFloat
.
ERS_QUAT
+
0
]
=
(
float
)
ers_quaternion
[
line
].
getQ0
();
state
[
base
+
IntersceneLmaFloat
.
ERS_QUAT
+
1
]
=
(
float
)
ers_quaternion
[
line
].
getQ1
();
state
[
base
+
IntersceneLmaFloat
.
ERS_QUAT
+
2
]
=
(
float
)
ers_quaternion
[
line
].
getQ2
();
state
[
base
+
IntersceneLmaFloat
.
ERS_QUAT
+
3
]
=
(
float
)
ers_quaternion
[
line
].
getQ3
();
state
[
base
+
IntersceneLmaFloat
.
ERS_QUAT_DT
+
0
]
=
(
float
)
ers_quaternion_dt
[
line
].
getQ0
();
state
[
base
+
IntersceneLmaFloat
.
ERS_QUAT_DT
+
1
]
=
(
float
)
ers_quaternion_dt
[
line
].
getQ1
();
state
[
base
+
IntersceneLmaFloat
.
ERS_QUAT_DT
+
2
]
=
(
float
)
ers_quaternion_dt
[
line
].
getQ2
();
state
[
base
+
IntersceneLmaFloat
.
ERS_QUAT_DT
+
3
]
=
(
float
)
ers_quaternion_dt
[
line
].
getQ3
();
}
return
state
;
}
/**
* Match other camera px, py, disparity to the reference one
* @param px horizontal pixel coordinate (right) of the reference camera view
...
...
@@ -2758,4 +2787,3 @@ public class ErsCorrection extends GeometryCorrection {
src/main/java/com/elphel/imagej/tileprocessor/IntersceneLmaFloat.java
0 → 100644
View file @
e7771dbc
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment