-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
220 lines (173 loc) · 8.12 KB
/
index.html
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>PGM | A general error model</title>
<meta name="author" content="Timothy Sipkens" />
<meta name="keywords" content="general error model, noise model, noise, PGM, poisson-gaussian-multiplicative, multiplicative error, gaussian noise, poisson noise, Tim, Sipkens, Timothy Sipkens, viz" />
<meta name="description" content="A web app to explore the PGM error model from measurements, contianing Poisson, Gaussian, and multiplicative errors." />
<meta name="robots" content="index,follow" />
<link rel="icon" type="image/png" href="https://tsipkens.github.io/pgm-error/docs/favicon.png">
<link rel="shortcut icon" href="https://tsipkens.github.io/pgm-error/docs/favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Load d3.js -->
<script src="https://d3js.org/d3.v4.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<!-- Load fonts -->
<link href="docs/index.css" rel="stylesheet">
</head>
<body>
<header id="header" class="header">
<a href="https://github.com/tsipkens" class="nav-link" style="padding: 15px 10px 13px 5%;font-size:12pt;font-weight:600;"><img src="docs/imgs/pgm_logo.svg" height="30pt"></a>
<nav>
<ul class="nav-list">
<li><a href="https://doi.org/10.1364/AO.56.008436" class="nav-link">Sipkens et al. (2017)</a></li>
<li><a href="https://github.com/tsipkens/pgm-error" class="nav-link">Link to code</a></li>
<li><a href="https://github.com/tsipkens" class="nav-link">
<div style="display:flex;vertical-align:middle;">
<img src="docs/GitHub-Mark-64px.png" alt="GitHub" style="height:15pt; padding-right:5px;">
<span>@tsipkens</span>
</div>
</a></li>
</ul>
</nav>
</header>
<div class="main">
<h1><img src="docs/imgs/pgm_logo.svg" height="80pt" style="padding-top:60px;"></h1>
<div class="subtitle">
A general error model for count-based signals containing
<b>P</b>oisson, <b>G</b>aussian, and <b>m</b>ultiplicative errors.
</div>
<p align="justify">
This model generalizes the Poisson-Gaussian error model to allow
for fluctuations between measured signals, as described
by <a href="https://doi.org/10.1364/AO.56.008436">Sipkens et al. (2017)</a>.
Originally, the error model was built to describe time-resolved
laser-induced incandescence (TiRe-LII) signals but has applications
that extend beyond this original scope.
</p>
<p align="justify">
Overall, the model includes contributions from three components.
</p>
<!-- Formatting before boxes. -->
<div class="box"></div>
<div class="box">
<h3>POISSON NOISE</h3>
<p>
<b>Shot</b> or <b>Poisson noise</b>, which is incorporated by "reducing"
the signal by θ, will result in lower signals containing smaller
fluctuations. Reducing the Gaussian contributions, by lowering γ,
one can clearly see this effect.
This work approximates this type of noise
as Guassian. As a result, when θ is large (such that the
peak signal is below 50 counts, e.g., in the shoulder signal for this
<a href="#hlegend" id="set2">this set of parameters</a>),
artifacts become visible in this approximation.
Significant negative counts start to appear and
discretized values will not be visible as they would in true
Poisson-corrupted data.
</p>
<div class="img-div">
<img src="docs/imgs/pois.svg" alt="Noise types" class="img-schem">
</div>
</div>
<div class="box">
<h3>GAUSSIAN NOISE</h3>
<p>
Additive white, <b>Gaussian noise</b> affects the signal more uniformly
and is the primary source of noise at lower signals. This could correspond
to electronic noise or could be used to enforce a lower detectability limit.
This noise is uniform over the signal (for example, see
<a href="#hlegend" id="set3">this set of parameters</a>).
</p>
<div class="img-div">
<img src="docs/imgs/gaus.svg" alt="Noise types" class="img-schem">
</div>
</div>
<div class="box" style="margin-bottom:50px;">
<h3>MULTIPLICATIVE ERRORS</h3>
<p>
Finally, variations in a multiplier between measured signals
result in <b>multiplicative errors</b> (called <b>shot-to-shot errors</b> in
<a href="https://doi.org/10.1364/AO.56.008436">Sipkens et al. (2017)</a>)
that allow individual signals to
appear above or below the overall average. This is convolved
with Poisson noise, such that signals higher than the average
will contain more noise (this is visibly apparent for
<a href="#hlegend" id="set1">
this set of parameters</a>).
</p>
<div class="img-div">
<img src="docs/imgs/s2s.svg" alt="Noise types" class="img-schem">
</div>
</div>
<h2>VISUALIZATION</h2>
<p align="justify">
Yellow is a signal two standard deviations below the average,
dark purple is a signal two standard deviation above the average,
and red is a signal about the average.
As a result, changing τ will stretch the bounds.
</p>
<a class="anchor" id="hlegend"></a>
<div class="control">
<span class="control-label">Gaussian level</span>
<input type="range" name="gamSlider" id="gamSlider" min="1" max="21" value="7" class="slider" onchange="displayval(this.value, gam_vec, 'gamval');"> <br>
γ = <output id="gamval">-</output>
</div>
<div class="control">
<span class="control-label">Poisson level</span>
<input type="range" name="theSlider" id="theSlider" min="1" max="19" value="7" class="slider" onchange="displayval(this.value, the_vec, 'theval');"> <br>
max{s} = <output id="theval2">-</output> <span class="control-unit">counts</span> <br>
θ = <output id="theval">-</output>
</div>
<div class="control">
<span class="control-label">Multiplicative level</span>
<input type="range" name="tauSlider" id="tauSlider" min="1" max="21" value="11" class="slider" onchange="displayval(this.value, tau_vec, 'tauval');"> <br>
τ = <output id="tauval">-</output>
</div>
<!-- Create a div where the graph will take place -->
<div id="my_dataviz" style="padding-top:30px;"></div>
<div id="plot2" style="padding-top:40px;"></div>
<script src="js/add_noise.js"></script>
</div>
<div class="footer">
<div class="main" style="padding-top:20px;padding-bottom:20px;font-size:10pt;">
<div class="footer-section" style="width:40px;">
<img src="docs/imgs/pgm_gray.svg" height="20pt" style="padding-top:3px;">
</div>
<div class="footer-section" style="max-width:350px;">
<h4>CITATION</h4>
<p>
This web app was created in association with work completed
at the University of Waterloo and supports an article in Applied Optics:
</p>
<p>
<a href="https://doi.org/10.1364/AO.56.008436">
Sipkens, T.A., Hadwin, P.J., Grauer, S.J. and Daun, K.J., 2017.
General error model for analysis of laser-induced incandescence signals.
<i>Applied optics</i>, 56(30), pp.8436-8445.
</a>
</p>
</div>
<div class="footer-section" style="max-width:200px;">
<h4>CODE</h4>
<p>
Matlab and Javascript code supporting this data viz is available
<a href="https://github.com/tsipkens/wat-lii-error">here</a>.
</p>
</div>
</div>
</div>
<script>
// When the user scrolls down 50px from the top of the document, reformat header
window.onscroll = function() {scrollFunction()};
function scrollFunction() {
if (document.body.scrollTop > 50 || document.documentElement.scrollTop > 60) {
document.getElementById("header").style.boxShadow = "0px 0px 4px #AAA";
} else {
document.getElementById("header").style.boxShadow = "none";
}
}
</script>
</body>
</html>