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
2ea2b2c9
Commit
2ea2b2c9
authored
Jun 01, 2018
by
Andrey Filippov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
More work on low-textured areas with bi-quad camera
parent
b3cf8b8a
Changes
8
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
2596 additions
and
41 deletions
+2596
-41
BiCamDSI.java
src/main/java/BiCamDSI.java
+44
-5
BiQuadParameters.java
src/main/java/BiQuadParameters.java
+274
-3
BiScan.java
src/main/java/BiScan.java
+1431
-0
Eyesis_Correction.java
src/main/java/Eyesis_Correction.java
+30
-14
ImageDtt.java
src/main/java/ImageDtt.java
+4
-4
QuadCLT.java
src/main/java/QuadCLT.java
+54
-0
TileNeibs.java
src/main/java/TileNeibs.java
+6
-0
TwoQuadCLT.java
src/main/java/TwoQuadCLT.java
+753
-15
No files found.
src/main/java/BiCamDSI.java
View file @
2ea2b2c9
...
@@ -5,7 +5,7 @@
...
@@ -5,7 +5,7 @@
**
**
** -----------------------------------------------------------------------------**
** -----------------------------------------------------------------------------**
**
**
**
TwoQuadCLT
.java is free software: you can redistribute it and/or modify
**
BiCamDSI
.java is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation, either version 3 of the License, or
** the Free Software Foundation, either version 3 of the License, or
** (at your option) any later version.
** (at your option) any later version.
...
@@ -25,13 +25,52 @@ import java.util.ArrayList;
...
@@ -25,13 +25,52 @@ import java.util.ArrayList;
public
class
BiCamDSI
{
public
class
BiCamDSI
{
// public int tilesX;
TileNeibs
tnImage
;
// = new TileNeibs(tilesX, tilesY)
// public int tilesY;
int
threadsMax
;
TileNeibs
tnImage
;
// = new TileNeibs(tilesX, tilesY)
ArrayList
<
BiScan
>
biScans
;
public
int
addBiScan
(
double
[]
disparity
,
double
[]
strength
,
boolean
[]
trusted
,
boolean
[]
disabled
)
{
if
(
biScans
==
null
)
biScans
=
new
ArrayList
<
BiScan
>();
biScans
.
add
(
new
BiScan
(
this
,
biScans
.
size
(),
disparity
,
strength
,
trusted
,
disabled
));
return
biScans
.
size
()-
1
;
}
public
int
addBiScan
(
double
[][]
disparity_bimap
)
{
return
addBiScan
(
disparity_bimap
[
ImageDtt
.
BI_TARGET_INDEX
],
// double [] disparity,
disparity_bimap
[
ImageDtt
.
BI_STR_CROSS_INDEX
],
// double [] strength,
null
,
// boolean [] trusted,
null
);
// boolean [] disabled)
}
public
BiScan
getLastBiScan
()
{
return
getBiScan
(-
1
);
}
public
BiScan
getBiScan
(
int
indx
)
{
if
(
biScans
.
isEmpty
())
return
null
;
return
biScans
.
get
((
indx
>=
0
)?
indx:
(
biScans
.
size
()
-
1
));
}
public
double
[]
getTargetDisparity
(
int
indx
)
{
BiScan
biScan
=
getBiScan
(
indx
);
if
(
biScan
==
null
)
return
null
;
return
biScan
.
target_disparity
;
}
public
BiCamDSI
(
public
BiCamDSI
(
int
tilesX
,
int
tilesX
,
int
tilesY
)
{
int
tilesY
,
int
threadsMax
)
{
this
.
threadsMax
=
threadsMax
;
tnImage
=
new
TileNeibs
(
tilesX
,
tilesY
);
tnImage
=
new
TileNeibs
(
tilesX
,
tilesY
);
}
}
...
...
src/main/java/BiQuadParameters.java
View file @
2ea2b2c9
This diff is collapsed.
Click to expand it.
src/main/java/BiScan.java
0 → 100644
View file @
2ea2b2c9
This diff is collapsed.
Click to expand it.
src/main/java/Eyesis_Correction.java
View file @
2ea2b2c9
...
@@ -588,6 +588,9 @@ private Panel panel1,
...
@@ -588,6 +588,9 @@ private Panel panel1,
addButton
(
"AUX Extrinsics"
,
panelClt4
,
color_process
);
addButton
(
"AUX Extrinsics"
,
panelClt4
,
color_process
);
addButton
(
"AUX show fine"
,
panelClt4
,
color_configure
);
addButton
(
"AUX show fine"
,
panelClt4
,
color_configure
);
// addButton("Rig enhance", 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
(
"Ground truth"
,
panelClt4
,
color_conf_process
);
addButton
(
"ML export"
,
panelClt4
,
color_conf_process
);
addButton
(
"ML export"
,
panelClt4
,
color_conf_process
);
addButton
(
"Rig planes"
,
panelClt4
,
color_conf_process
);
addButton
(
"Rig planes"
,
panelClt4
,
color_conf_process
);
...
@@ -4593,14 +4596,28 @@ private Panel panel1,
...
@@ -4593,14 +4596,28 @@ private Panel panel1,
QuadCLT
dbg_QUAD_CLT_AUX
=
QUAD_CLT_AUX
;
QuadCLT
dbg_QUAD_CLT_AUX
=
QUAD_CLT_AUX
;
return
;
return
;
/* ======================================================================== */
}
else
if
(
label
.
equals
(
"Reset GT"
))
{
DEBUG_LEVEL
=
MASTER_DEBUG_LEVEL
;
EYESIS_CORRECTIONS
.
setDebug
(
DEBUG_LEVEL
);
resetGroundTruth
();
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"
))
{
}
else
if
(
label
.
equals
(
"Ground truth"
))
{
DEBUG_LEVEL
=
MASTER_DEBUG_LEVEL
;
DEBUG_LEVEL
=
MASTER_DEBUG_LEVEL
;
EYESIS_CORRECTIONS
.
setDebug
(
DEBUG_LEVEL
);
EYESIS_CORRECTIONS
.
setDebug
(
DEBUG_LEVEL
);
enhanceByRig
();
enhanceByRig
(
true
);
return
;
return
;
/* ======================================================================== */
/* ======================================================================== */
}
else
if
(
label
.
equals
(
"CLT planes"
))
{
}
else
if
(
label
.
equals
(
"CLT planes"
))
{
DEBUG_LEVEL
=
MASTER_DEBUG_LEVEL
;
DEBUG_LEVEL
=
MASTER_DEBUG_LEVEL
;
EYESIS_CORRECTIONS
.
setDebug
(
DEBUG_LEVEL
);
EYESIS_CORRECTIONS
.
setDebug
(
DEBUG_LEVEL
);
...
@@ -5052,10 +5069,14 @@ private Panel panel1,
...
@@ -5052,10 +5069,14 @@ private Panel panel1,
return
true
;
return
true
;
}
}
//resetGroundTruthByRig()
public
boolean
enhanceByRig
()
{
public
boolean
resetGroundTruth
()
{
if
((
QUAD_CLT
==
null
)
||
(
QUAD_CLT
.
tp
==
null
))
return
false
;
QUAD_CLT
.
resetGroundTruthByRig
();
return
true
;
}
public
boolean
enhanceByRig
(
boolean
use_planes
)
{
long
startTime
=
System
.
nanoTime
();
long
startTime
=
System
.
nanoTime
();
if
((
QUAD_CLT
==
null
)
||
(
QUAD_CLT
.
tp
==
null
)
||
(
QUAD_CLT
.
tp
.
clt_3d_passes
==
null
))
{
if
((
QUAD_CLT
==
null
)
||
(
QUAD_CLT
.
tp
==
null
)
||
(
QUAD_CLT
.
tp
.
clt_3d_passes
==
null
))
{
String
msg
=
"DSI data is not available. Please run \"CLT 3D\" first"
;
String
msg
=
"DSI data is not available. Please run \"CLT 3D\" first"
;
IJ
.
showMessage
(
"Error"
,
msg
);
IJ
.
showMessage
(
"Error"
,
msg
);
...
@@ -5066,22 +5087,17 @@ private Panel panel1,
...
@@ -5066,22 +5087,17 @@ private Panel panel1,
String
configPath
=
getSaveCongigPath
();
String
configPath
=
getSaveCongigPath
();
if
(
configPath
.
equals
(
"ABORT"
))
return
false
;
if
(
configPath
.
equals
(
"ABORT"
))
return
false
;
if
(
DEBUG_LEVEL
>
-
2
){
if
(
DEBUG_LEVEL
>
-
2
){
System
.
out
.
println
(
"++++++++++++++ Enhancing single-camera DSI by the dual-camera rig++++++++++++++"
);
System
.
out
.
println
(
"++++++++++++++ Enhancing single-camera DSI by the dual-camera rig using planes ++++++++++++++"
);
}
}
try
{
TWO_QUAD_CLT
.
enhanceByRig
(
// actually there is no sense to process multiple image sets. Combine with other processing?
TWO_QUAD_CLT
.
enhanceByRig
(
// actually there is no sense to process multiple image sets. Combine with other processing?
QUAD_CLT
,
// QuadCLT quadCLT_main,
QUAD_CLT
,
// QuadCLT quadCLT_main,
QUAD_CLT_AUX
,
// QuadCLT quadCLT_aux,
QUAD_CLT_AUX
,
// QuadCLT quadCLT_aux,
CLT_PARAMETERS
,
// EyesisCorrectionParameters.DCTParameters dct_parameters,
CLT_PARAMETERS
,
// EyesisCorrectionParameters.DCTParameters dct_parameters,
use_planes
,
// final boolean use_planes,
THREADS_MAX
,
//final int threadsMax, // maximal number of threads to launch
THREADS_MAX
,
//final int threadsMax, // maximal number of threads to launch
UPDATE_STATUS
,
//final boolean updateStatus,
UPDATE_STATUS
,
//final boolean updateStatus,
DEBUG_LEVEL
);
DEBUG_LEVEL
);
}
catch
(
Exception
e
)
{
// TODO Auto-generated catch block
e
.
printStackTrace
();
}
//final int debugLevel);
if
(
configPath
!=
null
)
{
if
(
configPath
!=
null
)
{
saveTimestampedProperties
(
// save config again
saveTimestampedProperties
(
// save config again
configPath
,
// full path or null
configPath
,
// full path or null
...
...
src/main/java/ImageDtt.java
View file @
2ea2b2c9
...
@@ -2711,7 +2711,7 @@ public class ImageDtt {
...
@@ -2711,7 +2711,7 @@ public class ImageDtt {
for
(
int
chn
=
0
;
chn
<
numcol
;
chn
++){
for
(
int
chn
=
0
;
chn
<
numcol
;
chn
++){
tiles_debayered
[
i
][
chn
]
=
tile_debayer_shot_corr
(
tiles_debayered
[
i
][
chn
]
=
tile_debayer_shot_corr
(
(
chn
!=
2
),
// red or blue (f
la
se - green)
(
chn
!=
2
),
// red or blue (f
al
se - green)
iclt_tile
[
i
][
chn
],
iclt_tile
[
i
][
chn
],
2
*
transform_size
,
2
*
transform_size
,
lt_window2
,
// squared lapping window
lt_window2
,
// squared lapping window
...
@@ -7098,12 +7098,12 @@ public class ImageDtt {
...
@@ -7098,12 +7098,12 @@ public class ImageDtt {
for
(
int
i
=
0
;
i
<
quad
;
i
++){
for
(
int
i
=
0
;
i
<
quad
;
i
++){
for
(
int
chn
=
0
;
chn
<
numcol
;
chn
++){
for
(
int
chn
=
0
;
chn
<
numcol
;
chn
++){
// tiles_debayered[i][chn] = tile_debayer(
// tiles_debayered[i][chn] = tile_debayer(
// (chn != 2), // red or blue (f
la
se - green)
// (chn != 2), // red or blue (f
al
se - green)
// iclt_tile[i][chn],
// iclt_tile[i][chn],
// 2 * transform_size);
// 2 * transform_size);
tiles_debayered
[
i
][
chn
]
=
tile_debayer_shot_corr
(
tiles_debayered
[
i
][
chn
]
=
tile_debayer_shot_corr
(
(
chn
!=
2
),
// red or blue (f
la
se - green)
(
chn
!=
2
),
// red or blue (f
al
se - green)
iclt_tile
[
i
][
chn
],
iclt_tile
[
i
][
chn
],
2
*
transform_size
,
2
*
transform_size
,
lt_window2
,
// squared lapping window
lt_window2
,
// squared lapping window
...
@@ -7642,7 +7642,7 @@ public class ImageDtt {
...
@@ -7642,7 +7642,7 @@ public class ImageDtt {
for
(
int
chn
=
0
;
chn
<
numcol
;
chn
++){
for
(
int
chn
=
0
;
chn
<
numcol
;
chn
++){
tiles_debayered
[
i
][
chn
]
=
tile_debayer_shot_corr
(
tiles_debayered
[
i
][
chn
]
=
tile_debayer_shot_corr
(
(
chn
!=
2
),
// red or blue (f
la
se - green)
(
chn
!=
2
),
// red or blue (f
al
se - green)
iclt_tile
[
i
][
chn
],
iclt_tile
[
i
][
chn
],
2
*
clt_parameters
.
transform_size
,
2
*
clt_parameters
.
transform_size
,
lt_window2
,
// squared lapping window
lt_window2
,
// squared lapping window
...
...
src/main/java/QuadCLT.java
View file @
2ea2b2c9
...
@@ -73,6 +73,9 @@ public class QuadCLT {
...
@@ -73,6 +73,9 @@ public class QuadCLT {
// magic scale should be set before using TileProcessor (calculated disparities depend on it)
// magic scale should be set before using TileProcessor (calculated disparities depend on it)
public
void
resetGroundTruthByRig
()
{
tp
.
rig_disparity_strength
=
null
;
}
public
double
[][]
getGroundTruthByRig
(){
public
double
[][]
getGroundTruthByRig
(){
if
(
tp
==
null
)
return
null
;
if
(
tp
==
null
)
return
null
;
return
tp
.
rig_disparity_strength
;
return
tp
.
rig_disparity_strength
;
...
@@ -118,6 +121,57 @@ public class QuadCLT {
...
@@ -118,6 +121,57 @@ public class QuadCLT {
}
}
}
}
// used for aux camera
public
boolean
setupImageData
(
String
image_name
,
String
[]
sourceFiles
,
EyesisCorrectionParameters
.
CLTParameters
clt_parameters
,
int
threadsMax
,
int
debugLevel
)
{
QuadCLT
.
SetChannels
[]
set_channels_aux
=
setChannels
(
image_name
,
debugLevel
);
if
((
set_channels_aux
==
null
)
||
(
set_channels_aux
.
length
==
0
))
{
System
.
out
.
println
(
"No files for the auxiliary camera match series "
+
image_name
);
return
false
;
}
double
[]
referenceExposures_aux
=
eyesisCorrections
.
calcReferenceExposures
(
debugLevel
);
// multiply each image by this and divide by individual (if not NaN)
int
[]
channelFiles_aux
=
set_channels_aux
[
0
].
fileNumber
();
// make single
boolean
[][]
saturation_aux
=
(
clt_parameters
.
sat_level
>
0.0
)?
new
boolean
[
channelFiles_aux
.
length
][]
:
null
;
double
[]
scaleExposures_aux
=
new
double
[
channelFiles_aux
.
length
];
ImagePlus
[]
imp_srcs_aux
=
conditionImageSet
(
clt_parameters
,
// EyesisCorrectionParameters.CLTParameters clt_parameters,
sourceFiles
,
// String [] sourceFiles,
image_name
,
// set_channels_aux[0].name(), // String set_name,
referenceExposures_aux
,
// double [] referenceExposures,
channelFiles_aux
,
// int [] channelFiles,
scaleExposures_aux
,
//output // double [] scaleExposures
saturation_aux
,
//output // boolean [][] saturation_imp,
debugLevel
);
// int debugLevel);
double
[][][]
double_stacks_aux
=
new
double
[
imp_srcs_aux
.
length
][][];
for
(
int
i
=
0
;
i
<
double_stacks_aux
.
length
;
i
++){
double_stacks_aux
[
i
]
=
eyesisCorrections
.
bayerToDoubleStack
(
imp_srcs_aux
[
i
],
// source Bayer image, linearized, 32-bit (float))
null
);
// no margins, no oversample
}
for
(
int
i
=
0
;
i
<
double_stacks_aux
.
length
;
i
++){
for
(
int
j
=
0
;
j
<
double_stacks_aux
[
i
][
0
].
length
;
j
++){
double_stacks_aux
[
i
][
2
][
j
]*=
0.5
;
// Scale green 0.5 to compensate more pixels than R,B
}
}
setTiles
(
imp_srcs_aux
[
0
],
// set global tp.tilesX, tp.tilesY
clt_parameters
,
threadsMax
);
this
.
image_name
=
image_name
;
image_data
=
double_stacks_aux
;
saturation_imp
=
saturation_aux
;
tp
.
setTrustedCorrelation
(
clt_parameters
.
grow_disp_trust
);
tp
.
resetCLTPasses
();
return
true
;
}
public
QuadCLT
(
public
QuadCLT
(
String
prefix
,
String
prefix
,
...
...
src/main/java/TileNeibs.java
View file @
2ea2b2c9
...
@@ -59,6 +59,12 @@ public class TileNeibs{
...
@@ -59,6 +59,12 @@ public class TileNeibs{
int
[]
xy
=
{
indx
%
sizeX
,
indx
/
sizeX
};
int
[]
xy
=
{
indx
%
sizeX
,
indx
/
sizeX
};
return
xy
;
return
xy
;
}
}
int
getSizeX
()
{
return
sizeX
;
}
int
getSizeY
()
{
return
sizeY
;
}
/**
/**
* Get element index from x and y
* Get element index from x and y
...
...
src/main/java/TwoQuadCLT.java
View file @
2ea2b2c9
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