Commit 1d55fd6e authored by Turnhout, M.C. van's avatar Turnhout, M.C. van
Browse files

expand on log(I+1) with text and figures

parent c950aa82
% !TeX root = colourdecon.tex
%\begin{savequote}
%The ``computable'' numbers may be described briefly as the real numbers whose expressions as a decimal are calculable by finite means.\qauthor{Alan Turing \cite{Turing1937}}
%\end{savequote}
\begin{savequote}
\dots\ then shalt thou count to three, no more, no less. Three shall be the number thou shalt count, and the number of the counting shall be three. Four shalt thou not count, neither count thou two, excepting that thou then proceed to three.\qauthor{Monty Python \cite{Python1975}}
\end{savequote}
\chapter{Linear algebra behind colour deconvolution}\label{algebra}
\section{Introduction}
Ruifrok and Johnston propose a method to do colour deconvolution for subtractive colour mixing in \cite{Ruifrok2001}.
They use the law of Bouguer-Lambert-Beer \cite{Beer1852,Perrin1948} for a linear relationship between `the amount dye' and `the amount of absorbed light', and neglect such effects as reflection and scattering.
They use the law of Bouguer-Lambert-Beer \cite{Beer1852,Perrin1948} for a linear relationship between `the amount dye' and `the amount of absorbed light', and neglect such effects as reflection and scattering. Deconvolution is then performed in `absorption-space'.
Ruifrok and Johnston only sketch an (analytical) outline of the procedure and do no discuss the practical implementation, or how to `reconstruct' images with the estimated dye amounts.\\
\noindent A ImageJ plugin (based on original code made available by A.C.\ Ruifrok) was released in 2004 by Gabriel Landini \cite{Landini2004,Landini2020}. Things such as pure dye identification and image reconstructing have been implemented in this (Java) plugin.
......@@ -73,7 +77,7 @@ The total absorption $\col{A}$ for our $N$ discrete wavelengths for $D$ differen
\end{equation}
Which simply says that the total amount of light absorbed at a certain wavelength is the sum of the amount absorbed of the first dye at that wavelength plus the amount absorbed of the second dye at that wavelength plus the amount absorbed of the third dye at that wavelength plus \dots\\
Equation \ref{sumdyedis} can be written in matrix form as:
Equation \ref{sumdyedis} can be written in matrix form as (see equation \ref{sumdyesRGB} for an example):
\begin{align}
\mat{K} & = \begin{bmatrix} \col{\hat{k}}_1 & \col{\hat{k}}_ 2 & \dots & \col{\hat{k}}_D\end{bmatrix},\; \col{a} = \begin{bmatrix} \hat{a}_1 \\ \hat{a}_ 2\\ \vdots \\ \hat{a}_D\end{bmatrix}\\
\mat{K}\col{\hat{a}} & = \col{A} \label{sumdyesmat}
......@@ -90,11 +94,11 @@ and the inverse $\mat{K}^{-1}$ only exists for square matrices $\mat{K}$. Not to
\section{Colour deconvolution in RGB}
\subsection{Deconvolution in `absorption-space'}
\subsection{Easy in `absorption-space'}
When we use three wavelengths and label them, say, $R$, $G$, and $B$ and (thus) use three dyes labelled 1, 2 and 3, equation \ref{sumdyesmat} comes out as:
\begin{equation}
\begin{bmatrix} \hat{k}_{R_1} & \hat{k}_{R_2} & k_{R_3} \\ \hat{k}_{G_1} & \hat{k}_{G_2} & \hat{k}_{G_3} \\ \hat{k}_{B_1} & \hat{k}_{B_2} & \hat{k}_{B_3}\end{bmatrix}\cdot\begin{bmatrix}\hat{a}_1\\\hat{a}_2\\\hat{a}_3 \end{bmatrix} = \begin{bmatrix}\hat{a}_1 \hat{k}_{R_1} + \hat{a}_2\hat{k}_{R_2} +\hat{a}_3 \hat{k}_{R_3} \\\hat{a}_1 \hat{k}_{G_1} + \hat{a}_2\hat{k}_{G_2} +\hat{a}_3 \hat{k}_{G_3} \\ \hat{a}_1 \hat{k}_{B_1} + \hat{a}_2\hat{k}_{B_2} +\hat{a}_3 \hat{k}_{B_3} \end{bmatrix}= \begin{bmatrix}A_R\\A_G\\A_B \end{bmatrix}
\begin{bmatrix} \hat{k}_{R_1} & \hat{k}_{R_2} & k_{R_3} \\ \hat{k}_{G_1} & \hat{k}_{G_2} & \hat{k}_{G_3} \\ \hat{k}_{B_1} & \hat{k}_{B_2} & \hat{k}_{B_3}\end{bmatrix}\cdot\begin{bmatrix}\hat{a}_1\\\hat{a}_2\\\hat{a}_3 \end{bmatrix} = \begin{bmatrix}\hat{a}_1 \hat{k}_{R_1} + \hat{a}_2\hat{k}_{R_2} +\hat{a}_3 \hat{k}_{R_3} \\\hat{a}_1 \hat{k}_{G_1} + \hat{a}_2\hat{k}_{G_2} +\hat{a}_3 \hat{k}_{G_3} \\ \hat{a}_1 \hat{k}_{B_1} + \hat{a}_2\hat{k}_{B_2} +\hat{a}_3 \hat{k}_{B_3} \end{bmatrix}= \begin{bmatrix}A_R\\A_G\\A_B \end{bmatrix} \label{sumdyesRGB}
\end{equation}
and equation \ref{sumdyesinv} comes out as:
\begin{equation}
......@@ -116,19 +120,50 @@ When the maximum possible pixel intensity is $I_\mathrm{max}$ ($2^n-1$ for a $n$
\end{equation}
which would make pixel intensity from absorption
\begin{equation}
\col{I}_p = I_\mathrm{max} \col{T} = I_\mathrm{max} \mathrm{e}^{-\col{\hat{k}}\hat{a}}
\col{I}_p = I_\mathrm{max} \col{T} = I_\mathrm{max} \mathrm{e}^{-\col{\hat{k}}\hat{a}} \label{Ipixel}
\end{equation}
and absorption from pixel intensity:
\begin{equation}
\col{A}= -\ln \left(\frac{\col{I}_p}{I_\mathrm{max}} \right) = \ln I_\mathrm{max} -\ln \col{I}_p =\col{\hat{k}}\hat{a}
\col{A}= -\ln \left(\frac{\col{I}_p}{I_\mathrm{max}} \right) = \ln I_\mathrm{max} -\ln \col{I}_p =\col{\hat{k}}\hat{a} \label{Apixel}
\end{equation}
~\\
\subsection{Except that pixel intensities can be zero}
Except that pixel values can be zero, and the (any) log of zero is $-\infty$ which makes numerical computations hard.
So we add 1 to the pixel intensities to avoid that we have to store $\pm\infty$ in the computer:
\begin{equation}
\col{A}= -\ln \left(\frac{\col{I}_p + 1}{I_\mathrm{max}} \right) = \ln I_\mathrm{max} - \ln \left(\col{I}_p+ 1\right) \approx \col{\hat{k}}\hat{a}
\col{\hat{A}}= -\ln \left(\frac{\col{I}_p + 1}{I_\mathrm{max}+1} \right) = \ln \left(I_\mathrm{max}+1\right) - \ln \left(\col{I}_p+ 1\right) \approx \col{\hat{k}}\hat{a} \label{Apixela}
\end{equation}
But
\ No newline at end of file
Note that we also add 1 to $I_\mathrm{max}$: the differences for small $I_p$ are negligible and this ensures that we find an absorption coefficient of precisely zero when $I_p = I_\mathrm{max}$ (instead of e.g.\ 0.004 for an 8-bits image).
Further note that this is now an \textsl{approximation} of the exact optical density $\col{\hat{k}}\hat{a}$ from equation \ref{Apixel}. For an 8-bits image, the approximation is off by about 10\,\% for very small pixel values, decreasing (fast) to 3\,\% for a pixel value of 10, and (eventually) 0\,\% for a (maximum) pixel value of 255; and the approximation improves much for increasing dynamic range in the images (figure \ref{Apixelcompare}).
\begin{figure}[h]
\tiny
\subfloat[\label{notlogzeroA}]{%
\def\svgwidth{0.47\linewidth}\includesvg{../pics/notlogzeroA}}\hfill
\subfloat[\label{notlogzerodA}]{%
\def\svgwidth{0.47\linewidth}\includesvg{../pics/notlogzerodA}}\\
\caption{Comparison of the exact and approximated absorbance. With \textbf{(a)} exact absorbance (equation \ref{Apixel}, solid blue) and approximated absorbance (equation \ref{Apixela}, dashed red) as a function of pixel value $I_p$ for an 8-bits image ($I_\mathrm{max} = 255$); and \textbf{(b)} the relative error as a function of pixel value $I_p$ for 8-bits (blue), 12-bits ($I_\mathrm{max} = 4095$, red) and 16-bits images ($I_\mathrm{max} = 65\,535$, yellow).
\label{Apixelcompare}}
\end{figure}
Finally note that we introduced $\col{\hat{A}}$ to distinguish this approximated absorbance from equation \ref{Apixel}. So that we will now also write
\begin{equation}
\hat{\col{I}}_p = I_\mathrm{max} \hat{\col{T}} = I_\mathrm{max} \mathrm{e}^{-\col{\hat{A}}} \label{Ipixela}
\end{equation}
for pixel values and transmission values that are calculated from the approximated absorbance $\col{\hat{A}}$. Since $\col{\hat{A}}$ is an underestimation of $\col{A}$ (figure \ref{Apixela}), $\hat{\col{T}}$ is an overestimation of $\col{T}$ in the conversion $\col{T} \rightarrow \hat{\col{A}} \rightarrow \hat{\col{T}}$ ($\text{RGB} \rightarrow \text{absorbance} \rightarrow \text{RGB}$). The conversion $\col{T} \rightarrow \col{A} \rightarrow\col{T}$ is reversible and exact (figure \ref{notlogzeroT}).
\begin{figure}[h]
\tiny
\subfloat[\label{notlogzeroT}]{%
\def\svgwidth{0.47\linewidth}\includesvg{../pics/notlogzeroT}}\hfill
\subfloat[\label{notlogzerodT}]{%
\def\svgwidth{0.47\linewidth}\includesvg{../pics/notlogzerodT}}\\
\caption{Comparison of the transmission (pixel intensities) calculated with the exact and approximated absorbance. With \textbf{(a)} transmission with exact absorbance (equation \ref{Ipixel}, solid blue) and transmission with the approximated absorbance (equation \ref{Ipixela}, dashed red) as a function of pixel value $I_p$ for an 8-bits image ($I_\mathrm{max} = 255$); and \textbf{(b)} the relative error as a function of pixel value $I_p$ for 8-bits (blue), 12-bits ($I_\mathrm{max} = 4095$, red) and 16-bits images ($I_\mathrm{max} = 65\,535$, yellow). \label{Ipixelcompare}}
\end{figure}
The 100\,\% error in figure \ref{notlogzerodT} may look worse than it is: it means that the original pixel value of 1 has become 2, and the error of about 10\,\% for a pixel value of 10 means that the converted pixel value is about 11. The dynamic range of the camera does affect this error, but not to any appreciable amount.
\section{And the number of the counting shall be three}
Three shall be the number thou shalt count, and the number of the counting shall be three.
\ No newline at end of file
......@@ -66,4 +66,30 @@ and the public domain program NIH image.},
timestamp = {2020-08-16},
}
@Misc{Landini2004,
author = {Landini, Gabriel and Rueden, Curtis and Schindelin, Johannes and Hiner, Mark and Pavie, Benjamin},
title = {Colour Deconvolution},
howpublished = {\href{https://imagej.net/Colour_Deconvolution}{https://imagej.net/Colour\_Deconvolution}},
year = {2004},
note = {Source code available at \href{https://github.com/fiji/Colour_Deconvolution}{https://github.com/fiji/Colour\_Deconvolution}},
timestamp = {2020-09-26},
}
@Misc{Python1975,
author = {Python, Monty},
title = {Monty {P}ython and the {H}oly {G}rail},
year = {1975},
imdb = {tt0071853},
publisher = {Python (Monty) Pictures},
timestamp = {2020-09-26},
}
@Misc{Landini2020,
author = {Landini, G.},
title = {Novel context-based segmentation algorithms for intelligent microscopy},
howpublished = {\href{https://blog.bham.ac.uk/intellimic/g-landini-software/colour-deconvolution/}{https://blog.bham.ac.uk/intellimic/g-landini-software/colour-deconvolution/}},
year = {2020},
timestamp = {2020-09-26},
}
@Comment{jabref-meta: databaseType:bibtex;}
......@@ -28,7 +28,7 @@
% graphics and color
\usepackage[pdftex]{graphicx}
\graphicspath{{pics/}}
\graphicspath{{../pics/}}
\usepackage{svgimport}
\usepackage{xcolor}
\definecolor{ispurple}{RGB}{128,0,128}
......
clear all; close all
Ip = 0:255; % pixel intensities
A(2, :) = -log( (Ip+1)/256 );
A(1, :) = -log( (Ip)/255 );
figure('defaultlinelinewidth', 2)
semilogx(Ip, A(1, :), Ip, A(2, :), '--')
xlabel('pixel intensity\,[-]')
ylabel('absorption\,[-]')
grid on
h = legend('$\col{A} = -\ln(I_p/255)$', '$\col{\hat{A}} = -\ln( (I_p+1)/256)$');
set(h, 'box', 'off')
figure('defaultlinelinewidth', 2)
loglog(Ip, 255*exp(-A(1, :)), Ip, 255*exp(-A(2, :)), '--')
ylim([1 1000])
xlabel('pixel intensity\,[-]')
ylabel('transmission\,[-]')
grid on
h = legend('$\col{T}$', '$\col{\hat{T}}$', 'location', 'northwest');
set(h, 'box', 'off')
DR = [8 12 16]; % dynamic range in bits
IP = zeros(1, 2^max(DR))/0; % allocate with NaNs
dA = zeros(numel(DR), 2^max(DR))/0; % allocate with NaNs
dT = dA;
for d = 1:numel(DR)
n = DR(d);
ip = 0:2^n-1; % pixel intensities
A = zeros(2, numel(ip));
A(2, :) = -log( (ip+1)/2^n );
A(1, :) = -log( (ip)/(2^n-1) );
IP(d, 1:numel(ip)) = ip;
dA(d, 1:numel(ip)) = A(2, :)./A(1, :);
dT(d, 1:numel(ip)) = exp(-A(2, :))./exp(-A(1, :));
end
figure('defaultlinelinewidth', 2)
semilogx(IP', dA')
ylim([.85 1])
% set(gca, 'ytick', 1:0.05:1.15)
xlabel('pixel intensity\,[-]')
ylabel('$\col{\hat{A}} / \col{A}$\,[-]')
grid on
h = legend('8-bits', '12-bits', '16-bits');
set(h, 'box', 'off')
figure('defaultlinelinewidth', 2)
semilogx(IP', dT')
% ylim([.85 1])
% set(gca, 'ytick', 1:0.05:1.15)
xlabel('pixel intensity\,[-]')
ylabel('$\col{\hat{T}} / \col{T}$\,[-]')
grid on
h = legend('8-bits', '12-bits', '16-bits');
set(h, 'box', 'off')
%% Creator: Inkscape inkscape 0.92.5, www.inkscape.org
%% PDF/EPS/PS + LaTeX output extension by Johan Engelen, 2010
%% Accompanies image file 'notlogzeroA.pdf' (pdf, eps, ps)
%%
%% To include the image in your LaTeX document, write
%% \input{<filename>.pdf_tex}
%% instead of
%% \includegraphics{<filename>.pdf}
%% To scale the image, write
%% \def\svgwidth{<desired width>}
%% \input{<filename>.pdf_tex}
%% instead of
%% \includegraphics[width=<desired width>]{<filename>.pdf}
%%
%% Images with a different path to the parent latex file can
%% be accessed with the `import' package (which may need to be
%% installed) using
%% \usepackage{import}
%% in the preamble, and then including the image with
%% \import{<path to file>}{<filename>.pdf_tex}
%% Alternatively, one can specify
%% \graphicspath{{<path to file>/}}
%%
%% For more information, please see info/svg-inkscape on CTAN:
%% http://tug.ctan.org/tex-archive/info/svg-inkscape
%%
\begingroup%
\makeatletter%
\providecommand\color[2][]{%
\errmessage{(Inkscape) Color is used for the text in Inkscape, but the package 'color.sty' is not loaded}%
\renewcommand\color[2][]{}%
}%
\providecommand\transparent[1]{%
\errmessage{(Inkscape) Transparency is used (non-zero) for the text in Inkscape, but the package 'transparent.sty' is not loaded}%
\renewcommand\transparent[1]{}%
}%
\providecommand\rotatebox[2]{#2}%
\newcommand*\fsize{\dimexpr\f@size pt\relax}%
\newcommand*\lineheight[1]{\fontsize{\fsize}{#1\fsize}\selectfont}%
\ifx\svgwidth\undefined%
\setlength{\unitlength}{486.98342126bp}%
\ifx\svgscale\undefined%
\relax%
\else%
\setlength{\unitlength}{\unitlength * \real{\svgscale}}%
\fi%
\else%
\setlength{\unitlength}{\svgwidth}%
\fi%
\global\let\svgwidth\undefined%
\global\let\svgscale\undefined%
\makeatother%
\begin{picture}(1,0.804282)%
\lineheight{1}%
\setlength\tabcolsep{0pt}%
\put(0,0){\includegraphics[width=\unitlength,page=1]{notlogzeroA.pdf}}%
\put(0.03906396,0.03490879){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{c}1\end{tabular}}}}%
\put(0.34461851,0.03490879){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{c}10\end{tabular}}}}%
\put(0.65017306,0.03490879){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{c}100\end{tabular}}}}%
\put(0.95572761,0.03490879){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{c}1000\end{tabular}}}}%
\put(0,0){\includegraphics[width=\unitlength,page=2]{notlogzeroA.pdf}}%
\put(0.03289434,0.06674149){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} 0 \end{tabular}}}}%
\put(0.03289434,0.18723841){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} 1 \end{tabular}}}}%
\put(0.03289434,0.30773532){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} 2 \end{tabular}}}}%
\put(0.03289434,0.42823224){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} 3 \end{tabular}}}}%
\put(0.03289434,0.54872915){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} 4 \end{tabular}}}}%
\put(0.03289434,0.66922607){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} 5 \end{tabular}}}}%
\put(0.03289434,0.78972298){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} 6 \end{tabular}}}}%
\put(0,0){\includegraphics[width=\unitlength,page=3]{notlogzeroA.pdf}}%
\put(0.43373858,0){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{c} pixel intensity\,[-] \end{tabular}}}}%
\put(0.00262705,0.36868196){\rotatebox{90}{\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{c} absorption\,[-] \end{tabular}}}}}%
\put(0,0){\includegraphics[width=\unitlength,page=4]{notlogzeroA.pdf}}%
\put(0.6937844,0.73849619){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} $\col{A} = -\ln(I_p/255)$ \end{tabular}}}}%
\put(0.6937844,0.69553477){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} $\col{\hat{A}} = -\ln( (I_p+1)/256 )$ \end{tabular}}}}%
\put(0,0){\includegraphics[width=\unitlength,page=5]{notlogzeroA.pdf}}%
\end{picture}%
\endgroup%
This diff is collapsed.
%% Creator: Inkscape inkscape 0.92.5, www.inkscape.org
%% PDF/EPS/PS + LaTeX output extension by Johan Engelen, 2010
%% Accompanies image file 'notlogzeroT.pdf' (pdf, eps, ps)
%%
%% To include the image in your LaTeX document, write
%% \input{<filename>.pdf_tex}
%% instead of
%% \includegraphics{<filename>.pdf}
%% To scale the image, write
%% \def\svgwidth{<desired width>}
%% \input{<filename>.pdf_tex}
%% instead of
%% \includegraphics[width=<desired width>]{<filename>.pdf}
%%
%% Images with a different path to the parent latex file can
%% be accessed with the `import' package (which may need to be
%% installed) using
%% \usepackage{import}
%% in the preamble, and then including the image with
%% \import{<path to file>}{<filename>.pdf_tex}
%% Alternatively, one can specify
%% \graphicspath{{<path to file>/}}
%%
%% For more information, please see info/svg-inkscape on CTAN:
%% http://tug.ctan.org/tex-archive/info/svg-inkscape
%%
\begingroup%
\makeatletter%
\providecommand\color[2][]{%
\errmessage{(Inkscape) Color is used for the text in Inkscape, but the package 'color.sty' is not loaded}%
\renewcommand\color[2][]{}%
}%
\providecommand\transparent[1]{%
\errmessage{(Inkscape) Transparency is used (non-zero) for the text in Inkscape, but the package 'transparent.sty' is not loaded}%
\renewcommand\transparent[1]{}%
}%
\providecommand\rotatebox[2]{#2}%
\newcommand*\fsize{\dimexpr\f@size pt\relax}%
\newcommand*\lineheight[1]{\fontsize{\fsize}{#1\fsize}\selectfont}%
\ifx\svgwidth\undefined%
\setlength{\unitlength}{495.98342126bp}%
\ifx\svgscale\undefined%
\relax%
\else%
\setlength{\unitlength}{\unitlength * \real{\svgscale}}%
\fi%
\else%
\setlength{\unitlength}{\svgwidth}%
\fi%
\global\let\svgwidth\undefined%
\global\let\svgscale\undefined%
\makeatother%
\begin{picture}(1,0.79287731)%
\lineheight{1}%
\setlength\tabcolsep{0pt}%
\put(0,0){\includegraphics[width=\unitlength,page=1]{notlogzeroT.pdf}}%
\put(0.05650088,0.03427534){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} $10^0$ \end{tabular}}}}%
\put(0.35651091,0.03427534){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} $10^1$ \end{tabular}}}}%
\put(0.65652094,0.03427534){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} $10^2$ \end{tabular}}}}%
\put(0.95653096,0.03427534){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} $10^3$ \end{tabular}}}}%
\put(0,0){\includegraphics[width=\unitlength,page=2]{notlogzeroT.pdf}}%
\put(0.02028125,0.06149802){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} $10^0$ \end{tabular}}}}%
\put(0.02028125,0.29811884){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} $10^1$ \end{tabular}}}}%
\put(0.02028125,0.53473965){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} $10^2$ \end{tabular}}}}%
\put(0.02028125,0.77136046){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} $10^3$ \end{tabular}}}}%
\put(0,0){\includegraphics[width=\unitlength,page=3]{notlogzeroT.pdf}}%
\put(0.44401383,0){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} pixel intensity\,[-] \end{tabular}}}}%
\put(0.02020027,0.33291905){\rotatebox{90}{\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} transmission\,[-] \end{tabular}}}}}%
\put(0,0){\includegraphics[width=\unitlength,page=4]{notlogzeroT.pdf}}%
\put(0.1492318,0.73736557){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} $\col{T}$ \end{tabular}}}}%
\put(0.1492318,0.70762647){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} $\col{\hat{T}}$ \end{tabular}}}}%
\put(0,0){\includegraphics[width=\unitlength,page=5]{notlogzeroT.pdf}}%
\end{picture}%
\endgroup%
This diff is collapsed.
%% Creator: Inkscape inkscape 0.92.5, www.inkscape.org
%% PDF/EPS/PS + LaTeX output extension by Johan Engelen, 2010
%% Accompanies image file 'notlogzerodA.pdf' (pdf, eps, ps)
%%
%% To include the image in your LaTeX document, write
%% \input{<filename>.pdf_tex}
%% instead of
%% \includegraphics{<filename>.pdf}
%% To scale the image, write
%% \def\svgwidth{<desired width>}
%% \input{<filename>.pdf_tex}
%% instead of
%% \includegraphics[width=<desired width>]{<filename>.pdf}
%%
%% Images with a different path to the parent latex file can
%% be accessed with the `import' package (which may need to be
%% installed) using
%% \usepackage{import}
%% in the preamble, and then including the image with
%% \import{<path to file>}{<filename>.pdf_tex}
%% Alternatively, one can specify
%% \graphicspath{{<path to file>/}}
%%
%% For more information, please see info/svg-inkscape on CTAN:
%% http://tug.ctan.org/tex-archive/info/svg-inkscape
%%
\begingroup%
\makeatletter%
\providecommand\color[2][]{%
\errmessage{(Inkscape) Color is used for the text in Inkscape, but the package 'color.sty' is not loaded}%
\renewcommand\color[2][]{}%
}%
\providecommand\transparent[1]{%
\errmessage{(Inkscape) Transparency is used (non-zero) for the text in Inkscape, but the package 'transparent.sty' is not loaded}%
\renewcommand\transparent[1]{}%
}%
\providecommand\rotatebox[2]{#2}%
\newcommand*\fsize{\dimexpr\f@size pt\relax}%
\newcommand*\lineheight[1]{\fontsize{\fsize}{#1\fsize}\selectfont}%
\ifx\svgwidth\undefined%
\setlength{\unitlength}{509.93445084bp}%
\ifx\svgscale\undefined%
\relax%
\else%
\setlength{\unitlength}{\unitlength * \real{\svgscale}}%
\fi%
\else%
\setlength{\unitlength}{\svgwidth}%
\fi%
\global\let\svgwidth\undefined%
\global\let\svgscale\undefined%
\makeatother%
\begin{picture}(1,0.76808302)%
\lineheight{1}%
\setlength\tabcolsep{0pt}%
\put(0,0){\includegraphics[width=\unitlength,page=1]{notlogzerodA.pdf}}%
\put(0.08231352,0.03333762){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} $10^0$ \end{tabular}}}}%
\put(0.25739485,0.03333762){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} $10^1$ \end{tabular}}}}%
\put(0.43247618,0.03333762){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} $10^2$ \end{tabular}}}}%
\put(0.6075575,0.03333762){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} $10^3$ \end{tabular}}}}%
\put(0.78263883,0.03333762){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} $10^4$ \end{tabular}}}}%
\put(0.95772021,0.03333762){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} $10^5$ \end{tabular}}}}%
\put(0,0){\includegraphics[width=\unitlength,page=2]{notlogzerodA.pdf}}%
\put(0.03818138,0.10976705){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} 0.86 \end{tabular}}}}%
\put(0.03818138,0.20182594){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} 0.88 \end{tabular}}}}%
\put(0.0499476,0.29388483){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} 0.9 \end{tabular}}}}%
\put(0.03818138,0.38594372){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} 0.92 \end{tabular}}}}%
\put(0.03818138,0.47800261){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} 0.94 \end{tabular}}}}%
\put(0.03818138,0.5700615){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} 0.96 \end{tabular}}}}%
\put(0.03818138,0.66212038){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} 0.98 \end{tabular}}}}%
\put(0.07642159,0.75417927){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} 1 \end{tabular}}}}%
\put(0,0){\includegraphics[width=\unitlength,page=3]{notlogzerodA.pdf}}%
\put(0.45922468,-0){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} pixel intensity\,[-] \end{tabular}}}}%
\put(0.01660998,0.37660133){\rotatebox{90}{\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l}$\col{\hat{A}} / \col{A}$\,[-]\end{tabular}}}}}%
\put(0,0){\includegraphics[width=\unitlength,page=4]{notlogzerodA.pdf}}%
\put(0.85876234,0.71918144){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} 8-bits \end{tabular}}}}%
\put(0.85876234,0.69227308){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} 12-bits \end{tabular}}}}%
\put(0.85876234,0.66536472){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} 16-bits \end{tabular}}}}%
\put(0,0){\includegraphics[width=\unitlength,page=5]{notlogzerodA.pdf}}%
\end{picture}%
\endgroup%
This diff is collapsed.
%% Creator: Inkscape inkscape 0.92.5, www.inkscape.org
%% PDF/EPS/PS + LaTeX output extension by Johan Engelen, 2010
%% Accompanies image file 'notlogzerodT.pdf' (pdf, eps, ps)
%%
%% To include the image in your LaTeX document, write
%% \input{<filename>.pdf_tex}
%% instead of
%% \includegraphics{<filename>.pdf}
%% To scale the image, write
%% \def\svgwidth{<desired width>}
%% \input{<filename>.pdf_tex}
%% instead of
%% \includegraphics[width=<desired width>]{<filename>.pdf}
%%
%% Images with a different path to the parent latex file can
%% be accessed with the `import' package (which may need to be
%% installed) using
%% \usepackage{import}
%% in the preamble, and then including the image with
%% \import{<path to file>}{<filename>.pdf_tex}
%% Alternatively, one can specify
%% \graphicspath{{<path to file>/}}
%%
%% For more information, please see info/svg-inkscape on CTAN:
%% http://tug.ctan.org/tex-archive/info/svg-inkscape
%%
\begingroup%
\makeatletter%
\providecommand\color[2][]{%
\errmessage{(Inkscape) Color is used for the text in Inkscape, but the package 'color.sty' is not loaded}%
\renewcommand\color[2][]{}%
}%
\providecommand\transparent[1]{%
\errmessage{(Inkscape) Transparency is used (non-zero) for the text in Inkscape, but the package 'transparent.sty' is not loaded}%
\renewcommand\transparent[1]{}%
}%
\providecommand\rotatebox[2]{#2}%
\newcommand*\fsize{\dimexpr\f@size pt\relax}%
\newcommand*\lineheight[1]{\fontsize{\fsize}{#1\fsize}\selectfont}%
\ifx\svgwidth\undefined%
\setlength{\unitlength}{495.43440126bp}%
\ifx\svgscale\undefined%
\relax%
\else%
\setlength{\unitlength}{\unitlength * \real{\svgscale}}%
\fi%
\else%
\setlength{\unitlength}{\svgwidth}%
\fi%
\global\let\svgwidth\undefined%
\global\let\svgscale\undefined%
\makeatother%
\begin{picture}(1,0.79056278)%
\lineheight{1}%
\setlength\tabcolsep{0pt}%
\put(0,0){\includegraphics[width=\unitlength,page=1]{notlogzerodT.pdf}}%
\put(0.05545533,0.03431332){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} $10^0$ \end{tabular}}}}%
\put(0.23566083,0.03431332){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} $10^1$ \end{tabular}}}}%
\put(0.41586632,0.03431332){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} $10^2$ \end{tabular}}}}%
\put(0.59607181,0.03431332){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} $10^3$ \end{tabular}}}}%
\put(0.7762773,0.03431332){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} $10^4$ \end{tabular}}}}%
\put(0.95648279,0.03431332){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} $10^5$ \end{tabular}}}}%
\put(0,0){\includegraphics[width=\unitlength,page=2]{notlogzerodT.pdf}}%
\put(0.03939096,0.06560303){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} 1 \end{tabular}}}}%
\put(0.02122508,0.20773285){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} 1.2 \end{tabular}}}}%
\put(0.02122508,0.34986267){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} 1.4 \end{tabular}}}}%
\put(0.02122508,0.49199248){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} 1.6 \end{tabular}}}}%
\put(0.02122508,0.6341223){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} 1.8 \end{tabular}}}}%
\put(0.03939096,0.77625211){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} 2 \end{tabular}}}}%
\put(0,0){\includegraphics[width=\unitlength,page=3]{notlogzerodT.pdf}}%
\put(0.44339771,0){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} pixel intensity\,[-] \end{tabular}}}}%
\put(0.02113297,0.38505212){\rotatebox{90}{\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} $\col{\hat{T}}/ \col{T}$\,[-] \end{tabular}}}}}%
\put(0,0){\includegraphics[width=\unitlength,page=4]{notlogzerodT.pdf}}%
\put(0.88793285,0.74022999){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} 8-bits \end{tabular}}}}%
\put(0.88793285,0.71253409){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} 12-bits \end{tabular}}}}%
\put(0.88793285,0.68483819){\makebox(0,0)[lt]{\lineheight{1.25}\smash{\begin{tabular}[t]{l} 16-bits \end{tabular}}}}%
\put(0,0){\includegraphics[width=\unitlength,page=5]{notlogzerodT.pdf}}%
\end{picture}%
\endgroup%
This diff is collapsed.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment