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
99bfce50
Commit
99bfce50
authored
Aug 19, 2025
by
Andrey Filippov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
target icon changes for known targets
parent
1433d7a0
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
181 additions
and
61 deletions
+181
-61
EyesisCorrectionParameters.java
...com/elphel/imagej/cameras/EyesisCorrectionParameters.java
+2
-0
CuasMotion.java
src/main/java/com/elphel/imagej/cuas/CuasMotion.java
+125
-53
UasLogReader.java
src/main/java/com/elphel/imagej/ims/UasLogReader.java
+22
-0
IntersceneMatchParameters.java
...lphel/imagej/tileprocessor/IntersceneMatchParameters.java
+32
-8
No files found.
src/main/java/com/elphel/imagej/cameras/EyesisCorrectionParameters.java
View file @
99bfce50
...
...
@@ -1721,8 +1721,10 @@ public class EyesisCorrectionParameters {
ArrayList
<
String
>
extras
=
new
ArrayList
<
String
>();
for
(
int
i
=
3
;
i
<
tokens
.
length
;
i
++)
{
extras
.
add
(
tokens
[
i
]);
System
.
out
.
print
(
"tokens ["
+
i
+
"] = "
+
tokens
[
i
]+
", "
);
}
extra_map
.
put
(
dir_name
,
extras
);
System
.
out
.
println
();
}
break
parse_set
;
}
...
...
src/main/java/com/elphel/imagej/cuas/CuasMotion.java
View file @
99bfce50
...
...
@@ -3095,15 +3095,17 @@ public class CuasMotion {
final
double
input_range
,
// 5
final
boolean
scale2x
,
final
int
target_type
,
// = 0; // 0 - unknown, 1 - known, 2 - friend, 3 - foe
final
int
known_type
,
// 2; // Target location matching UAS flight log: 0; // 0 - unknown, 1 - known, 2 - friend, 3 - foe
final
double
known_err
,
// 20; // Maximal distance between the detected target and UAS log position (in raw image pixels);
final
float
[][]
fpixels
,
final
double
[][][]
targets60hz
,
final
boolean
show_true_rng
,
// show true range (from the flight log)
final
boolean
show_mismatch
,
final
int
frame0
,
final
int
frame_step
,
final
int
width_src
,
final
String
title
,
final
String
[]
titles
,
String
diamond_path
,
final
UasLogReader
uasLogReader
,
final
int
debugLevel
)
{
String
uas_log_path
=
null
;
...
...
@@ -3121,22 +3123,70 @@ public class CuasMotion {
uas_log_path
=
resourcePath
.
toString
();
System
.
out
.
println
(
"uas_log_path="
+
uas_log_path
);
}
if
(
diamond_path
==
null
)
{
String
resource_name
=
TARGET_ICONS
[
target_type
][
scale2x
?
1
:
0
];
URL
resourceUrl
=
CuasMotion
.
class
.
getClassLoader
().
getResource
(
"graphics/"
+
resource_name
);
Path
resourcePath
=
null
;
try
{
resourcePath
=
Paths
.
get
(
resourceUrl
.
toURI
());
}
catch
(
URISyntaxException
e
)
{
// TODO Auto-generated catch block
e
.
printStackTrace
();
// preparation of the undetected target icon
String
undetected_resource_name
=
TARGET_ICONS
[
target_type
][
scale2x
?
1
:
0
];
URL
undetected_resourceUrl
=
CuasMotion
.
class
.
getClassLoader
().
getResource
(
"graphics/"
+
undetected_resource_name
);
Path
undetected_resourcePath
=
null
;
try
{
undetected_resourcePath
=
Paths
.
get
(
undetected_resourceUrl
.
toURI
());
}
catch
(
URISyntaxException
e
)
{
// TODO Auto-generated catch block
e
.
printStackTrace
();
}
String
undetected_path
=
undetected_resourcePath
.
toString
();
ColorProcessor
undetected_cp
=
null
;
try
{
undetected_cp
=
new
ColorProcessor
(
ImageIO
.
read
(
new
File
(
undetected_path
)));
}
catch
(
IOException
e1
)
{
// TODO Auto-generated catch block
e1
.
printStackTrace
();
}
final
int
undetected_width
=
undetected_cp
.
getWidth
();
final
int
undetected_height
=
undetected_cp
.
getHeight
();
final
int
[]
undetected_pixels
=
((
int
[])
undetected_cp
.
getPixels
());
final
int
[][]
undetected_rgba
=
new
int
[
undetected_pixels
.
length
][
4
];
for
(
int
i
=
0
;
i
<
undetected_rgba
.
length
;
i
++)
{
for
(
int
s
=
0
;
s
<
4
;
s
++)
{
undetected_rgba
[
i
][
s
]
=
(
undetected_pixels
[
i
]
>>
(
8
*
s
))
&
0xff
;
}
}
// preparation of the detected target icon
String
detected_resource_name
=
TARGET_ICONS
[
known_type
][
scale2x
?
1
:
0
];
URL
detected_resourceUrl
=
CuasMotion
.
class
.
getClassLoader
().
getResource
(
"graphics/"
+
detected_resource_name
);
Path
detected_resourcePath
=
null
;
try
{
detected_resourcePath
=
Paths
.
get
(
detected_resourceUrl
.
toURI
());
}
catch
(
URISyntaxException
e
)
{
// TODO Auto-generated catch block
e
.
printStackTrace
();
}
String
detected_path
=
detected_resourcePath
.
toString
();
ColorProcessor
detected_cp
=
null
;
try
{
detected_cp
=
new
ColorProcessor
(
ImageIO
.
read
(
new
File
(
detected_path
)));
}
catch
(
IOException
e1
)
{
// TODO Auto-generated catch block
e1
.
printStackTrace
();
}
final
int
detected_width
=
detected_cp
.
getWidth
();
final
int
detected_height
=
detected_cp
.
getHeight
();
final
int
[]
detected_pixels
=
((
int
[])
detected_cp
.
getPixels
());
final
int
[][]
detected_rgba
=
new
int
[
detected_pixels
.
length
][
4
];
for
(
int
i
=
0
;
i
<
detected_rgba
.
length
;
i
++)
{
for
(
int
s
=
0
;
s
<
4
;
s
++)
{
detected_rgba
[
i
][
s
]
=
(
detected_pixels
[
i
]
>>
(
8
*
s
))
&
0xff
;
}
diamond_path
=
resourcePath
.
toString
();
}
final
int
scale
=
scale2x
?
2
:
1
;
final
Thread
[]
threads
=
ImageDtt
.
newThreadArray
(
QuadCLT
.
THREADS_MAX
);
final
AtomicInteger
ai
=
new
AtomicInteger
(
0
);
// String diamond_path = "/media/elphel/NVME/lwir16-proc/eagle_mountain/graphics/diamond21x17.png";
final
boolean
annotate_mono
=
clt_parameters
.
imp
.
annotate_mono
;
final
boolean
annotate_transparent_mono
=
clt_parameters
.
imp
.
annotate_transparent_mono
;
final
Color
annotate_color_mono
=
clt_parameters
.
imp
.
annotate_color_mono
;
...
...
@@ -3148,24 +3198,7 @@ public class CuasMotion {
final
int
font_type
=
clt_parameters
.
imp
.
cuas_font_type
;
final
int
space_before_text
=
2
;
ColorProcessor
diamond_cp
=
null
;
try
{
diamond_cp
=
new
ColorProcessor
(
ImageIO
.
read
(
new
File
(
diamond_path
)));
}
catch
(
IOException
e1
)
{
// TODO Auto-generated catch block
e1
.
printStackTrace
();
}
final
int
diamond_width
=
diamond_cp
.
getWidth
();
final
int
diamond_height
=
diamond_cp
.
getHeight
();
final
int
[]
diamond_pixels
=
((
int
[])
diamond_cp
.
getPixels
());
final
int
[][]
diamond_rgba
=
new
int
[
diamond_pixels
.
length
][
4
];
for
(
int
i
=
0
;
i
<
diamond_rgba
.
length
;
i
++)
{
for
(
int
s
=
0
;
s
<
4
;
s
++)
{
diamond_rgba
[
i
][
s
]
=
(
diamond_pixels
[
i
]
>>
(
8
*
s
))
&
0xff
;
}
}
ColorProcessor
uaslog_cp
=
null
;
if
(
uas_log_path
!=
null
)
{
...
...
@@ -3312,15 +3345,15 @@ public class CuasMotion {
for
(
int
dscene
=
half_step0
;
dscene
<
half_step1
;
dscene
++)
{
int
nscene
=
frame_center
+
dscene
;
if
((
nscene
>=
0
)
&&
(
nscene
<
num_scenes
))
{
double
[]
uas_pXpYDRange
=
uasLogReader
.
getUasPxPyDRange
(
titles
[
nscene
]);
if
(
uaslog_rgba
!=
null
)
{
// draw uas from log
// get drone pixel coordinates
double
[]
uas_pXpYD
=
uasLogReader
.
getUasPxPyD
(
titles
[
nscene
]);
int
xc
=
(
int
)
Math
.
round
(
scale
*
uas_pXpYD
[
0
]);
int
yc
=
(
int
)
Math
.
round
(
scale
*
uas_pXpYD
[
1
]);
int
xc
=
(
int
)
Math
.
round
(
scale
*
uas_pXpYDRange
[
0
]);
int
yc
=
(
int
)
Math
.
round
(
scale
*
uas_pXpYDRange
[
1
]);
int
xl
=
xc
-
uaslog_width
/
2
;
int
yt
=
yc
-
uaslog_height
/
2
;
if
(
nSeq
<
0
)
{
// disabled debug, keep 3 to use // 3) {
System
.
out
.
println
(
String
.
format
(
"uas_pXpYD=[%f,%f,%f]"
,
uas_pXpYD
[
0
],
uas_pXpYD
[
1
],
uas_pXpYD
[
2
]));
System
.
out
.
println
(
String
.
format
(
"uas_pXpYD=[%f,%f,%f]"
,
uas_pXpYD
Range
[
0
],
uas_pXpYDRange
[
1
],
uas_pXpYDRange
[
2
]));
System
.
out
.
println
(
String
.
format
(
"xc=%d, yc=%d, xl=%d, yt=%d"
,
xc
,
yc
,
xl
,
yt
));
System
.
out
.
println
(
String
.
format
(
"A=%f, T=%f, R=%f"
,
uasLogReader
.
getCameraATR
()[
0
],
uasLogReader
.
getCameraATR
()[
1
],
uasLogReader
.
getCameraATR
()[
1
]));
System
.
out
.
println
(
String
.
format
(
"titles[nscene]=%s, startTimeStamp=%f"
,
titles
[
nscene
],
uasLogReader
.
getStartTimestamp
()));
...
...
@@ -3361,22 +3394,33 @@ public class CuasMotion {
double
[][]
targets
=
targets60hz
[
nscene
];
if
(
targets
!=
null
)
{
// TODO: find why
int
matching_target
=
findMatchingTarget
(
targets
,
// double [][] targets,
uas_pXpYDRange
,
// double [] uas_pXpYD,
known_err
);
// double max_dist)
for
(
int
ntarget
=
0
;
ntarget
<
targets
.
length
;
ntarget
++)
{
// if ((ntarget == matching_target) && (dscene == half_step0)) {
// System.out.println("ntarget == matching_target="+ntarget+", nscene="+nscene+", nSeq="+nSeq);
// }
int
xc
=
(
int
)
Math
.
round
(
scale
*
targets
[
ntarget
][
TARGET_X
]);
int
yc
=
(
int
)
Math
.
round
(
scale
*
targets
[
ntarget
][
TARGET_Y
]);
int
xl
=
xc
-
diamond_width
/
2
;
int
yt
=
yc
-
diamond_height
/
2
;
for
(
int
y
=
0
;
y
<
diamond_height
;
y
++)
{
int
icon_width
=
(
ntarget
==
matching_target
)
?
detected_width
:
undetected_width
;
int
icon_height
=
(
ntarget
==
matching_target
)
?
detected_height
:
undetected_height
;
int
[][]
target_rgba
=
(
ntarget
==
matching_target
)
?
detected_rgba
:
undetected_rgba
;
final
int
[]
target_pixels
=
(
ntarget
==
matching_target
)
?
detected_pixels
:
undetected_pixels
;
int
xl
=
xc
-
icon_width
/
2
;
int
yt
=
yc
-
icon_height
/
2
;
for
(
int
y
=
0
;
y
<
icon_height
;
y
++)
{
int
py
=
yt
+
y
;
if
((
py
>=
0
)
&&
(
py
<
height
))
{
for
(
int
x
=
0
;
x
<
diamond
_width
;
x
++)
{
for
(
int
x
=
0
;
x
<
icon
_width
;
x
++)
{
int
px
=
xl
+
x
;
int
dpix
=
x
+
y
*
diamond
_width
;
int
dpix
=
x
+
y
*
icon
_width
;
int
ipix
=
px
+
py
*
width
;
if
((
px
>=
0
)
&&
(
px
<
width
))
{
int
alpha
=
diamond
_rgba
[
dpix
][
3
];
int
alpha
=
target
_rgba
[
dpix
][
3
];
if
(
alpha
>
0
)
{
// alpha
int
dp
=
diamond_pixels
[
x
+
y
*
diamond
_width
];
int
dp
=
target_pixels
[
x
+
y
*
icon
_width
];
if
(
alpha
==
255
)
{
ipixels
[
nscene
][
ipix
]
=
dp
;
}
else
{
...
...
@@ -3385,7 +3429,7 @@ public class CuasMotion {
int
new_pix
=
0xff000000
;
for
(
int
c
=
0
;
c
<
3
;
c
++)
{
int
rgb
=
(
img_pix
>>
(
8
*
c
))
&
0xff
;
rgb
=
(
int
)
Math
.
round
((
1
-
k
)*
rgb
+
k
*
diamond
_rgba
[
dpix
][
c
]);
rgb
=
(
int
)
Math
.
round
((
1
-
k
)*
rgb
+
k
*
target
_rgba
[
dpix
][
c
]);
if
(
rgb
>
255
)
rgb
=
255
;
new_pix
|=
(
rgb
<<
(
8
*
c
));
}
...
...
@@ -3397,25 +3441,23 @@ public class CuasMotion {
}
}
if
(
annotate
)
{
int
text_left
=
xl
+
diamond
_width
+
space_before_text
*
scale
;
int
text_left
=
xl
+
icon
_width
+
space_before_text
*
scale
;
int
text_top
=
yt
+
scale
*
font_size
;
// text start from the bottom of the first line
ImageProcessor
ip
=
fstack_scenes
.
getProcessor
(
nscene
+
1
);
String
txt
=
getTargetText
(
clt_parameters
,
// CLTParameters clt_parameters,
targets
[
ntarget
]);
// double [] target);
int
ntile
=
(
int
)
targets
[
ntarget
][
TARGET_NTILE
];
/// int ntile = (int) targets[ntarget][TARGET_NTILE];
// double [][] targets = targets60hz[nscene];
if
(
show_true_rng
&&
(
ntarget
==
matching_target
))
{
// uas_pXpYDRange[3]
txt
+=
String
.
format
(
"\nTRNG%3.0f"
,
uas_pXpYDRange
[
3
]);
}
if
(
show_mismatch
)
{
txt
+=
String
.
format
(
"\nErr-%3.1f\nErr-%3.1f"
,
targets
[
ntarget
][
TARGET_MISMATCH_BEFORE
],
targets
[
ntarget
][
TARGET_MISMATCH_AFTER
]);
/*
// if ((mismatch_ba != null)) {
double [] mm = mismatch_ba[nSeq][ntile];
if (mm != null) {
txt += String.format("\nErr-%3.1f\nErr-%3.1f", mm[0],mm[1]);
}
*/
}
ip
.
setColor
(
text_color
);
ip
.
setFont
(
font_target
);
...
...
@@ -3438,6 +3480,30 @@ public class CuasMotion {
return
imp
;
}
private
static
int
findMatchingTarget
(
double
[][]
targets
,
double
[]
uas_pXpYD
,
double
max_dist
)
{
double
max_dist2
=
max_dist
*
max_dist
;
int
best_index
=
-
1
;
double
best_dist2
=
max_dist2
;
// Double.NaN;
if
((
targets
==
null
)
||
(
targets
.
length
==
0
))
{
return
best_index
;
}
for
(
int
ntarg
=
0
;
ntarg
<
targets
.
length
;
ntarg
++)
{
double
dx
=
targets
[
ntarg
][
TARGET_X
]
-
uas_pXpYD
[
0
];
double
dy
=
targets
[
ntarg
][
TARGET_Y
]
-
uas_pXpYD
[
1
];
double
dist2
=
dx
*
dx
+
dy
*
dy
;
if
(!(
dist2
>
best_dist2
))
{
best_dist2
=
dist2
;
best_index
=
ntarg
;
}
}
return
best_index
;
}
public
static
String
getTargetText
(
CLTParameters
clt_parameters
,
double
[]
target
)
{
...
...
@@ -4629,7 +4695,10 @@ public class CuasMotion {
boolean
target_by_horizon
=
clt_parameters
.
imp
.
cuas_by_horizon
;
// true;
double
target_horizon
=
clt_parameters
.
imp
.
cuas_horizon
;
// a90
int
target_type
=
clt_parameters
.
imp
.
cuas_target_type
;
//0; // 0 - unknown, 1 - known, 2 - friend, 3 - foe
int
target_type
=
clt_parameters
.
imp
.
cuas_target_type
;
// 0; // 0 - unknown, 1 - known, 2 - friend, 3 - foe
int
known_type
=
clt_parameters
.
imp
.
cuas_known_type
;
// 2; // Target location matching UAS flight log: 0; // 0 - unknown, 1 - known, 2 - friend, 3 - foe
double
known_err
=
clt_parameters
.
imp
.
cuas_known_err
;
// 20; // Maximal distance between the detected target and UAS log position (in raw image pixels);
double
input_range
=
clt_parameters
.
imp
.
cuas_input_range
;
// 5;
boolean
scale2x
=
clt_parameters
.
imp
.
cuas_scale2x
;
//true;
boolean
ra_background
=
clt_parameters
.
imp
.
cuas_ra_background
;
//true;
...
...
@@ -4642,8 +4711,9 @@ public class CuasMotion {
boolean
save_color
=
clt_parameters
.
imp
.
cuas_save_color
;
//true;
boolean
save_video
=
clt_parameters
.
imp
.
cuas_save_video
;
//true;
boolean
target_debug
=
clt_parameters
.
imp
.
cuas_target_debug
;
//true;
boolean
show_true_rng
=
clt_parameters
.
imp
.
cuas_show_true_rng
;
// show true range (from the flight log)
boolean
cuas_gaussian_ra
=
clt_parameters
.
imp
.
cuas_gaussian_ra
;
// use gaussian temporal Gaussian instead of running average
boolean
cuas_gaussian_ra
=
clt_parameters
.
imp
.
cuas_gaussian_ra
;
// use gaussian temporal Gaussian instead of running average
int
start_frame
=
0
;
int
seq_length
=
corr_offset
+
corr_pairs
;
...
...
@@ -4831,15 +4901,17 @@ public class CuasMotion {
input_range
,
// final double input_range, // 5
scale2x
,
// boolean scale2x,
target_type
,
// final int target_type, // = 0; // 0 - unknown, 1 - known, 2 - friend, 3 - foe
known_type
,
// final int known_type, // 2; // Target location matching UAS flight log: 0; // 0 - unknown, 1 - known, 2 - friend, 3 - foe
known_err
,
// final double known_err, // 20; // Maximal distance between the detected target and UAS log position (in raw image pixels);
replaced_targets
,
// final float [][] fpixels,
targets60hz
,
// final double [][][] targets60hz,
show_true_rng
,
// final boolean show_true_rng,// show true range (from the flight log)
target_debug
,
// final boolean show_mismatch,
frame0
,
// final int frame0,
corr_inc
,
// final int frame_step,
cuasMotion
.
gpu_max_width
,
// final int width,
model_prefix
+
"-RGB"
+
ra_bg_suffix
,
// String title,
scene_titles
,
// String [] titles,
null
,
// diamond_path, // //String diamond_path, null - use resources
uasLogReader
,
// UasLogReader uasLogReader,
debugLevel
);
// final int debugLevel) {
// save tiff in model directory
...
...
src/main/java/com/elphel/imagej/ims/UasLogReader.java
View file @
99bfce50
...
...
@@ -241,6 +241,16 @@ public class UasLogReader {
return
getUasPxPyD
(
timestamp
);
}
public
double
[]
getUasPxPyDRange
(
String
stimestamp
)
{
double
[]
uasPxPyD
=
getUasPxPyD
(
stimestamp
);
if
(
uasPxPyD
==
null
)
{
return
null
;
}
double
range
=
getUasRange
(
stimestamp
);
return
new
double
[]
{
uasPxPyD
[
0
],
uasPxPyD
[
1
],
uasPxPyD
[
2
],
range
};
}
public
double
[]
getUasPxPyD
(
double
timestamp
)
{
...
...
@@ -259,6 +269,18 @@ public class UasLogReader {
atr
);
// double [] camera_atr); // camera orientation relative to world frame
return
pXpYD
;
}
public
double
getUasRange
(
double
timestamp
)
{
double
[]
ned
=
getNED
(
timestamp
);
return
Math
.
sqrt
(
ned
[
0
]*
ned
[
0
]+
ned
[
1
]*
ned
[
1
]+
ned
[
2
]*
ned
[
2
]);
}
public
double
getUasRange
(
String
stimestamp
)
{
double
timestamp
=
Double
.
parseDouble
(
stimestamp
.
replace
(
"_"
,
"."
));
return
getUasRange
(
timestamp
);
}
//
public
static
void
testUasLogReader
(
String
filePath
,
...
...
src/main/java/com/elphel/imagej/tileprocessor/IntersceneMatchParameters.java
View file @
99bfce50
...
...
@@ -783,6 +783,9 @@ min_str_neib_fpn 0.35
public
boolean
cuas_mask_round
=
true
;
public
int
cuas_target_type
=
0
;
// 0 - unknown, 1 - known, 2 - friend, 3 - foe
public
int
cuas_known_type
=
2
;
// 0 - unknown, 1 - known, 2 - friend, 3 - foe
public
double
cuas_known_err
=
20
;
// pix, mark as "identified" when closer to the flight log position
public
double
cuas_input_range
=
5
;
public
boolean
cuas_scale2x
=
true
;
public
boolean
cuas_ra_background
=
true
;
// apply running average to the background of the moving targets (false - use high-noise no-averaged images
...
...
@@ -811,8 +814,7 @@ min_str_neib_fpn 0.35
public
int
cuas_py0
=
386
;
// pixel with known elevation
public
double
cuas_az0
=
201.5
;
// degrees for cuas_px0;
public
double
cuas_el0
=
0.0
;
// degrees for cuas_px0;
public
boolean
cuas_show_true_rng
=
true
;
// show true range (from the flight log)
public
boolean
cuas_debug
=
true
;
// save debug images (and show them if not in batch mode)
public
boolean
cuas_step_debug
=
true
;
// save debug images during per-step cuas recalculation (and show them if not in batch mode)
...
...
@@ -2378,8 +2380,12 @@ min_str_neib_fpn 0.35
gd
.
addCheckbox
(
"Mask round"
,
this
.
cuas_mask_round
,
"Use round mask. Unchesked - use sharp square mask without any transition."
);
gd
.
addNumericField
(
"Targets icon type"
,
this
.
cuas_target_type
,
0
,
3
,
""
,
gd
.
addNumericField
(
"Unidentified targets icon type"
,
this
.
cuas_target_type
,
0
,
3
,
""
,
"0 - unknown (dashed square), 1 - known (square), 2 - friend (circle), 3 - foe (diamond)."
);
gd
.
addNumericField
(
"Identified Targets icon type"
,
this
.
cuas_known_type
,
0
,
3
,
""
,
"0 - unknown (dashed square), 1 - known (square), 2 - friend (circle), 3 - foe (diamond)."
);
gd
.
addNumericField
(
"Maximal distance from log position"
,
this
.
cuas_known_err
,
5
,
8
,
"pix"
,
"Maximal distance between the detected target and UAS log position (in raw image pixels)."
);
gd
.
addNumericField
(
"Image range"
,
this
.
cuas_input_range
,
5
,
8
,
"10mK"
,
"Dispaly pixel values range (1.0 ~= 10 mK)."
);
...
...
@@ -2435,6 +2441,8 @@ min_str_neib_fpn 0.35
"Azimuth corresponding to the known pixel X."
);
gd
.
addNumericField
(
"Known pixel azimuth"
,
this
.
cuas_el0
,
5
,
8
,
"degree"
,
"Elevation corresponding to the known pixel Y."
);
gd
.
addCheckbox
(
"Show true range"
,
this
.
cuas_show_true_rng
,
"Show range true from the UAS log."
);
gd
.
addMessage
(
"=== Debug ==="
);
gd
.
addCheckbox
(
"Save/show debug images"
,
this
.
cuas_debug
,
...
...
@@ -3467,6 +3475,9 @@ min_str_neib_fpn 0.35
this
.
cuas_mask_blur
=
gd
.
getNextNumber
();
this
.
cuas_mask_round
=
gd
.
getNextBoolean
();
this
.
cuas_target_type
=
(
int
)
gd
.
getNextNumber
();
this
.
cuas_known_type
=
(
int
)
gd
.
getNextNumber
();
this
.
cuas_known_err
=
gd
.
getNextNumber
();
this
.
cuas_input_range
=
gd
.
getNextNumber
();
this
.
cuas_scale2x
=
gd
.
getNextBoolean
();
this
.
cuas_ra_background
=
gd
.
getNextBoolean
();
...
...
@@ -3501,6 +3512,7 @@ min_str_neib_fpn 0.35
this
.
cuas_py0
=
(
int
)
gd
.
getNextNumber
();
this
.
cuas_az0
=
gd
.
getNextNumber
();
this
.
cuas_el0
=
gd
.
getNextNumber
();
this
.
cuas_show_true_rng
=
gd
.
getNextBoolean
();
this
.
cuas_debug
=
gd
.
getNextBoolean
();
this
.
cuas_step_debug
=
gd
.
getNextBoolean
();
...
...
@@ -4455,6 +4467,9 @@ min_str_neib_fpn 0.35
properties
.
setProperty
(
prefix
+
"cuas_mask_blur"
,
this
.
cuas_mask_blur
+
""
);
// double
properties
.
setProperty
(
prefix
+
"cuas_mask_round"
,
this
.
cuas_mask_round
+
""
);
// boolean
properties
.
setProperty
(
prefix
+
"cuas_target_type"
,
this
.
cuas_target_type
+
""
);
// int
properties
.
setProperty
(
prefix
+
"cuas_known_type"
,
this
.
cuas_known_type
+
""
);
// int
properties
.
setProperty
(
prefix
+
"cuas_known_err"
,
this
.
cuas_known_err
+
""
);
// double
properties
.
setProperty
(
prefix
+
"cuas_input_range"
,
this
.
cuas_input_range
+
""
);
// double
properties
.
setProperty
(
prefix
+
"cuas_scale2x"
,
this
.
cuas_scale2x
+
""
);
// boolean
properties
.
setProperty
(
prefix
+
"cuas_ra_background"
,
this
.
cuas_ra_background
+
""
);
// boolean
...
...
@@ -4479,11 +4494,12 @@ min_str_neib_fpn 0.35
properties
.
setProperty
(
prefix
+
"cuas_font_name"
,
this
.
cuas_font_name
+
""
);
// String
properties
.
setProperty
(
prefix
+
"cuas_font_size"
,
this
.
cuas_font_size
+
""
);
// int
properties
.
setProperty
(
prefix
+
"cuas_font_type"
,
this
.
cuas_font_type
+
""
);
// int
properties
.
setProperty
(
prefix
+
"cuas_ifov"
,
this
.
cuas_ifov
+
""
);
// double
properties
.
setProperty
(
prefix
+
"cuas_px0"
,
this
.
cuas_px0
+
""
);
// int
properties
.
setProperty
(
prefix
+
"cuas_py0"
,
this
.
cuas_py0
+
""
);
// int
properties
.
setProperty
(
prefix
+
"cuas_az0"
,
this
.
cuas_az0
+
""
);
// double
properties
.
setProperty
(
prefix
+
"cuas_el0"
,
this
.
cuas_el0
+
""
);
// double
properties
.
setProperty
(
prefix
+
"cuas_ifov"
,
this
.
cuas_ifov
+
""
);
// double
properties
.
setProperty
(
prefix
+
"cuas_px0"
,
this
.
cuas_px0
+
""
);
// int
properties
.
setProperty
(
prefix
+
"cuas_py0"
,
this
.
cuas_py0
+
""
);
// int
properties
.
setProperty
(
prefix
+
"cuas_az0"
,
this
.
cuas_az0
+
""
);
// double
properties
.
setProperty
(
prefix
+
"cuas_el0"
,
this
.
cuas_el0
+
""
);
// double
properties
.
setProperty
(
prefix
+
"cuas_show_true_rng"
,
this
.
cuas_show_true_rng
+
""
);
// boolean
properties
.
setProperty
(
prefix
+
"cuas_debug"
,
this
.
cuas_debug
+
""
);
// boolean
properties
.
setProperty
(
prefix
+
"cuas_step_debug"
,
this
.
cuas_step_debug
+
""
);
// boolean
...
...
@@ -5411,6 +5427,9 @@ min_str_neib_fpn 0.35
if
(
properties
.
getProperty
(
prefix
+
"cuas_mask_blur"
)!=
null
)
this
.
cuas_mask_blur
=
Double
.
parseDouble
(
properties
.
getProperty
(
prefix
+
"cuas_mask_blur"
));
if
(
properties
.
getProperty
(
prefix
+
"cuas_mask_round"
)!=
null
)
this
.
cuas_mask_round
=
Boolean
.
parseBoolean
(
properties
.
getProperty
(
prefix
+
"cuas_mask_round"
));
if
(
properties
.
getProperty
(
prefix
+
"cuas_target_type"
)!=
null
)
this
.
cuas_target_type
=
Integer
.
parseInt
(
properties
.
getProperty
(
prefix
+
"cuas_target_type"
));
if
(
properties
.
getProperty
(
prefix
+
"cuas_known_type"
)!=
null
)
this
.
cuas_known_type
=
Integer
.
parseInt
(
properties
.
getProperty
(
prefix
+
"cuas_known_type"
));
if
(
properties
.
getProperty
(
prefix
+
"cuas_known_err"
)!=
null
)
this
.
cuas_known_err
=
Double
.
parseDouble
(
properties
.
getProperty
(
prefix
+
"cuas_known_err"
));
if
(
properties
.
getProperty
(
prefix
+
"cuas_input_range"
)!=
null
)
this
.
cuas_input_range
=
Double
.
parseDouble
(
properties
.
getProperty
(
prefix
+
"cuas_input_range"
));
if
(
properties
.
getProperty
(
prefix
+
"cuas_scale2x"
)!=
null
)
this
.
cuas_scale2x
=
Boolean
.
parseBoolean
(
properties
.
getProperty
(
prefix
+
"cuas_scale2x"
));
if
(
properties
.
getProperty
(
prefix
+
"cuas_ra_background"
)!=
null
)
this
.
cuas_ra_background
=
Boolean
.
parseBoolean
(
properties
.
getProperty
(
prefix
+
"cuas_ra_background"
));
...
...
@@ -5440,6 +5459,7 @@ min_str_neib_fpn 0.35
if
(
properties
.
getProperty
(
prefix
+
"cuas_py0"
)!=
null
)
this
.
cuas_py0
=
Integer
.
parseInt
(
properties
.
getProperty
(
prefix
+
"cuas_py0"
));
if
(
properties
.
getProperty
(
prefix
+
"cuas_az0"
)!=
null
)
this
.
cuas_az0
=
Double
.
parseDouble
(
properties
.
getProperty
(
prefix
+
"cuas_az0"
));
if
(
properties
.
getProperty
(
prefix
+
"cuas_el0"
)!=
null
)
this
.
cuas_el0
=
Double
.
parseDouble
(
properties
.
getProperty
(
prefix
+
"cuas_el0"
));
if
(
properties
.
getProperty
(
prefix
+
"cuas_show_true_rng"
)!=
null
)
this
.
cuas_show_true_rng
=
Boolean
.
parseBoolean
(
properties
.
getProperty
(
prefix
+
"cuas_show_true_rng"
));
if
(
properties
.
getProperty
(
prefix
+
"cuas_debug"
)!=
null
)
this
.
cuas_debug
=
Boolean
.
parseBoolean
(
properties
.
getProperty
(
prefix
+
"cuas_debug"
));
if
(
properties
.
getProperty
(
prefix
+
"cuas_step_debug"
)!=
null
)
this
.
cuas_step_debug
=
Boolean
.
parseBoolean
(
properties
.
getProperty
(
prefix
+
"cuas_step_debug"
));
...
...
@@ -6366,6 +6386,9 @@ min_str_neib_fpn 0.35
imp
.
cuas_mask_blur
=
this
.
cuas_mask_blur
;
imp
.
cuas_mask_round
=
this
.
cuas_mask_round
;
imp
.
cuas_target_type
=
this
.
cuas_target_type
;
imp
.
cuas_known_type
=
this
.
cuas_known_type
;
imp
.
cuas_known_err
=
this
.
cuas_known_err
;
imp
.
cuas_input_range
=
this
.
cuas_input_range
;
imp
.
cuas_scale2x
=
this
.
cuas_scale2x
;
imp
.
cuas_ra_background
=
this
.
cuas_ra_background
;
...
...
@@ -6392,6 +6415,7 @@ min_str_neib_fpn 0.35
imp
.
cuas_py0
=
this
.
cuas_py0
;
imp
.
cuas_az0
=
this
.
cuas_az0
;
imp
.
cuas_el0
=
this
.
cuas_el0
;
imp
.
cuas_show_true_rng
=
this
.
cuas_show_true_rng
;
imp
.
cuas_debug
=
this
.
cuas_debug
;
imp
.
cuas_step_debug
=
this
.
cuas_step_debug
;
...
...
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