diff --git a/document/data/queries/diffVsRef..sql b/document/data/queries/diffVsRef..sql new file mode 100644 index 0000000000000000000000000000000000000000..23786e37820e4ef948dcd36b8ab33076164ebc32 --- /dev/null +++ b/document/data/queries/diffVsRef..sql @@ -0,0 +1,118 @@ +-- SELECT ROUND(AVG(compressionRatio),5) +-- FROM DiffPrevFrameBenchmark +-- WHERE diffType = 'PrevFrameDiff_BSDIFF' AND filename = '16Bit-ZStack.czi' AND level = 6 AND compression = 'BZIP2'; + +-- SELECT * -- AVG(compressionRatio) as [cr] +-- FROM DiffPrevFrameBenchmark +-- WHERE filename = 'AxioZoom_Artemia_AT-1Ch-Z_sect.czi' and diffType = 'PrevFrameDiff_BSDIFF' and compression = 'BZIP2' AND level = 6 + +SELECT * FROM +( + SELECT ROUND((fbc.cr - referenceCompression.cr),5) as [artemia_div] FROM + ( + SELECT AVG(compressionRatio) as [cr], compressedSize + FROM DiffPrevFrameBenchmark + WHERE filename = 'AxioZoom_Artemia_AT-1Ch-Z_sect.czi' and diffType = 'PrevFrameDiff_BSDIFF' and compression = 'BZIP2' AND level = 6 + ) fbc, + ( + SELECT AVG(compressionRatio) as [cr], compressedSize + FROM CompressionBenchmark + WHERE filename = 'AxioZoom_Artemia_AT-1Ch-Z_sect.czi' and compression = 'BZIP2' AND level = 6 + ) referenceCompression +) artemia_diff, +( + SELECT ROUND((fbc.cr - referenceCompression.cr),5) as [artemia_flash_diff] FROM + ( + SELECT AVG(compressionRatio) as [cr] + FROM DiffPrevFrameBenchmark + WHERE filename = '40x075_Artemia-Flash-AT-1Ch-Z-sect.czi' and diffType = 'PrevFrameDiff_BSDIFF' and compression = 'BZIP2' AND level = 6 + ) fbc, + ( + SELECT AVG(compressionRatio) as [cr] + FROM CompressionBenchmark + WHERE filename = '40x075_Artemia-Flash-AT-1Ch-Z-sect.czi' and compression = 'BZIP2' AND level = 6 + ) referenceCompression +) artemia_flash_diff, +( + SELECT ROUND((fbc.cr - referenceCompression.cr),5) as [llc_diff] FROM + ( + SELECT AVG(compressionRatio) as [cr] + FROM DiffPrevFrameBenchmark + WHERE filename = 'LLC-PK1_TubX-emerald_H2B-mCherry-2chZ(SD).czi' and diffType = 'PrevFrameDiff_BSDIFF' and compression = 'BZIP2' AND level = 6 + ) fbc, + ( + SELECT AVG(compressionRatio) as [cr] + FROM CompressionBenchmark + WHERE filename = 'LLC-PK1_TubX-emerald_H2B-mCherry-2chZ(SD).czi' and compression = 'BZIP2' AND level = 6 + ) referenceCompression +) llc_diff, +( + SELECT ROUND((fbc.cr - referenceCompression.cr),5) as [bit16_diff] FROM + ( + SELECT AVG(compressionRatio) as [cr] + FROM DiffPrevFrameBenchmark + WHERE filename = '16Bit-ZStack.czi' and diffType = 'PrevFrameDiff_BSDIFF' and compression = 'BZIP2' AND level = 6 + ) fbc, + ( + SELECT AVG(compressionRatio) as [cr] + FROM CompressionBenchmark + WHERE filename = '16Bit-ZStack.czi' and compression = 'BZIP2' AND level = 6 + ) referenceCompression +) bit16_diff; + +/* +-- FIXED BIT COUNT +SELECT * FROM +( + SELECT ROUND((fbc.cr - referenceCompression.cr),5) as [artemia_div] FROM + ( + SELECT AVG(compressionRatio) as [cr] + FROM DiffPrevFrameBenchmark + WHERE filename = 'AxioZoom_Artemia_AT-1Ch-Z_sect.czi' and diffType = 'PrevFrameDiff_BSDIFF' and compression = 'BZIP2' AND level = 6 + ) fbc, + ( + SELECT AVG(compressionRatio) as [cr] + FROM CompressionBenchmark + WHERE filename = 'AxioZoom_Artemia_AT-1Ch-Z_sect.czi' and compression = 'BZIP2' AND level = 6 + ) referenceCompression +) artemia_diff, +( + SELECT ROUND((fbc.cr - referenceCompression.cr),5) as [artemia_flash_diff] FROM + ( + SELECT AVG(compressionRatio) as [cr] + FROM DiffPrevFrameBenchmark + WHERE filename = '40x075_Artemia-Flash-AT-1Ch-Z-sect.czi' and diffType = 'PrevFrameDiff_BSDIFF' and compression = 'BZIP2' AND level = 6 + ) fbc, + ( + SELECT AVG(compressionRatio) as [cr] + FROM CompressionBenchmark + WHERE filename = '40x075_Artemia-Flash-AT-1Ch-Z-sect.czi' and compression = 'BZIP2' AND level = 6 + ) referenceCompression +) artemia_flash_diff, +( + SELECT ROUND((fbc.cr - referenceCompression.cr),5) as [llc_diff] FROM + ( + SELECT AVG(compressionRatio) as [cr] + FROM DiffPrevFrameBenchmark + WHERE filename = 'LLC-PK1_TubX-emerald_H2B-mCherry-2chZ(SD).czi' and diffType = 'PrevFrameDiff_BSDIFF' and compression = 'BZIP2' AND level = 6 + ) fbc, + ( + SELECT AVG(compressionRatio) as [cr] + FROM CompressionBenchmark + WHERE filename = 'LLC-PK1_TubX-emerald_H2B-mCherry-2chZ(SD).czi' and compression = 'BZIP2' AND level = 6 + ) referenceCompression +) llc_diff, +( + SELECT ROUND((fbc.cr - referenceCompression.cr),5) as [bit16_diff] FROM + ( + SELECT AVG(compressionRatio) as [cr] + FROM DiffPrevFrameBenchmark + WHERE filename = '16Bit-ZStack.czi' and diffType = 'PrevFrameDiff_BSDIFF' and compression = 'BZIP2' AND level = 6 + ) fbc, + ( + SELECT AVG(compressionRatio) as [cr] + FROM CompressionBenchmark + WHERE filename = '16Bit-ZStack.czi' and compression = 'BZIP2' AND level = 6 + ) referenceCompression +) bit16_diff; +*/ \ No newline at end of file diff --git a/document/data/query.sql b/document/data/queries/query.sql similarity index 75% rename from document/data/query.sql rename to document/data/queries/query.sql index f990c2a6ac2b4908ab2f93fb835329b2cd926409..41f07ece81bed68065d49b5c7099fdb9c918cd3d 100644 --- a/document/data/query.sql +++ b/document/data/queries/query.sql @@ -1,7 +1,38 @@ -SELECT ROUND(AVG(bitsUsed),5) -- , MAX(bitsUsed), MIN(bitsUsed) +--select distinct DiffPrevFrameBenchmark.diffType from DiffPrevFrameBenchmark; + +SELECT ROUND(AVG(compressionRatio),5) FROM DiffPrevFrameBenchmark -WHERE filename = '16Bit-ZStack.czi' and diffType = 'PrevFrameDiff_VBC'; +WHERE diffType = 'PrevFrameDiff' AND filename = '16Bit-ZStack.czi' AND level = 6 AND compression = 'BZIP2'; + +SELECT * FROM +( + SELECT ((16.0-ROUND(AVG(BitsUsed),5)) * width * height) / (8.0 * 1000.0) as [artemia] + FROM DiffPrevFrameBenchmark + WHERE filename = 'AxioZoom_Artemia_AT-1Ch-Z_sect.czi' and diffType = 'PrevFrameDiff_VBC' and + compression = 'BZIP2' AND level = 6 +) a, +( + SELECT ((16.0-ROUND(AVG(BitsUsed),5)) * width * height) / (8.0*1000.0) as [artemia_flash] + FROM DiffPrevFrameBenchmark + WHERE filename = '40x075_Artemia-Flash-AT-1Ch-Z-sect.czi' and diffType = 'PrevFrameDiff_VBC' and + compression = 'BZIP2' AND level = 6 +) af, +( + SELECT ((16.0-ROUND(AVG(BitsUsed),5)) * width * height) / (8.0*1000.0) as [llc] + FROM DiffPrevFrameBenchmark + WHERE filename = 'LLC-PK1_TubX-emerald_H2B-mCherry-2chZ(SD).czi' AND diffType = 'PrevFrameDiff_VBC' and + compression = 'BZIP2' AND level = 6 +) llc, +( + SELECT ((16.0-ROUND(AVG(BitsUsed),5)) * width * height) / (8.0*1000.0) as [16BitZStack] + FROM DiffPrevFrameBenchmark + WHERE filename = '16Bit-ZStack.czi' and diffType = 'PrevFrameDiff_VBC' and + compression = 'BZIP2' AND level = 6 +) b16; + + + /* -- DIFFERENCE BENCHMARK SELECT * FROM diff --git a/document/document.pdf b/document/document.pdf index cabb788950ef1853296e90ade43ec6e9d1ce0295..468d41165fe7620eebeb5e985d7c089eddf21848 100644 Binary files a/document/document.pdf and b/document/document.pdf differ diff --git a/document/document.tex b/document/document.tex index dd37247e2c8f6f82cfee47a7bb801e9ae0a4c817..4980c56b96f3983f49c9ae64fc4a32d5ac7c9780 100644 --- a/document/document.tex +++ b/document/document.tex @@ -24,7 +24,7 @@ \newcommand{\bThreed}{B$^3$D } \pgfplotsset{ - compat=1.5, + compat=1.9, width=7cm, /pgfplots/ybar legend/.style={ /pgfplots/legend image code/.code={% @@ -189,7 +189,7 @@ tedy 2 byty pro kaĹľdĂ˝ pixel, rozmezĂ hodnot $0 - 65535$. 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:more_files_comp} si porovnáme algoritmy na vĂce souborech, 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 všechny snĂmky v souboru a kompresnĂ ĂşroveĹ 6. \begin{figure}[h!] @@ -231,7 +231,7 @@ všechny snĂmky v souboru a kompresnĂ ĂşroveĹ 6. \end{axis} \end{tikzpicture} \caption{SrovnánĂ kompresĂ mezi vĂce soubory, ĂşroveĹ komprese 6} - \label{fig:more_files_comp} + \label{fig:basic_compression_plot} \end{figure} % NOTE: This graph is misleading because the jumps in compression ratios are results of different image channels. In conclusion @@ -297,7 +297,7 @@ grafickĂ˝ch kartách, kde toto indexovánĂ vede k optimalizaci pĹ™ĂstupĹŻ do p \image{0.5}{ZCurve.pdf}{fig:zCurve}{Mortonovo kĂłdovánĂ} -V grafu na Obrázku \ref{fig:z_order_comp}, mĹŻĹľeme vidÄ›t zmÄ›nu kompresnĂho pomÄ›ru, vzhledem k vĂ˝sledkĹŻm v grafu \ref{fig:more_files_comp}. +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Ă. @@ -341,7 +341,7 @@ pĹ™euspořádánĂ dat smysl, neboĹĄ naměřenĂ© kompresnĂ pomÄ›ry jsou o nÄ›co \end{axis} \end{tikzpicture} \caption{Komprese dat, pĹ™euspoĹ™adanĂ˝ch podle \emph{Z kĹ™ivky}} - \label{fig:z_order_comp} + \label{fig:z_order_compression_plot} \end{figure} \subsection{Komprese rozdĂlu} @@ -374,56 +374,64 @@ ještÄ› mĂ©nÄ› neĹľ originálnĂch 16 bitĹŻ. \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Ĺľ 16, neboli: -\begin{equation*} - \text{MAX}(\Delta I) + \text{MIN}( \Delta I ) < (1\ll16) -\end{equation*} -\noindent samozĹ™ejmÄ›, pokud by $\Delta I$ neobsahovala žádnĂ© zápornĂ© hodnoty $\text{MIN}( \Delta I )$ mĹŻĹľeme vypustit. +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{fig:bitsUsed} mĹŻĹľeme pozorovat prĹŻmÄ›rnĂ˝ poÄŤet bitĹŻ, potĹ™ebnĂ˝ k zakĂłdovánĂ rozdĂlu mezi dvÄ›mi snĂmky. Pro kaĹľdĂ˝ rozdĂl -pouĹľĂváme minimálnĂ potĹ™ebnĂ˝ poÄŤet bitĹŻ, aby jsme se nejvĂce zmenšili velikost dat. Samo o sobÄ› touto metodou nezĂskáme lepšà kompresnĂ pomÄ›r, menšà velikost, -snĂmky neĹľ pomocĂ kompresnĂch metod, proto je rozdĂl tĹ™eba zkomprimovat dĹ™Ăve zmĂnÄ›nĂ˝mi algoritmy. -Zde ale narážĂme na problĂ©m. NeboĹĄ pouĹľĂváme promÄ›nná poÄŤet bitĹŻ, informace v jednom bytu mĹŻĹľe náleĹľet dvoum hodnotám a kompresnĂ algoritmy s tĂm neumĂ dobĹ™e poradit. -CelkovÄ› je kompresnĂ pomÄ›r po pouĹľitĂ kompresnĂch algoritmĹŻ vzhledem k originálnĂ velikosti snĂmku horšĂ, neĹľ kdyby jsme pĹ™Ămo zkomprimovali snĂmek. -Chce to tedy vyzkoušet jinĂ˝ typ mapovánĂ. -%TODO TODO TODOTODOTODO +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, - xbar stacked, + xbar, enlargelimits=0.2, xlabel={PoÄŤet bitĹŻ}, - legend style={at={(0.5,-0.1)},anchor=north}, symbolic y coords={{Artemia},{Artemia Flash}, {LLC Emerald}, {16 Bit Z Stack}}, - % nodes near coords, + nodes near coords, ] + % BITS USED \addplot coordinates { - (08.23684,{Artemia}) - (12.36842,{Artemia Flash}) - (12.25728,{LLC Emerald}) (10.54386,{16 Bit Z Stack}) + (12.25728,{LLC Emerald}) + (12.36842,{Artemia Flash}) + (08.23684,{Artemia}) }; - \addplot coordinates { - (7.76316,{Artemia}) - (3.63158,{Artemia Flash}) - (3.74272,{LLC Emerald}) - (5.45614,{16 Bit Z Stack}) - }; - \legend{{VyĹľadováno},{UšetĹ™eno}} \end{axis} \end{tikzpicture} - \label{fig:bitsUsed} + \label{table:bits_used} \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}. +% TODO: BSDIFF. - +\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}