Skip to content
Snippets Groups Projects
Commit 21d3a549 authored by Vojtěch Moravec's avatar Vojtěch Moravec
Browse files

Updated document.

parent ef1f8dd8
No related branches found
No related tags found
No related merge requests found
...@@ -14,4 +14,6 @@ czi_example_data/ ...@@ -14,4 +14,6 @@ czi_example_data/
*.out *.out
*.bbl *.bbl
*.blg *.blg
*.fdb_latexmk *.fdb_latexmk
\ No newline at end of file .vs/
[Oo]bj
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
- Jaký je vztah mezi obrázky v CZI souboru? - Jaký je vztah mezi obrázky v CZI souboru?
- Dala by se použít nějaká komprese vzhledem k `referenčním` obrázkům? (vztah mezi obrazy, jak jsou posunuty atd.) - 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. - Možná se podívat co je to ten HDF5, ale spíš se zaměřit na CZI formát.
- Jaké obrázky jsou komprimované pomocí B3D a s jakýmy výsledky?
<!-- Popsat formát CZI, HDF5 <!-- Popsat formát CZI, HDF5
......

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.28307.168
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "czi-inspector", "czi-inspector\czi-inspector.csproj", "{CC796EBE-77A0-442F-A44F-0863E03B2F54}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{CC796EBE-77A0-442F-A44F-0863E03B2F54}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CC796EBE-77A0-442F-A44F-0863E03B2F54}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CC796EBE-77A0-442F-A44F-0863E03B2F54}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CC796EBE-77A0-442F-A44F-0863E03B2F54}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {E88F4F44-F469-4F79-B35D-08A631D14253}
EndGlobalSection
EndGlobal
using System;
using System.Diagnostics;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
namespace czi_inspector
{
class Program
{
static void Main(string[] args)
{
string file = args[0];
string substring = args[1];
string encoding = args[2];
Regex regex = new Regex(substring, RegexOptions.IgnoreCase);
Encoding selectedEncoding = GetEncoding(encoding);
const int bufferSize = 1024;
byte[] buffer = new byte[bufferSize];
int count = 0;
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
//var wholeFileBuffer = File.ReadAllBytes(file);
//string wholeFileString = selectedEncoding.GetString(wholeFileBuffer);
//count = regex.Matches(substring).Count;
using (FileStream reader = new FileStream(file, FileMode.Open, FileAccess.Read))
{
while (reader.Read(buffer, 0, bufferSize) > 0)
{
string bufferString = selectedEncoding.GetString(buffer);
var matches = regex.Matches(bufferString).Count;
count += matches;
if (matches > 0)
Console.WriteLine(bufferString);
}
}
stopwatch.Stop();
Console.WriteLine("Found: {0} occurencies of {1} in file {2} in {3} ms.", count, substring, file, stopwatch.Elapsed.TotalMilliseconds);
}
private static Encoding GetEncoding(string encoding)
{
encoding = encoding.ToUpper();
if (encoding == "ASCII") return Encoding.ASCII;
if (encoding == "UTF8") return Encoding.UTF8;
if (encoding == "UNICODE") return Encoding.Unicode;
if (encoding == "UTF32") return Encoding.UTF32;
throw new Exception("Try different encoding, currently supported: ASCII, UTF8, UTF32, UNICODE.");
}
}
}
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.1</TargetFramework>
<RootNamespace>czi_inspector</RootNamespace>
</PropertyGroup>
</Project>
...@@ -3,5 +3,18 @@ ...@@ -3,5 +3,18 @@
title = ZISRAW (CZI) File Format", title = ZISRAW (CZI) File Format",
year = 2016, year = 2016,
number = "MC33879", number = "MC33879",
note = "Version 1.2.2" note = "Version 1.2.2",
} }
\ No newline at end of file
@article {Balazs164624,
author = {Balazs, Balint and Deschamps, Joran and Albert, Marvin and Ries, Jonas and Hufnagel, Lars},
title = {A real-time compression library for microscopy images},
elocation-id = {164624},
year = {2017},
doi = {10.1101/164624},
publisher = {Cold Spring Harbor Laboratory},
abstract = {Fluorescence imaging techniques such as single molecule localization microscopy, high-content screening and light-sheet microscopy are producing ever-larger datasets, which poses increasing challenges in data handling and data sharing. Here, we introduce a real-time compression library that allows for very fast (beyond 1 GB/s) compression and de-compression of microscopy datasets during acquisition. In addition to an efficient lossless mode, our algorithm also includes a lossy option, which limits pixel deviations to the intrinsic noise level of the image and yields compression ratio of up to 100-fold. We present a detailed performance analysis of the different compression modes for various biological samples and imaging modalities.},
URL = {https://www.biorxiv.org/content/early/2017/07/21/164624},
eprint = {https://www.biorxiv.org/content/early/2017/07/21/164624.full.pdf},
journal = {bioRxiv}
}
This diff is collapsed.
No preview for this file type
...@@ -15,7 +15,9 @@ ...@@ -15,7 +15,9 @@
%\usepackage{titlesec} %\usepackage{titlesec}
%\newcommand{\sectionbreak}{\clearpage} %\newcommand{\sectionbreak}{\clearpage}
%\setlist{nosep} %\setlist{nosep}
\newcommand{\image}[3]{\begin{figure}[h!] \centering \includegraphics[width=#3\linewidth]{#1} \caption{#2} \end{figure}}
\newcommand{\image}[4]{\begin{figure}[h!] \centering \includegraphics[width=#1\linewidth]{figures/#2} \label{#3} \caption{#4} \end{figure}}
\newcommand{\bThreed}{B$^3$D}
\author{Moravec Vojtěch} \author{Moravec Vojtěch}
\title{Semestrální projekt} \title{Semestrální projekt}
...@@ -27,7 +29,7 @@ ...@@ -27,7 +29,7 @@
\section{ZISRAW (CZI) formát} \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}. Vše co bude v této sekci uvedeno vychýzí z oficiální specifikace formátu CZI. \cite{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ů. 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.} 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.}
...@@ -108,6 +110,27 @@ LZW je bezztrátová komprese, aktuálně se nepoužívá ve \say{widefield} mik ...@@ -108,6 +110,27 @@ LZW je bezztrátová komprese, aktuálně se nepoužívá ve \say{widefield} mik
může být použita pouze pro 2D obrazy. 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. 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} \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.
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,
ž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
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 ebrya octomilky obecné, metodou segmentačního překrývání. Testovalo se vzhledem k originálnímu
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.
Překryv pro WNL 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 sousedů 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
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í
Single-Molecule Localization Microscopy, rozlišení 2-25 nm).
% \bibliography{citations}
% \bibliographystyle{ieeetr}
\end{document} \end{document}
\ No newline at end of file
File added
File added
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment