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
a7a1e850
Commit
a7a1e850
authored
Jun 15, 2018
by
Andrey Filippov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Debugging batch processing
parent
cb61d659
Changes
5
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
391 additions
and
884 deletions
+391
-884
EyesisCorrectionParameters.java
src/main/java/EyesisCorrectionParameters.java
+26
-2
Eyesis_Correction.java
src/main/java/Eyesis_Correction.java
+72
-48
QuadCLT.java
src/main/java/QuadCLT.java
+0
-253
TileProcessor.java
src/main/java/TileProcessor.java
+7
-0
TwoQuadCLT.java
src/main/java/TwoQuadCLT.java
+286
-581
No files found.
src/main/java/EyesisCorrectionParameters.java
View file @
a7a1e850
...
...
@@ -118,8 +118,11 @@ public class EyesisCorrectionParameters {
public
String
x3dSubdirSuffix
=
""
;
// CLT 3d batch parameters
public
int
rig_batch_adjust_main
=
0
;
public
int
rig_batch_adjust_aux
=
0
;
public
int
rig_batch_adjust_rig
=
0
;
public
boolean
clt_batch_apply_man
=
tru
e
;
// Apply (and disable) manual pixel shift
public
boolean
clt_batch_apply_man
=
fals
e
;
// Apply (and disable) manual pixel shift
public
boolean
clt_batch_extrinsic
=
false
;
// Calibrate extrinsic parameters for each set
public
boolean
clt_batch_poly
=
false
;
// Calculate fine polynomial correction for each set
public
boolean
clt_batch_4img
=
true
;
// Create a set of 4 images, usually for disparity = 0
...
...
@@ -240,6 +243,12 @@ public class EyesisCorrectionParameters {
cp
.
x3dSubdirPrefix
=
this
.
x3dSubdirPrefix
;
cp
.
x3dModelVersion
=
this
.
x3dModelVersion
;
cp
.
jp4SubDir
=
this
.
jp4SubDir
;
cp
.
rig_batch_adjust_main
=
this
.
rig_batch_adjust_main
;
cp
.
rig_batch_adjust_aux
=
this
.
rig_batch_adjust_aux
;
cp
.
rig_batch_adjust_rig
=
this
.
rig_batch_adjust_rig
;
cp
.
clt_batch_apply_man
=
this
.
clt_batch_apply_man
;
cp
.
clt_batch_extrinsic
=
this
.
clt_batch_extrinsic
;
cp
.
clt_batch_poly
=
this
.
clt_batch_poly
;
...
...
@@ -380,6 +389,10 @@ public class EyesisCorrectionParameters {
properties
.
setProperty
(
prefix
+
"mlDirectory"
,
this
.
mlDirectory
);
properties
.
setProperty
(
prefix
+
"rig_batch_adjust_main"
,
this
.
rig_batch_adjust_main
+
""
);
properties
.
setProperty
(
prefix
+
"rig_batch_adjust_aux"
,
this
.
rig_batch_adjust_aux
+
""
);
properties
.
setProperty
(
prefix
+
"rig_batch_adjust_rig"
,
this
.
rig_batch_adjust_rig
+
""
);
properties
.
setProperty
(
prefix
+
"clt_batch_apply_man"
,
this
.
clt_batch_apply_man
+
""
);
properties
.
setProperty
(
prefix
+
"clt_batch_extrinsic"
,
this
.
clt_batch_extrinsic
+
""
);
properties
.
setProperty
(
prefix
+
"clt_batch_poly"
,
this
.
clt_batch_poly
+
""
);
...
...
@@ -517,6 +530,10 @@ public class EyesisCorrectionParameters {
if
(
properties
.
getProperty
(
prefix
+
"mlDirectory"
)!=
null
)
this
.
mlDirectory
=
properties
.
getProperty
(
prefix
+
"mlDirectory"
);
if
(
properties
.
getProperty
(
prefix
+
"rig_batch_adjust_main"
)!=
null
)
this
.
rig_batch_adjust_main
=
Integer
.
parseInt
(
properties
.
getProperty
(
prefix
+
"rig_batch_adjust_main"
));
if
(
properties
.
getProperty
(
prefix
+
"rig_batch_adjust_aux"
)!=
null
)
this
.
rig_batch_adjust_aux
=
Integer
.
parseInt
(
properties
.
getProperty
(
prefix
+
"rig_batch_adjust_aux"
));
if
(
properties
.
getProperty
(
prefix
+
"rig_batch_adjust_rig"
)!=
null
)
this
.
rig_batch_adjust_rig
=
Integer
.
parseInt
(
properties
.
getProperty
(
prefix
+
"rig_batch_adjust_rig"
));
if
(
properties
.
getProperty
(
prefix
+
"clt_batch_apply_man"
)!=
null
)
this
.
clt_batch_apply_man
=
Boolean
.
parseBoolean
(
properties
.
getProperty
(
prefix
+
"clt_batch_apply_man"
));
if
(
properties
.
getProperty
(
prefix
+
"clt_batch_extrinsic"
)!=
null
)
this
.
clt_batch_extrinsic
=
Boolean
.
parseBoolean
(
properties
.
getProperty
(
prefix
+
"clt_batch_extrinsic"
));
if
(
properties
.
getProperty
(
prefix
+
"clt_batch_poly"
)!=
null
)
this
.
clt_batch_poly
=
Boolean
.
parseBoolean
(
properties
.
getProperty
(
prefix
+
"clt_batch_poly"
));
...
...
@@ -534,7 +551,6 @@ public class EyesisCorrectionParameters {
if
(
properties
.
getProperty
(
prefix
+
"thumb_size"
)
!=
null
)
this
.
thumb_size
=
Double
.
parseDouble
(
properties
.
getProperty
(
prefix
+
"thumb_size"
));
if
(
properties
.
getProperty
(
prefix
+
"default_rating"
)
!=
null
)
this
.
default_rating
=
Integer
.
parseInt
(
properties
.
getProperty
(
prefix
+
"default_rating"
));
// copy common parameters to the auxiliary camera ones
updateAuxFromMain
();
String
aux_prefix
=
prefix
+
AUX_PREFIX
;
...
...
@@ -853,6 +869,10 @@ public class EyesisCorrectionParameters {
gd
.
addTab
(
"Batch"
,
"Select Batch parameters"
);
gd
.
addNumericField
(
"Repeat main camera field adjustment"
,
this
.
rig_batch_adjust_main
,
0
);
gd
.
addNumericField
(
"Repeat aux camera field adjustment"
,
this
.
rig_batch_adjust_aux
,
0
);
gd
.
addNumericField
(
"Repeat 2-quad camera rig field adjustment"
,
this
.
rig_batch_adjust_rig
,
0
);
gd
.
addCheckbox
(
"Apply (and disable) manual pixel shift"
,
this
.
clt_batch_apply_man
);
// 21
gd
.
addCheckbox
(
"Calibrate extrinsic parameters for each set"
,
this
.
clt_batch_extrinsic
);
// 22
gd
.
addCheckbox
(
"Calculate fine polynomial correction for each set"
,
this
.
clt_batch_poly
);
// 23
...
...
@@ -914,6 +934,10 @@ public class EyesisCorrectionParameters {
this
.
aux_camera
.
cltSuffix
=
gd
.
getNextString
();
// 20b
this
.
aux_camera
.
x3dSubdirSuffix
=
gd
.
getNextString
();
// 20ba
this
.
rig_batch_adjust_main
=
(
int
)
gd
.
getNextNumber
();
this
.
rig_batch_adjust_aux
=
(
int
)
gd
.
getNextNumber
();
this
.
rig_batch_adjust_rig
=
(
int
)
gd
.
getNextNumber
();
this
.
clt_batch_apply_man
=
gd
.
getNextBoolean
();
// 21
this
.
clt_batch_extrinsic
=
gd
.
getNextBoolean
();
// 22
this
.
clt_batch_poly
=
gd
.
getNextBoolean
();
// 23
...
...
src/main/java/Eyesis_Correction.java
View file @
a7a1e850
...
...
@@ -583,21 +583,21 @@ private Panel panel1,
// addButton("CLT 2*4 images", panelClt4, color_conf_process);
// addButton("CLT 2*4 images - 2", panelClt4, color_conf_process);
// addButton("CLT 2*4 images - 3", panelClt4, color_conf_process);
addButton
(
"SHOW extrinsics"
,
panelClt4
,
color_configure
);
addButton
(
"SHOW extrinsics"
,
panelClt4
,
color_configure
);
addButton
(
"MAIN extrinsics"
,
panelClt4
,
color_process
);
addButton
(
"RIG extrinsics"
,
panelClt4
,
color_conf_process
);
addButton
(
"AUX extrinsics"
,
panelClt4
,
color_process
);
addButton
(
"RIG extrinsics"
,
panelClt4
,
color_conf_process
);
addButton
(
"Rig8 images"
,
panelClt4
,
color_conf_process
);
// addButton("Rig enhance", panelClt4, color_conf_process);
// /"Reset GT"
addButton
(
"Reset GT"
,
panelClt4
,
color_stop
);
// addButton("Ground truth 0", panelClt4, color_configure);
addButton
(
"Ground truth"
,
panelClt4
,
color_conf_process
);
addButton
(
"Show biscan"
,
panelClt4
,
color_configure
);
addButton
(
"Poles GT"
,
panelClt4
,
color_process
);
addButton
(
"ML export"
,
panelClt4
,
color_conf_process
);
addButton
(
"JP4 copy"
,
panelClt4
,
color_conf_process
);
addButton
(
"Rig batch"
,
panelClt4
,
color_process
);
add
(
panelClt4
);
...
...
@@ -4556,17 +4556,11 @@ private Panel panel1,
EYESIS_CORRECTIONS
.
setDebug
(
DEBUG_LEVEL
);
getPairImages
();
return
;
/* ======================================================================== */
}
else
if
(
label
.
equals
(
"CLT 2*4 images - 2"
))
{
DEBUG_LEVEL
=
MASTER_DEBUG_LEVEL
;
EYESIS_CORRECTIONS
.
setDebug
(
DEBUG_LEVEL
);
getPairImages2
(
false
);
return
;
/* ======================================================================== */
}
else
if
(
label
.
equals
(
"Rig8 images"
))
{
DEBUG_LEVEL
=
MASTER_DEBUG_LEVEL
;
EYESIS_CORRECTIONS
.
setDebug
(
DEBUG_LEVEL
);
getPairImages2
(
true
);
getPairImages2
();
return
;
/* ======================================================================== */
}
else
if
(
label
.
equals
(
"RIG extrinsics"
))
{
...
...
@@ -4615,17 +4609,10 @@ private Panel panel1,
return
;
/* ======================================================================== */
}
else
if
(
label
.
equals
(
"Ground truth 0"
))
{
DEBUG_LEVEL
=
MASTER_DEBUG_LEVEL
;
EYESIS_CORRECTIONS
.
setDebug
(
DEBUG_LEVEL
);
enhanceByRig
(
false
);
return
;
/* ======================================================================== */
}
else
if
(
label
.
equals
(
"Ground truth"
))
{
DEBUG_LEVEL
=
MASTER_DEBUG_LEVEL
;
EYESIS_CORRECTIONS
.
setDebug
(
DEBUG_LEVEL
);
enhanceByRig
(
true
);
groundTruth
(
);
return
;
/* ======================================================================== */
}
else
if
(
label
.
equals
(
"Show biscan"
))
{
...
...
@@ -4659,6 +4646,13 @@ private Panel panel1,
EYESIS_CORRECTIONS
.
setDebug
(
DEBUG_LEVEL
);
copyJP4src
();
return
;
/* ======================================================================== */
}
else
if
(
label
.
equals
(
"Rig batch"
))
{
DEBUG_LEVEL
=
MASTER_DEBUG_LEVEL
;
EYESIS_CORRECTIONS
.
setDebug
(
DEBUG_LEVEL
);
CLT_PARAMETERS
.
batch_run
=
true
;
batchRig
();
return
;
/* ======================================================================== */
}
else
if
(
label
.
equals
(
"CLT rig edit"
))
{
...
...
@@ -5015,12 +5009,11 @@ private Panel panel1,
return
true
;
}
public
boolean
getPairImages2
(
boolean
new_mode
)
{
public
boolean
getPairImages2
()
{
if
(!
prepareRigImages
())
return
false
;
String
configPath
=
getSaveCongigPath
();
if
(
configPath
.
equals
(
"ABORT"
))
return
false
;
if
(
new_mode
)
{
if
(
DEBUG_LEVEL
>
-
2
){
System
.
out
.
println
(
"++++++++++++++ Calculating combined correlations ++++++++++++++"
);
}
...
...
@@ -5041,29 +5034,6 @@ private Panel panel1,
// TODO Auto-generated catch block
e
.
printStackTrace
();
}
//final int debugLevel);
}
else
{
if
(
DEBUG_LEVEL
>
-
2
){
System
.
out
.
println
(
"++++++++++++++ Calculating per quad camera correlations ++++++++++++++"
);
}
try
{
TWO_QUAD_CLT
.
processCLTQuadCorrs
(
QUAD_CLT
,
// QuadCLT quadCLT_main,
QUAD_CLT_AUX
,
// QuadCLT quadCLT_aux,
CLT_PARAMETERS
,
// EyesisCorrectionParameters.DCTParameters dct_parameters,
DEBAYER_PARAMETERS
,
//EyesisCorrectionParameters.DebayerParameters debayerParameters,
COLOR_PROC_PARAMETERS
,
//EyesisCorrectionParameters.ColorProcParameters colorProcParameters,
CHANNEL_GAINS_PARAMETERS
,
//CorrectionColorProc.ColorGainsParameters channelGainParameters,
CHANNEL_GAINS_PARAMETERS_AUX
,
//CorrectionColorProc.ColorGainsParameters channelGainParameters_aux,
RGB_PARAMETERS
,
//EyesisCorrectionParameters.RGBParameters rgbParameters,
THREADS_MAX
,
//final int threadsMax, // maximal number of threads to launch
UPDATE_STATUS
,
//final boolean updateStatus,
DEBUG_LEVEL
);
}
catch
(
Exception
e
)
{
// TODO Auto-generated catch block
e
.
printStackTrace
();
}
//final int debugLevel);
}
if
(
configPath
!=
null
)
{
saveTimestampedProperties
(
// save config again
...
...
@@ -5157,7 +5127,7 @@ private Panel panel1,
true
,
PROPERTIES
);
}
System
.
out
.
println
(
"
enhanceByRig
(): Processing finished at "
+
System
.
out
.
println
(
"
processPoles
(): Processing finished at "
+
IJ
.
d2s
(
0.000000001
*(
System
.
nanoTime
()-
startTime
),
3
)+
" sec, --- Free memory="
+
Runtime
.
getRuntime
().
freeMemory
()+
" (of "
+
Runtime
.
getRuntime
().
totalMemory
()+
")"
);
...
...
@@ -5251,7 +5221,7 @@ private Panel panel1,
return
true
;
}
public
boolean
enhanceByRig
(
boolean
use_planes
)
{
public
boolean
groundTruth
(
)
{
long
startTime
=
System
.
nanoTime
();
if
((
QUAD_CLT
==
null
)
||
(
QUAD_CLT
.
tp
==
null
)
||
(
QUAD_CLT
.
tp
.
clt_3d_passes
==
null
))
{
boolean
OK
=
clt3d
(
...
...
@@ -5271,11 +5241,10 @@ private Panel panel1,
if
(
DEBUG_LEVEL
>
-
2
){
System
.
out
.
println
(
"++++++++++++++ Enhancing single-camera DSI by the dual-camera rig using planes ++++++++++++++"
);
}
TWO_QUAD_CLT
.
enhanceByRig
(
// actually there is no sense to process multiple image sets. Combine with other processing?
TWO_QUAD_CLT
.
groundTruth
(
// actually there is no sense to process multiple image sets. Combine with other processing?
QUAD_CLT
,
// QuadCLT quadCLT_main,
QUAD_CLT_AUX
,
// QuadCLT quadCLT_aux,
CLT_PARAMETERS
,
// EyesisCorrectionParameters.DCTParameters dct_parameters,
use_planes
,
// final boolean use_planes,
THREADS_MAX
,
//final int threadsMax, // maximal number of threads to launch
UPDATE_STATUS
,
//final boolean updateStatus,
DEBUG_LEVEL
-
2
);
...
...
@@ -5286,13 +5255,68 @@ private Panel panel1,
true
,
PROPERTIES
);
}
System
.
out
.
println
(
"
enhanceByRig
(): Processing finished at "
+
System
.
out
.
println
(
"
groundTruth
(): Processing finished at "
+
IJ
.
d2s
(
0.000000001
*(
System
.
nanoTime
()-
startTime
),
3
)+
" sec, --- Free memory="
+
Runtime
.
getRuntime
().
freeMemory
()+
" (of "
+
Runtime
.
getRuntime
().
totalMemory
()+
")"
);
return
true
;
}
public
boolean
batchRig
()
{
long
startTime
=
System
.
nanoTime
();
/* if ((QUAD_CLT == null) || (QUAD_CLT.tp == null) || (QUAD_CLT.tp.clt_3d_passes == null)) {
boolean OK = clt3d(
false, // boolean adjust_extrinsics,
false); // boolean adjust_poly);
if (! OK) {
String msg = "DSI data is not available and \"CLT 3D\" failed";
IJ.showMessage("Error",msg);
System.out.println(msg);
return false;
}
}
*/
// load needed sensor and kernels files
if
(!
prepareRigImages
())
return
false
;
String
configPath
=
getSaveCongigPath
();
if
(
configPath
.
equals
(
"ABORT"
))
return
false
;
if
(
DEBUG_LEVEL
>
-
2
){
System
.
out
.
println
(
"++++++++++++++ Running batch processing of dual-quad camera rig ++++++++++++++"
);
}
try
{
TWO_QUAD_CLT
.
batchRig
(
QUAD_CLT
,
// QuadCLT quadCLT_main,
QUAD_CLT_AUX
,
// QuadCLT quadCLT_aux,
CLT_PARAMETERS
,
// EyesisCorrectionParameters.DCTParameters dct_parameters,
DEBAYER_PARAMETERS
,
//EyesisCorrectionParameters.DebayerParameters debayerParameters,
COLOR_PROC_PARAMETERS
,
//EyesisCorrectionParameters.ColorProcParameters colorProcParameters,
CHANNEL_GAINS_PARAMETERS
,
//CorrectionColorProc.ColorGainsParameters channelGainParameters,
RGB_PARAMETERS
,
//EyesisCorrectionParameters.RGBParameters rgbParameters,
EQUIRECTANGULAR_PARAMETERS
,
// EyesisCorrectionParameters.EquirectangularParameters equirectangularParameters,
THREADS_MAX
,
//final int threadsMax, // maximal number of threads to launch
UPDATE_STATUS
,
//final boolean updateStatus,
DEBUG_LEVEL
);
}
catch
(
Exception
e
)
{
// TODO Auto-generated catch block
e
.
printStackTrace
();
}
//final int debugLevel);
if
(
configPath
!=
null
)
{
saveTimestampedProperties
(
// save config again
configPath
,
// full path or null
null
,
// use as default directory if path==null
true
,
PROPERTIES
);
}
System
.
out
.
println
(
"batchRig(): Processing finished at "
+
IJ
.
d2s
(
0.000000001
*(
System
.
nanoTime
()-
startTime
),
3
)+
" sec, --- Free memory="
+
Runtime
.
getRuntime
().
freeMemory
()+
" (of "
+
Runtime
.
getRuntime
().
totalMemory
()+
")"
);
return
true
;
}
public
boolean
exportMLData
()
{
long
startTime
=
System
.
nanoTime
();
if
((
QUAD_CLT
==
null
)
||
(
QUAD_CLT
.
tp
==
null
)
||
(
QUAD_CLT
.
tp
.
rig_pre_poles_ds
==
null
))
{
...
...
src/main/java/QuadCLT.java
View file @
a7a1e850
This diff is collapsed.
Click to expand it.
src/main/java/TileProcessor.java
View file @
a7a1e850
...
...
@@ -110,6 +110,13 @@ public class TileProcessor {
clt_3d_passes
=
new
ArrayList
<
CLTPass3d
>();
clt_3d_passes_size
=
0
;
clt_3d_passes_rig_size
=
0
;
rig_disparity_strength
=
null
;
// invalidate
rig_pre_poles_ds
=
null
;
rig_post_poles_ds
=
null
;
rig_pre_poles_sel
=
null
;
rig_post_poles_sel
=
null
;
clt_3d_passes_rig_size
=
0
;
Runtime
runtime
=
Runtime
.
getRuntime
();
runtime
.
gc
();
System
.
out
.
println
(
"--- Free memory="
+
runtime
.
freeMemory
()+
" (of "
+
runtime
.
totalMemory
()+
")"
);
...
...
src/main/java/TwoQuadCLT.java
View file @
a7a1e850
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