-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathconstants.h
127 lines (97 loc) · 3.6 KB
/
constants.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#ifndef CONSTANTS_H
#define CONSTANTS_H
/*********************************************************************
Between 2.5 and 15 Angstroms! Page 13 of Yu and Bajaj.
For an 8 Angstrom resolution map, 5 Angstroms is about right (pg 13)
*********************************************************************/
namespace constants
{
// &&& Make it a function of the map resolution?
extern double BetaThickness;
// g_alpha of the paper, the 'window size', to spread the above
// 2nd derivative around.
extern double SigmaOfFeatureGaussian;
// Should be odd. This should truthfully be calculated from the size
// of the feature gaussian.
// JGD is not sure ITK uses it though, which is disturbing; what does
// it do when it goes off the edge of the sampled region, just use a
// default value without complaint? Something's wrong, it should
// complain. This is a parameter just to experiment with, but this
// shouldn't be here.
// http://www.mvtec.com/halcon/download/documentation/reference/hdevelop/binomial_filter.html
// sigma = sqrt(n-1)/2
// n | sigma
// -------------
// 3 | 0.7523
// 5 | 1.0317
// 7 | 1.2505
// 9 | 1.4365
// 11 | 1.6010
// 13 | 1.7502
// 15 | 1.8876
// 17 | 2.0157
// 19 | 2.1361
// 21 | 2.2501
// 23 | 2.3586
// 25 | 2.4623
// 27 | 2.5618
// 29 | 2.6576
// 31 | 2.7500
// 33 | 2.8395
// 35 | 2.9262
// 37 | 3.0104
// (n above == GaussianSupportSize)
extern int GaussianSupportSize;
// Should be the size of the feature to be detected, ie, BetaThickness.
// AKA the 'window size'
// &&& This 20% is arbitrary
extern double BetaThickRangeRatio;
extern double BetaMin;
extern double BetaMax;
// Density, below which a point isn't even looked at as far as being
// a beta point.
extern double SeedDensityThreshold;
// Once we've got the seed, this is the
extern double RelativeSeedDensityThreshold;
// At what falloff, from a maximum, is it the end of the beta region?
// We're saying, here, when it reaches half the highest density.
// This is absolutely arbitrary and wants to be experimental.
extern double SeedDensityFalloff;
// &&& Or, a binary search?
extern double LineIncrement;
// Not a physical constant; maybe belongs in instrument...
extern unsigned SnapshotIntervalBase;
extern unsigned SnapshotIntervalPower;
// Beta points don't have an intensity but we want to use 3D density
// methods to show them, so we give them this fake value.
extern double BetaPointDisplayFakeDensity;
extern bool ShowSeeds;
extern double SeedsDisplayEmphFactor;
extern unsigned SnapshotImageZoom;
// In physical coordinates
extern double RequiredNewPointSeparation;
extern unsigned MaxPoints;
extern unsigned FinalSnapshot;
/* Things to check / vary:
Resolution
Line length (and whether to limit it at all, on t2,t3 -
but that's just a speed thing)
density falloff
- for speed, lower the degree of the interpolation perhaps.
get to grips with the formula!
How do I know I have the true local maximae? Is there another way,
how does the paper do it?
* Find way to tune Gaussian support. SigmaOfFeatureGaussian, supposed to be
the same as the feature size.
* Work on triangularization, skeletonization
- because, this way I can automate the search for good parameters.
* Look at their data
* translate the support for gaussian, from physical.
('too_small') - ach, just give it a surviving size
* The big time-saver would be to convert from double to float.
* subtract out the alphas' contributions!
*/
// Dr He's recommendation on generating images
// pdb2mrc 2.pdb a.mrc res=10 apix=1.0 center
} // namespace constants
#endif // CONSTANTS_H