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
29ff9963
Commit
29ff9963
authored
May 23, 2026
by
Andrey Filippov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
tested with boosted exposure
parent
1bf9e9e4
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
923 additions
and
275 deletions
+923
-275
CuasMotion.java
src/main/java/com/elphel/imagej/cuas/CuasMotion.java
+890
-270
CuasMotionLMA.java
src/main/java/com/elphel/imagej/cuas/CuasMotionLMA.java
+9
-3
CuasRanging.java
src/main/java/com/elphel/imagej/cuas/CuasRanging.java
+1
-1
IntersceneMatchParameters.java
...lphel/imagej/tileprocessor/IntersceneMatchParameters.java
+19
-1
TwoQuadCLT.java
...main/java/com/elphel/imagej/tileprocessor/TwoQuadCLT.java
+4
-0
No files found.
src/main/java/com/elphel/imagej/cuas/CuasMotion.java
View file @
29ff9963
This source diff could not be displayed because it is too large. You can
view the blob
instead.
src/main/java/com/elphel/imagej/cuas/CuasMotionLMA.java
View file @
29ff9963
...
...
@@ -128,7 +128,12 @@ public class CuasMotionLMA {
public
static
final
int
RSLT_VEL_RIGHT
=
64
;
// lateral velocity, right ( calculated from angular and RSLT_GRANGE
public
static
final
int
RSLT_VEL_UP
=
65
;
// lateral velocity, up ( calculated from angular and RSLT_GRANGE
public
static
final
int
RSLT_RANGE_LIN
=
66
;
// range linear interpolated using previous/next series if the same target is present there
public
static
final
int
RSLT_LEN
=
RSLT_RANGE_LIN
+
1
;
public
static
final
int
RSLT_PHASE1_INDEX
=
67
;
// target index in phase 1 (to trim) - debug feature
public
static
final
int
RSLT_PHASE1_SCORE
=
68
;
// target index in phase 1 (to set minimal score for phase 1) - debug feature
public
static
final
int
RSLT_PHASE1_AMP
=
69
;
// target index in phase 1 (to set minimal score for phase 1) - debug feature
public
static
final
int
RSLT_PHASE1_MSCORE
=
70
;
// target index in phase 1 (to set minimal score for phase 1) - debug feature
public
static
final
int
RSLT_PHASE1_VSTR
=
71
;
// target index in phase 1 (to set minimal score for phase 1) - debug feature
public
static
final
int
RSLT_LEN
=
RSLT_PHASE1_VSTR
+
1
;
public
static
final
String
[]
LMA_TITLES
=
{
"X-OFFS"
,
"Y-OFFS"
,
"AMPLITUDE"
,
"RADIUS"
,
"RAD_POS"
,
"OVERSHOOT"
,
"OFFSET"
,
"RMSE"
,
"RMSE/A"
,
"MAX2A"
,
"ITERATIONS"
,
...
...
@@ -147,7 +152,8 @@ public class CuasMotionLMA {
"Disparity"
,
"Disparity-Diff"
,
"Strength"
,
"Range"
,
"Global-index"
,
"segment-length"
,
"segment-disparity"
,
"segment_disp-diff"
,
"segment-strength"
,
"segment-range"
,
"FLOG-px"
,
"FLOG-pY"
,
"FLOG-DISP"
,
"FLOG-range"
,
"infinity"
,
"GTarget-ID"
,
"Vel-away"
,
"Vel-right"
,
"Vel-up"
,
"Range-linear"
};
"GTarget-ID"
,
"Vel-away"
,
"Vel-right"
,
"Vel-up"
,
"Range-linear"
,
"Phase1-index"
,
"Phase1-score"
,
"Phase1-amplitude"
,
"Phase1-mscore"
,
"Phase1-vstr"
};
public
static
final
String
EXTRA_SLICE_DISCARD_ON_LOAD
=
"Targets"
;
public
static
final
int
FAIL_PENDING
=
-
1
;
// By Claude on 05/07/2026: motion sentinel — tile tracked but not yet processed by LMA
public
static
final
int
FAIL_NONE
=
0
;
...
...
src/main/java/com/elphel/imagej/cuas/CuasRanging.java
View file @
29ff9963
...
...
@@ -419,7 +419,7 @@ public class CuasRanging {
saveTargetStats
(
targets
);
// final double [][][] targets_single) {
}
}
System
.
out
.
print
((
new
SimpleDateFormat
(
"yyyy/MM/dd HH:mm:ss"
).
format
(
Calendar
.
getInstance
().
getTime
())+
": Ranging done"
));
if
(
generate_output
)
{
cuasMotion
.
generateExtractFilterMovingTargets
(
// move parameters to clt_parameters
...
...
src/main/java/com/elphel/imagej/tileprocessor/IntersceneMatchParameters.java
View file @
29ff9963
...
...
@@ -796,6 +796,10 @@ min_str_neib_fpn 0.35
public
double
cuas_boost_slow
=
4.0
;
// if >1 and the motion vector is below tile_size/cuas_boost_slow, scale corr_pairs
public
double
cuas_boost_mv_lim
=
1.8
;
// Do not boost if motion vector faster than this (before in code equiv 1.8 pix)
public
double
cuas_boost_accum
=
4.0
;
// if >1 increase tracking camera exposure (TODO: conditional / compete)
public
boolean
cuas_phase1_base
=
true
;
// Accumulate non-centered targets with base "exposure"
public
boolean
cuas_phase1_boosted
=
true
;
// Accumulate non-centered targets with boosted "exposure"
public
boolean
cuas_accum_base
=
true
;
// Accumulate centered targets with base "exposure"
public
boolean
cuas_accum_boosted
=
true
;
// Accumulate centered targets with boosted "exposure"
...
...
@@ -2721,10 +2725,16 @@ min_str_neib_fpn 0.35
"Do not boost if motion vector faster than this (before in code equiv 1.8 pix)."
);
gd
.
addNumericField
(
"Increase tracking camera exposure"
,
this
.
cuas_boost_accum
,
5
,
8
,
""
,
"If >1 increase tracking camera exposure (later - conditional)."
);
gd
.
addCheckbox
(
"Accumulate phasae 1 base exposure"
,
this
.
cuas_phase1_base
,
"Accumulate non-centered targets (phase 1) with base \"exposure\"."
);
gd
.
addCheckbox
(
"Accumulate phase 1 boosted exposure"
,
this
.
cuas_phase1_boosted
,
"Accumulate non-centered targets (phASE 1) with boosted \"exposure\"."
);
gd
.
addCheckbox
(
"Accumulate tracking base exposure"
,
this
.
cuas_accum_base
,
"Accumulate centered targets with base \"exposure\"."
);
gd
.
addCheckbox
(
"Accumulate tracking boosted exposure"
,
this
.
cuas_accum_boosted
,
"Accumulate centered targets with boosted \"exposure\"."
);
gd
.
addNumericField
(
"Boost pairs for weak targets"
,
this
.
cuas_boost_mstr
,
5
,
8
,
""
,
"Scale corr_pairs if motion strength is below, regardless of speed."
);
gd
.
addNumericField
(
"Never boost stronger"
,
this
.
cuas_boost_xstr
,
5
,
8
,
""
,
...
...
@@ -4420,6 +4430,8 @@ min_str_neib_fpn 0.35
this
.
cuas_boost_slow
=
gd
.
getNextNumber
();
this
.
cuas_boost_mv_lim
=
gd
.
getNextNumber
();
this
.
cuas_boost_accum
=
gd
.
getNextNumber
();
this
.
cuas_phase1_base
=
gd
.
getNextBoolean
();
this
.
cuas_phase1_boosted
=
gd
.
getNextBoolean
();
this
.
cuas_accum_base
=
gd
.
getNextBoolean
();
this
.
cuas_accum_boosted
=
gd
.
getNextBoolean
();
this
.
cuas_boost_mstr
=
gd
.
getNextNumber
();
...
...
@@ -5738,6 +5750,8 @@ min_str_neib_fpn 0.35
properties
.
setProperty
(
prefix
+
"cuas_boost_slow"
,
this
.
cuas_boost_slow
+
""
);
// double
properties
.
setProperty
(
prefix
+
"cuas_boost_mv_lim"
,
this
.
cuas_boost_mv_lim
+
""
);
// double
properties
.
setProperty
(
prefix
+
"cuas_boost_accum"
,
this
.
cuas_boost_accum
+
""
);
// double
properties
.
setProperty
(
prefix
+
"cuas_phase1_base"
,
this
.
cuas_phase1_base
+
""
);
// boolean
properties
.
setProperty
(
prefix
+
"cuas_phase1_boosted"
,
this
.
cuas_phase1_boosted
+
""
);
// boolean
properties
.
setProperty
(
prefix
+
"cuas_accum_base"
,
this
.
cuas_accum_base
+
""
);
// boolean
properties
.
setProperty
(
prefix
+
"cuas_accum_boosted"
,
this
.
cuas_accum_boosted
+
""
);
// boolean
properties
.
setProperty
(
prefix
+
"cuas_boost_mstr"
,
this
.
cuas_boost_mstr
+
""
);
// double
...
...
@@ -6992,6 +7006,8 @@ min_str_neib_fpn 0.35
if
(
properties
.
getProperty
(
prefix
+
"cuas_boost_slow"
)!=
null
)
this
.
cuas_boost_slow
=
Double
.
parseDouble
(
properties
.
getProperty
(
prefix
+
"cuas_boost_slow"
));
if
(
properties
.
getProperty
(
prefix
+
"cuas_boost_mv_lim"
)!=
null
)
this
.
cuas_boost_mv_lim
=
Double
.
parseDouble
(
properties
.
getProperty
(
prefix
+
"cuas_boost_mv_lim"
));
if
(
properties
.
getProperty
(
prefix
+
"cuas_boost_accum"
)!=
null
)
this
.
cuas_boost_accum
=
Double
.
parseDouble
(
properties
.
getProperty
(
prefix
+
"cuas_boost_accum"
));
if
(
properties
.
getProperty
(
prefix
+
"cuas_phase1_base"
)!=
null
)
this
.
cuas_phase1_base
=
Boolean
.
parseBoolean
(
properties
.
getProperty
(
prefix
+
"cuas_phase1_base"
));
if
(
properties
.
getProperty
(
prefix
+
"cuas_phase1_boosted"
)!=
null
)
this
.
cuas_phase1_boosted
=
Boolean
.
parseBoolean
(
properties
.
getProperty
(
prefix
+
"cuas_phase1_boosted"
));
if
(
properties
.
getProperty
(
prefix
+
"cuas_accum_base"
)!=
null
)
this
.
cuas_accum_base
=
Boolean
.
parseBoolean
(
properties
.
getProperty
(
prefix
+
"cuas_accum_base"
));
if
(
properties
.
getProperty
(
prefix
+
"cuas_accum_boosted"
)!=
null
)
this
.
cuas_accum_boosted
=
Boolean
.
parseBoolean
(
properties
.
getProperty
(
prefix
+
"cuas_accum_boosted"
));
if
(
properties
.
getProperty
(
prefix
+
"cuas_boost_mstr"
)!=
null
)
this
.
cuas_boost_mstr
=
Double
.
parseDouble
(
properties
.
getProperty
(
prefix
+
"cuas_boost_mstr"
));
...
...
@@ -8263,6 +8279,8 @@ min_str_neib_fpn 0.35
imp
.
cuas_boost_slow
=
this
.
cuas_boost_slow
;
imp
.
cuas_boost_mv_lim
=
this
.
cuas_boost_mv_lim
;
imp
.
cuas_boost_accum
=
this
.
cuas_boost_accum
;
imp
.
cuas_phase1_base
=
this
.
cuas_phase1_base
;
imp
.
cuas_phase1_boosted
=
this
.
cuas_phase1_boosted
;
imp
.
cuas_accum_base
=
this
.
cuas_accum_base
;
imp
.
cuas_accum_boosted
=
this
.
cuas_accum_boosted
;
imp
.
cuas_boost_mstr
=
this
.
cuas_boost_mstr
;
...
...
src/main/java/com/elphel/imagej/tileprocessor/TwoQuadCLT.java
View file @
29ff9963
...
...
@@ -37,8 +37,10 @@ import java.nio.file.Files;
import
java.nio.file.Path
;
import
java.nio.file.Paths
;
import
java.nio.file.StandardCopyOption
;
import
java.text.SimpleDateFormat
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.Calendar
;
import
java.util.Collections
;
import
java.util.Comparator
;
import
java.util.HashMap
;
...
...
@@ -9038,7 +9040,9 @@ if (debugLevel > -100) return true; // temporarily !
if
(
stop_now
)
{
break
;
// will still generate videos
}
System
.
out
.
println
((
new
SimpleDateFormat
(
"yyyy/MM/dd HH:mm:ss"
).
format
(
Calendar
.
getInstance
().
getTime
())+
": Sequence done."
));
}
// for (int nseq = 0; nseq < num_seq; nseq++) {
System
.
out
.
println
((
new
SimpleDateFormat
(
"yyyy/MM/dd HH:mm:ss"
).
format
(
Calendar
.
getInstance
().
getTime
())+
": All sequences done"
));
// combine videos if generated
if
((
video_sets_list
.
size
()
>
1
)
&&
...
...
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