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
907cda8d
Commit
907cda8d
authored
Mar 31, 2020
by
Andrey Filippov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Using Marco's help to make jcuda work with nvrtc with cdp
parent
0d087c0b
Changes
8
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
770 additions
and
73 deletions
+770
-73
CLTParameters.java
src/main/java/com/elphel/imagej/cameras/CLTParameters.java
+1
-1
GPUTileProcessor.java
src/main/java/com/elphel/imagej/gpu/GPUTileProcessor.java
+99
-59
ImageDtt.java
src/main/java/com/elphel/imagej/tileprocessor/ImageDtt.java
+21
-7
QuadCLT.java
src/main/java/com/elphel/imagej/tileprocessor/QuadCLT.java
+3
-1
TwoQuadCLT.java
...main/java/com/elphel/imagej/tileprocessor/TwoQuadCLT.java
+4
-2
X3dOutput.java
src/main/java/com/elphel/imagej/x3d/export/X3dOutput.java
+1
-1
TileProcessor.cuh
src/main/resources/kernels/TileProcessor.cuh
+641
-2
dtt8x8.cuh
src/main/resources/kernels/dtt8x8.cuh
+0
-0
No files found.
src/main/java/com/elphel/imagej/cameras/CLTParameters.java
View file @
907cda8d
...
@@ -333,7 +333,7 @@ public class CLTParameters {
...
@@ -333,7 +333,7 @@ public class CLTParameters {
public
double
infinityDistance
=
10000
;
// Distance to generate backdrop (0 - use regular backdrop)
public
double
infinityDistance
=
10000
;
// Distance to generate backdrop (0 - use regular backdrop)
public
int
min_bgnd_tiles
=
10
;
// Minimal number of background tiles to generate background
public
int
min_bgnd_tiles
=
10
;
// Minimal number of background tiles to generate background
public
boolean
shUseFlaps
=
true
;
// Split into shells with flaps
public
boolean
shUseFlaps
=
true
;
// Split into shells with flaps
public
boolean
shAggrFade
=
true
;
// Aggressive fade alpha (whole boundary)
public
boolean
shAggrFade
=
false
;
//
true; // Aggressive fade alpha (whole boundary)
public
int
shMinArea
=
1
;
// Minimal shell area (not counting flaps
public
int
shMinArea
=
1
;
// Minimal shell area (not counting flaps
public
double
shMinStrength
=
0.2
;
// Minimal value of the shell maximum strength
public
double
shMinStrength
=
0.2
;
// Minimal value of the shell maximum strength
...
...
src/main/java/com/elphel/imagej/gpu/GPUTileProcessor.java
View file @
907cda8d
This diff is collapsed.
Click to expand it.
src/main/java/com/elphel/imagej/tileprocessor/ImageDtt.java
View file @
907cda8d
...
@@ -3867,7 +3867,9 @@ public class ImageDtt {
...
@@ -3867,7 +3867,9 @@ public class ImageDtt {
double
[][]
port_weights
=
new
double
[
ports
][
tile_len
];
double
[][]
port_weights
=
new
double
[
ports
][
tile_len
];
double
[][]
color_avg
=
new
double
[
numcol
][
tile_len
];
double
[][]
color_avg
=
new
double
[
numcol
][
tile_len
];
double
[][]
rgba
=
new
double
[
numcol
+
1
+
(
keep_weights
?(
ports
+
numcol
+
1
):
0
)][];
// double [][] rgba = new double[numcol + 1 + (keep_weights?(ports + numcol + 1):0)][];
// need to pass keep_weights to the caller
double
[][]
rgba
=
new
double
[
numcol
+
1
+
ports
+
(
keep_weights
?(
numcol
+
1
):
0
)][];
int
rms_start
=
numcol
+
1
+
ports
;
int
rms_start
=
numcol
+
1
+
ports
;
if
(
keep_weights
){
if
(
keep_weights
){
for
(
int
ncol
=
0
;
ncol
<=
numcol
;
ncol
++)
if
((
ncol
==
numcol
)
||
(
iclt_tile
[
0
][
ncol
]
!=
null
))
{
for
(
int
ncol
=
0
;
ncol
<=
numcol
;
ncol
++)
if
((
ncol
==
numcol
)
||
(
iclt_tile
[
0
][
ncol
]
!=
null
))
{
...
@@ -4069,8 +4071,11 @@ public class ImageDtt {
...
@@ -4069,8 +4071,11 @@ public class ImageDtt {
rgba
[
ncol
]
=
color_avg
[
ncol
];
rgba
[
ncol
]
=
color_avg
[
ncol
];
}
}
rgba
[
numcol
]
=
alpha
;
rgba
[
numcol
]
=
alpha
;
// if (keep_weights){
for
(
int
i
=
0
;
i
<
ports
;
i
++)
rgba
[
numcol
+
1
+
i
]
=
port_weights
[
i
];
for
(
int
i
=
0
;
i
<
ports
;
i
++)
{
rgba
[
numcol
+
1
+
i
]
=
port_weights
[
i
];
}
// }
if
(
max_diff
!=
null
){
if
(
max_diff
!=
null
){
for
(
int
ip
=
0
;
ip
<
ports
;
ip
++){
for
(
int
ip
=
0
;
ip
<
ports
;
ip
++){
max_diff
[
ip
]
=
0
;
max_diff
[
ip
]
=
0
;
...
@@ -5026,7 +5031,7 @@ public class ImageDtt {
...
@@ -5026,7 +5031,7 @@ public class ImageDtt {
System
.
out
.
println
(
"iclt_2d():sharp_alpha= "
+
sharp_alpha
);
System
.
out
.
println
(
"iclt_2d():sharp_alpha= "
+
sharp_alpha
);
}
}
boolean
has_weights
=
false
;
boolean
has_weights
=
false
;
boolean
set_has_weight
=
false
;
boolean
set_has_weight
=
false
;
// not used
for
(
int
i
=
0
;
(
i
<
tilesY
)
&&
!
set_has_weight
;
i
++){
for
(
int
i
=
0
;
(
i
<
tilesY
)
&&
!
set_has_weight
;
i
++){
for
(
int
j
=
0
;
(
j
<
tilesX
)
&&
!
set_has_weight
;
j
++){
for
(
int
j
=
0
;
(
j
<
tilesX
)
&&
!
set_has_weight
;
j
++){
if
(
texture_tiles
[
i
][
j
]
!=
null
)
{
if
(
texture_tiles
[
i
][
j
]
!=
null
)
{
...
@@ -5064,15 +5069,15 @@ public class ImageDtt {
...
@@ -5064,15 +5069,15 @@ public class ImageDtt {
int
n_half
=
transform_size
/
2
;
int
n_half
=
transform_size
/
2
;
int
lastY
=
tilesY
-
1
;
int
lastY
=
tilesY
-
1
;
int
lastX
=
tilesX
-
1
;
int
lastX
=
tilesX
-
1
;
int
offset
=
n_half
*
(
transform_size
*
tilesX
)
+
n_half
;
int
offset
=
n_half
*
(
transform_size
*
tilesX
)
+
n_half
;
// 4 pixels left and down (right/up when subtracted below)
for
(
int
nTile
=
ai
.
getAndIncrement
();
nTile
<
tiles_list
[
nser
.
get
()].
length
;
nTile
=
ai
.
getAndIncrement
())
{
for
(
int
nTile
=
ai
.
getAndIncrement
();
nTile
<
tiles_list
[
nser
.
get
()].
length
;
nTile
=
ai
.
getAndIncrement
())
{
tileX
=
tiles_list
[
nser
.
get
()][
nTile
][
0
];
tileX
=
tiles_list
[
nser
.
get
()][
nTile
][
0
];
tileY
=
tiles_list
[
nser
.
get
()][
nTile
][
1
];
tileY
=
tiles_list
[
nser
.
get
()][
nTile
][
1
];
double
[][]
texture_tile
=
texture_tiles
[
tileY
][
tileX
];
double
[][]
texture_tile
=
texture_tiles
[
tileY
][
tileX
];
if
(
texture_tile
!=
null
)
{
if
(
texture_tile
!=
null
)
{
if
(
overlap
)
{
if
(
overlap
)
{
if
((
tileY
>
0
)
&&
(
tileX
>
0
)
&&
(
tileY
<
lastY
)
&&
(
tileX
<
lastX
))
{
// fast, no extra checks
if
((
tileY
>
0
)
&&
(
tileX
>
0
)
&&
(
tileY
<
lastY
)
&&
(
tileX
<
lastX
))
{
// fast, no extra checks
- ignore first/last rows and columns
for
(
int
i
=
0
;
i
<
n2
;
i
++){
for
(
int
i
=
0
;
i
<
n2
;
i
++){
int
start_line
=
((
tileY
*
transform_size
+
i
)
*
tilesX
+
tileX
)*
transform_size
-
offset
;
int
start_line
=
((
tileY
*
transform_size
+
i
)
*
tilesX
+
tileX
)*
transform_size
-
offset
;
for
(
int
chn
=
0
;
chn
<
texture_tile
.
length
;
chn
++)
{
for
(
int
chn
=
0
;
chn
<
texture_tile
.
length
;
chn
++)
{
int
schn
=
chn
;
int
schn
=
chn
;
...
@@ -5082,6 +5087,7 @@ public class ImageDtt {
...
@@ -5082,6 +5087,7 @@ public class ImageDtt {
if
(
texture_tile
[
schn
]
==
null
)
{
if
(
texture_tile
[
schn
]
==
null
)
{
dpixels
[
chn
]
=
null
;
dpixels
[
chn
]
=
null
;
}
else
{
}
else
{
// should it be better to multiply each color by alpha before accumulating? No, it is already windowed!
if
((
chn
!=
3
)
||
!
sharp_alpha
)
{
if
((
chn
!=
3
)
||
!
sharp_alpha
)
{
for
(
int
j
=
0
;
j
<
n2
;
j
++)
{
for
(
int
j
=
0
;
j
<
n2
;
j
++)
{
dpixels
[
chn
][
start_line
+
j
]
+=
texture_tile
[
schn
][
n2
*
i
+
j
];
dpixels
[
chn
][
start_line
+
j
]
+=
texture_tile
[
schn
][
n2
*
i
+
j
];
...
@@ -9278,6 +9284,14 @@ public class ImageDtt {
...
@@ -9278,6 +9284,14 @@ public class ImageDtt {
}
}
}
}
}
}
// fix: removing extra slices
if
(!
clt_parameters
.
keep_weights
&&
(
texture_tiles
[
tileY
][
tileX
]!=
null
))
{
if
(
numcol
==
3
)
{
texture_tiles
[
tileY
][
tileX
]
=
new
double
[][]
{
texture_tiles
[
tileY
][
tileX
][
0
],
texture_tiles
[
tileY
][
tileX
][
1
],
texture_tiles
[
tileY
][
tileX
][
2
],
texture_tiles
[
tileY
][
tileX
][
3
]};
}
else
{
texture_tiles
[
tileY
][
tileX
]
=
new
double
[][]
{
texture_tiles
[
tileY
][
tileX
][
0
],
texture_tiles
[
tileY
][
tileX
][
1
]};
}
}
}
}
public
double
[][]
get2DCorrs
(
public
double
[][]
get2DCorrs
(
...
...
src/main/java/com/elphel/imagej/tileprocessor/QuadCLT.java
View file @
907cda8d
...
@@ -8985,6 +8985,7 @@ public class QuadCLT {
...
@@ -8985,6 +8985,7 @@ public class QuadCLT {
tp
.
clt_3d_passes
.
add
(
latest_scan
);
// put it back
tp
.
clt_3d_passes
.
add
(
latest_scan
);
// put it back
}
}
int
next_pass
=
tp
.
clt_3d_passes
.
size
();
//
int
next_pass
=
tp
.
clt_3d_passes
.
size
();
//
// Create tasks to scan, have tasks, disparity and border tiles in tp.clt_3d_passes
tp
.
thirdPassSetupSurf
(
// prepare tile tasks for the second pass based on the previous one(s) // needs last scan
tp
.
thirdPassSetupSurf
(
// prepare tile tasks for the second pass based on the previous one(s) // needs last scan
clt_parameters
,
clt_parameters
,
//FIXME: make a special parameter?
//FIXME: make a special parameter?
...
@@ -9564,6 +9565,7 @@ public class QuadCLT {
...
@@ -9564,6 +9565,7 @@ public class QuadCLT {
double
[]
alpha_zero
=
new
double
[
4
*
image_dtt
.
transform_size
*
image_dtt
.
transform_size
];
double
[]
alpha_zero
=
new
double
[
4
*
image_dtt
.
transform_size
*
image_dtt
.
transform_size
];
int
alpha_index
=
3
;
int
alpha_index
=
3
;
for
(
int
i
=
0
;
i
<
alpha_zero
.
length
;
i
++)
alpha_zero
[
i
]=
0.0
;
for
(
int
i
=
0
;
i
<
alpha_zero
.
length
;
i
++)
alpha_zero
[
i
]=
0.0
;
// border tiles are copied, alpha from alphaFade (not multiplied?)
for
(
int
tileY
=
0
;
tileY
<
tilesY
;
tileY
++){
for
(
int
tileY
=
0
;
tileY
<
tilesY
;
tileY
++){
for
(
int
tileX
=
0
;
tileX
<
tilesX
;
tileX
++){
for
(
int
tileX
=
0
;
tileX
<
tilesX
;
tileX
++){
texture_tiles_cluster
[
tileY
][
tileX
]=
null
;
texture_tiles_cluster
[
tileY
][
tileX
]=
null
;
...
@@ -9607,7 +9609,7 @@ public class QuadCLT {
...
@@ -9607,7 +9609,7 @@ public class QuadCLT {
texture_overlap
[
alpha_index
][
i
]
=
d
;
texture_overlap
[
alpha_index
][
i
]
=
d
;
}
}
}
}
// for now - use just RGB. Later add option for RGBA
// for now - use just RGB. Later add option for RGBA
(?)
double
[][]
texture_rgb
=
{
texture_overlap
[
0
],
texture_overlap
[
1
],
texture_overlap
[
2
]};
double
[][]
texture_rgb
=
{
texture_overlap
[
0
],
texture_overlap
[
1
],
texture_overlap
[
2
]};
double
[][]
texture_rgba
=
{
texture_overlap
[
0
],
texture_overlap
[
1
],
texture_overlap
[
2
],
texture_overlap
[
3
]};
double
[][]
texture_rgba
=
{
texture_overlap
[
0
],
texture_overlap
[
1
],
texture_overlap
[
2
],
texture_overlap
[
3
]};
double
[][]
texture_rgbx
=
((
clt_parameters
.
alpha1
>
0
)?
texture_rgba:
texture_rgb
);
double
[][]
texture_rgbx
=
((
clt_parameters
.
alpha1
>
0
)?
texture_rgba:
texture_rgb
);
...
...
src/main/java/com/elphel/imagej/tileprocessor/TwoQuadCLT.java
View file @
907cda8d
...
@@ -2191,7 +2191,9 @@ public class TwoQuadCLT {
...
@@ -2191,7 +2191,9 @@ public class TwoQuadCLT {
}
}
if
(
clt_parameters
.
show_rgba_color
)
{
if
(
clt_parameters
.
show_rgba_color
)
{
int
num_src_slices
=
12
;
// calculate
int
numcol
=
quadCLT_main
.
isMonochrome
()?
1
:
3
;
int
ports
=
imp_quad_main
.
length
;
int
num_src_slices
=
numcol
+
1
+
(
clt_parameters
.
keep_weights
?(
ports
+
numcol
+
1
):
0
);
// 12 ; // calculate
// float [][][] ftextures = gPUTileProcessor.getTextures(
// float [][][] ftextures = gPUTileProcessor.getTextures(
// (is_mono?1:3), // int num_colors,
// (is_mono?1:3), // int num_colors,
// clt_parameters.keep_weights); // boolean keep_weights);
// clt_parameters.keep_weights); // boolean keep_weights);
...
@@ -3533,7 +3535,7 @@ if (debugLevel > -100) return true; // temporarily !
...
@@ -3533,7 +3535,7 @@ if (debugLevel > -100) return true; // temporarily !
}
}
}
}
quadCLT_main
.
writeKml
(
debugLevel
);
// al
os
generated with x3d model
quadCLT_main
.
writeKml
(
debugLevel
);
// al
so
generated with x3d model
String
jp4_copy_path
=
quadCLT_main
.
correctionsParameters
.
selectX3dDirectory
(
String
jp4_copy_path
=
quadCLT_main
.
correctionsParameters
.
selectX3dDirectory
(
set_name
,
// quad timestamp. Will be ignored if correctionsParameters.use_x3d_subdirs is false
set_name
,
// quad timestamp. Will be ignored if correctionsParameters.use_x3d_subdirs is false
...
...
src/main/java/com/elphel/imagej/x3d/export/X3dOutput.java
View file @
907cda8d
...
@@ -69,7 +69,7 @@ public class X3dOutput {
...
@@ -69,7 +69,7 @@ public class X3dOutput {
CLTParameters
clt_parameters
,
CLTParameters
clt_parameters
,
EyesisCorrectionParameters
.
CorrectionParameters
correctionsParameters
,
EyesisCorrectionParameters
.
CorrectionParameters
correctionsParameters
,
GeometryCorrection
geometry_correction
,
GeometryCorrection
geometry_correction
,
ArrayList
<
CLTPass3d
>
clt_3d_passes
){
ArrayList
<
CLTPass3d
>
clt_3d_passes
){
// to scan for textures, contain disp, tasks, border tiles
this
.
clt_parameters
=
clt_parameters
;
this
.
clt_parameters
=
clt_parameters
;
this
.
correctionsParameters
=
correctionsParameters
;
this
.
correctionsParameters
=
correctionsParameters
;
this
.
geometry_correction
=
geometry_correction
;
this
.
geometry_correction
=
geometry_correction
;
...
...
src/main/resources/TileProcessor.cuh
→
src/main/resources/
kernels/
TileProcessor.cuh
View file @
907cda8d
This diff is collapsed.
Click to expand it.
src/main/resources/dtt8x8.cuh
→
src/main/resources/
kernels/
dtt8x8.cuh
View file @
907cda8d
File moved
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