Started working on reconstruction
This commit is contained in:
parent
ea1d02ce9f
commit
1ac5a9e093
6 changed files with 131 additions and 2 deletions
|
|
@ -172,3 +172,38 @@ Each measurement will be quantized with out quantizer $cal(E)$, returning a tupl
|
|||
$ K_i = cal(E)(s, m tilde(x_i)) = (k, h)_i $ <eq:smhd_quant>
|
||||
|
||||
Performing the operation of @eq:smhd_quant for our whole set of measurements will yield a vector of tuples $bold(K)$.
|
||||
#pagebreak()
|
||||
=== Reconstruction
|
||||
|
||||
We already demonstrated the basic principle of the reconstruction phase in section @sect:tmhd, more specifically with @fig:tmhd_example_enroll and @fig:tmhd_example_reconstruct, which show the advantage of using more than one quantizer during reconstruction.
|
||||
|
||||
We will call our repeated measurement of $tilde(x)$ that is subject to a certain error $tilde(x^*)$.
|
||||
To perform reconstruction with $tilde(x^*)$, we will first need to find all $s$ quantizers for which we generated the helper data in the previous step.
|
||||
|
||||
We have to distinguish two different cases for the value of $s$:
|
||||
- $s$ is odd
|
||||
- $s$ is even
|
||||
|
||||
==== Even number of metrics
|
||||
|
||||
If $s$ is even, we need to move our quantizer $s/2$ times some distance to the right and $s/2$ times some distance to the left.
|
||||
We can define the ideal position for the quantizer bounds based on its corresponding metric as centered around the center of the related metric.
|
||||
|
||||
We can find these new bounds graphically as depicted in @fig:smhd_find_bound_graph. We first determine the x-values of the centers of a metric (here M1, as shown with the arrows). We can then place the quantizer steps with step size $Delta$ (@eq:delta) evenly spaced around these points.
|
||||
|
||||
|
||||
|
||||
#grid(
|
||||
columns: (1fr, 0.1fr, 1fr),
|
||||
[#scale(x: 70%, y: 70%)[
|
||||
#figure(
|
||||
include("../graphics/quantizers/s-metric/2_2_find_quantizer.typ"),
|
||||
caption: [Ideal centers and bounds for the M1 quantizer]
|
||||
)<fig:smhd_find_bound_graph>]],
|
||||
[#align(center)[#align(horizon)[#text(25pt)[$arrow.r.double$]]]],
|
||||
[#scale(x: 70%, y: 70%)[
|
||||
#figure(
|
||||
include("../graphics/quantizers/s-metric/2_2_found_quantizer1.typ"),
|
||||
caption: [Quantizer for the first metric]
|
||||
)]]
|
||||
)
|
||||
|
|
|
|||
|
|
@ -37,6 +37,6 @@ This transformation can be performed using the function $xi = tilde(x)$. The key
|
|||
Considering a normal distribution, the CDF is defined as
|
||||
$ xi(frac(x - mu, sigma)) = frac(1, 2)[1 + \e\rf(frac(x - mu, sigma sqrt(2)))] $
|
||||
|
||||
=== ECDF
|
||||
==== ECDF
|
||||
|
||||
The eCDF is constructed through sorting the empirical measurements of a distribution @dekking2005modern. Although less accurate, this method allows a more simple and less computationally complex way to transform real valued measurements into the Tilde-Domain. We will mainly use the eCDF in @chap:smhd because of the difficulty of finding an analytical description for the CDF of a Gaussian-Mixture.
|
||||
|
|
|
|||
46
graphics/quantizers/s-metric/2_2_find_quantizer.typ
Normal file
46
graphics/quantizers/s-metric/2_2_find_quantizer.typ
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
#import "@preview/cetz:0.2.2": canvas, plot, draw, decorations, vector
|
||||
|
||||
#let line_style = (stroke: (paint: black, thickness: 2pt))
|
||||
#let dashed = (stroke: (dash: "dashed"))
|
||||
#let dashed2 = (stroke: (dash: "dotted"))
|
||||
#let markings = (stroke: (paint: red, thickness: 2pt), fill: red)
|
||||
#canvas({
|
||||
plot.plot(size: (8,6), name: "plot",
|
||||
x-tick-step: none,
|
||||
x-ticks: ((3/16, [3/16]), (7/16, [7/16]), (11/16, [11/16]), (15/16, [15/16])),
|
||||
y-label: $cal(E)(2, 2, tilde(x))$,
|
||||
x-label: $tilde(x)$,
|
||||
y-tick-step: none,
|
||||
y-ticks: ((0.125, [M1]) ,(0.25, [M2]),(0.375, [M1]) ,(0.5, [M2]),(0.625, [M1]) ,(0.75, [M2]),(0.875, [M1]) ,(1, [M2])),
|
||||
axis-style: "left",
|
||||
x-min: 0,
|
||||
x-max: 1,
|
||||
y-min: 0,
|
||||
y-max: 1,{
|
||||
plot.add(((0,0), (0.125, 0.125), (0.25,0.25), (0.375, 0.375),(0.5,0.5), (0.625, 0.625),(0.75,0.75), (0.875, 0.875),(1, 1)), line: "vh", style: line_style)
|
||||
plot.add-hline(0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875, 1, style: dashed)
|
||||
plot.add-vline(3/16, 7/16, 11/16, 15/16, style: dashed2)
|
||||
plot.add-anchor("q00", (1/16, 1/8))
|
||||
plot.add-anchor("h00", (1/16, 0))
|
||||
plot.add-anchor("q01", (5/16, 3/8))
|
||||
plot.add-anchor("h01", (5/16, 0))
|
||||
plot.add-anchor("q10", (9/16, 5/8))
|
||||
plot.add-anchor("h10", (9/16, 0))
|
||||
plot.add-anchor("q11", (13/16, 7/8))
|
||||
plot.add-anchor("h11", (13/16, 0))
|
||||
})
|
||||
decorations.brace((-0.9,0.63), (-0.9,1.63), name: "00")
|
||||
decorations.brace((-0.9,2.13), (-0.9,3.13), name: "01")
|
||||
decorations.brace((-0.9,3.63), (-0.9,4.63), name: "10")
|
||||
decorations.brace((-0.9,5.13), (-0.9,6.13), name: "11")
|
||||
|
||||
draw.content((v => vector.add(v, (-0.3, 0)), "00.west"), [00])
|
||||
draw.content((v => vector.add(v, (-0.3, 0)), "01.west"), [01])
|
||||
draw.content((v => vector.add(v, (-0.3, 0)), "10.west"), [10])
|
||||
draw.content((v => vector.add(v, (-0.3, 0)), "11.west"), [11])
|
||||
|
||||
draw.line("plot.q00", ((), "|-", "plot.h00"), mark: (end: ">"))
|
||||
draw.line("plot.q01", ((), "|-", "plot.h01"), mark: (end: ">"))
|
||||
draw.line("plot.q10", ((), "|-", "plot.h10"), mark: (end: ">"))
|
||||
draw.line("plot.q11", ((), "|-", "plot.h11"), mark: (end: ">"))
|
||||
})
|
||||
22
graphics/quantizers/s-metric/2_2_found_quantizer1.typ
Normal file
22
graphics/quantizers/s-metric/2_2_found_quantizer1.typ
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
#import "@preview/cetz:0.2.2": canvas, plot
|
||||
|
||||
#let line_style = (stroke: (paint: black, thickness: 2pt))
|
||||
#let dashed = (stroke: (dash: "dashed"))
|
||||
#canvas({
|
||||
plot.plot(size: (8,6),
|
||||
x-tick-step: none,
|
||||
x-ticks: ((3/16, [3/16]), (7/16, [7/16]), (11/16, [11/16]), (15/16, [15/16])),
|
||||
y-label: $cal(Q)(2, 1, tilde(x))$,
|
||||
x-label: $tilde(x)$,
|
||||
y-tick-step: none,
|
||||
y-ticks: ((3/16, [00]), (7/16, [01]), (11/16, [10]), (15/16, [11])),
|
||||
axis-style: "left",
|
||||
x-min: 0,
|
||||
x-max: 1,
|
||||
y-min: 0,
|
||||
y-max: 1,{
|
||||
plot.add(((0,3/16), (3/16,3/16), (7/16,7/16), (11/16,11/16), (15/16, 15/16), (15/16, 3/16), (1, 3/16)), line: "vh", style: line_style)
|
||||
plot.add-hline(3/16, 7/16, 11/16, 15/16, style: dashed)
|
||||
plot.add-vline(3/16, 7/16, 11/16, 15/16, style: dashed)
|
||||
})
|
||||
})
|
||||
BIN
main.pdf
BIN
main.pdf
Binary file not shown.
|
|
@ -46,7 +46,8 @@
|
|||
x: 2cm,
|
||||
),
|
||||
header: [],
|
||||
footer: []
|
||||
footer: [],
|
||||
//numbering: "1"
|
||||
)
|
||||
|
||||
set par(justify: true)
|
||||
|
|
@ -89,10 +90,35 @@
|
|||
]
|
||||
})
|
||||
|
||||
|
||||
|
||||
set page(numbering: none)
|
||||
|
||||
contents_page()
|
||||
|
||||
set page(numbering: none)
|
||||
|
||||
pagebreak()
|
||||
|
||||
set page(
|
||||
paper: "a4",
|
||||
margin: (
|
||||
top: 3cm,
|
||||
bottom: 3cm,
|
||||
x: 2cm,
|
||||
),
|
||||
header: [],
|
||||
footer: none,
|
||||
)
|
||||
|
||||
set page(footer: locate(
|
||||
loc => if calc.even(loc.page()) {
|
||||
align(right, counter(page).display("1"));
|
||||
} else {
|
||||
align(left, counter(page).display("1"));
|
||||
}
|
||||
))
|
||||
|
||||
doc
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue