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
38b6b0d7
Commit
38b6b0d7
authored
Aug 07, 2023
by
Andrey Filippov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Improved splitting sequences
parent
f7907c7d
Changes
3
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
249 additions
and
32 deletions
+249
-32
IntersceneMatchParameters.java
...lphel/imagej/tileprocessor/IntersceneMatchParameters.java
+46
-0
OpticalFlow.java
...ain/java/com/elphel/imagej/tileprocessor/OpticalFlow.java
+197
-29
TexturedModel.java
...n/java/com/elphel/imagej/tileprocessor/TexturedModel.java
+6
-3
No files found.
src/main/java/com/elphel/imagej/tileprocessor/IntersceneMatchParameters.java
View file @
38b6b0d7
...
...
@@ -261,6 +261,12 @@ public class IntersceneMatchParameters {
public
double
fpn_radius
=
0.75
;
// pix - zero around center
public
boolean
fpn_ignore_border
=
false
;
// only if fpn_mask != null - ignore tile if maximum touches fpn_mask
public
double
min_offset
=
1.5
;
// pixels - minimal average pixel offset between images to consider interscene matching
public
double
max_rel_offset
=
0.5
;
// maximal interscene offset as a fraction of image width
public
double
max_roll_deg
=
10.0
;
// maximal interscene roll to consider matching
public
boolean
fpn_skip
=
true
;
// skip too close scenes (false - abort, previous behavior)
public
boolean
fpn_rematch
=
true
;
// match fpn-failed scenes to later scenes with larger difference
// Remove moving objects (goal is not to detect slightest movement, but to improve pose matching
public
boolean
mov_en
=
true
;
// enable detection/removal of the moving objects during pose matching
public
double
mov_sigma
=
1.5
;
// pix - weighted-blur offsets before detection
...
...
@@ -793,6 +799,18 @@ public class IntersceneMatchParameters {
gd
.
addCheckbox
(
"Ignore maximums \"touching\" FPN"
,
this
.
fpn_ignore_border
,
"Discard TD integrated tiles where local maximum is a neighbor (including diagonal) to blanked FPN correlation pixels"
);
gd
.
addMessage
(
"Limit series, handle FPN-related problems"
);
gd
.
addNumericField
(
"Minimal inter-scene offset"
,
this
.
min_offset
,
6
,
7
,
"pix"
,
"Minimal average pixel offset between images to consider interscene matching"
);
gd
.
addNumericField
(
"Maximal interscene offset fraction of width"
,
this
.
max_rel_offset
,
6
,
7
,
"x width"
,
"Maximal interscene offset as a fraction of image width to handle low overlap"
);
gd
.
addNumericField
(
"Maximal interscene roll"
,
this
.
max_roll_deg
,
6
,
7
,
"degrees"
,
"Maximal interscene roll to consider matching"
);
gd
.
addCheckbox
(
"Skip too close to reference scenes"
,
this
.
fpn_skip
,
"Skip too close to reference scenes (false - abort, previous behavior)"
);
gd
.
addCheckbox
(
"Match FPN-failed with other scenes"
,
this
.
fpn_rematch
,
"Match fpn-failed scenes to later scenes with larger difference"
);
gd
.
addMessage
(
"Detect and remove moving objects from pose matching"
);
gd
.
addCheckbox
(
"Enable movement detection/elimination"
,
this
.
mov_en
,
"Detect and mask areas with detected movement to improve pose matching"
);
...
...
@@ -1167,6 +1185,13 @@ public class IntersceneMatchParameters {
this
.
fpn_max_offset
=
gd
.
getNextNumber
();
this
.
fpn_radius
=
gd
.
getNextNumber
();
this
.
fpn_ignore_border
=
gd
.
getNextBoolean
();
this
.
min_offset
=
gd
.
getNextNumber
();
this
.
max_rel_offset
=
gd
.
getNextNumber
();
this
.
max_roll_deg
=
gd
.
getNextNumber
();
this
.
fpn_skip
=
gd
.
getNextBoolean
();
this
.
fpn_rematch
=
gd
.
getNextBoolean
();
this
.
mov_en
=
gd
.
getNextBoolean
();
this
.
mov_sigma
=
gd
.
getNextNumber
();
this
.
mov_max_std
=
gd
.
getNextNumber
();
...
...
@@ -1494,6 +1519,13 @@ public class IntersceneMatchParameters {
properties
.
setProperty
(
prefix
+
"fpn_max_offset"
,
this
.
fpn_max_offset
+
""
);
// double
properties
.
setProperty
(
prefix
+
"fpn_radius"
,
this
.
fpn_radius
+
""
);
// double
properties
.
setProperty
(
prefix
+
"fpn_ignore_border"
,
this
.
fpn_ignore_border
+
""
);
// boolean
properties
.
setProperty
(
prefix
+
"min_offset"
,
this
.
min_offset
+
""
);
// double
properties
.
setProperty
(
prefix
+
"max_rel_offset"
,
this
.
max_rel_offset
+
""
);
// double
properties
.
setProperty
(
prefix
+
"max_roll_deg"
,
this
.
max_roll_deg
+
""
);
// double
properties
.
setProperty
(
prefix
+
"fpn_skip"
,
this
.
fpn_skip
+
""
);
// boolean
properties
.
setProperty
(
prefix
+
"fpn_rematch"
,
this
.
fpn_rematch
+
""
);
// boolean
properties
.
setProperty
(
prefix
+
"mov_en"
,
this
.
mov_en
+
""
);
// boolean
properties
.
setProperty
(
prefix
+
"mov_sigma"
,
this
.
mov_sigma
+
""
);
// double
properties
.
setProperty
(
prefix
+
"mov_max_std"
,
this
.
mov_max_std
+
""
);
// double
...
...
@@ -1779,6 +1811,13 @@ public class IntersceneMatchParameters {
if
(
properties
.
getProperty
(
prefix
+
"fpn_max_offset"
)!=
null
)
this
.
fpn_max_offset
=
Double
.
parseDouble
(
properties
.
getProperty
(
prefix
+
"fpn_max_offset"
));
if
(
properties
.
getProperty
(
prefix
+
"fpn_radius"
)!=
null
)
this
.
fpn_radius
=
Double
.
parseDouble
(
properties
.
getProperty
(
prefix
+
"fpn_radius"
));
if
(
properties
.
getProperty
(
prefix
+
"fpn_ignore_border"
)!=
null
)
this
.
fpn_ignore_border
=
Boolean
.
parseBoolean
(
properties
.
getProperty
(
prefix
+
"fpn_ignore_border"
));
if
(
properties
.
getProperty
(
prefix
+
"min_offset"
)!=
null
)
this
.
min_offset
=
Double
.
parseDouble
(
properties
.
getProperty
(
prefix
+
"min_offset"
));
if
(
properties
.
getProperty
(
prefix
+
"max_rel_offset"
)!=
null
)
this
.
max_rel_offset
=
Double
.
parseDouble
(
properties
.
getProperty
(
prefix
+
"max_rel_offset"
));
if
(
properties
.
getProperty
(
prefix
+
"max_roll_deg"
)!=
null
)
this
.
max_roll_deg
=
Double
.
parseDouble
(
properties
.
getProperty
(
prefix
+
"max_roll_deg"
));
if
(
properties
.
getProperty
(
prefix
+
"fpn_skip"
)!=
null
)
this
.
fpn_skip
=
Boolean
.
parseBoolean
(
properties
.
getProperty
(
prefix
+
"fpn_skip"
));
if
(
properties
.
getProperty
(
prefix
+
"fpn_rematch"
)!=
null
)
this
.
fpn_rematch
=
Boolean
.
parseBoolean
(
properties
.
getProperty
(
prefix
+
"fpn_rematch"
));
if
(
properties
.
getProperty
(
prefix
+
"mov_en"
)!=
null
)
this
.
mov_en
=
Boolean
.
parseBoolean
(
properties
.
getProperty
(
prefix
+
"mov_en"
));
if
(
properties
.
getProperty
(
prefix
+
"mov_sigma"
)!=
null
)
this
.
mov_sigma
=
Double
.
parseDouble
(
properties
.
getProperty
(
prefix
+
"mov_sigma"
));
if
(
properties
.
getProperty
(
prefix
+
"mov_max_std"
)!=
null
)
this
.
mov_max_std
=
Double
.
parseDouble
(
properties
.
getProperty
(
prefix
+
"mov_max_std"
));
...
...
@@ -2074,6 +2113,13 @@ public class IntersceneMatchParameters {
imp
.
fpn_max_offset
=
this
.
fpn_max_offset
;
imp
.
fpn_radius
=
this
.
fpn_radius
;
imp
.
fpn_ignore_border
=
this
.
fpn_ignore_border
;
imp
.
min_offset
=
this
.
min_offset
;
imp
.
max_rel_offset
=
this
.
max_rel_offset
;
imp
.
max_roll_deg
=
this
.
max_roll_deg
;
imp
.
fpn_skip
=
this
.
fpn_skip
;
imp
.
fpn_rematch
=
this
.
fpn_rematch
;
imp
.
mov_en
=
this
.
mov_en
;
imp
.
mov_sigma
=
this
.
mov_sigma
;
imp
.
mov_max_std
=
this
.
mov_max_std
;
...
...
src/main/java/com/elphel/imagej/tileprocessor/OpticalFlow.java
View file @
38b6b0d7
This diff is collapsed.
Click to expand it.
src/main/java/com/elphel/imagej/tileprocessor/TexturedModel.java
View file @
38b6b0d7
...
...
@@ -7309,6 +7309,9 @@ public class TexturedModel {
dbg_titles
[
i
]
=
dbg_subtitles
[
i
%
dbg_subtitles
.
length
]
+
"-"
+
(
i
/
dbg_subtitles
.
length
);
}
ref_scene
.
writePreview
(
dbg_textures
[
0
],
// double [] data,
debugLevel
);
// int debugLevel
String
suffix
=
"-combined_textures-prenorm-pre_UM"
;
if
(!
batch_run
&&
(
debugLevel
>
-
1
))
{
ShowDoubleFloatArrays
.
showArrays
(
...
...
@@ -7520,9 +7523,9 @@ public class TexturedModel {
dbg_titles
[
i
]
=
dbg_subtitles
[
i
%
dbg_subtitles
.
length
]
+
"-"
+
(
i
/
dbg_subtitles
.
length
);
}
ref_scene
.
writePreview
(
// may movbe to different (earlier) stage of processing, (search for "-combined_textures")
dbg_textures
[
0
],
// double [] data,
debugLevel
);
// int debugLevel
//
ref_scene.writePreview( // may movbe to different (earlier) stage of processing, (search for "-combined_textures")
//
dbg_textures[0], // double [] data,
//
debugLevel); // int debugLevel
String
suffix
=
"-combined_textures"
;
if
(!
batch_run
&&
(
debugLevel
>
-
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