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
02a4440e
Commit
02a4440e
authored
Jan 17, 2023
by
Andrey Filippov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Documenting, cleaning up
parent
b4600e81
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
91 additions
and
44 deletions
+91
-44
CLTParameters.java
src/main/java/com/elphel/imagej/cameras/CLTParameters.java
+2
-2
IntersceneMatchParameters.java
...lphel/imagej/tileprocessor/IntersceneMatchParameters.java
+1
-1
OpticalFlow.java
...ain/java/com/elphel/imagej/tileprocessor/OpticalFlow.java
+5
-4
TexturedModel.java
...n/java/com/elphel/imagej/tileprocessor/TexturedModel.java
+7
-4
TileNeibs.java
src/main/java/com/elphel/imagej/tileprocessor/TileNeibs.java
+57
-4
TileProcessor.java
...n/java/com/elphel/imagej/tileprocessor/TileProcessor.java
+18
-15
TriMesh.java
src/main/java/com/elphel/imagej/x3d/export/TriMesh.java
+1
-14
No files found.
src/main/java/com/elphel/imagej/cameras/CLTParameters.java
View file @
02a4440e
...
...
@@ -3172,7 +3172,7 @@ public class CLTParameters {
gd
.
addNumericField
(
"Lazy eye cluster size"
,
this
.
tileStep
,
0
,
6
,
"tiles"
,
"Process tileStep x tileStep cluster of tiles when adjusting lazy eye parameters"
);
gd
.
addNumericField
(
"Consolidate multiple clusterts around given for low-contrast infinity"
,
this
.
super_radius
,
0
,
6
,
"clusters"
,
"e.g. for clouds in t
g
he sky 0 - none, 1 - 3x3, 2 - 5x5"
);
"e.g. for clouds in the sky 0 - none, 1 - 3x3, 2 - 5x5"
);
gd
.
addNumericField
(
"Bit mask - which of 4 transforms to combine after iclt"
,
this
.
iclt_mask
,
0
);
gd
.
addNumericField
(
"Tile X to extract (0..163)"
,
this
.
tileX
,
0
);
gd
.
addNumericField
(
"Tile Y to extract (0..122)"
,
this
.
tileY
,
0
);
...
...
@@ -3628,7 +3628,7 @@ public class CLTParameters {
gd
.
addNumericField
(
"Maximal motion blur to reduce weight"
,
this
.
tex_mb
,
5
,
7
,
"pix"
,
"Reduce texture weight if motion blur exceeds this (as square of MB length)."
);
gd
.
addNumericField
(
"Max disparity for mesh
e generation"
,
this
.
tex_max_disparity_lim
,
5
,
7
,
"pix"
,
gd
.
addNumericField
(
"Max disparity for mesh
generation"
,
this
.
tex_max_disparity_lim
,
5
,
7
,
"pix"
,
"Do not allow stray disparities above this."
);
gd
.
addNumericField
(
"Minimal disparity for FG trimming"
,
this
.
tex_min_trim_disparity
,
5
,
7
,
"pix"
,
"Do not try to trim texture outlines with lower disparities."
);
...
...
src/main/java/com/elphel/imagej/tileprocessor/IntersceneMatchParameters.java
View file @
02a4440e
...
...
@@ -142,7 +142,7 @@ public class IntersceneMatchParameters {
public
double
cold_scale
=
0.2
;
// <=1.0. 1.0 - disables temperature dependence
public
double
sky_seed
=
5.0
;
// start with product of strength by diff_second below this
public
double
lma_seed
=
2.0
;
// seed - disparity_lma limit double sky_lim = 15.0; // then expand to product of strength by diff_second below this
public
int
sky_shrink
=
3
;
public
int
sky_shrink
=
2
;
public
int
seed_rows
=
5
;
// sky should appear in this top rows
public
double
sky_lim
=
15.0
;
// then expand to product of strength by diff_second below this
public
int
sky_expand_extra
=
0
;
// 1?
...
...
src/main/java/com/elphel/imagej/tileprocessor/OpticalFlow.java
View file @
02a4440e
...
...
@@ -4878,7 +4878,7 @@ public class OpticalFlow {
// generates 3-d modes, colors, stereos, tiffs/videos
if
(
generate_mapped
||
reuse_video
)
{
if
(
generate_mapped
||
reuse_video
)
{
// modifies combo_dsn_final ?
int
tilesX
=
quadCLTs
[
ref_index
].
getTileProcessor
().
getTilesX
();
int
tilesY
=
quadCLTs
[
ref_index
].
getTileProcessor
().
getTilesY
();
double
[]
disparity_fg
=
null
;
...
...
@@ -4895,7 +4895,7 @@ public class OpticalFlow {
0
,
// int num_slices, // (0 - all)
null
);
// int [] wh);
}
double
[][]
dls
=
{
double
[][]
dls
=
{
combo_dsn_final
[
COMBO_DSN_INDX_DISP
],
combo_dsn_final
[
COMBO_DSN_INDX_LMA
],
combo_dsn_final
[
COMBO_DSN_INDX_STRENGTH
]
...
...
@@ -5328,7 +5328,7 @@ public class OpticalFlow {
// debugging 3D model
if
(
export3d
)
{
if
(
export3d
)
{
//combo_dsn_final had strength 1.0e-4 where it should not? Reset it?
boolean
ok_3d
=
TexturedModel
.
output3d
(
// quadCLTs have same image name, and everything else
clt_parameters
,
// CLTParameters clt_parameters,
colorProcParameters
,
// ColorProcParameters colorProcParameters,
...
...
@@ -10472,7 +10472,8 @@ public class OpticalFlow {
sigma
);
// double sigma);
dbg_img
[
11
]
=
disp
.
clone
();
double
[][]
ds
=
{
disp
,
dls
[
2
]};
if
(
blue_sky
!=
null
)
{
// Temporary, dix - pass blue_sky to fillDisparityStrength()
if
(
blue_sky
!=
null
)
{
// Temporary, fix - pass blue_sky to fillDisparityStrength()
ds
[
1
]
=
ds
[
1
].
clone
();
for
(
int
i
=
0
;
i
<
clean_lma
.
length
;
i
++)
if
(
blue_sky
[
i
]){
ds
[
0
][
i
]
=
0.0
;
ds
[
1
][
i
]
=
0.0001
;
...
...
src/main/java/com/elphel/imagej/tileprocessor/TexturedModel.java
View file @
02a4440e
...
...
@@ -1653,7 +1653,7 @@ public class TexturedModel {
final
int
jpeg_quality
=
clt_parameters
.
tex_jpeg_quality
;
//95; // JPEG quality for textures
final
boolean
showTri
=
!
batch_mode
&&
(
debugLevel
>
-
1
)
&&
(
clt_parameters
.
show_triangles
);
final
boolean
disp_hires_tri
=
clt_parameters
.
tex_disp_hires_tri
;
final
boolean
disp_hires_tri
=
!
batch_mode
&&
clt_parameters
.
tex_disp_hires_tri
;
final
int
dbg_scale_mesh
=
clt_parameters
.
tex_dbg_scale_mesh
;
// 4; // <=0 - do not show
...
...
@@ -1678,6 +1678,11 @@ public class TexturedModel {
final
int
width
=
tilesX
*
transform_size
;
final
int
height
=
tp
.
getTilesY
()
*
transform_size
;
// get multi-scene disparity map for FG and BG and filter it
if
(
combo_dsn_final
!=
null
)
{
System
.
out
.
println
(
"output3d(): combo_dsn_final is not null - setting it to null"
);
System
.
out
.
println
(
"As there was a problem with (wrong?) blue sky setting strength to 0.0001"
);
combo_dsn_final
=
null
;
}
if
(
combo_dsn_final
==
null
)
{
combo_dsn_final
=
scenes
[
ref_index
].
readDoubleArrayFromModelDirectory
(
"-INTER-INTRA-LMA"
,
// String suffix,
...
...
@@ -2000,9 +2005,8 @@ public class TexturedModel {
tp
.
getTilesY
(),
// int tilesY,
ref_scene
.
getGeometryCorrection
(),
// GeometryCorrection geometryCorrection,
clt_parameters
.
correct_distortions
,
// requires backdrop image to be corrected also
dbg_mesh_imgs
[
nslice
]
,
// double [] tri_img, //
((
dbg_mesh_imgs
!=
null
)
?
dbg_mesh_imgs
[
nslice
]:
null
)
,
// double [] tri_img, //
dbg_scaled_width
,
// int tri_img_width,
// showTri, // (scanIndex < next_pass + 1) && clt_parameters.show_triangles,
// FIXME: make a separate parameter:
infinity_disparity
,
// 0.25 * clt_parameters.bgnd_range, // 0.3
clt_parameters
.
grow_disp_max
,
// other_range, // 2.0 'other_range - difference from the specified (*_CM)
...
...
@@ -2010,7 +2014,6 @@ public class TexturedModel {
clt_parameters
.
maxZtoXY
,
// double maxZtoXY, // 10.0. <=0 - do not use
clt_parameters
.
maxZ
,
clt_parameters
.
limitZ
,
// dbg_disp_tri_slice, // double [][] dbg_disp_tri_slice,
debugLevel
+
1
,
// int debug_level) > 0
clt_parameters
.
tex_dbg_plot_center
,
// boolean dbg_plot_center, // = true;
clt_parameters
.
tex_dbg_line_color
,
// double dbg_line_color, // = 1.0;
...
...
src/main/java/com/elphel/imagej/tileprocessor/TileNeibs.java
View file @
02a4440e
...
...
@@ -392,6 +392,11 @@ public class TileNeibs{
return
-
1
;
// should not happen
}
/**
* Invert selection in a single or multithreaded environment.
* @param tiles array to invert
* @return inverted array
*/
public
static
boolean
[]
invertSelection
(
final
boolean
[]
tiles
)
{
final
boolean
[]
itiles
=
new
boolean
[
tiles
.
length
];
...
...
@@ -399,6 +404,12 @@ public class TileNeibs{
return
itiles
;
}
/**
* Invert selection in a single or multithreaded environment. May be in-place if tiles and itiles
* are the same array.
* @param tiles input array to be inverted
* @param itiles output array of the same size as the input one. May be the same as tiles
*/
public
static
void
invertSelection
(
final
boolean
[]
tiles
,
final
boolean
[]
itiles
...
...
@@ -423,6 +434,12 @@ public class TileNeibs{
}
}
/**
* And boolean array to another boolean array in a single or multithreaded environment.
* dst_tiles &= src_tiles
* @param src_tiles array to AND to another one
* @param dst_tiles array to be modified by AND-ing with the first one
*/
public
static
void
andSelection
(
final
boolean
[]
src_tiles
,
final
boolean
[]
dst_tiles
...
...
@@ -448,10 +465,16 @@ public class TileNeibs{
}
/**
* Shrink boolean array (single or multithreaded depending on is
* it called from the main thread or not)
* @param shrink see definitons for growSelection()
* @param tiles selection array (should be [sizeX * sizeY])
* @param prohibit optional (may be null) array of prohibited tiles (for both originating and destination)
*/
public
void
shrinkSelection
(
int
shrink
,
// grow tile selection by 1 over non-background tiles 1: 4 directions, 2 - 8 directions, 3 - 8 by 1, 4 by 1 more
final
boolean
[]
tiles
,
final
int
shrink
,
// grow tile selection by 1 over non-background tiles 1: 4 directions, 2 - 8 directions, 3 - 8 by 1, 4 by 1 more
final
boolean
[]
tiles
,
final
boolean
[]
prohibit
)
{
final
boolean
[]
itiles
=
invertSelection
(
tiles
);
...
...
@@ -463,6 +486,14 @@ public class TileNeibs{
}
/**
* Select outmost pixels of the selection (single or multithreaded depending on is
* it called from the main thread or not)
* @param shrink see definitons for growSelection()
* @param tiles selection array (should be [sizeX * sizeY])
* @param prohibit optional (may be null) array of prohibited tiles
* @return tile selection of the outmost tiles of the input tiles
*/
public
boolean
[]
getEdgeSelection
(
int
shrink
,
// grow tile selection by 1 over non-background tiles 1: 4 directions, 2 - 8 directions, 3 - 8 by 1, 4 by 1 more
boolean
[]
tiles
,
...
...
@@ -807,6 +838,14 @@ public class TileNeibs{
}
}
/**
* Grow pixel selection in multiple threads.
* @param grow amount of growth: 1 - 1 pixel in ortho (up/down, right/left) directions,
* 2 - ortho+diagonal, 3 - 2 steps in ortho, etc.
* @param tiles boolean array to grow (should be [sizeX * sizeY])
* @param prohibit optional array (may be null) that prohibits growth (for both originating and
* destination tiles).
*/
public
void
growSelectionMulti
(
// multithreaded version
int
grow
,
// grow tile selection by 1 over non-background tiles 1: 4 directions, 2 - 8 directions, 3 - 8 by 1, 4 by 1 more
final
boolean
[]
tiles
,
...
...
@@ -925,12 +964,26 @@ public class TileNeibs{
/**
* Find out if the current thread is main.
* @return true for the main thread, false - for others
*/
public
static
boolean
isMainThread
()
{
return
Thread
.
currentThread
().
getName
().
equals
(
"main"
);
}
/**
* Grow pixel selection in either a single thread (if the method is called from one of
* concurrent threads (already used by multiple callers) or in multiple threads if the
* current thread is "main"
* @param grow amount of growth: 1 - 1 pixel in ortho (up/down, right/left) directions,
* 2 - ortho+diagonal, 3 - 2 steps in ortho, etc.
* @param tiles boolean array to grow (should be [sizeX * sizeY])
* @param prohibit optional array (may be null) that prohibits growth (for both originating and
* destination tiles).
*/
public
void
growSelection
(
int
grow
,
// grow tile selection by 1 over non-background tiles 1: 4 directions, 2 - 8 directions, 3 - 8 by 1, 4 by 1 more
final
boolean
[]
tiles
,
...
...
src/main/java/com/elphel/imagej/tileprocessor/TileProcessor.java
View file @
02a4440e
...
...
@@ -8591,10 +8591,6 @@ ImageDtt.startAndJoin(threads);
}
public
double
[]
convolveTiles
(
double
[]
tiles
,
double
[][]
kernel_in
)
// should be odd * odd, with non-zero sum (result will be normalized
...
...
@@ -8639,7 +8635,23 @@ ImageDtt.startAndJoin(threads);
return
-
1
;
}
/**
* Fill NaN values in 2D array from neighbors using Laplassian==0
* @param data data array (in line-scan order) with NaN values to be filled,
* non-NaN values will not be modified.
* @param prohibit optional (may be null) boolean array of the same size specifying
* prohibited pixels.
* @param width data width (height = data.length/width)
* @param grow limit area to process by expanding defined pixel area.
* @param diagonal_weight weight of 4 diagonal neighbors relative to 4 ortho ones.
* @param num_passes maximal number of iterations.
* @param max_rchange max relative (to data RMS) step change to exit iterations.
* @param threadsMax maximal number of concurrent threads to launch.
* @return data array made of input data with replaced NaN limited by
* optional prohibit array and amount of growth.
*/
public
static
double
[]
fillNaNs
(
final
double
[]
data
,
final
boolean
[]
prohibit
,
...
...
@@ -8657,8 +8669,8 @@ ImageDtt.startAndJoin(threads);
final
int
tiles
=
width
*
height
;
final
boolean
[]
fixed
=
new
boolean
[
tiles
];
// Original non-NaN, will not be modified
int
num_fixed
=
0
;
double
davg
=
0.0
;
// average of all fixed samples
double
davg2
=
0.0
;
// average of all fixed samples
double
davg
=
0.0
;
// average of all fixed samples
double
davg2
=
0.0
;
// average of all fixed samples
for
(
int
i
=
0
;
i
<
tiles
;
i
++)
{
if
(!
Double
.
isNaN
(
data
[
i
]))
{
fixed
[
i
]
=
true
;
...
...
@@ -8687,14 +8699,6 @@ ImageDtt.startAndJoin(threads);
int
last_grown
=
tn
.
getLastGrown
();
// actual grown (0 <= last_grown <= grow)
final
int
scan0
=
last_grown
/
2
+
2
;
// ( 3* grow) / 2;
/*
growTiles(
grow, // grow tile selection by 1 over non-background tiles 1: 4 directions, 2 - 8 directions, 3 - 8 by 1, 4 by 1 more
grown,
null,
width,
height);
*/
int
num_active
=
0
;
for
(
int
i
=
0
;
i
<
tiles
;
i
++)
{
if
(
grown
[
i
]
&&
!
fixed
[
i
])
num_active
++;
...
...
@@ -8709,7 +8713,6 @@ ImageDtt.startAndJoin(threads);
for
(
int
i
=
0
;
i
<
tiles
;
i
++)
{
if
(
grown
[
i
]
&&
!
fixed
[
i
])
{
active
[
num_active
++]
=
i
;
// data_io[0][i] = davg; // initial value - needed?
}
}
final
Thread
[]
threads
=
ImageDtt
.
newThreadArray
(
threadsMax
);
...
...
src/main/java/com/elphel/imagej/x3d/export/TriMesh.java
View file @
02a4440e
...
...
@@ -2094,12 +2094,10 @@ public class TriMesh {
}
return
-
1
;
}
// used in old code - change to the new one?
public
static
void
generateClusterX3d
(
boolean
full_texture
,
// true - full size image, false - bounds only
int
subdivide_mesh
,
// 0,1 - full tiles only, 2 - 2x2 pixels, 4 - 2x2 pixels
// boolean [] alpha, // boolean alpha - true - opaque, false - transparent. Full/bounds
// matching selection
X3dOutput
x3dOutput
,
// output x3d if not null
WavefrontExport
wfOutput
,
// output WSavefront if not null
ArrayList
<
TriMesh
>
tri_meshes
,
...
...
@@ -2125,7 +2123,6 @@ public class TriMesh {
int
debug_level
)
throws
IOException
{
// int debug_level = 1;
if
(
bounds
==
null
)
{
return
;
// not used in lwir
}
...
...
@@ -2314,14 +2311,12 @@ public class TriMesh {
double
maxZtoXY
,
// 10.0. <=0 - do not use
double
maxZ
,
// far clip (0 - do not clip). Negative - limit by max
boolean
limitZ
,
// double [][] dbg_disp_tri_slice,
int
debug_level
,
boolean
dbg_plot_center
,
// = true;
double
dbg_line_color
,
// = 1.0;
double
dbg_center_color
// = 3.0;
)
throws
IOException
{
// boolean show_triangles = tri_img != null;
if
(
bounds
==
null
)
{
return
;
// not used in lwir
}
...
...
@@ -2329,8 +2324,6 @@ public class TriMesh {
boolean
display_src
=
debug_level
>
1
;
boolean
display_for_mesh
=
debug_level
>
1
;
if
(
display_src
)
{
double
[][]
dbg_img
=
new
double
[
3
][
selected
.
length
];
for
(
int
i
=
0
;
i
<
dbg_img
[
0
].
length
;
i
++)
{
...
...
@@ -2378,12 +2371,6 @@ public class TriMesh {
}
}
/*
int [][] indices = getCoordIndices( // starting with 0, -1 - not selected // updated 09.18.2022
bounds,
selected,
tilesX);
*/
int
[]
pnum_indices
=
new
int
[
1
];
/*
* Enumerate "large" and "small" tiles, where "large" are actual tiles and "small" are
...
...
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