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
be2cbd56
Commit
be2cbd56
authored
Dec 29, 2025
by
Andrey Filippov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixed bug - twice correcting because two disparity arrays were equal
(not clones), so they were modified twice
parent
fa75f981
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
44 additions
and
16 deletions
+44
-16
EstimateSceneRange.java
...a/com/elphel/imagej/tileprocessor/EstimateSceneRange.java
+8
-5
Interscene.java
...main/java/com/elphel/imagej/tileprocessor/Interscene.java
+4
-2
OpticalFlow.java
...ain/java/com/elphel/imagej/tileprocessor/OpticalFlow.java
+15
-5
QuadCLTCPU.java
...main/java/com/elphel/imagej/tileprocessor/QuadCLTCPU.java
+17
-4
No files found.
src/main/java/com/elphel/imagej/tileprocessor/EstimateSceneRange.java
View file @
be2cbd56
...
...
@@ -848,9 +848,9 @@ public class EstimateSceneRange {
}
// Set both DSI_DISPARITY_AUX/MAIN and DSI_DISPARITY_AUX/MAIN_LMA to the one adjusted
final
double
[]
disparity_sfm
=
quadCLTs
[
cent_index
].
getDLS
()[
clt_parameters
.
imp
.
use_lma_dsi
?
1
:
0
];
quadCLTs
[
cent_index
].
setDisparityDSI
(
disparity_sfm
);
quadCLTs
[
cent_index
].
setDisparityLmaDSI
(
disparity_sfm
);
quadCLTs
[
cent_index
].
setStrengthDSI
(
sfm_confidence
);
quadCLTs
[
cent_index
].
setDisparityDSI
(
disparity_sfm
.
clone
()
);
quadCLTs
[
cent_index
].
setDisparityLmaDSI
(
disparity_sfm
.
clone
()
);
quadCLTs
[
cent_index
].
setStrengthDSI
(
sfm_confidence
.
clone
()
);
// TODO: Maintain (similar to sfm_gain2) and set strength??
// Do not yet set combo dsi - copy after disparity correction from IMS
quadCLTs
[
cent_index
].
setSFMGain2
(
sfm_gain2
);
...
...
@@ -862,7 +862,9 @@ public class EstimateSceneRange {
double
scale_img
=
OpticalFlow
.
getImgImsScale
(
// correctInfinityFromIMS(
quadCLTs
,
// QuadCLT [] quadCLTs,
quadCLTs
[
cent_index
],
// QuadCLT master_CLT)
earliest
);
// estimateSceneRange.earliest_prescan); // int earliest_scene)
earliest
,
// estimateSceneRange.earliest_prescan); // int earliest_scene)
latest
);
// int latest_scene) { // -1 will use quadCLTs.length -1;
double
inf_disp
=
OpticalFlow
.
getImsDisparityCorrection
(
scale_img
,
// double scale_img,
...
...
@@ -875,7 +877,7 @@ public class EstimateSceneRange {
if
(
apply_disparity_ims
)
{
// make sure - which DSI it adjusts when using SFM
// Update DSI_MAIN with disparity at infinity. Store it somewhere in quadCLTs[ref_index]
quadCLTs
[
cent_index
].
offsetDSI
(
// applies to all disparity slices
quadCLTs
[
cent_index
].
offsetDSI
(
// applies to all disparity slices
INCREMENTS twice?
inf_disp
);
// double inf_disp)
quadCLTs
[
cent_index
].
setDispInfinityRef
(
// may use incDispInfinityRef() - was 0 before
inf_disp
);
// double disp)
...
...
@@ -902,6 +904,7 @@ public class EstimateSceneRange {
}
}
double
[][]
combo_dsn
=
quadCLTs
[
cent_index
].
comboFromMainFgBg
();
// set FG/BG layers to avoid null pointers
QuadCLTCPU
.
cloneInner
(
combo_dsn
);
// separate data array from its source
quadCLTs
[
cent_index
].
saveDoubleArrayInModelDirectory
(
QuadCLTCPU
.
DSI_SUFFIXES
[
0
],
// String suffix, always with LMA
...
...
src/main/java/com/elphel/imagej/tileprocessor/Interscene.java
View file @
be2cbd56
...
...
@@ -1715,9 +1715,11 @@ public class Interscene {
boolean
apply_disparity_ims
=
clt_parameters
.
imp
.
air_disp_corr
;
if
(
adjust_disparity_ims
)
{
double
scale_img
=
OpticalFlow
.
getImgImsScale
(
// correctInfinityFromIMS(
quadCLTs
,
// QuadCLT [] quadCLTs,
quadCLTs
,
// QuadCLT [] quadCLTs,
quadCLTs
[
ref_index
],
// QuadCLT master_CLT)
earliest_scene
);
// int earliest_scene)
earliest_scene
,
// int earliest_scene)
-
1
);
// int latest_scene) { // -1 will use quadCLTs.length -1;
double
inf_disp
=
OpticalFlow
.
getImsDisparityCorrection
(
scale_img
,
// double scale_img,
...
...
src/main/java/com/elphel/imagej/tileprocessor/OpticalFlow.java
View file @
be2cbd56
...
...
@@ -5894,7 +5894,8 @@ public class OpticalFlow {
double
scale_img
=
OpticalFlow
.
getImgImsScale
(
// correctInfinityFromIMS(
quadCLTs
,
// QuadCLT [] quadCLTs,
quadCLTs
[
ref_index
],
// QuadCLT master_CLT)
earliest_scene
);
// int earliest_scene)
earliest_scene
,
// int earliest_scene)
-
1
);
// int latest_scene) { // -1 will use quadCLTs.length -1;
double
inf_disp
=
OpticalFlow
.
getImsDisparityCorrection
(
scale_img
,
// double scale_img,
quadCLTs
[
ref_index
],
// QuadCLT master_CLT,
...
...
@@ -7634,7 +7635,9 @@ public class OpticalFlow {
double
scale_img
=
getImgImsScale
(
// correctInfinityFromIMS(
quadCLTs
,
// QuadCLT [] quadCLTs,
master_CLT
,
// QuadCLT master_CLT)
earliest_scene
);
// int earliest_scene)
earliest_scene
,
// int earliest_scene)
-
1
);
// int latest_scene) { // -1 will use quadCLTs.length -1;
double
[]
disparity_dsi
=
master_CLT
.
getDLS
()[
1
];
// null
double
[]
strength
=
master_CLT
.
getDLS
()[
2
];
double
sw
=
0
,
swd
=
0
;
// old, new-old
...
...
@@ -7687,7 +7690,8 @@ public class OpticalFlow {
double
scale_img
=
getImgImsScale
(
// correctInfinityFromIMS(
quadCLTs
,
// QuadCLT [] quadCLTs,
master_CLT
,
// QuadCLT master_CLT)
earliest_scene
);
// int earliest_scene)
earliest_scene
,
// int earliest_scene)
-
1
);
// int latest_scene) { // -1 will use quadCLTs.length -1;
double
[]
disparity_dsi
=
master_CLT
.
getDLS
()[
1
];
// null
double
[]
strength
=
master_CLT
.
getDLS
()[
2
];
double
sw
=
0
,
swd
=
0
;
// old, new-old
...
...
@@ -7740,7 +7744,11 @@ public class OpticalFlow {
public
static
double
getImgImsScale
(
// correctInfinityFromIMS(
QuadCLT
[]
quadCLTs
,
QuadCLT
master_CLT
,
int
earliest_scene
)
{
int
earliest_scene
,
int
latest_scene
)
{
// -1 will use quadCLTs.length -1;
if
(
latest_scene
<
0
)
{
latest_scene
+=
quadCLTs
.
length
;
}
ErsCorrection
ers_reference
=
master_CLT
.
getErsCorrection
();
// find first and last initialized scenes, assuming approximate moving in the same direction
double
[]
xyz0
=
null
,
xyz1
=
null
;
...
...
@@ -8001,7 +8009,9 @@ public class OpticalFlow {
double
scale_img
=
getImgImsScale
(
// correctInfinityFromIMS(
quadCLTs
,
// QuadCLT [] quadCLTs,
ref_scene
,
// QuadCLT master_CLT)
0
);
// earliest_scene); // int earliest_scene)
0
,
// earliest_scene); // int earliest_scene)
-
1
);
// int latest_scene) { // -1 will use quadCLTs.length -1;
inf_disp_ref
=
disp_avg
*
(
1.0
-
scale_img
);
System
.
out
.
println
(
"inf_disp_ref="
+
inf_disp_ref
);
...
...
src/main/java/com/elphel/imagej/tileprocessor/QuadCLTCPU.java
View file @
be2cbd56
...
...
@@ -3183,9 +3183,20 @@ public class QuadCLTCPU {
return
disparity
;
}
public
static
void
cloneInner
(
double
[][]
data
){
if
(
data
!=
null
)
{
for
(
int
i
=
0
;
i
<
data
.
length
;
i
++)
{
if
(
data
[
i
]
!=
null
)
{
data
[
i
]
=
data
[
i
].
clone
();
}
}
}
}
public
double
[][]
getDLS
(){
// get disparity, disparity_lma, strength, sfm_gain
return
getDLS
(
this
.
dsi
);
}
public
double
[][]
getDLS
(
double
[][]
dsi
){
// get disparity, disparity_lma, strength, sfm_gain
if
(
dsi
==
null
)
{
// System.out.println("dsi== null, use spawnQuadCLT(), restoreFromModel(), ... to set it");
...
...
@@ -3201,12 +3212,12 @@ public class QuadCLTCPU {
dls
[
5
]
=
dsi
[
isAux
()?
TwoQuadCLT
.
DSI_TERRAIN_AUX
:
TwoQuadCLT
.
DSI_TERRAIN_MAIN
];
return
dls
;
}
public
double
[][]
comboFromMain
(){
public
double
[][]
comboFromMain
(){
// may want to run cloneInner() to separate data from its source
return
comboFromMain
(
this
.
dsi
);
}
public
double
[][]
comboFromMain
(
double
[][]
dsi
){
public
double
[][]
comboFromMain
(
double
[][]
dsi
){
// may want to run cloneInner() to separate data from its source
if
(
dsi
==
null
)
{
return
null
;
}
...
...
@@ -3220,6 +3231,8 @@ public class QuadCLTCPU {
combo_dsi
[
OpticalFlow
.
COMBO_DSN_INDX_TERRAIN
]
=
dsi
[
isAux
()?
TwoQuadCLT
.
DSI_TERRAIN_AUX
:
TwoQuadCLT
.
DSI_TERRAIN_MAIN
];
return
combo_dsi
;
}
// Duplicate disparity to FG/BG to make OpticalFLow happy
/*
...
...
@@ -3227,11 +3240,11 @@ public class QuadCLTCPU {
double [] bg_lma = combo_dsn_final[COMBO_DSN_INDX_DISP_BG_ALL].clone();
double [] bg_str = combo_dsn_final[COMBO_DSN_INDX_STRENGTH].clone();
*/
public
double
[][]
comboFromMainFgBg
(){
public
double
[][]
comboFromMainFgBg
(){
// may want to run cloneInner() to separate data from its source
return
comboFromMainFgBg
(
this
.
dsi
);
}
public
double
[][]
comboFromMainFgBg
(
double
[][]
dsi
){
public
double
[][]
comboFromMainFgBg
(
double
[][]
dsi
){
// may want to run cloneInner() to separate data from its source
double
[][]
combo_dsi
=
comboFromMain
(
dsi
);
combo_dsi
[
OpticalFlow
.
COMBO_DSN_INDX_DISP_BG
]
=
combo_dsi
[
OpticalFlow
.
COMBO_DSN_INDX_DISP
];
combo_dsi
[
OpticalFlow
.
COMBO_DSN_INDX_STRENGTH_BG
]
=
combo_dsi
[
OpticalFlow
.
COMBO_DSN_INDX_STRENGTH
];
...
...
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