Vše co bude v této sekci uvedeno vychýzí z oficiální specifikace formátu CZI. \cite{czi_spec}.
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 uložení obrazků, samotné schéma uložení dat ale vychází z formátu ZISRAW, který je určen pro různé typy souborů.
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.
Hlavním cílem formátu ZISRAW je umožnit streamování dat a metadat v binární podobě (metadata jsou buď binární nebo v XML). \textit{CZI formát je aktuálně jedinou implementací ZISRAW.}
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}.
\subsection{CZI segmenty}
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ů.
CZI soubor se skládá z řetězce segmentů, každý segment je identifikován hlavičkou s identifikátorem (SID). Hlavička segmentu se skládá ze 3 polí:
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.
\begin{itemize}
V souboru nalezneme speciální segmenty, které fungují jako adresáře pro segmenty s obrazy a přílohami.
\item\textbf{ID} - 16 B, unikátní ANSI kód s prefixem \say{ZISRAW}
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.
\item\textbf{AllocatedSize} - 8 B, velikost rezervována pro data segmentu (velikost je vždy násobkem 32 B)
\item\textbf{UsedSize} - 8 B, počet bytů, kolik už je využitu daty segmentu (jestliže 0, pak celý segment je využit)
Obrazy se nacházejí v segmentech, označené jako \mbox{ZISRAWSUBBLOCK}. Kromě samotných pixelů zde najdeme i metadata, specifické pro daný obraz.
\end{itemize}
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}).
Za hlavičkou se nachází data daného segmentu. Tyto data se skládájí ze dvou částí, kde první část určuje velikost druhé části a to jaké data se v ni nacházejí. Hlavními typy dat jsou:
\begin{itemize}
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}.
\item\textbf{Pixely} (\textit{ImageSubBlock}) - pixely obrázků a s nim přímo spjata metadata. RAW nekompresované obrázky mohou být vícedimenzionální
\item\textbf{Metadata} - každý segment obsahuje jedny metadata. Ty obsahují XML řetězec, odpovídající danému schématu, a binární sekcí s dalšími daty ve formátu ZIP
\item\textbf{Přílohy} (\textit{Attachment}) - různé typy příloh
\end{itemize}
\subsection{ZISRAW kontejner}
Pořadí bytů je little-endian. Data jsou uložena v segmentech s definovanými schématy, každý segment obsahuje binární data nebo XML řetězec.
Je povoleno uložení do jednoho nebo více souborů, ale vždy existuje jeden hlavní, \emph{master} soubor. Každý ZISRAW soubor obsahuje tyto typy segmentů:
\begin{itemize}
\item\textbf{FileHeader}
\item\textbf{Metadata} - nevyžadováno
\item\textbf{SubBlockDirectory} - adresář všech SubBlock. Je vyžadován pokud existuje nějaký SubBlock
\item\textbf{SubBlock} - každý SubBlock ve svém segmentu, může obsahovat XML metadata a binární data
\item\textbf{AttachmentDirectory} - adresář všech Attachment, je vyžadován pokud existuje nějaký Attachment
\item\textbf{Attachment} - každý Attachment ve svém segmentu. Příloha je identifikována svým názvem
\end{itemize}
SubBlockDirectory a AttachmentDirectory obsahují informace potřebné pro přečtení pouze potřebného segmentu, dovolují přeskočit načítání segmentů,
které nejsou potřeba.
% \subsection{Schémata segmentů}
% V této sekci uvedeme základní informace o schématech segmentů. Jak již bylo zmíněno, každý segment začíná hlavičkou se 3 poli, Id, AllocatedSize a UsedSize.
% Pole Id nabýva hodnoty z této enumerace SID:
% \begin{itemize}
% \item \textbf{ZISRAWFILE} - hlavička souboru, nachází se na začátku souboru
% \item \textbf{ZISRAWSUBBLOCK} - obsahuje data obrázků
% \item \textbf{ZISRAWMETADATA} - obsahuje metadata
% \item \textbf{ZISRAWATTACH} - přílohy
% \item \textbf{ZISRAWATTDIR} - adresář příloh
% \item \textbf{DELETED} - smazaný segment, měl by být ignorován
% \end{itemize}
\subsection{Obrazové data}
Data obrázků se nacházejí v \textbf{SubBlock} segmentech, tento segment obsahuje všechny informace o tom jak jsou data uložena a jak je interpretovat.
V CZI formátu jsou brány v potaz různé dimenze obrázku v \\multi-dimenzionálním hyperprostoru. Jsou jimi napříklád:
pozice ve směru X, pozice ve směru Y, čas zachycení, úhel zachycení, osvětlení při zachycení atd. Pixely mohou být uloženy v těchto typech:
\begin{figure}[h!]
\begin{figure}[h!]
\centering
\centering
\begin{tabular}{| l | c | l |}
\begin{tabular}{| l | c | l |}
\hline
\hline
Typ & Byte/Pixel & Poznámka \\\hline
Typ & Byte/Pixel &Poznámka \\\hline
Gray8 & 1 & 8 bit unsigned \\\hline
Gray8 & 1 & 8 bit unsigned \\\hline
Gray16 & 2 & 16 bit unsigned \\\hline
Gray16 & 2 & 16 bit unsigned \\\hline
Gray32Float & 4 & 32 bit IEEE float \\\hline
Gray32Float & 4 & 32 bit IEEE float \\\hline
...
@@ -101,36 +65,69 @@ pozice ve směru X, pozice ve směru Y, čas zachycení, úhel zachycení, osvě
...
@@ -101,36 +65,69 @@ pozice ve směru X, pozice ve směru Y, čas zachycení, úhel zachycení, osvě
Gray32 & 4 & 32 bit signed \textit{planovaný}\\\hline
Gray32 & 4 & 32 bit signed \textit{planovaný}\\\hline
Gray64 & 8 & 64 bit float \textit{planovaný}\\\hline
Gray64 & 8 & 64 bit float \textit{planovaný}\\\hline
\end{tabular}
\end{tabular}
\caption{Tabulka podporovaných typů pixelu v CZI}
\label{tab:pixelTypes}
\end{figure}
\end{figure}
Data pixelů v CZI souboru mohou být jak nekomprimovaná tak komprimovaná.
Informaci o typu pixelu nalezneme v metadatech, které jsou společné pro všechny obrazy nacházející se v CZI souboru.
Nekomprimovaná data jsou streamem pixelů podle jejich typu. Specifikace povoluje komprimaci dat pixelů pomocí LZW,
Mimo typ pixelu, nalezneme v těchto společných vlastnostech další zajímavé informace, některé jsou uvedeny v Tabulce \ref{tab:imageMetadata},
JPEG a Jpeg-Xr.
nutno podotknout, že soubor nemusí tyto informace obsahovat.
LZW je bezztrátová komprese, aktuálně se nepoužívá ve \say{widefield} mikroskopii. JPEG komprese je ztrátová a
může být použita pouze pro 2D obrazy.
Jpeg-XR podporuje jak ztrátovou tak i bezztrátovou kompresi. Vychází z JPEG a nabízí menší velikost pro stejnou kvalitu obrazu, ale stejně jako JPEG, je omezen na 2D obrazy.
\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í knihovna \bThreed}
\section{Kompresní knihovna \bThreed}
\bThreed je Open Source knihovna, řešící problém komprese obrazů z mikroskopu. Je napsána v jazyce C++ a využívá CUDA architektury.
Tato sekce vychází z \cite{Balazs164624}, taktéž grafy jsou přebrány z této práce.
Slibovaná rychlost komprese je více než 1 GB/s \cite{Balazs164624}. Tato knihovna nabízí jak ztrátovou tak i bezztrátovou kompres, kde ztrátová zohledňuje fakt,
\bThreed je Open Source knihovna, řešící problém komprese obrazů z mikroskopu. Je napsána v jazyce C++ a využívá CUDA architekturu.
že se jedná o obrazy z mikroskopu a uživatel si může zvolit maximální chybu, kterou bude tolerovat. Definuji takzvaný WNL (\emph{within noise level}) mód
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,
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.
ž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}.
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ů}
\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 ebrya octomilky obecné, metodou segmentačního překrývání. Testovalo se vzhledem k originálnímu
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
obrazu, a hodnota 1 znamená, že se obrazy dokonale překrývají. Na Obrázku \ref{img:segoverlap}, můžeme, že překryv klesá až při velkých komrpesních poměrech.
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
Překryv pro WNL je téměř dokonalý 0,996.
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}
\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 sousedů a v
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 a pokud je použita WNL komprese
druhé části jsou chyby predikce zakódovány pomocí RLE a Huffmana.
dostáváme se až na kompresní poměr 5, a chyba lokalizace jediné molekuly v obrazu vstoupla pouze o 4\%. (Bylo testováno na datasetu získaném pomocí
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).