From 58e8782d1bbadc9611ef1a308bfff138efc0e756 Mon Sep 17 00:00:00 2001 From: Leonardo Robol Date: Sun, 14 Mar 2010 14:07:27 +0100 Subject: [PATCH] Estese le slide con le filterbank. --- Filtering/Filtering.py | 4 +- Slide/slide.tex | 129 +++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 127 insertions(+), 6 deletions(-) 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} -- 2.1.4