Newer
Older
\documentclass[a4paper,12pt]{article}
\usepackage[czech]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{listings}
\usepackage{hyperref}
\usepackage{enumitem}
\usepackage{mathrsfs}
\usepackage{enumitem}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{graphicx}
%\usepackage{titlesec}
%\newcommand{\sectionbreak}{\clearpage}
%\setlist{nosep}
\newcommand{\image}[4]{\begin{figure}[h!] \centering \includegraphics[width=#1\linewidth]{figures/#2} \caption{#4} \label{#3} \end{figure}}
\newcommand{\bThreed}{B$^3$D }
width=7cm,
/pgfplots/ybar legend/.style={
/pgfplots/legend image code/.code={%
\draw[##1,/tikz/.cd,yshift=-0.25em]
(0cm,0cm) rectangle (3pt,0.8em);},
}
}
\pgfplotsset{%
axis line origin/.style args={#1,#2}{
x filter/.append code={ % Check for empty or filtered out numbers
\ifx\pgfmathresult\empty\else\pgfmathparse{\pgfmathresult-#1}\fi
},
y filter/.append code={
\ifx\pgfmathresult\empty\else\pgfmathparse{\pgfmathresult-#2}\fi
},
xticklabel=\pgfmathparse{\tick+#1}\pgfmathprintnumber{\pgfmathresult},
yticklabel=\pgfmathparse{\tick+#2}\pgfmathprintnumber{\pgfmathresult}
}
}
\title{Metody komprese bioinformatických dat pro přenos na HPC infrastrukturu}
\maketitle
\newpage
\section{Úvod}
\textit{TODO}
\newpage
Vše co bude v této sekci uvedeno vychází z oficiální specifikace formátu CZI \cite{czi_spec}, společnosti Carl Zeiss ZEN software.
Formát CZI je určen pro ukládání obrazů a metadat, které popisují jak samotný obraz tak i způsob získání obrazů, například v jakých podmínkách byl snímek získán.
CZI vychází z obecnějšího formátu ZISRAW, jehož hlavním cílem je umožnit streamování velkých dat a metadat v binární podobě. Metadata jsou ukládány ve formátu XML
s kódováním UTF-8. Metadata v souberech CZI vycházejí ze specifikace OME (Open Microscopy Environment) \cite{omeweb}.
Struktůra ZISRAW/CZI formátu byla navržena tak, aby dovolovala streamování velkého množství dat, proto se ZISRAW/CZI soubory skládají ze segmentů.
Každý segment je identifikován svou hlavičkou, která obsahuje informace o jaký segment se jedná a jaká je jeho velikost. Za hlavičkou následuje část s daty.
V souboru nalezneme speciální segmenty, které fungují jako adresáře pro segmenty s obrazy a přílohami.
Tyto adresáře odkazují na pozice v souboru, kde se nachází požadované segmenty, což umožňuje načítání pouze těch částí, které jsou potřeba.
Obrazy se nacházejí v segmentech, označené jako \mbox{ZISRAWSUBBLOCK}. Kromě samotných pixelů zde najdeme i metadata, specifické pro daný obraz.
Specifickými metadaty mohou být např. minimální a maximální hodnoty pixelů, počet bitů na pixel a seznam dvojic klíč/hodnota, udávající libovolnou informaci o obrazu (datum pořízení, pozice mikroskopu v \SI{}{\micro\metre}).
Formát CZI dovoluje různé typy pixelu, jak pro barevné tak i černobílé obrazy, seznam všech podporovaných typů najdeme v Tabulce \ref{tab:pixelTypes}.
\begin{figure}[h!]
\centering
\begin{tabular}{| l | c | l |}
\hline
Gray8 & 1 & 8 bit unsigned \\\hline
Gray16 & 2 & 16 bit unsigned \\\hline
Gray32Float & 4 & 32 bit IEEE float \\\hline
Bgr24 & 3 & 3 $\times$ 8 bit unsigned \\\hline
Bgr48 & 6 & 3 $\times$ 16 bit unsigned \\\hline
Bgr96Float & 12 & 3 $\times$ IEEE float \\\hline
Bgra32 & 4 & 4 $\times$ 8 bit unsigned \\\hline
Gray64ComplexFloat & 8 & 2 $\times$ IEEE float \\\hline
Bgr192ComplexFloat & 24 & 8 $\times$ IEEE float \\\hline
Gray32 & 4 & 32 bit signed \textit{planovaný} \\\hline
Gray64 & 8 & 64 bit float \textit{planovaný} \\\hline
\end{tabular}
\caption{Tabulka podporovaných typů pixelu v CZI}
\label{tab:pixelTypes}
Informaci o typu pixelu nalezneme v metadatech, které jsou společné pro všechny obrazy nacházející se v CZI souboru.
Mimo typ pixelu, nalezneme v těchto společných vlastnostech další zajímavé informace, některé jsou uvedeny v Tabulce \ref{tab:imageMetadata},
nutno podotknout, že soubor nemusí tyto informace obsahovat.
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
\begin{figure}[h!]
\centering
\begin{tabular}{| l | l |}
\hline
Klíč & Význam \\\hline
SizeX & Šířka obrázku \\\hline
SizeY & Výška obrázku \\\hline
SizeC & Počet kanálů \\\hline
SizeZ & Počet řezů ve směru Z \\\hline
SizeT & Počet časových bodů \\\hline
SizeH & Počet fází \\\hline
SizeR & Počet různých úhlu, ze kterých byl obraz získán \\\hline
SizeS & Počet různých scén \\\hline
SizeI & Počet různých nasvícení \\\hline
SizeM & Počet dílů mozaiky \\\hline
SizeB & Počet snímání jednoho obrazu \\\hline
SizeV & Počet různých pohledů \\\hline
PixelType & Typ pixelu \\\hline
Dimensions & Dodatečné informace k dimenzím \\\hline
\end{tabular}
\caption{Základní informace o obrazech v souboru CZI}
\label{tab:imageMetadata}
\end{figure}
Šířka, výška obrázku, počet kanálů, řezů, fází atd. to vše jsou \say{dimenze} obrázku, pro které mohou být uvedeny dodatečné informace. Taktéž, kanály se mohou lišit
typem pixelu, počtem bitů na komponentu, metodou získaní atd., proto i pro ně najdeme specifická metadata.
Data pixelu mohou být v CZI souborech jak komprimovaná tak nekomprimovaná. Specifikací jsou povolené komprese
LZW, JPEG a JPEG-XR. Všechny tyto komprese jsou specifikací omezeny na 2D obrazy. LZW je bezztrátová komprese a momentálně se nepoužívá pro
širokopásmovou mikroskopii. JPEG je ztrátová komprese a JPEG-XR je modernější variantou JPEG, která nabízí lepší kompresní poměry a také bezztrátovou kompresi.
\newpage
\section{Kompresní metody}
V této sekci si popíšeme kompresní metody, které jsme vyzkoušeli na bioinformatických datech.
Nejprve uvedeme 3 metody, které se používají pro bezztrátovou kompresi dat všech druhů a se staly \emph{de facto} standardem.
Následně popíšeme kompresi \bThreed, která se přímo zaměřuje na kompresi obrazů, získaných z mikroskopů.
Také zde prozkoumáme techniku přeuspořádání dat, která by mohla vést k lepším výsledkům komprese.
Komprese budou hodnoceny pomocí kompresního poměru, který je vypočten následovně:
\begin{equation*}
\text{kompresní poměr} = \frac{\text{velikost dat}}{\text{velikost komprimovaných dat}}
\end{equation*}
\noindent žádoucí jsou tedy hodnoty větší než $1.0$.
\subsection{Standartní metody}
Standartní metody, které zde uvedeme, jsou hojně využívány v nejrozšířeněšjších programech zabývající se bezztrátovou kompresí. Tyto metody jsou navrženy tak,
aby byly nezávislé na typy procesoru, operačním systému nebo souborovém systému. Tato nezávislost dovoluje přenesitelnost mezi různými stroji.
Soubory jsou komprimací převáděny do jiných formátů, zaobalující komprimovaná data. Příkladem může být jeden z jednodušších formátů a to \emph{gzip} \cite{gzip},
používá se například i pro HTTP kompresi. Tento formát využívá zřejmě nejrozšířeněšjší
metodu komprese DEFLATE \cite{deflate_spec}. DEFLATE kombinuje algoritmus LZ77 \cite{LZ77} and Huffmanovo kódování.
DEFLATE je nejpouživanějším typem komprese v \emph{zip} souborech.
LZMA algoritmus kombinuje více druhů algoritmů, LZ77 \cite{LZ77}, aritmetické kódování a využívá Markuv model predikce. Tento algoritmus se využívá v programu
\emph{7-Zip}.
Třetí algoritmem je bzip2, stejně jako LZMA využívá více metod, Run-Length kódování, Huffmanovo kódování a Block-Sorting kompresi \cite{block_sorting}.
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
V následujících grafech porovnáme uvedené 3 metody. Všechny 3 algoritmy dovolují nastavit určitou úroveň komprese, obecně platí, že vetší úroveň znamená
vyšší kompresní poměr, ale také větší paměťové a časové nároky. Né vždy je tedy nejlepším řešením použít maximální úroveň, obvykle 9.
Následující testy byly provedeny nad CZI souborem, který obsahoval 39 řezů žabronožky, řez je uložen v obrazu $1388 \times 1040$ pixelů, kde typ pixelu je Gray16,
tedy 2 byty pro každý pixel, rozmezí hodnot $0 - 65535$.
\begin{figure}[h!]
\centering
% \pgfplotsset{scaled x ticks=false}
\begin{tikzpicture}
\begin{axis}[
width=0.8\linewidth,
xlabel = {Úroveň komprese},
ylabel = {Kompresní poměr},
domain=1:9,
legend entries = {gzip, lzma, bzip2},
legend pos = outer north east,
ymin=2, ymax=4,
]
\addplot[red, thick] table{data/artemia_gzip_level.dat};
\addplot[blue, thick] table{data/artemia_lzma_level.dat};
\addplot[green, thick] table{data/artemia_bzip2_level.dat};
\end{axis}
\end{tikzpicture}
\caption{Průměrný kompresní poměr pro jednotlivé úrovně}
\label{fig:comp_level_comp}
\end{figure}
Na Obrázku \ref{fig:comp_level_comp} vidíme, že pro metody gzip a bzip2 nehraje kompresní úroveň velkou roli a naopak lzma algoritmus vydává lepší
výsledky od úrovně 5. Také vidíme, že pro kompresi daných snímků žabronožky je nejlepší metoda gzip. Uvedené kompresní poměry jsou průměrem přes
všechn 39 řezů. Na následujícím Obrázku \ref{fig:basic_compression_plot} si porovnáme algoritmy na více souborech, uvedené kompresní poměry jsou průměrem přes
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
všechny snímky v souboru a kompresní úroveň 6.
\begin{figure}[h!]
\centering
\begin{tikzpicture}
\begin{axis}[
width=0.8\linewidth,
height=0.55\linewidth,
xbar,
enlargelimits=0.25,
ytick = data,
xlabel={Kompresní poměr},
legend pos = outer north east,
symbolic y coords={{Artemia},{Artemia Flash}, {LLC Emerald}, {16 Bit Z Stack}},
nodes near coords,
]
% gzip
\addplot coordinates {
(2.67797,{Artemia})
(1.84856,{Artemia Flash})
(1.40943,{LLC Emerald})
(1.47818,{16 Bit Z Stack})
};
% lzma
\addplot coordinates {
(3.46118,{Artemia})
(2.3531,{Artemia Flash})
(1.64554,{LLC Emerald})
(1.80586,{16 Bit Z Stack})
};
% bzip2
\addplot coordinates {
(3.62971,{Artemia})
(2.47042,{Artemia Flash})
(1.72,{LLC Emerald})
(1.90709,{16 Bit Z Stack})
};
\legend{gzip,lzma,bzip2}
\end{axis}
\end{tikzpicture}
\caption{Srovnání kompresí mezi více soubory, úroveň komprese 6}
% NOTE: This graph is misleading because the jumps in compression ratios are results of different image channels. In conclusion
% this plot is not saying anything interesting.
% Pokud se podíváme na kompresi jednotlivých snímků v grafu na Obrázku \ref{fig:frame_compression}, vídíme, že hodnota poměru je různá pro každý
% snímek a obě metody dosahují horších výsledků pro stejné snímky, cca. snímky 25 až 75. Toto je pravda i pro metodu lzma, ale pro přehlednost,
% jsme jí v grafu vynechali.
% \begin{figure}[h!]
% \centering
% \begin{tikzpicture}
% \begin{axis}[
% width=0.8\linewidth,
% xlabel = {Snímek},
% ylabel = {Kompresní poměr},
% legend entries = {gzip, bzip2}, %lzma
% legend pos = outer north east
% ]
% \addplot[red, thick ] table{data/llc_gzip_by_frame.dat};
% %\addplot[blue, thick] table{data/llc_lzma_by_frame.dat};
% \addplot[green, thick ] table{data/llc_bzip_by_frame.dat};
% \end{axis}
% \end{tikzpicture}
% \caption{Komprese jednotlivých snímků}
% \label{fig:frame_compression}
% \end{figure}
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
V Tabulce \ref{tab:compressionTable} uvadíme ještě shrnutí kompresí jednotlivých souborů, pro úroveň komprese 6.
Uvádíme zde bity na pixel, což je průměrný počet bitů potřebný k zakódování informace o jednom pixelu. Jak jsme již uvedli,
všechny tyto soubory obsahují pixely typu Gray16, takže původně bylo potřeba $16$ bitů pro uložení jednoho pixelu. Dalé zde uvádíme
rychlost, nebo také propustnost kompresní metody, tento údaj ja měřen bez jakékoliv paralelizace komprese. Z tabulky vychází jako
nejlepší metoda bzip2, která nabízí nejlepší kompresní poměry a narozdíl od metody lzma není tak pomalá.
\begin{figure}[h!]
\centering
\begin{tabular}{ l l | r r r }
Metoda & Soubor & Kompresní poměr & Bity na pixel & Rychlost [MB/s] \\\hline\hline
gzip & Artemia & 2.678 & 5.998 & 8.064 \\
& Artemia Flash & 1.849 & 8.657 & 8.630 \\
& LLC Emerald & 1.409 & 11.417 & 7.085 \\
& 16 Bit Z Stack & 1.478 & 10.853 & 14.170 \\\hline
lzma & Artemia & 3.461 & 4.634 & 1.683 \\
& Artemia Flash & 2.353 & 6.802 & 0.704 \\
& LLC Emerald & 1.646 & 9.814 & 1.846 \\
& 16 Bit Z Stack & 1.806 & 8.884 & 2.149 \\\hline
bzip2 & Artemia & 3.630 & 4.412 & 13.491 \\
& Artemia Flash & 2.470 & 6.477 & 7.789 \\
& LLC Emerald & 1.720 & 9.383 & 12.788 \\
& 16 Bit Z Stack & 1.907 & 8.401 & 13.107 \\
\end{tabular}
\caption{Statistiky komprese}
\label{tab:compressionTable}
\end{figure}
\subsection{Mortonovo kódování}
Mortonovo kódování, je způsob mapování multidimenzionálních dat na jednodimenzionální. Jedná se o přeuspořádání dat podle \emph{Z křivky}, která jimi
prochází. \emph{Z křivka} spadá do skupiny tzv. prostor vyplňujících křívek, které obecně prochází každým bodem prostoru v $n$-dimenzionální hyperkrychli.
Na Obrázků \ref{fig:zCurve} můžeme vidět jak probíhá mapování 2D prostoru na 1D prostor, pro každý bod roviny je vypočtena $Z$ souřadnice,
pomocí které následně seřadíme jednotlivé body. $Z$ souřadnice je vypočtena prolnutím bitů $X$-ové a $Y$-ové souřadnice.
V našem případě pomocí $Z$ souřadnice přeuspořádáme data obrazů. Podobný způsob přeuspořádání dat se používá pro ukládání textůr na
grafických kartách, kde toto indexování vede k optimalizaci přístupů do paměti.
\image{0.5}{ZCurve.pdf}{fig:zCurve}{Mortonovo kódování}
V grafu na Obrázku \ref{fig:z_order_compression_plot}, můžeme vidět změnu kompresního poměru, vzhledem k výsledkům v grafu \ref{fig:basic_compression_plot}.
Naměřené výsledky jsou znovu průměrem přes všechny snímky s úrovní komprese 6.
Mortonovo kódování se nejvíce vyplatilo pro metody GZIP a LZMA, kde pozorujeme nějvětší nárost v kompresním poměru. Naopak pro metodu bzip2 nemělo
přeuspořádání dat smysl, neboť naměřené kompresní poměry jsou o něco horší než původní.
width=0.8\linewidth,
symbolic x coords={{Artemia},{Artemia Flash}, {LLC Emerald}, {16 Bit Z Stack}},
legend pos = outer north east,
x tick label style={
anchor=east,
},
xtick=data,
]
% gzip
\addplot coordinates {
({Artemia},0.15945)
({Artemia Flash},0.17179)
({LLC Emerald},0.02069)
({16 Bit Z Stack},0.01711)
({Artemia},0.12075)
({Artemia Flash},0.11741)
({LLC Emerald},0.03672)
({16 Bit Z Stack},0.03480)
({Artemia},-0.00565)
({Artemia Flash},0.01913)
({LLC Emerald},-0.00177)
({16 Bit Z Stack},-0.02083)
};
\legend{gzip,lzma,bzip2}
\end{axis}
\end{tikzpicture}
\caption{Komprese dat, přeuspořadaných podle \emph{Z křivky}}
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
\subsection{Komprese rozdílu}
Jak již bylo dříve zmíněno, v jednom CZI souboru se nachází více snímků. Tyto snímky se většinou liší časem pořízení nebo "hloubkou řezu" tzv. Z indexem.
Z této informace můžeme usoudit, že nasledující snímek, nebude od předchozího zcela jiný, pokud oba náleží do stejného kanálu (Různé kanály v CZI souburu obsahují zcela rozdílné obrazy).
Označme si právě kódovaný snímek jako $I_i$, a snímek jemu předcházející jako $I_{i-1}$, rozdíl neboli $\Delta I$ je definována následovně:
\begin{equation*}
\Delta I = I_i - I_{i-1}
\end{equation*}
K získání snímku $I_i$ by nám tedy stačil pouze předcházející snímek a rozdíl $\Delta I$. Nejčastěji jsou obrazy z mikroskopu uloženy v 16 bitech na pixel.
$\Delta I$ může obsahovat i záporné hodnoty, a proto potřebujeme 32 bitů pro rozdíl jednoho pixelu. Toto by samo o sobě vedlo k dvojnásobné velikosti potřebné
pro uložení rozdílu. Avšak podíváme-li se frekvenci hodnot v Obrázku \ref{fig:diff_freq}, zjístíme, že by jsme mohli záporná čísla namapovat na kladná a použít
ještě méně než originálních 16 bitů.
\begin{figure}[h!]
\begin{tikzpicture}
\begin{axis}[
width=0.8\linewidth,
xlabel = {Hodnota rozdílu},
ylabel = {Frekvence hodnoty},
xmin=-500,
xmax=500,
x tick label style={rotate=45,anchor=east}
]
\addplot[const plot,fill=blue!30!white,draw=none] table [x, y, col sep=semicolon] {data/16bit_average_histo.histo};
\end{axis}
\end{tikzpicture}
\caption{Frekvece hodnot v rozdílu dvou snímků}
\label{fig:diff_freq}
\end{figure}
První typ mapování, který jsme vyzkoušeli je velmi jednodnuchý. Všechny záporné hodnoty posuneme za maximální kladnou hodnotu a následně zjístíme počet bitů, potřebný k zakódování nejvyšší namapované hodnoty. Aby mělo toto mapování smysl musí být počet bitů menší než originálních 16 bitů, neboli hodnota musí být
menší než $65 536 \text{neboli} (1\ll16)$.
V grafu na Obrázku \ref{table:bits_used} můžeme pozorovat průměrný počet bitů, potřebný k zakódování rozdílu mezi dvěma snímky. Pro každý rozdíl
používáme minimální potřebný počet bitů, aby jsme co nejvíce zmenšili velikost dat. Vzniklé byty následně komprimujeme námi zkoušenými algoritmy
gzip, lzma a bzip2. Mapování do méně bitů je tedy metoda \emph{pre-processingu} dat před samotnou kompresí, kterým také zmenšíme velikost.
\begin{figure}[h!]
\begin{tikzpicture}
\begin{axis}[
width=0.8\linewidth,
height=0.55\linewidth,
enlargelimits=0.2,
xlabel={Počet bitů},
symbolic y coords={{Artemia},{Artemia Flash}, {LLC Emerald}, {16 Bit Z Stack}},
\addplot coordinates {
(10.54386,{16 Bit Z Stack})
(12.25728,{LLC Emerald})
(12.36842,{Artemia Flash})
(08.23684,{Artemia})
\caption{Průměrný počet bitů pro mapování rozdílu}
\end{figure}
Samo o sobě vypadá tento \emph{pre-processing} nadějně, neboť u některých obrázků ušetříme až 7 bitů na jednom pixelu. Problémem je ale to,
že najednou ukládáme do jednoho bytu informace i více číslech. Ukazuje se, že toto je problém pro testované algoritmy, neboť ty vydávají lepší výsledky
když nejsou data takhle předzpracovaná. Rozdíly kompresních poměrů vzhledem k výsledkům v grafu \ref{fig:basic_compression_plot} můžeme vidět v tabulce
\ref{table:difference_compression_table}.
\begin{figure}[h!]
\centering
\begin{tabular}{ l l | r r r }
Metoda & Soubor & Pevných 16 bitů & Proměnlivý počet bitů & bsdiff \\\hline\hline
gzip & Artemia & -0.206 & 0.056 & N/A \\
& Artemia Flash & -0.102 & -0.210 & N/A \\
& LLC Emerald & -0.040 & 0.008 & N/A \\
& 16 Bit Z Stack & 0.033 & 0.152 & N/A \\\hline
lzma & Artemia & -0.289 & -0.499 & N/A \\
& Artemia Flash & -0.187 & -0.487 & N/A \\
& LLC Emerald & -0.060 & -0.205 & N/A \\
& 16 Bit Z Stack & -0.010 & -0.150 & N/A \\\hline
bzip2 & Artemia & -0.479 & -0.659 & -0.56762 \\
& Artemia Flash & -0.293 & -0.527 & -0.05141 \\
& LLC Emerald & -0.103 & -0.242 & -0.00099 \\
& 16 Bit Z Stack & -0.044 & -0.204 & 0.00227 \\
\end{tabular}
\caption{Změna kompresních poměrů pro kódování rozdílu mezi snímky}
\label{table:difference_compression_table}
\end{figure}
\newpage
\subsection{Komprese pomocí knihovny \bThreed}
Tato sekce vychází z \cite{Balazs164624}, taktéž grafy jsou přebrány z této práce.
\bThreed je Open Source knihovna, řešící problém komprese obrazů z mikroskopu. Je napsána v jazyce C++ a využívá CUDA architekturu.
Slibovaná rychlost komprese je více než 1 GB/s. Tato knihovna nabízí jak ztrátovou tak i bezztrátovou kompresi, kde ztrátová zohledňuje fakt,
že se jedná o obrazy z mikroskopu a uživatel si může zvolit maximální chybu, kterou bude tolerovat.
Autoři knihovny definuji tzv. WNL (\emph{within noise level}) mód ztrátové komprese, kde kvantizační krok je roven šumu v obraze.
V tomto módu je chyba, vzniklá ztrátovou kompresí, mnohem menší než šum nacházející se v obraze.
Kompresní poměry bezztrátové a WNL komprese můžeme vídět na Obrázku \ref{img:compressionComp}.
\image{0.65}{compressionComparsionBars.pdf}{img:compressionComp}{Porovnání kompresních poměrů různých vzorků}
Vliv ztrátové komprese na obraz byl testován na datasetu embrya octomilky obecné, metodou segmentačního překrývání. Byl testován komprimovaný obraz s originálním
obrazem, a hodnota 1 znamená, že se obrazy dokonale překrývají. V grafu na Obrázku \ref{img:segoverlap}, můžeme vidět, že překryv klesá až při velkých
kompresních poměrech. Překryv pro WNL mód je téměř dokonalý 0,996.
\image{0.65}{noise_overlap.pdf}{img:segoverlap}{Vliv ztrátové komprese na kvalitu obrazu}
Použitý bezztrátový algoritmus se skládá ze dvou částí. V první části se provede predikce hodnoty pixelu vzhledem k hodnotám jeho sousedních pixelů a v
druhé části jsou chyby predikce zakódovány pomocí RLE a Huffmana.
Bezztrátová komprese dosáhla kompresního poměru 2,7 kdežto ztrátová WNL komprese dosahuje kompresního poměru 5. Chyba lokalizace jediné molekuly v obrazu vstoupla pouze o 4\%. (Bylo testováno na datasetu získaném pomocí Single-Molecule Localization Microscopy, rozlišení 2-25 nm).
\bibliography{citations}
\bibliographystyle{ieeetr}