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
96854335
Commit
96854335
authored
Jun 27, 2021
by
Andrey Filippov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixed very old bug that caused midding grids, especially on 48-thread Xeon
parent
eaf09d11
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
42 additions
and
12 deletions
+42
-12
Aberration_Calibration.java
...com/elphel/imagej/calibration/Aberration_Calibration.java
+15
-4
CalibrationIllustration.java
...om/elphel/imagej/calibration/CalibrationIllustration.java
+1
-1
MatchSimulatedPattern.java
.../com/elphel/imagej/calibration/MatchSimulatedPattern.java
+26
-7
No files found.
src/main/java/com/elphel/imagej/calibration/Aberration_Calibration.java
View file @
96854335
...
...
@@ -1070,8 +1070,8 @@ if (MORE_BUTTONS) {
panelIllustrations= new Panel();
panelIllustrations.setLayout(new GridLayout(1, 0, 5, 5)); // rows, columns, vgap, hgap
addButton("Illustrations Configure", panelIllustrations,color_configure);
addButton("Remove bad grids", panelIllustrations,color_stop);
addButton("Illustrations", panelIllustrations,color_bundle);
addButton("Remove Bad grids", panelIllustrations,color_stop);
add(panelIllustrations);
...
...
@@ -9442,7 +9442,7 @@ if (MORE_BUTTONS) {
return;
}
/* ======================================================================== */
if (label.equals("Remove
B
ad grids")) {
if (label.equals("Remove
b
ad grids")) {
if (LENS_DISTORTIONS==null) {
IJ.showMessage("LENS_DISTORTION is not set"); // to use all grids imported
return;
...
...
@@ -9457,6 +9457,13 @@ if (MORE_BUTTONS) {
SYNC_COMMAND.stopRequested, // AtomicInteger stopRequested,
MASTER_DEBUG_LEVEL); // int debug_level);
}
// TODO: add channel selection and illustration selection, stop at any
if (!CALIBRATION_ILLUSTRATION_PARAMETERS.showJDialog()) {
return;
}
if (!ABERRATIONS_PARAMETERS.selectChannelsToProcess("Select channels to process",LENS_DISTORTIONS)) {
return;
}
CALIBRATION_ILLUSTRATION.removeBadGrids();
return;
}
...
...
@@ -10542,7 +10549,9 @@ if (MORE_BUTTONS) {
matchSimulatedPattern.debugLevel=MASTER_DEBUG_LEVEL;
*/
String [] sourceSetList = DISTORTION_PROCESS_CONFIGURATION.selectSourceSets();
LWIR_PARAMETERS.selectSourceChannels();
if (LWIR_PARAMETERS.selectSourceChannels() == null) {
return; // canceled dialog
}
boolean [] sel_chn = LWIR_PARAMETERS.getSelected();
int numFiles = LWIR_PARAMETERS.getSourceFilesFlat(sourceSetList, sel_chn).length; // just the number
String [][] sourceFilesList=LWIR_PARAMETERS.getSourceFiles(sourceSetList, sel_chn);
...
...
@@ -10550,7 +10559,9 @@ if (MORE_BUTTONS) {
boolean overwriteGrids=DISTORTION_PROCESS_CONFIGURATION.overwriteResultFiles;
int minGridFileSize = PATTERN_DETECT.minGridFileSize;
if (sourceSetList==null) return;
showPatternMinMaxPeriodDialog(PATTERN_DETECT, true);
if (!showPatternMinMaxPeriodDialog(PATTERN_DETECT, true)) {
return;
}
int saved_file = 0;
int in_file = 0;
String gridDir=DISTORTION_PROCESS_CONFIGURATION.selectGridFileDirectory(
src/main/java/com/elphel/imagej/calibration/CalibrationIllustration.java
View file @
96854335
...
...
@@ -414,7 +414,7 @@ public class CalibrationIllustration {
}
startAndJoin
(
threads
);
}
System
.
out
.
println
(
"Remo
d
ed "
+(
numRemoved
.
get
())+
" bad grid files in "
+
IJ
.
d2s
(
0.000000001
*(
System
.
nanoTime
()-
startTime
),
3
)+
" sec."
);
System
.
out
.
println
(
"Remo
v
ed "
+(
numRemoved
.
get
())+
" bad grid files in "
+
IJ
.
d2s
(
0.000000001
*(
System
.
nanoTime
()-
startTime
),
3
)+
" sec."
);
return
true
;
}
...
...
src/main/java/com/elphel/imagej/calibration/MatchSimulatedPattern.java
View file @
96854335
...
...
@@ -4092,11 +4092,12 @@ public class MatchSimulatedPattern {
);
debugLevel
=
was_debug_level
;
if
((
node
!=
null
)
&&
(
node
[
0
]
!=
null
))
{
nodeQueue
.
add
(
new
GridNode
(
node
));
nodeQueue
.
add
(
new
GridNode
(
startScanIndex
,
node
));
break
;
}
}
else
{
triedIndices
[
startScanIndex
]
=
true
;
// only mark failed here, good ones will be marked when used
}
triedIndices
[
startScanIndex
]
=
true
;
}
}
else
{
// new multithreaded mode
int
startScanIndex
=
3
;
...
...
@@ -4205,11 +4206,18 @@ public class MatchSimulatedPattern {
}
}
double
[][]
node
=
{
null
};
nodeQueue
.
add
(
new
GridNode
(
node
));
// will not be used, any element
nodeQueue
.
add
(
new
GridNode
(
-
1
,
node
));
// will not be used, any element
}
int
numDefinedCells
=
0
;
int
debug_left
=
nodeQueue
.
size
();
for
(
GridNode
gn
:
nodeQueue
)
{
// trying candidates as grid seeds - until found or nothing left
// Only here mark triedIndices !!
if
(
gn
.
triedIndex
>=
0
)
{
triedIndices
[
gn
.
triedIndex
]
=
true
;
// mark the used seed
}
else
{
System
.
out
.
println
(
"Was updating, gn.triedIndex(not used)="
+
gn
.
triedIndex
);
}
debug_left
--;
if
(
global_debug_level
>
(
debugThreshold
+
1
))
{
System
.
out
.
println
(
...
...
@@ -4684,6 +4692,9 @@ public class MatchSimulatedPattern {
}
}
// while (waveFrontList.size()>0)
debugLevel
=
was_debug_level
;
/*
* if (updating){ return PATTERN_GRID; // no need to crop the array, it should
* not change }
...
...
@@ -4806,6 +4817,7 @@ public class MatchSimulatedPattern {
// return numDefinedCells;
}
if
((
roi
!=
null
)
&&
!(
roi
instanceof
PointRoi
))
{
// don't use this feature with ROI as it can be small
if
(
global_debug_level
>
0
)
System
.
out
.
println
(
...
...
@@ -4814,6 +4826,8 @@ public class MatchSimulatedPattern {
return
numDefinedCells
;
}
}
}
// next node in queue
return
0
;
// none
}
...
...
@@ -4938,9 +4952,12 @@ public class MatchSimulatedPattern {
}
class
GridNode
{
int
triedIndex
;
// index in the list of tried points
double
[][]
node
;
public
GridNode
(
double
[][]
node
)
{
public
GridNode
(
int
triedIndex
,
double
[][]
node
)
{
this
.
triedIndex
=
triedIndex
;
this
.
node
=
node
;
}
...
...
@@ -5061,18 +5078,20 @@ public class MatchSimulatedPattern {
+
nb
+
" "
+
point
[
0
]
+
"/"
+
point
[
1
])
:
null
);
if
((
node
!=
null
)
&&
(
node
[
0
]
!=
null
))
{
nodeQueue
.
add
(
new
GridNode
(
n
ode
));
nodeQueue
.
add
(
new
GridNode
(
n
,
node
));
// save tried index for later, will be marked only when used (fixing a very old bug)
if
(
debugLevel
>
debugThreshold
-
1
)
System
.
out
.
println
(
"adding candidate "
+
n
+
" x0="
+
point
[
0
]
+
" y0="
+
point
[
1
]
+
" -> "
+
node
[
0
][
0
]
+
"/"
+
node
[
0
][
1
]
+
" seqNumber.get()="
+
seqNumber
.
get
()
+
" n="
+
n
);
continue
;
// so triedIndices[n] will not be set true
}
}
else
{
if
(
debugLevel
>
debugThreshold
)
System
.
out
.
println
(
"-----"
+
debugNumThread
+
":"
+
n
+
", nv="
+
nv
+
", nh="
+
nh
);
}
triedIndices
[
n
]
=
true
;
// regardless - good or bad
// triedIndices[n] = true; // regardless - good or bad - that was wrong, and led to skipping retries of good (but not first) nodes
triedIndices
[
n
]
=
true
;
// will come here only for failed nodes.
}
}
};
...
...
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