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
be7e6c62
Commit
be7e6c62
authored
Dec 30, 2016
by
Andrey Filippov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added window functions, seem to stabilize LMA
parent
03feb56c
Changes
3
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
277 additions
and
285 deletions
+277
-285
EyesisCorrectionParameters.java
src/main/java/EyesisCorrectionParameters.java
+5
-0
Eyesis_Correction.java
src/main/java/Eyesis_Correction.java
+20
-15
FactorConvKernel.java
src/main/java/FactorConvKernel.java
+252
-270
No files found.
src/main/java/EyesisCorrectionParameters.java
View file @
be7e6c62
...
@@ -1666,6 +1666,7 @@ public class EyesisCorrectionParameters {
...
@@ -1666,6 +1666,7 @@ public class EyesisCorrectionParameters {
public
double
dbg_sigma
=
2.0
;
public
double
dbg_sigma
=
2.0
;
public
String
dbg_mask
=
".........:::::::::.........:::::::::......*..:::::*:::.........:::::::::........."
;
public
String
dbg_mask
=
".........:::::::::.........:::::::::......*..:::::*:::.........:::::::::........."
;
public
int
dbg_mode
=
1
;
// 0 - old LMA, 1 - new LMA
public
int
dbg_mode
=
1
;
// 0 - old LMA, 1 - new LMA
public
int
dbg_window_mode
=
2
;
// 0 - none, 1 - square, 2 - sin
public
DCTParameters
(
public
DCTParameters
(
int
dct_size
,
int
dct_size
,
...
@@ -1705,6 +1706,7 @@ public class EyesisCorrectionParameters {
...
@@ -1705,6 +1706,7 @@ public class EyesisCorrectionParameters {
properties
.
setProperty
(
prefix
+
"dbg_sigma"
,
this
.
dbg_sigma
+
""
);
properties
.
setProperty
(
prefix
+
"dbg_sigma"
,
this
.
dbg_sigma
+
""
);
properties
.
setProperty
(
prefix
+
"dbg_mask"
,
this
.
dbg_mask
+
""
);
properties
.
setProperty
(
prefix
+
"dbg_mask"
,
this
.
dbg_mask
+
""
);
properties
.
setProperty
(
prefix
+
"dbg_mode"
,
this
.
dbg_mode
+
""
);
properties
.
setProperty
(
prefix
+
"dbg_mode"
,
this
.
dbg_mode
+
""
);
properties
.
setProperty
(
prefix
+
"dbg_window_mode"
,
this
.
dbg_window_mode
+
""
);
}
}
public
void
getProperties
(
String
prefix
,
Properties
properties
){
public
void
getProperties
(
String
prefix
,
Properties
properties
){
...
@@ -1726,6 +1728,7 @@ public class EyesisCorrectionParameters {
...
@@ -1726,6 +1728,7 @@ public class EyesisCorrectionParameters {
if
(
properties
.
getProperty
(
prefix
+
"dbg_sigma"
)!=
null
)
this
.
dbg_sigma
=
Double
.
parseDouble
(
properties
.
getProperty
(
prefix
+
"dbg_sigma"
));
if
(
properties
.
getProperty
(
prefix
+
"dbg_sigma"
)!=
null
)
this
.
dbg_sigma
=
Double
.
parseDouble
(
properties
.
getProperty
(
prefix
+
"dbg_sigma"
));
if
(
properties
.
getProperty
(
prefix
+
"dbg_mask"
)!=
null
)
this
.
dbg_mask
=
properties
.
getProperty
(
prefix
+
"dbg_mask"
);
if
(
properties
.
getProperty
(
prefix
+
"dbg_mask"
)!=
null
)
this
.
dbg_mask
=
properties
.
getProperty
(
prefix
+
"dbg_mask"
);
if
(
properties
.
getProperty
(
prefix
+
"dbg_mode"
)!=
null
)
this
.
dbg_mode
=
Integer
.
parseInt
(
properties
.
getProperty
(
prefix
+
"dbg_mode"
));
if
(
properties
.
getProperty
(
prefix
+
"dbg_mode"
)!=
null
)
this
.
dbg_mode
=
Integer
.
parseInt
(
properties
.
getProperty
(
prefix
+
"dbg_mode"
));
if
(
properties
.
getProperty
(
prefix
+
"dbg_window_mode"
)!=
null
)
this
.
dbg_window_mode
=
Integer
.
parseInt
(
properties
.
getProperty
(
prefix
+
"dbg_window_mode"
));
}
}
public
boolean
showDialog
()
{
public
boolean
showDialog
()
{
GenericDialog
gd
=
new
GenericDialog
(
"Set DCT parameters"
);
GenericDialog
gd
=
new
GenericDialog
(
"Set DCT parameters"
);
...
@@ -1747,6 +1750,7 @@ public class EyesisCorrectionParameters {
...
@@ -1747,6 +1750,7 @@ public class EyesisCorrectionParameters {
gd
.
addNumericField
(
"dbg_sigma"
,
this
.
dbg_sigma
,
3
);
//0..2
gd
.
addNumericField
(
"dbg_sigma"
,
this
.
dbg_sigma
,
3
);
//0..2
gd
.
addStringField
(
"Debug mask (anything but * is false)"
,
this
.
dbg_mask
,
100
);
gd
.
addStringField
(
"Debug mask (anything but * is false)"
,
this
.
dbg_mask
,
100
);
gd
.
addNumericField
(
"LMA implementation: 0 - old, 1 - new"
,
this
.
dbg_mode
,
0
);
//32
gd
.
addNumericField
(
"LMA implementation: 0 - old, 1 - new"
,
this
.
dbg_mode
,
0
);
//32
gd
.
addNumericField
(
"Convolution window: 0 - none, 1 - square, 2 - sin, 3 - sin^2"
,
this
.
dbg_window_mode
,
0
);
//32
// gd.addNumericField("Debug Level:", MASTER_DEBUG_LEVEL, 0);
// gd.addNumericField("Debug Level:", MASTER_DEBUG_LEVEL, 0);
gd
.
showDialog
();
gd
.
showDialog
();
...
@@ -1769,6 +1773,7 @@ public class EyesisCorrectionParameters {
...
@@ -1769,6 +1773,7 @@ public class EyesisCorrectionParameters {
this
.
dbg_sigma
=
gd
.
getNextNumber
();
this
.
dbg_sigma
=
gd
.
getNextNumber
();
this
.
dbg_mask
=
gd
.
getNextString
();
this
.
dbg_mask
=
gd
.
getNextString
();
this
.
dbg_mode
=
(
int
)
gd
.
getNextNumber
();
this
.
dbg_mode
=
(
int
)
gd
.
getNextNumber
();
this
.
dbg_window_mode
=
(
int
)
gd
.
getNextNumber
();
// MASTER_DEBUG_LEVEL= (int) gd.getNextNumber();
// MASTER_DEBUG_LEVEL= (int) gd.getNextNumber();
return
true
;
return
true
;
...
...
src/main/java/Eyesis_Correction.java
View file @
be7e6c62
...
@@ -2838,6 +2838,7 @@ private Panel panel1,panel2,panel3,panel4,panel5,panel5a, panel6,panel7,panelPos
...
@@ -2838,6 +2838,7 @@ private Panel panel1,panel2,panel3,panel4,panel5,panel5a, panel6,panel7,panelPos
if
(!
DCT_PARAMETERS
.
showDialog
())
return
;
if
(!
DCT_PARAMETERS
.
showDialog
())
return
;
FactorConvKernel
factorConvKernel
=
new
FactorConvKernel
(
DCT_PARAMETERS
.
dbg_mode
==
1
);
FactorConvKernel
factorConvKernel
=
new
FactorConvKernel
(
DCT_PARAMETERS
.
dbg_mode
==
1
);
factorConvKernel
.
setDebugLevel
(
DEBUG_LEVEL
);
factorConvKernel
.
setDebugLevel
(
DEBUG_LEVEL
);
factorConvKernel
.
setTargetWindowMode
(
DCT_PARAMETERS
.
dbg_window_mode
);
factorConvKernel
.
numIterations
=
DCT_PARAMETERS
.
LMA_steps
;
factorConvKernel
.
numIterations
=
DCT_PARAMETERS
.
LMA_steps
;
factorConvKernel
.
setAsymCompactness
(
factorConvKernel
.
setAsymCompactness
(
DCT_PARAMETERS
.
compactness
,
DCT_PARAMETERS
.
compactness
,
...
@@ -2898,16 +2899,6 @@ private Panel panel1,panel2,panel3,panel4,panel5,panel5a, panel6,panel7,panelPos
...
@@ -2898,16 +2899,6 @@ private Panel panel1,panel2,panel3,panel4,panel5,panel5a, panel6,panel7,panelPos
for
(
int
ii
=
0
;
ii
<
mask
.
length
;
ii
++)
{
for
(
int
ii
=
0
;
ii
<
mask
.
length
;
ii
++)
{
mask
[
ii
]
=
((
ii
<=
DCT_PARAMETERS
.
dbg_mask
.
length
())
&&
(
DCT_PARAMETERS
.
dbg_mask
.
charAt
(
ii
)
==
'*'
));
mask
[
ii
]
=
((
ii
<=
DCT_PARAMETERS
.
dbg_mask
.
length
())
&&
(
DCT_PARAMETERS
.
dbg_mask
.
charAt
(
ii
)
==
'*'
));
}
}
/*
System.out.println("asym mask: ");
for (int ii=0;ii<DCT_PARAMETERS.asym_size;ii++){
System.out.print(ii+": ");
for (int jj=0;jj<DCT_PARAMETERS.asym_size;jj++){
System.out.print((mask[ii*DCT_PARAMETERS.asym_size+jj]?" X":" .")+" ");
}
System.out.println();
}
*/
}
}
...
@@ -2923,11 +2914,16 @@ private Panel panel1,panel2,panel3,panel4,panel5,panel5a, panel6,panel7,panelPos
...
@@ -2923,11 +2914,16 @@ private Panel panel1,panel2,panel3,panel4,panel5,panel5a, panel6,panel7,panelPos
double
[]
sym_kernel
=
factorConvKernel
.
getSymKernel
();
double
[]
sym_kernel
=
factorConvKernel
.
getSymKernel
();
double
[]
asym_kernel
=
factorConvKernel
.
getAsymKernel
();
double
[]
asym_kernel
=
factorConvKernel
.
getAsymKernel
();
double
[]
convolved
=
factorConvKernel
.
getConvolved
();
double
[]
convolved
=
factorConvKernel
.
getConvolved
();
double
[]
diff100
=
new
double
[
convolved
.
length
];
double
[]
target_weights
=
factorConvKernel
.
getTargetWeights
();
for
(
int
ii
=
0
;
ii
<
convolved
.
length
;
ii
++)
diff100
[
ii
]=
100.0
*(
target_expanded
[
ii
]-
convolved
[
ii
]);
double
[][]
compare_kernels
=
{
target_expanded
,
convolved
,
diff100
};
double
[]
diff100
=
new
double
[
convolved
.
length
];
double
[]
weighted_diff100
=
new
double
[
convolved
.
length
];
for
(
int
ii
=
0
;
ii
<
convolved
.
length
;
ii
++)
{
diff100
[
ii
]=
100.0
*(
target_expanded
[
ii
]-
convolved
[
ii
]);
weighted_diff100
[
ii
]
=
diff100
[
ii
]*
target_weights
[
ii
];
}
double
[][]
compare_kernels
=
{
target_expanded
,
convolved
,
weighted_diff100
,
target_weights
,
diff100
};
System
.
out
.
println
(
"DCT_PARAMETERS.dct_size="
+
DCT_PARAMETERS
.
dct_size
+
" DCT_PARAMETERS.asym_size="
+
DCT_PARAMETERS
.
asym_size
);
System
.
out
.
println
(
"DCT_PARAMETERS.dct_size="
+
DCT_PARAMETERS
.
dct_size
+
" DCT_PARAMETERS.asym_size="
+
DCT_PARAMETERS
.
asym_size
);
System
.
out
.
println
(
"sym_kernel.length="
+
sym_kernel
.
length
);
System
.
out
.
println
(
"sym_kernel.length="
+
sym_kernel
.
length
);
System
.
out
.
println
(
"asym_kernel.length="
+
asym_kernel
.
length
);
System
.
out
.
println
(
"asym_kernel.length="
+
asym_kernel
.
length
);
...
@@ -2942,6 +2938,7 @@ private Panel panel1,panel2,panel3,panel4,panel5,panel5a, panel6,panel7,panelPos
...
@@ -2942,6 +2938,7 @@ private Panel panel1,panel2,panel3,panel4,panel5,panel5a, panel6,panel7,panelPos
if
(!
DCT_PARAMETERS
.
showDialog
())
return
;
if
(!
DCT_PARAMETERS
.
showDialog
())
return
;
FactorConvKernel
factorConvKernel
=
new
FactorConvKernel
(
DCT_PARAMETERS
.
dbg_mode
==
1
);
FactorConvKernel
factorConvKernel
=
new
FactorConvKernel
(
DCT_PARAMETERS
.
dbg_mode
==
1
);
factorConvKernel
.
setDebugLevel
(
DEBUG_LEVEL
);
factorConvKernel
.
setDebugLevel
(
DEBUG_LEVEL
);
factorConvKernel
.
setTargetWindowMode
(
DCT_PARAMETERS
.
dbg_window_mode
);
factorConvKernel
.
numIterations
=
DCT_PARAMETERS
.
LMA_steps
;
factorConvKernel
.
numIterations
=
DCT_PARAMETERS
.
LMA_steps
;
factorConvKernel
.
setAsymCompactness
(
factorConvKernel
.
setAsymCompactness
(
DCT_PARAMETERS
.
compactness
,
DCT_PARAMETERS
.
compactness
,
...
@@ -3008,7 +3005,15 @@ private Panel panel1,panel2,panel3,panel4,panel5,panel5a, panel6,panel7,panelPos
...
@@ -3008,7 +3005,15 @@ private Panel panel1,panel2,panel3,panel4,panel5,panel5a, panel6,panel7,panelPos
double
[]
sym_kernel
=
factorConvKernel
.
getSymKernel
();
double
[]
sym_kernel
=
factorConvKernel
.
getSymKernel
();
double
[]
asym_kernel
=
factorConvKernel
.
getAsymKernel
();
double
[]
asym_kernel
=
factorConvKernel
.
getAsymKernel
();
double
[]
convolved
=
factorConvKernel
.
getConvolved
();
double
[]
convolved
=
factorConvKernel
.
getConvolved
();
double
[][]
compare_kernels
=
{
target_expanded
,
convolved
};
double
[]
target_weights
=
factorConvKernel
.
getTargetWeights
();
double
[]
diff100
=
new
double
[
convolved
.
length
];
double
[]
weighted_diff100
=
new
double
[
convolved
.
length
];
for
(
int
ii
=
0
;
ii
<
convolved
.
length
;
ii
++)
{
diff100
[
ii
]=
100.0
*(
target_expanded
[
ii
]-
convolved
[
ii
]);
weighted_diff100
[
ii
]
=
diff100
[
ii
]*
target_weights
[
ii
];
}
double
[][]
compare_kernels
=
{
target_expanded
,
convolved
,
weighted_diff100
,
target_weights
,
diff100
};
System
.
out
.
println
(
"DCT_PARAMETERS.dct_size="
+
DCT_PARAMETERS
.
dct_size
+
" DCT_PARAMETERS.asym_size="
+
DCT_PARAMETERS
.
asym_size
);
System
.
out
.
println
(
"DCT_PARAMETERS.dct_size="
+
DCT_PARAMETERS
.
dct_size
+
" DCT_PARAMETERS.asym_size="
+
DCT_PARAMETERS
.
asym_size
);
System
.
out
.
println
(
"sym_kernel.length="
+
sym_kernel
.
length
);
System
.
out
.
println
(
"sym_kernel.length="
+
sym_kernel
.
length
);
System
.
out
.
println
(
"asym_kernel.length="
+
asym_kernel
.
length
);
System
.
out
.
println
(
"asym_kernel.length="
+
asym_kernel
.
length
);
...
...
src/main/java/FactorConvKernel.java
View file @
be7e6c62
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