Estese le slide con le filterbank.
Leonardo Robol [2010-03-14 13:07]
Estese le slide con le filterbank.
diff --git a/Filtering/Filtering.py b/Filtering/Filtering.py
index 6a280fa..a69692f 100644
--- a/Filtering/Filtering.py
+++ b/Filtering/Filtering.py
@@ -322,9 +322,9 @@ DaubechiesFilterBank.SetLength (3)
HaarFilterBank = FilterBank ()
HaarFilterBank.SetFilterMatrix ( [
[0.5, 0.5],
- [-0.5 ,0.5],
+ [0.5 ,-0.5],
[1 , 1 ],
- [1 , -1]
+ [-1 , 1]
])
HaarFilterBank.SetLength(1)
diff --git a/Slide/slide.tex b/Slide/slide.tex
index 9918958..1a048b8 100644
--- a/Slide/slide.tex
+++ b/Slide/slide.tex
@@ -5,8 +5,10 @@
\usepackage[utf8x]{inputenc}
\usepackage[italian]{babel}
\usepackage{default}
+\usepackage{iwona}
% \usepackage[T1]{fontenc}
+
\usepackage{amsmath}
\usepackage{tikz}
\usepackage{subfigure}
@@ -15,7 +17,15 @@
% ci saranno utili in seguito.
\newcommand{\R}{\mathbb{R}}
\newcommand{\Z}{\mathbb{Z}}
+\newcommand{\N}{\mathbb{N}}
\renewcommand{\hat}{\widehat}
+\newcommand{\upsample}[1]{\makebox[0.85\width]{$\uparrow$}_{#1}}
+\newcommand{\downsample}[1]{\makebox[0.85\width]{$\downarrow$}^{#1}}
+\newcommand{\pausaindice}{
+\begin{frame} \frametitle{Outline}
+ \tableofcontents[current]
+\end{frame}}
+% \newcommand{\downsample}[1]{\downarrow{#1}}
% Il nostro tema
% \usetheme{CambridgeUS}
@@ -36,15 +46,16 @@
\titlepage
\end{frame}
-\begin{frame} \frametitle{Outline}
- \tableofcontents
-\end{frame}
+% \begin{frame} \frametitle{Outline}
+% \tableofcontents[pausesections]
+% \end{frame}
%
% Teoremi
%
\theoremstyle{plain} \newtheorem{teo}{Teorema}
\theoremstyle{remark} \newtheorem{de}{Definizione}
+\theoremstyle{remark} \newtheorem{os}{Osservazione}
%
% Cominciamo a capire cosa ci interessa di un segnale e come lo vogliamo
@@ -52,6 +63,7 @@
%
\section{Manipolazione di segnali}
\subsection{Segnali analogici e segnali digitali}
+\pausaindice
% FRAME: Cosa sono i segnali
\begin{frame}\frametitle{Segnali}
Un \emph{segnale analogico x} è una funzione $x_{analog}: \R \to \R$.
@@ -135,7 +147,7 @@
% FRAME: Cosa sono i filtri
\subsection{Filtri e FIR}
\begin{frame} \frametitle{Filtri}
- Supponiamo di avere il segnal campionato $x(nT)$; d'ora in poi
+ Supponiamo di avere il segnale campionato $x(nT)$; d'ora in poi
supporremo $T = 1$ per semplicità.
\begin{de}
@@ -235,8 +247,93 @@
Il filtro \textbf{amplifica ogni frequenza del segnale} di un coefficiente $H(\omega)$.
\end{frame}
+\subsection{Upsampling e downsampling}
+\begin{frame} \frametitle{Downsampling}
+ In seguito ci troveremo molto spesso nella condizione di avere "troppa informazione",
+ ovvero di avere gruppi di segnali che contengono informazioni ridondanti. \\[15pt]
+
+ Per ovviare a questo trasformeremo i segnali $x(n)$ in degli altri segnali $y(n)$
+ tramite un'operazione di \emph{downsampling}:
+ \begin{de}
+ Diremo che $y(n)$ è il \emph{downsampling} di $x(n)$ e lo indicheremo con
+ $y(n) = \downsample{k}x(n)$ se
+ \[
+ y(n) = x(kn) \quad \textrm{dove } k \in \N
+ \]
+ \end{de}
+ In questo modo scarteremo una parte dell'informazione (a seconda del $k$ scelto, solitamente
+ avremo $k = 2$). \\[5pt]
+
+\end{frame}
+\begin{frame} \frametitle{Upsampling}
+
+ Per ``invertire'' il downsampling applicheremo l'\emph{upsampling}:
+ \begin{de}
+ Diremo che $x(n)$ è l'upsampling di $y(n)$ di un fattore $k$ e lo
+ indicheremo con $x(n) = \upsample k y(n)$ se
+ \[
+ x(n) = \left\{ \begin{array}{ll}
+ y(\frac{n}{k}) & \textrm{se } n \textrm{ è multiplo di } k \\
+ 0 & \textrm{altrimenti}
+ \end{array} \right.
+ \]
+ \end{de}
+ \begin{os}
+ Il downsampling è l'inverso dell'upsampling ma non viceversa, ovvero
+ \[
+ \downsample{k}\upsample{k} x(n) = x(n) \quad \textrm{ma} \quad \upsample{k}\downsample{k} x(n) \neq x(n)
+ \]
+ \end{os}
+\end{frame}
+
\section{FilterBank}
+\pausaindice
\subsection{Cos'è una filterbank}
+\begin{frame} \frametitle{Struttura di una filterbank}
+ Possiamo immaginare una \emph{filterbank} come una successione di filtri
+ che, partendo, da uno o più segnali di input $x(n)$ produca uno o più segnali
+ di output $y_{0}(n) \ldots y_{1}(n)$. \\[15pt]
+ Questo esempio prende un input (in giallo) e restituisce tre output (in blu).
+ \begin{figure}
+ \begin{tikzpicture}[rounded corners=2pt, scale=0.5, thick, node distance=50pt]
+ \tikzstyle{place}=[rectangle,draw=blue!80,fill=white!20]
+ \tikzstyle{input}=[rectangle,draw=blue!80,fill=yellow!50]
+ \tikzstyle{output}=[rectangle,draw=blue!80,fill=blue!20]
+
+ %% Disegnamo i pezzetti
+ \node [input] (inputsignal) {$x(n)$};
+ \node [place] (y0) [right of=inputsignal, yshift=25pt] {$y_0(n)$};
+ \node [output] (y1) [right of=inputsignal, yshift=-25pt] {$y_1(n)$};
+ \node [output] (y00)[right of=y0, yshift=20pt] {$y_{00}(n)$};
+ \node [output] (y01)[right of=y0, yshift=-20pt] {$y_{01}(n)$};
+
+ %% .. e li colleghiamo
+ \draw[->] (inputsignal.east) -- (y0.west);
+ \draw[->] (inputsignal.east) -- (y1.west);
+ \draw[->] (y0.east) -- (y01.west);
+ \draw[->] (y0.east) -- (y00.west);
+
+ \end{tikzpicture}
+ \caption{Esempio di filterbank}
+ \end{figure}
+\end{frame}
+
+\begin{frame} \frametitle{Perché una filterbank?}
+ Potremmo chiederci:
+ \begin{quote}
+ Qual'è la relazione fra le wavelet e le filterbank?
+ \end{quote} \\[15pt]
+
+ La risposta breve è che le filterbank (in realtà delle opportune
+ filterbank) sono l'equivalete discreto della trasformata wavelet. \\[15pt]
+
+ Cominciamo a considerare
+ un esempio, la \emph{filterbank di Haar}.
+
+\end{frame}
+
+\subsection{Un esempio significativo}
+
\begin{frame}
\frametitle{Haar filterbank}
Consideriamo i seguenti filtri:
@@ -244,6 +341,30 @@
h_0 = (\frac{1}{2}, \frac{1}{2}) \qquad h_1 = (\frac 1 2 , - \frac{1}{2}) \qquad
f_0 = (\frac{1}{2}, \frac{1}{2}) \qquad f_1 = (-\frac 1 2 , \frac{1}{2})
\]
+
+ Chiamiamo \emph{Analysis filterbank} quella che suddivide un segnale $x(n)$ in
+ \[
+ h_0 * x(n) = y_0(n) \qquad h_1 * x(n) = y_1(n)
+ \]
+ e \emph{Synthesis filterbank} quella che invece prende in input due segnali $y_0(n)$ e $y_1(n)$
+ e restituisce un segnale $x(n)$ calcolato mediante
+ \[
+ x(n) = f_0 * y_0(n) + f_1 * y_1(n)
+ \]
+ Prendiamo poi un segnale di esempio. Scegliamo un segnale finito $x(n) = \{e^{i\omega n}\}$.
+ Estenderemo poi questo caso particolare ad un segnale qualsiasi.
+\end{frame}
+
+\begin{frame} \frametitle{Discrete Wavelet Transform}
+ Osserviamo cosa succede al segnale quando viene trasformato tramite la filterbank.
+
+ Come abbiamo osservato prima otteniamo $\{e^{in\omega}\}$ è un autovalore per
+ questi filtri e quindi otteniamo due segnali
+ \[
+ y_0(n) = H_0(\omega)e^{in\omega} \qquad y_1(n) = H_1(\omega)e^{in\omega}
+ \]
+ Partendo da un segnale abbiamo
+
\end{frame}
\end{document}