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
3430abee
Project 'Elphel/master' was moved to 'Elphel/image-compression'. Please update any links and bookmarks that may still have the old path.
Commit
3430abee
authored
Oct 16, 2023
by
Andrey Filippov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Cleaning up SfM
parent
e61d71b1
Changes
8
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
560 additions
and
216 deletions
+560
-216
Correlation2d.java
...n/java/com/elphel/imagej/tileprocessor/Correlation2d.java
+14
-0
ErsCorrection.java
...n/java/com/elphel/imagej/tileprocessor/ErsCorrection.java
+29
-29
OpticalFlow.java
...ain/java/com/elphel/imagej/tileprocessor/OpticalFlow.java
+12
-10
QuadCLTCPU.java
...main/java/com/elphel/imagej/tileprocessor/QuadCLTCPU.java
+29
-3
TDCorrTile.java
...main/java/com/elphel/imagej/tileprocessor/TDCorrTile.java
+7
-20
TwoQuadCLT.java
...main/java/com/elphel/imagej/tileprocessor/TwoQuadCLT.java
+6
-2
SfmCorr.java
...ain/java/com/elphel/imagej/tileprocessor/sfm/SfmCorr.java
+7
-0
StructureFromMotion.java
.../elphel/imagej/tileprocessor/sfm/StructureFromMotion.java
+456
-152
No files found.
src/main/java/com/elphel/imagej/tileprocessor/Correlation2d.java
View file @
3430abee
...
@@ -2506,6 +2506,20 @@ public class Correlation2d {
...
@@ -2506,6 +2506,20 @@ public class Correlation2d {
}
}
/**
* Find maximum of the 2d array projected on a specified vector using centroid.
* On the first stage integer maximum is found, then several refining operations
* multiply vicinity of the 2d max by a window function and locate the center
* of mass. In parallel (can be optimized) the center of mass is calculated for the
* dot-product of the vector and 2d array coordinates
* @param data square data array (normally result of the 2d phase correlation) in linescan order
* @param data_width size of the square (2 * transform_size - 1 for correlation)
* @param radius window: 0 - all same weight, > 0 cosine(PI/2*sqrt(dx^2+dy^2)/rad)
* @param refine number of refines
* @param direction_XY [x,y] components of the direction to project to
* @param debug debug output if true
* @return a pair of {projection_max, strength}
*/
public
static
double
[]
getMaxProjCm
(
public
static
double
[]
getMaxProjCm
(
double
[]
data
,
double
[]
data
,
int
data_width
,
// = 2 * transform_size - 1;
int
data_width
,
// = 2 * transform_size - 1;
...
...
src/main/java/com/elphel/imagej/tileprocessor/ErsCorrection.java
View file @
3430abee
...
@@ -153,36 +153,36 @@ public class ErsCorrection extends GeometryCorrection {
...
@@ -153,36 +153,36 @@ public class ErsCorrection extends GeometryCorrection {
// returned arrays have the zero element with coordinates, not derivatives
// returned arrays have the zero element with coordinates, not derivatives
// Reference parameters
// Reference parameters
static
final
int
DP_DPX
=
0
;
// dw_dpX, (pix)
public
static
final
int
DP_DPX
=
0
;
// dw_dpX, (pix)
static
final
int
DP_DPY
=
1
;
// dw_dpY (pix)
public
static
final
int
DP_DPY
=
1
;
// dw_dpY (pix)
static
final
int
DP_DD
=
2
;
// dw_dd, (pix)
public
static
final
int
DP_DD
=
2
;
// dw_dd, (pix)
static
final
int
DP_DVAZ
=
3
;
// dw_dvaz, (rad/sec)
public
static
final
int
DP_DVAZ
=
3
;
// dw_dvaz, (rad/sec)
static
final
int
DP_DVTL
=
4
;
// dw_dvtl, (rad/sec)
public
static
final
int
DP_DVTL
=
4
;
// dw_dvtl, (rad/sec)
static
final
int
DP_DVRL
=
5
;
// dw_dvrl, (rad/sec)
public
static
final
int
DP_DVRL
=
5
;
// dw_dvrl, (rad/sec)
static
final
int
DP_DVX
=
6
;
// dw_dvx, (m/s)
public
static
final
int
DP_DVX
=
6
;
// dw_dvx, (m/s)
static
final
int
DP_DVY
=
7
;
// dw_dvy, (m/s)
public
static
final
int
DP_DVY
=
7
;
// dw_dvy, (m/s)
static
final
int
DP_DVZ
=
8
;
// dw_dvz, (m/s)
public
static
final
int
DP_DVZ
=
8
;
// dw_dvz, (m/s)
static
final
int
DP_DAZ
=
9
;
// dw_daz, (rad)
public
static
final
int
DP_DAZ
=
9
;
// dw_daz, (rad)
static
final
int
DP_DTL
=
10
;
// dw_dtl, (rad)
public
static
final
int
DP_DTL
=
10
;
// dw_dtl, (rad)
static
final
int
DP_DRL
=
11
;
// dw_drl, (rad)
public
static
final
int
DP_DRL
=
11
;
// dw_drl, (rad)
static
final
int
DP_DX
=
12
;
// dw_dx, (m)
public
static
final
int
DP_DX
=
12
;
// dw_dx, (m)
static
final
int
DP_DY
=
13
;
// dw_dy, (m)
public
static
final
int
DP_DY
=
13
;
// dw_dy, (m)
static
final
int
DP_DZ
=
14
;
// dw_dz}; (m)
public
static
final
int
DP_DZ
=
14
;
// dw_dz}; (m)
// Scene parameters
// Scene parameters
static
final
int
DP_DSVAZ
=
15
;
// dw_dvaz, (rad/sec)
public
static
final
int
DP_DSVAZ
=
15
;
// dw_dvaz, (rad/sec)
static
final
int
DP_DSVTL
=
16
;
// dw_dvtl, (rad/sec)
public
static
final
int
DP_DSVTL
=
16
;
// dw_dvtl, (rad/sec)
static
final
int
DP_DSVRL
=
17
;
// dw_dvrl, (rad/sec)
public
static
final
int
DP_DSVRL
=
17
;
// dw_dvrl, (rad/sec)
static
final
int
DP_DSVX
=
18
;
// dw_dvx, (m/s)
public
static
final
int
DP_DSVX
=
18
;
// dw_dvx, (m/s)
static
final
int
DP_DSVY
=
19
;
// dw_dvy, (m/s)
public
static
final
int
DP_DSVY
=
19
;
// dw_dvy, (m/s)
static
final
int
DP_DSVZ
=
20
;
// dw_dvz, (m/s)
public
static
final
int
DP_DSVZ
=
20
;
// dw_dvz, (m/s)
static
final
int
DP_DSAZ
=
21
;
// dw_daz, (rad)
public
static
final
int
DP_DSAZ
=
21
;
// dw_daz, (rad)
static
final
int
DP_DSTL
=
22
;
// dw_dtl, (rad)
public
static
final
int
DP_DSTL
=
22
;
// dw_dtl, (rad)
static
final
int
DP_DSRL
=
23
;
// dw_drl, (rad)
public
static
final
int
DP_DSRL
=
23
;
// dw_drl, (rad)
static
final
int
DP_DSX
=
24
;
// dw_dx, (m)
public
static
final
int
DP_DSX
=
24
;
// dw_dx, (m)
static
final
int
DP_DSY
=
25
;
// dw_dy, (m)
public
static
final
int
DP_DSY
=
25
;
// dw_dy, (m)
static
final
int
DP_DSZ
=
26
;
// dw_dz}; (m)
public
static
final
int
DP_DSZ
=
26
;
// dw_dz}; (m)
static
final
int
DP_NUM_PARS
=
DP_DSZ
+
1
;
public
static
final
int
DP_NUM_PARS
=
DP_DSZ
+
1
;
static
final
int
[]
DP_ERS_INDICES
=
public
static
final
int
[]
DP_ERS_INDICES
=
{
DP_DVAZ
,
DP_DVTL
,
DP_DVRL
,
{
DP_DVAZ
,
DP_DVTL
,
DP_DVRL
,
DP_DVX
,
DP_DVY
,
DP_DVZ
,
DP_DVX
,
DP_DVY
,
DP_DVZ
,
DP_DSVAZ
,
DP_DSVTL
,
DP_DSVRL
,
DP_DSVAZ
,
DP_DSVTL
,
DP_DSVRL
,
...
...
src/main/java/com/elphel/imagej/tileprocessor/OpticalFlow.java
View file @
3430abee
...
@@ -55,6 +55,7 @@ import com.elphel.imagej.ims.Did_ins_2;
...
@@ -55,6 +55,7 @@ import com.elphel.imagej.ims.Did_ins_2;
import
com.elphel.imagej.ims.Did_pimu
;
import
com.elphel.imagej.ims.Did_pimu
;
import
com.elphel.imagej.ims.Imx5
;
import
com.elphel.imagej.ims.Imx5
;
import
com.elphel.imagej.jp4.JP46_Reader_camera
;
import
com.elphel.imagej.jp4.JP46_Reader_camera
;
import
com.elphel.imagej.tileprocessor.sfm.StructureFromMotion
;
import
Jama.Matrix
;
import
Jama.Matrix
;
import
ij.ImagePlus
;
import
ij.ImagePlus
;
...
@@ -70,7 +71,7 @@ import ij.plugin.filter.GaussianBlur;
...
@@ -70,7 +71,7 @@ import ij.plugin.filter.GaussianBlur;
public
class
OpticalFlow
{
public
class
OpticalFlow
{
public
static
String
[]
COMBO_DSN_TITLES
=
{
"disp"
,
"strength"
,
"disp_lma"
,
"num_valid"
,
"change"
,
public
static
String
[]
COMBO_DSN_TITLES
=
{
"disp"
,
"strength"
,
"disp_lma"
,
"num_valid"
,
"change"
,
"disp_bg"
,
"strength_bg"
,
"disp_lma_bg"
,
"change_bg"
,
"disp_fg"
,
"disp_bg_all"
,
"blue_sky"
};
"disp_bg"
,
"strength_bg"
,
"disp_lma_bg"
,
"change_bg"
,
"disp_fg"
,
"disp_bg_all"
,
"blue_sky"
,
"sfm_gain"
};
public
static
int
COMBO_DSN_INDX_DISP
=
0
;
// cumulative disparity (from CM or POLY), FG
public
static
int
COMBO_DSN_INDX_DISP
=
0
;
// cumulative disparity (from CM or POLY), FG
public
static
int
COMBO_DSN_INDX_STRENGTH
=
1
;
// strength, FG
public
static
int
COMBO_DSN_INDX_STRENGTH
=
1
;
// strength, FG
public
static
int
COMBO_DSN_INDX_LMA
=
2
;
// masked copy from 0 - cumulative disparity
public
static
int
COMBO_DSN_INDX_LMA
=
2
;
// masked copy from 0 - cumulative disparity
...
@@ -83,6 +84,7 @@ public class OpticalFlow {
...
@@ -83,6 +84,7 @@ public class OpticalFlow {
public
static
int
COMBO_DSN_INDX_DISP_FG
=
9
;
// cumulative disparity (from CM or POLY), FG
public
static
int
COMBO_DSN_INDX_DISP_FG
=
9
;
// cumulative disparity (from CM or POLY), FG
public
static
int
COMBO_DSN_INDX_DISP_BG_ALL
=
10
;
// cumulative BG disparity (Use FG where no BG is available)
public
static
int
COMBO_DSN_INDX_DISP_BG_ALL
=
10
;
// cumulative BG disparity (Use FG where no BG is available)
public
static
int
COMBO_DSN_INDX_BLUE_SKY
=
11
;
// Detected featureless infinity (sky)
public
static
int
COMBO_DSN_INDX_BLUE_SKY
=
11
;
// Detected featureless infinity (sky)
public
static
int
COMBO_DSN_INDX_SFM_GAIN
=
12
;
// SfM disparity gain pixel/pixel
// move to Interscene class?
// move to Interscene class?
// interscene adjustments failure reasons.
// interscene adjustments failure reasons.
...
@@ -4884,32 +4886,32 @@ public class OpticalFlow {
...
@@ -4884,32 +4886,32 @@ public class OpticalFlow {
if
(
quadCLTs
[
ref_index
].
getNumOrient
()
<
(
min_num_orient
-
1
))
{
if
(
quadCLTs
[
ref_index
].
getNumOrient
()
<
(
min_num_orient
-
1
))
{
mb_max_gain
=
clt_parameters
.
imp
.
mb_max_gain_inter
;
mb_max_gain
=
clt_parameters
.
imp
.
mb_max_gain_inter
;
}
}
/*
done_sfm
=
StructureFromMotion
.
sfmPair
(
done_sfm = StructureFromMotion.sfmPair
_ref_debug
(
clt_parameters, // final CLTParameters clt_parameters,
clt_parameters, // final CLTParameters clt_parameters,
quadCLTs[ref_index], // final QuadCLT ref_scene,
quadCLTs[ref_index], // final QuadCLT ref_scene,
quadCLTs[earliest_scene], // final QuadCLT scene,
quadCLTs[earliest_scene], // final QuadCLT scene,
mb_max_gain, // double mb_max_gain,
mb_max_gain, // double mb_max_gain,
batch_mode, // final boolean batch_mode,
batch_mode, // final boolean batch_mode,
debugLevel); // final int debugLevel)
debugLevel); // final int debugLevel)
*/
int
num_avg_pairs
=
16
;
// number of scene pairs to average
int
num_avg_pairs
=
16
;
// number of scene pairs to average
QuadCLT
[][]
scenes_pairs
=
new
QuadCLT
[
num_avg_pairs
][
2
];
QuadCLT
[][]
scenes_pairs
=
new
QuadCLT
[
num_avg_pairs
][
2
];
for
(
int
i
=
0
;
i
<
num_avg_pairs
;
i
++)
{
for
(
int
i
=
0
;
i
<
num_avg_pairs
;
i
++)
{
scenes_pairs
[
i
][
0
]
=
quadCLTs
[
ref_index
-
1
-
i
];
scenes_pairs
[
i
][
0
]
=
quadCLTs
[
ref_index
-
1
-
i
];
scenes_pairs
[
i
][
1
]
=
quadCLTs
[
earliest_scene
+
num_avg_pairs
-
1
-
i
];
scenes_pairs
[
i
][
1
]
=
quadCLTs
[
earliest_scene
+
num_avg_pairs
-
1
-
i
];
}
}
// QuadCLT[] scenes_pair = new QuadCLT[]{
double
[][]
sfm_dsn
=
StructureFromMotion
.
sfmPair
(
// quadCLTs[ref_index - 1],
// quadCLTs[earliest_scene]};
combo_dsn_final
=
StructureFromMotion
.
sfmPair
(
clt_parameters
,
// final CLTParameters clt_parameters,
clt_parameters
,
// final CLTParameters clt_parameters,
quadCLTs
[
ref_index
],
// final QuadCLT ref_scene,
quadCLTs
[
ref_index
],
// final QuadCLT ref_scene,
scenes_pairs
,
// final QuadCLT [][] scenes_pairs,
scenes_pairs
,
// final QuadCLT [][] scenes_pairs,
// scenes_pair, // final QuadCLT [] scenes,
// num_avg_pairs, // final int num_avg_pairs, // number of scene pairs to average
mb_max_gain
,
// double mb_max_gain,
mb_max_gain
,
// double mb_max_gain,
batch_mode
,
// final boolean batch_mode,
batch_mode
,
// final boolean batch_mode,
debugLevel
);
// final int debugLevel)
debugLevel
);
// final int debugLevel)
if
(
sfm_dsn
!=
null
)
{
combo_dsn_final
=
sfm_dsn
;
done_sfm
=
true
;
}
}
}
if
(!
done_sfm
)
{
// first pass or sfm failed
if
(!
done_sfm
)
{
// first pass or sfm failed
// should skip scenes w/o orientation 06/29/2022
// should skip scenes w/o orientation 06/29/2022
...
@@ -11543,7 +11545,7 @@ public class OpticalFlow {
...
@@ -11543,7 +11545,7 @@ public class OpticalFlow {
}
}
static
double
[][]
conditionInitialDS
(
public
static
double
[][]
conditionInitialDS
(
boolean
use_conf
,
// use configuration parameters, false - use following
boolean
use_conf
,
// use configuration parameters, false - use following
CLTParameters
clt_parameters
,
CLTParameters
clt_parameters
,
double
[][]
dls
,
double
[][]
dls
,
...
...
src/main/java/com/elphel/imagej/tileprocessor/QuadCLTCPU.java
View file @
3430abee
...
@@ -1521,6 +1521,10 @@ public class QuadCLTCPU {
...
@@ -1521,6 +1521,10 @@ public class QuadCLTCPU {
this
.
dsi
[
is_aux
?
TwoQuadCLT
.
DSI_BLUE_SKY_AUX
:
TwoQuadCLT
.
DSI_BLUE_SKY_MAIN
]
=
this
.
dsi
[
is_aux
?
TwoQuadCLT
.
DSI_BLUE_SKY_AUX
:
TwoQuadCLT
.
DSI_BLUE_SKY_MAIN
]
=
combo_dsi
[
OpticalFlow
.
COMBO_DSN_INDX_BLUE_SKY
];
combo_dsi
[
OpticalFlow
.
COMBO_DSN_INDX_BLUE_SKY
];
}
}
if
((
combo_dsi
.
length
>
OpticalFlow
.
COMBO_DSN_INDX_SFM_GAIN
)
&&
(
combo_dsi
[
OpticalFlow
.
COMBO_DSN_INDX_SFM_GAIN
]
!=
null
))
{
this
.
dsi
[
is_aux
?
TwoQuadCLT
.
DSI_SFM_GAIN_AUX
:
TwoQuadCLT
.
DSI_SFM_GAIN_MAIN
]
=
combo_dsi
[
OpticalFlow
.
COMBO_DSN_INDX_SFM_GAIN
];
}
}
}
...
@@ -1568,7 +1572,7 @@ public class QuadCLTCPU {
...
@@ -1568,7 +1572,7 @@ public class QuadCLTCPU {
/**
/**
* Tries to read combo DSI, if successful - sets this.dsi and blue sky
* Tries to read combo DSI, if successful - sets this.dsi and blue sky
* @param silent
* @param silent
* @return combo DSI if read, null if failed to read. Result has full leng
h
th
* @return combo DSI if read, null if failed to read. Result has full length
* (OpticalFlow.COMBO_DSN_TITLES.length), missing slices are null
* (OpticalFlow.COMBO_DSN_TITLES.length), missing slices are null
*/
*/
public
double
[][]
restoreComboDSI
(
boolean
silent
)
{
public
double
[][]
restoreComboDSI
(
boolean
silent
)
{
...
@@ -1627,18 +1631,26 @@ public class QuadCLTCPU {
...
@@ -1627,18 +1631,26 @@ public class QuadCLTCPU {
double
[]
reduced_strength
// if not null will return >0 if had to reduce strength (no change if did not reduce)
double
[]
reduced_strength
// if not null will return >0 if had to reduce strength (no change if did not reduce)
)
{
)
{
int
NUM_BINS
=
1024
;
int
NUM_BINS
=
1024
;
// 10.15.2023 - was error here, readComboDSI (silent) returns combo_dsi, not converted to this.dsi format;
// double [][] main_dsi = use_combo? readComboDSI (silent): readDsiMain();
double
[][]
main_dsi
=
null
;
boolean
silent
=
false
;
boolean
silent
=
false
;
double
[][]
main_dsi
=
use_combo
?
readComboDSI
(
silent
):
readDsiMain
();
if
(
use_combo
)
{
readComboDSI
(
silent
);
main_dsi
=
this
.
dsi
;
}
else
{
main_dsi
=
readDsiMain
();
}
if
(
main_dsi
==
null
)
{
if
(
main_dsi
==
null
)
{
return
null
;
return
null
;
}
}
double
[]
disparity_lma
=
main_dsi
[
isAux
()?
TwoQuadCLT
.
DSI_DISPARITY_AUX_LMA
:
TwoQuadCLT
.
DSI_DISPARITY_MAIN_LMA
];
double
[]
disparity_lma
=
main_dsi
[
isAux
()?
TwoQuadCLT
.
DSI_DISPARITY_AUX_LMA
:
TwoQuadCLT
.
DSI_DISPARITY_MAIN_LMA
];
double
[]
strength
=
main_dsi
[
isAux
()?
TwoQuadCLT
.
DSI_STRENGTH_AUX
:
TwoQuadCLT
.
DSI_STRENGTH_MAIN
];
double
[]
strength
=
main_dsi
[
isAux
()?
TwoQuadCLT
.
DSI_STRENGTH_AUX
:
TwoQuadCLT
.
DSI_STRENGTH_MAIN
];
double
[]
sfm_gain
=
main_dsi
[
isAux
()?
TwoQuadCLT
.
DSI_SFM_GAIN_AUX
:
TwoQuadCLT
.
DSI_SFM_GAIN_MAIN
];
if
((
strength
==
null
)
||
(
needs_lma
&&
(
disparity_lma
==
null
)
))
{
if
((
strength
==
null
)
||
(
needs_lma
&&
(
disparity_lma
==
null
)
))
{
return
null
;
return
null
;
}
}
int
min_reliable
=
(
int
)
Math
.
round
(
strength
.
length
*
min_ref_frac
);
int
min_reliable
=
(
int
)
Math
.
round
(
strength
.
length
*
min_ref_frac
);
strength
=
strength
.
clone
();
strength
=
strength
.
clone
();
boolean
[]
reliable
=
new
boolean
[
strength
.
length
];
boolean
[]
reliable
=
new
boolean
[
strength
.
length
];
for
(
int
i
=
0
;
i
<
reliable
.
length
;
i
++)
{
for
(
int
i
=
0
;
i
<
reliable
.
length
;
i
++)
{
...
@@ -1654,6 +1666,20 @@ public class QuadCLTCPU {
...
@@ -1654,6 +1666,20 @@ public class QuadCLTCPU {
}
}
}
}
}
}
int
num_sfm_gain
=
0
;
for
(
int
i
=
0
;
i
<
reliable
.
length
;
i
++)
{
if
(
sfm_gain
[
i
]
>
0
)
{
num_sfm_gain
++;
}
}
if
(
num_sfm_gain
>
min_reliable
)
{
for
(
int
i
=
0
;
i
<
reliable
.
length
;
i
++)
{
if
(
sfm_gain
[
i
]
<=
0
){
reliable
[
i
]
=
false
;
strength
[
i
]
=
0.0
;
}
}
}
int
num_reliable
=
0
;
int
num_reliable
=
0
;
for
(
boolean
b:
reliable
)
if
(
b
)
num_reliable
++;
for
(
boolean
b:
reliable
)
if
(
b
)
num_reliable
++;
...
...
src/main/java/com/elphel/imagej/tileprocessor/TDCorrTile.java
View file @
3430abee
...
@@ -66,17 +66,6 @@ public class TDCorrTile {
...
@@ -66,17 +66,6 @@ public class TDCorrTile {
}
}
}
}
/*
if (fcorr_combo_td != null) {
gpuQuad.getCorrTilesTdInterCombo(
fcorr_combo_td); // final float [][] corr_tiles_combo)
}
return;
*/
/**
/**
* Get Transform-domain 2D correlation tile weight needed for fat zero in phase
* Get Transform-domain 2D correlation tile weight needed for fat zero in phase
* correlation and transform to the pixel domain.
* correlation and transform to the pixel domain.
...
@@ -334,7 +323,6 @@ public class TDCorrTile {
...
@@ -334,7 +323,6 @@ public class TDCorrTile {
final
double
gpu_fat_zero
,
final
double
gpu_fat_zero
,
final
int
debug_level
final
int
debug_level
){
){
// final double gpu_fat_zero = clt_parameters.getGpuFatZeroInter(monochrome);
final
int
corr_size_td
=
4
*
GPUTileProcessor
.
DTT_SIZE
*
GPUTileProcessor
.
DTT_SIZE
;
final
int
corr_size_td
=
4
*
GPUTileProcessor
.
DTT_SIZE
*
GPUTileProcessor
.
DTT_SIZE
;
final
int
gpu_corr_rad
=
GPUTileProcessor
.
DTT_SIZE
-
1
;
final
int
gpu_corr_rad
=
GPUTileProcessor
.
DTT_SIZE
-
1
;
final
int
[]
indices
=
new
int
[
tiles
.
length
];
final
int
[]
indices
=
new
int
[
tiles
.
length
];
...
@@ -397,6 +385,13 @@ public class TDCorrTile {
...
@@ -397,6 +385,13 @@ public class TDCorrTile {
return
mapped_corrs
;
return
mapped_corrs
;
}
}
/**
* Get GPU TD data after interscene correlation of 2 scenes (only use
* combo of all channels)
* @param gpuQuad GPU quad instance
* @return TDCorrTile [] array, with weight equal to number of channels
* combined (normally 16)
*/
public
static
TDCorrTile
[]
getFromGpu
(
public
static
TDCorrTile
[]
getFromGpu
(
GpuQuad
gpuQuad
)
{
GpuQuad
gpuQuad
)
{
int
tilesX
=
gpuQuad
.
getImageWidth
()
/
GpuQuad
.
getDttSize
();
int
tilesX
=
gpuQuad
.
getImageWidth
()
/
GpuQuad
.
getDttSize
();
...
@@ -429,12 +424,4 @@ public class TDCorrTile {
...
@@ -429,12 +424,4 @@ public class TDCorrTile {
ImageDtt
.
startAndJoin
(
threads
);
ImageDtt
.
startAndJoin
(
threads
);
return
tiles
;
return
tiles
;
}
}
/*
if (fcorr_combo_td != null) {
gpuQuad.getCorrTilesTdInterCombo(
fcorr_combo_td); // final float [][] corr_tiles_combo)
}
return;
*/
}
}
src/main/java/com/elphel/imagej/tileprocessor/TwoQuadCLT.java
View file @
3430abee
...
@@ -80,7 +80,9 @@ public class TwoQuadCLT {
...
@@ -80,7 +80,9 @@ public class TwoQuadCLT {
public
static
int
DSI_AVGVAL_AUX
=
12
;
public
static
int
DSI_AVGVAL_AUX
=
12
;
public
static
int
DSI_BLUE_SKY_MAIN
=
13
;
public
static
int
DSI_BLUE_SKY_MAIN
=
13
;
public
static
int
DSI_BLUE_SKY_AUX
=
14
;
public
static
int
DSI_BLUE_SKY_AUX
=
14
;
public
static
int
DSI_LENGTH
=
DSI_BLUE_SKY_AUX
+
1
;
public
static
int
DSI_SFM_GAIN_MAIN
=
15
;
// SfM disparity gain pixel/pixel, RGB
public
static
int
DSI_SFM_GAIN_AUX
=
16
;
// SfM disparity gain pixel/pixel, LWIR
public
static
int
DSI_LENGTH
=
DSI_SFM_GAIN_AUX
+
1
;
public
static
String
DSI_COMBO_SUFFIX
=
"-DSI_COMBO"
;
public
static
String
DSI_COMBO_SUFFIX
=
"-DSI_COMBO"
;
public
static
String
DSI_MAIN_SUFFIX
=
"-DSI_MAIN"
;
public
static
String
DSI_MAIN_SUFFIX
=
"-DSI_MAIN"
;
...
@@ -100,7 +102,9 @@ public class TwoQuadCLT {
...
@@ -100,7 +102,9 @@ public class TwoQuadCLT {
"avgval_main"
,
"avgval_main"
,
"avgval_aux"
,
"avgval_aux"
,
"blue_sky_main"
,
"blue_sky_main"
,
"blue_sky_aux"
};
"blue_sky_aux"
,
"sfm_gain_main"
,
"sfm_gain_aux"
};
public
long
startTime
;
// start of batch processing
public
long
startTime
;
// start of batch processing
public
long
startSetTime
;
// start of set processing
public
long
startSetTime
;
// start of set processing
...
...
src/main/java/com/elphel/imagej/tileprocessor/sfm/SfmCorr.java
0 → 100644
View file @
3430abee
package
com
.
elphel
.
imagej
.
tileprocessor
.
sfm
;
class
SfmCorr
{
double
sfm_gain
;
double
[]
corr_ind
=
null
;
// {disparity, strength}
double
[]
corr_neib
=
null
;
// {disparity, strength}
}
src/main/java/com/elphel/imagej/tileprocessor/StructureFromMotion.java
→
src/main/java/com/elphel/imagej/tileprocessor/
sfm/
StructureFromMotion.java
View file @
3430abee
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