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>
|
$ 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]
|
||||||
|
)]]
|
||||||
|
)
|
||||||
|
|
|
||||||
|
|
@ -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.
|
||||||
|
|
|
||||||
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,
|
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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue