% Soubory musí být v kódování, které je nastaveno v příkazu \usepackage[...]{inputenc}

\documentclass[%
%  draft,    				  % Testovací překlad
  12pt,       				% Velikost základního písma je 12 bodů
  a4paper,    				% Formát papíru je A4
%  oneside,      			% Jednostranný tisk (výchozí)
%% Z následujicich voleb lze použít maximálně jednu:
%	dvipdfm  						% výstup bude zpracován programem 'dvipdfm' do PDF
%	dvips	  						% výstup bude zpracován programem 'dvips' do PS
%	pdftex							% překlad bude proveden programem 'pdftex' do PDF (výchozí)
%% Z následujících voleb lze použít jen jednu:
% english,            % originální jazyk je angličtina
% slovak,             % originální jazyk je slovenčina
 czech,              % originální jazyk je čeština (výchozí)
]{report}				    	% Dokument třídy 'zpráva'

\usepackage[utf8]		%	Kódování zdrojových souborů je UTF-8
	{inputenc}					% Balíček pro nastavení kódování zdrojových souborů

\usepackage{graphicx} % Balíček 'graphicx' pro vkládání obrázků
											% Nutné pro vložení log školy a fakulty

\usepackage[
	nohyperlinks				% Nebudou tvořeny hypertextové odkazy do seznamu zkratek
]{acronym}						% Balíček 'acronym' pro sazby zkratek a symbolů
											% Nutné pro použití prostředí 'seznamzkratek' balíčku 'thesis'

\usepackage[
	unicode,						% Záložky a informace budou v kódování unicode
	breaklinks=true,		% Hypertextové odkazy mohou obsahovat zalomení řádku
	hypertexnames=false % Názvy hypertextových odkazů budou tvořeny
											% nezávisle na názvech TeXu
]{hyperref}						% Balíček 'hyperref' pro sazbu hypertextových odkazů
											% Nutné pro použití příkazu 'nastavenipdf' balíčku 'thesis'

\usepackage{pdfpages} % Balíček umožňující vkládat stránky z PDF souborů
                      % Nutné při vkládání titulních listů a zadání přímo
                      % ve formátu PDF z informačního systému

\usepackage{enumitem} % Balíček pro nastavení mezerování v odrážkách
  \setlist{topsep=0pt,partopsep=0pt,noitemsep}
\usepackage{array}    % Pokročilejší formátování tabulek

\usepackage{cmap} 		% Balíček cmap zajišťuje, že PDF vytvořené `pdflatexem' je
											% plně "prohledávatelné" a "kopírovatelné"

\usepackage{upgreek}	% Balíček pro sazbu stojatých řeckých písmem
											% např. stojaté pí: \uppi
											% např. stojaté mí: \upmu (použitelné třeba v mikrometrech)
											% pozor, grafická nekompatibilita s fonty typu Computer Modern!

\usepackage{multirow}	% Roztažení buňky tabulky přes více řádků

%% Nastavení českého jazyka při sazbě v češtině.
% Pro sazbu češtiny je možné použít mezinárodní balíček 'babel', jenž
% použití doporučujeme pro nové instalace (MikTeX2.8,TeXLive2009), nebo
% národní balíček 'czech', který doporučujeme ve starších instalacích.
% Balíček 'babel' bude správně fungovat pouze ve spojení s programy
% 'latex', 'pdflatex', zatímco balíček 'czech' bude fungovat ve spojení
% s programy 'cslatex', 'pdfcslatex'.
% Varianta A:
\usepackage    				
  {babel}             % Balíček pro sazbu různojazyčných dokumentů; kompilovat (pdf)latexem!
  										% převezme si z parametrů třídy správný jazyk
\usepackage{lmodern}	% vektorové fonty Latin Modern, nástupce půvoních Knuthových Computern Modern fontů
\usepackage{textcomp} % Dodatečné symboly
\usepackage[T1]{fontenc}  % Kódování fontu - mj. kvůli správným vzorům pro dělení slov
% Varianta B:
%\usepackage{czech}   % Alternativní balíček pro sazbu v českém jazyce, kompilovat (pdf)cslatexem!

\usepackage[%
%% Z následujících voleb lze použít pouze jednu
% left,               % Rovnice a popisky plovoucich objektů budou %zarovnány vlevo
  center,             % Rovnice a popisky plovoucich objektů budou zarovnány na střed (vychozi)
%% Z následujících voleb lze použít pouze jednu
%	phd
diploma						% sazba diplomové práce
% bachelor						% sazba bakalářské práce
	%semestral					% sazba zprávy semestrálního projektu
]{thesis}             % Balíček pro sazbu studentských prací
                      % Musí být vložen až jako poslední, aby
                      % ostatní balíčky nepřepisovaly jeho příkazy
\usepackage{amsmath}  % Dodatečné funkce pro sazbu matematických vzorců.
\usepackage{amsfonts} % Dodatečné matematické fonty (např. \mathbb{} - množinové symboly)
\usepackage{listings} % Vkládání zdrojového kódu do dokumentu.
\usepackage[all]{hypcap}	% Křížový odkaz bude odkazovat na vrchní část obrázku (nikoli na spodní).
\usepackage{rotating} % Otáčení objektů
\usepackage[center,width=\textwidth-2em]{caption}	% Centrování a oboustranné odsazení popisků
\usepackage{longtable} % Sazba tabulek rozdělených mezi více stran

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%      Definice informací o dokumentu             %%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%% Název práce:
%  První parametr je název v originálním jazyce,
%  druhý je překlad v angličtině nebo češtině (pokud je originální jazyk angličtina)
\nazev{Implementace rekonstrukčních metod pro čtení čárového kódu}{Implementation of restoring method for reading bar code}
%\nazev{Implementace rekonstrukčních metod pro čtení čárového kódu}{Implementation of reconstructive methods for reading bar code}

%% Jméno a příjmení autora ve tvaru
%  [tituly před jménem]{Křestní}{Příjmení}[tituly za jménem]
\autor[Bc.]{Libor}{Kadlčík}

%% Jméno a příjmení vedoucího včetně titulů
%  [tituly před jménem]{Křestní}{Příjmení}[tituly za jménem]
\vedouci[Ing.]{Jan}{Mikulka}[Ph.D.]

%% Označení oboru studia
% První parametr je obor v originálním jazyce,
% druhý parametr je překlad v angličtině nebo češtině
\oborstudia{Elektronika a sdělovací technika}{Electronics and Communcation}

%% Označení ústavu
% První parametr je název ústavu v originálním jazyce,
% druhý parametr je překlad v angličtině nebo češtině
\ustav{Ústav radioelektroniky}{Department of Radio Electronics} 

%% Rok obhajoby
\rok{2013}

%% Místo obhajoby
% Na titulních stránkách bude automaticky vysázeno VELKÝMI písmeny
\misto{Brno}

%% Abstrakt
\abstrakt{%
Informace je v čárovém kódu uložena jako posloupnost různě širokých proužků a mezer, a tak lze čárový kód považovat za dvouúrovňový (obdélníkový) signál.

V případě tzv. magnetických čárových kódů jsou proužky tvořeny nanesením malého množství feromagnetického materiálu na podklad. Snímání probíhá snímací oscilátorem, jehož kmitočet je ovlivňován přítomností feromagnetického materiálu. Signál ze snímacího oscilátoru je poté (zde číslicově) kmitočtově demodulován.

Z důvodu teplotního driftu kmitočtu oscilátoru je demodulovaný signál doprovázen stejnosměrným driftem. Práce proto neopomíjí metodu pro odstranění driftu. Nechybí ani metoda detekující přítomnost čárového kódu, jež je na drift necitlivá.

Snímání čárového kódu je výrazně ztěžováno konvolučním zkreslením, které vzniká jako důsledek citlivosti snímače rozprostírající se do okolí. Konvoluční zkreslení se projevuje jako průchod signálu dolní propustí a s tím spojeným zaoblením a prolínáním hran signálu, jež se stávají obtížně detekovatelnými.

Konvoluční zkreslení lze charakterizovat pomocí prostorové impulzní odezvy (PSF). Při snímání magnetických čárových kódů je tvar PSF předem znám, ale její stejnosměrný přenos a šířka jsou neznámé (při rychlém pohybu snímacího oscilátoru je signál zúžen a s ním i PSF). Proto jsou představeny vyvinuté metody pro odhad těchto parametrů.

Před dekódováním čárového kódu je nezbytné rekonstrukcí ze signálu odstranit konvoluční zkreslení.  Účinným prostředkem jsou variační metody, jejichž podstatou je formulace rekonstrukční úlohy jako optimalizační problém minimalizace funkcionálu. Předností variačních metod je možnost funkcionál doplňovat o další dílčí funkcionály (regularizace) a~tím výrazně napomoci úspěšné rekonstrukci signálu. Princip variačních metod je popsán, včetně ukázek vlivu jednotlivých regularizací.

Všechny algoritmy a metody (včetně demodulace signálu ze snímacího oscilátoru) jsou implementovány číslicově jako program pro mikrokontrolér z rodiny PIC32, který nabízí dostatečně vysoký výpočetní výkon, a tak i slepá dekonvoluce (při níž je třeba navíc najít skutečnou PSF) je provedena během několika sekund.

Mikrokontrolér je součástí čtečky magnetického čárového kódu, jejíž hardware umožňuje přečtená data přenášet do osobního počítače prostřednictvím rozhraní PS/2 nebo USB (pomocí simulace stisků na pomyslné klávesnici) nebo zobrazit na displeji.
}{%
Bar code stores information in the form of series of bars and gaps with various widths, and therefore can be considered as an example of bilevel (square) signal.

Magnetic bar codes are created by applying slightly ferromagnetic material to a substrate. Sensing is done by reading oscillator, whose frequency is modulated by presence of the mentioned ferromagnetic material. Signal from the oscillator is then subjected to frequency demodulation.

Due to temperature drift of the reading oscillator, the demodulated signal is accompanied by DC drift. Method for removal of the drift is introduced. Also, drift-insensitive detection of presence of a bar code is described.

Reading bar codes is complicated by convolutional distortion, which is result of spatially dispersed sensitivity of the sensor. Effect of the convolutional distortion is analogous to low-pass filtering, causing edges to be smoothed and overlapped, and making their detection difficult.

Characteristics of convolutional distortion can be summarized into point-spread function (PSF). In case of magnetic bar codes, the shape of the PSF can be known in advance, but not its width of DC transfer. Methods for estimation of these parameters are discussed.

The signal needs to be reconstructed (into original bilevel form) before decoding can take place. Variational methods provide effective way. Their core idea is to reformulate reconstruction as an optimization problem of functional minimization. The functional can be extended by other functionals (regularizations) in order to considerably improve results of reconstruction. Principle of variational methods will be shown, including examples of use of various regularizations.

All algorithm and methods (including frequency demodulation of signal from reading oscillator) are digital. They are implemented as a program for a microcontroller from the PIC32 family, which offers high computing power, so that even blind deconvolution (when the real PSF also needs to be found) can be finished in a few seconds.

The microcontroller is part of magnetic bar code reader, whose hardware allows the read information to be transferred to personal computer via the PS/2 interface or USB (by emulating key presses on virtual keyboard), or shown on display.
}
%% Klíčová slova
% TODO
\klicovaslova{PIC32, USB, PS/2, čárový kód, dekonvoluce, dvoujámová funkce, dvouúrovňový signál, hledání inflexního bodu, konvoluční zkreslení, metoda derivací, metoda nevydařené lineární aproximace, odhad PSF, rekonstrukce signálu, regularizace, stejnosměrný drift, totální variace, variační metody}%
{PIC32, USB, PS/2, bar code, bilevel signal, convolutional distortion, DC drift, deconvolution, double-well function, detection of inflection point, method of derivatives, method of failed linear approximation, PSF estimation, regularization, signal reconstruction, total variation, variational methods}

%% Poděkování
\podekovanitext{Děkuji vedoucímu diplomové práce, panu Ing. Janu Mikulkovi, Ph.D., za podporu při činnostech souvisejících s teoretickými i praktickými aspekty zvoleného tématu.}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%     Nastavení polí ve Vlastnostech dokumentu PDF      %%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Při vloženém balíčku 'hyperref' lze použít příkaz '\nastavenipdf'
\nastavenipdf
%  Nastavení polí je možné provést také ručně příkazem:
%\hypersetup{
%  pdftitle={Název studentské práce},    	% Pole 'Document Title'
%  pdfauthor={Autor studenstké práce},   	% Pole 'Author'
%  pdfsubject={Typ práce}, 						  	% Pole 'Subject'
%  pdfkeywords={Klíčová slova}           	% Pole 'Keywords'
%}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%       Začátek dokumentu               %%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Dodatečné matematické operátory
\DeclareMathOperator*{\argmin}{arg\,min}
\DeclareMathOperator*{\bin}{bin}
\DeclareMathOperator{\tg}{tg}
% Názvy pro automatické číslování výpisů se zdrojovým kódy
\renewcommand\lstlistingname{Výpis}
\renewcommand\lstlistlistingname{Výpisy}

\include{dictionary}

\begin{document}

% Zmenšit mezeru mezi objektem a jeho popiskem.
\setlength{\abovecaptionskip}{-1.0em}

\include{utils}

%% Vložení desek generovaných informačním systémem
\includepdf[pages=1,offset=19mm 0mm]%
  {pdf/student-desky}% název souboru nesmí obsahovat mezery!
% nebo vytvoření desek z balíčku
%\vytvorobalku

%% Vložení titulního listu generovaného informačním systémem
\includepdf[pages=1,offset=19mm 0mm]%
  {pdf/student-titulka}% název souboru nesmí obsahovat mezery!
% nebo vytvoření titulní stránky z balíčku
%\vytvortitulku
   
%% Vložení zadání generovaného informačním systémem
\includepdf[pages=1,offset=19mm 0mm]%
  {pdf/student-zadani}% název souboru nesmí obsahovat mezery!
% nebo lze vytvořit prázdný list příkazem ze šablony
%\stranka{}%
%	{\sffamily\Huge\centering ZDE VLOŽIT LIST ZADÁNÍ}%
%	{\sffamily\centering Z~důvodu správného číslování stránek}

%% Vysázení stránky s abstraktem
\vytvorabstrakt

%% Vysázení prohlaseni o samostatnosti
\vytvorprohlaseni

%% Vysázení poděkování
\vytvorpodekovani

\clearpage
\thispagestyle{empty}
~\\
\vfill
Výzkum realizovaný v rámci této diplomové práce byl finančně podpořen projektem CZ.1.07/2.3.00/20.0007 \textbf{Wireless Communication Teams}
operačního programu \textbf{Vzdělávání pro konkurenceschopnost}.\\
\vspace{2cm}
\begin{center}
	\includegraphics[keepaspectratio,width=12cm]{img/wicomt}
\end{center}
\vspace{2cm}
Finanční podpora byla poskytnuta Evropským sociálním fondem
a státním rozpočtem České republiky.
\vfill
\vfill
\clearpage


%% Vysázení obsahu
\obsah

%% Vysázení seznamu obrázků
\seznamobrazku

%% Vysázení seznamu tabulek
\seznamtabulek

%% Číslování začíná první stránkou úvodu
\setcounter{page}{1}

%% Vložení souboru 'text/uvod.tex' s úvodem
\include{text/uvod}

%% Vložení souboru 'text/teorie.tex' s teoretickým rozborem
\include{text/teorie}

%% Vložení souboru 'text/predzpracovani.tex' popsiující metody pro předzpracování signálu a odhad parametrů zkreslujícího systému.
\include{text/predzpracovani}

%% Vložení souboru 'text/rekonstrukce.tex' s popisem rekonstrukčních metod
\include{text/rekonstrukce}

%% Vložení souboru 'text/obvod.tex' s popisem obvodového řešení.
\include{text/obvod}

%% Vložení souboru 'text/mereni.tex' s měřeními
\include{text/mereni}

%% Vložení souboru 'text/zaver' se závěrem
\include{text/zaver}

%% Vložení souboru 'text/literatura' se seznamem literatury
\include{text/literatura}

%% Vložení souboru 'text/zkratky' se seznam použitých symbolů, veličin a zkratek
\include{text/zkratky}

%% Začátek příloh
\prilohy

%% Vysázení seznamu příloh
\seznampriloh

%% Vložení souboru 'text/prilohy' s přílohami
\include{text/prilohy}

%% Konec dokumentu
\end{document}
