diff --git a/.gitignore b/.gitignore index 59b1b76e379470c666c205e93e510227b3b61897..0f7ed2ff946aa20cad9cb1d28b0ad6b3d5fee08f 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,14 @@ SimpleImageViewer/ *.exe *.czi B3D/ -czi_example_data/ \ No newline at end of file +czi_example_data/ + +# latex files +*.aux +*.fls +*.log +*.synctex.gz +*.out +*.bbl +*.blg +*.fdb_latexmk \ No newline at end of file diff --git a/README.md b/README.md index 74cc5ccca9962847014030197d86b44fbec7568a..c6bebe745e478fb99a1bb22ac1bb1b14f64b893f 100644 --- a/README.md +++ b/README.md @@ -12,3 +12,7 @@ - Dala by se použít nějaká komprese vzhledem k `referenčním` obrázkům? (vztah mezi obrazy, jak jsou posunuty atd.) - Možná se podívat co je to ten HDF5, ale spíš se zaměřit na CZI formát. + +<!-- Popsat formát CZI, HDF5 +Co je teda ve formátu CZI, jakým způsobem podporuje kompresi, jak tam jsou ty obrazové data uložena. +zkoumat jaká je souvislost mezi obrázky v různém čase. jestli by té slouvislosti šlo využít ke kompresi obrazu --> diff --git a/document/citations.bib b/document/citations.bib new file mode 100644 index 0000000000000000000000000000000000000000..ef1a890991de397a39c30519b55f079370856ffd --- /dev/null +++ b/document/citations.bib @@ -0,0 +1,7 @@ +@manual{czi_spec, + organization = "Carl Zeiss Microscopy GmbH", + title = ZISRAW (CZI) File Format", + year = 2016, + number = "MC33879", + note = "Version 1.2.2" +} \ No newline at end of file diff --git a/document/document.pdf b/document/document.pdf new file mode 100644 index 0000000000000000000000000000000000000000..fec06ac9286050605a45958fa734770d1d3d4681 Binary files /dev/null and b/document/document.pdf differ diff --git a/document/document.tex b/document/document.tex new file mode 100644 index 0000000000000000000000000000000000000000..fa2ce9b8b98c6e55d25d1ab1e8f0b4f535863d7d --- /dev/null +++ b/document/document.tex @@ -0,0 +1,113 @@ +\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{dirtytalk} +%\usepackage{titlesec} +%\newcommand{\sectionbreak}{\clearpage} +%\setlist{nosep} +\newcommand{\image}[3]{\begin{figure}[h!] \centering \includegraphics[width=#3\linewidth]{#1} \caption{#2} \end{figure}} + +\author{Moravec Vojtěch} +\title{Semestrální projekt} +\date{2018/2019} + +\begin{document} +% \maketitle +% \newpage + +\section{ZISRAW (CZI) formát} + +Vše co bude v této sekci uvedeno vychýzí z oficiální specifikace formátu CZI. \ref{czi_spec}. + +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ů. +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.} + +\subsection{CZI segmenty} + +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í: +\begin{itemize} + \item \textbf{ID} - 16 B, unikátní ANSI kód s prefixem \say{ZISRAW} + \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) +\end{itemize} + +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} + \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{ZISRAWDIRECTORY} - adresář segmentů +% \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!] + \centering + \begin{tabular}{| l | c | l |} + \hline + Typ & Byte/Pixel & Poznámka \\\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 (komplexní a reálná část) \\\hline + Bgr192ComplexFloat & 24 & 8 $\times$ IEEE float (komplexní a reálná část) \\\hline + Gray32 & 4 & 32 bit signed \textit{planovaný} \\\hline + Gray64 & 8 & 64 bit float \textit{planovaný} \\\hline + \end{tabular} +\end{figure} + +Data pixelů v CZI souboru mohou být jak nekomprimovaná tak komprimovaná. +Nekomprimovaná data jsou streamem pixelů podle jejich typu. Specifikace povoluje komprimaci dat pixelů pomocí LZW, +JPEG a Jpeg-Xr. +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. + +\bibliography{citations} + +\end{document} \ No newline at end of file