Started working on reconstruction

This commit is contained in:
Marius Drechsler 2024-07-19 17:45:34 +02:00
parent ea1d02ce9f
commit 1ac5a9e093
6 changed files with 131 additions and 2 deletions

View file

@ -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> $ 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)$. 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]
)]]
)

View file

@ -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 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)))] $ $ 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. 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.

View 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: ">"))
})

View 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

Binary file not shown.

View file

@ -46,7 +46,8 @@
x: 2cm, x: 2cm,
), ),
header: [], header: [],
footer: [] footer: [],
//numbering: "1"
) )
set par(justify: true) set par(justify: true)
@ -89,10 +90,35 @@
] ]
}) })
set page(numbering: none)
contents_page() contents_page()
set page(numbering: none)
pagebreak() 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 doc
} }