Commit a9d167cd authored by David Youssefi's avatar David Youssefi

Merge branch 'workshop_qgis_update' into 'master'

DOC: update doc about QGIS-OTB plugin & lighter version of OTB general presentation

See merge request !11
parents fb86376a f775eab4
......@@ -61,9 +61,11 @@
- Access to all OTB applications (some of them are customized with a
simplified interface)
- [[https://docs.qgis.org/2.6/en/docs/user_manual/processing/index.html][See QGIS processing documentation]]
- Since version >= 3.2 : better integration of OTB (6.6 +)
*** Quantum GIS
#+ATTR_LATEX: :float t :width 0.7\textwidth
[[file:../../../Slides/OTB-General/images/otb_qgis.png]]
[[file:../../../Slides/OTB-General/images/otb_in_qgis3.2.png]]
*** Principles
- Discover data package and software
......
......@@ -64,9 +64,11 @@
- Accès à toutes les applications OTB (certaines sont repackagées avec une
interface simplifiée)
- [[https://docs.qgis.org/2.6/en/docs/user_manual/processing/index.html][Voir QGIS processing documentation]]
- Nouveau plugin d'intégration de l'OTB partir de la version 3.2
*** Quantum GIS
#+ATTR_LATEX: :float t :width 0.7\textwidth
[[file:../../../Slides/OTB-General/images/otb_qgis.png]]
[[file:../../../Slides/OTB-General/images/otb_in_qgis3.2.png]]
*** Principe
- Découverte du jeu de données et des logiciels
......
......@@ -74,7 +74,7 @@ image processing chains using OTB applications, including:
~www.orfeo-toolbox.org/CookBook/~
- QGIS User Guide :: ~docs.qgis.org/2.14/en/docs/user_manual~
- QGIS User Guide :: ~qgis.org/en/docs/index.html~
** Datasets
......@@ -93,9 +93,9 @@ image processing chains using OTB applications, including:
To complete exercises, you need to install the following tools:
- *Orfeo ToolBox* $>=$ 6.2 with applications
- *Monteverdi* $>=$ 3.2
- *QGIS* $>=$ 2.8
- *Orfeo ToolBox* $>=$ 6.6 with applications
- *Monteverdi* $>=$ 6.6
- *QGIS* $>=$ 3.2
To install the *Orfeo ToolBox* and *Monteverdi*, follow the instructions in the
ORFEO ToolBox cookbook.
......
......@@ -78,7 +78,7 @@ incluant notamment:
~www.orfeo-toolbox.org/CookBook/~
- QGIS User Guide :: Manuel d'utilisation de QGIS
~docs.qgis.org/2.14/en/docs/user_manual~
~qgis.org/fr/docs/index.html~
......@@ -87,9 +87,9 @@ incluant notamment:
Afin de réaliser les exercices, les logiciels suivants sont
nécessaires :
- *Orfeo ToolBox* 6.2 ou plus récent avec les applications
- *Monteverdi* 3.2 ou plus récent
- *QGIS* 2.4 ou plus récent
- *Orfeo ToolBox* 6.6 ou plus récent avec les applications
- *Monteverdi* 6.6 ou plus récent
- *QGIS* 3.2 ou plus récent
Pour ce qui concerne l'installation de l'*Orfeo ToolBox* et
de *Monteverdi*, vous pouvez consulter le Cookbook ou le guide d'installation.
......
......@@ -89,7 +89,7 @@ Know how to set up OTB processing and use OTB applications to perform:
~www.orfeo-toolbox.org/CookBook/~
- QGIS User Guide :: ~docs.qgis.org/2.14/en/docs/user_manual~
- QGIS User Guide :: ~qgis.org/en/docs/index.html~
*** Datasets
......
......@@ -73,7 +73,7 @@ Mise en œuvre de chaine de traitements d'images en utilisant les applications O
- Guide d'installation
- Questionnaire d'évaluation
- Solutions (distribuées à la fin)
*** Contenu du kit de formation
**** Documentation des logiciels
......@@ -85,7 +85,7 @@ Mise en œuvre de chaine de traitements d'images en utilisant les applications O
~www.orfeo-toolbox.org/CookBook/~
- QGIS User Guide :: Manuel d'utilisation de QGIS
~docs.qgis.org/2.14/en/docs/user_manual~
~qgis.org/fr/docs/index.html~
*** Origine des données
......
# Notice
This directory contains the general presentation of OTB (both in French and English). Sources are splited in several latex files which corresponds to different
# Sections available (replace xx by en or fr)
- introduction-xx.tex
- functions-xx.tex
- key-characteristics-xx.tex
- howto_use-xx.tex
- whatsnew-xx.tex (contains main new features per release)
- conclusion-xx.tex
\ProvidesPackageRCS $Header: /cvsroot/latex-beamer/latex-beamer/themes/outer/beamerouterthemeperso.sty,v 1.4 2006/10/01 22:21:16 christophe Exp $
% Copyright 2003 by Till Tantau <tantau@users.sourceforge.net>
%
% This program can be redistributed and/or modified under the terms
% of the GNU Public License, version 2.
\mode<presentation>
\setbeamercolor{section in head/foot}{parent=palette quaternary}
\setbeamercolor{subsection in head/foot}{parent=palette primary}
\setbeamercolor{author in head/foot}{parent=section in head/foot}
\setbeamercolor{title in head/foot}{parent=subsection in head/foot}
\usesectionheadtemplate
{\hfill\insertsectionhead}
{\hfill\color{fg!50!bg}\insertsectionhead}
% Head
\ifbeamer@compress
\defbeamertemplate*{headline}{split theme}
{%
\leavevmode%
\begin{beamercolorbox}[wd=.5\paperwidth,ht=2.5ex,dp=1.125ex]{section in head/foot}%
\insertsectionnavigationhorizontal{.5\paperwidth}{\hskip0pt plus1filll}{}%
\end{beamercolorbox}%
\begin{beamercolorbox}[wd=.5\paperwidth,ht=2.5ex,dp=1.125ex]{subsection in head/foot}%
\insertsubsectionnavigationhorizontal{.5\paperwidth}{}{\hskip0pt plus1filll}%
\end{beamercolorbox}%
}
\else
\defbeamertemplate*{headline}{split theme}
{%
\leavevmode%
\@tempdimb=2.4375ex%
\ifnum\beamer@subsectionmax<\beamer@sectionmax%
\multiply\@tempdimb by\beamer@sectionmax%
\else%
\multiply\@tempdimb by\beamer@subsectionmax%
\fi%
\ifdim\@tempdimb>0pt%
\advance\@tempdimb by 1.125ex%
\begin{beamercolorbox}[wd=.5\paperwidth,ht=\@tempdimb]{section in head/foot}%
\vbox to\@tempdimb{\vfil\insertsectionnavigation{.5\paperwidth}\vfil}%
\end{beamercolorbox}%
\begin{beamercolorbox}[wd=.5\paperwidth,ht=\@tempdimb]{subsection in head/foot}%
\vbox to\@tempdimb{\vfil\insertsubsectionnavigation{.5\paperwidth}\vfil}%
\end{beamercolorbox}%
\fi%
}
\fi
\mode
<all>
\ProvidesPackageRCS $Header: /cvsroot/latex-beamer/latex-beamer/themes/theme/compatibility/beamerthemetree.sty,v 1.8 2004/10/07 20:53:10 tantau Exp $
% Copyright 2003 by Till Tantau <tantau@users.sourceforge.net>
%
% This program can be redistributed and/or modified under the terms
% of the GNU Public License, version 2.
\mode<presentation>
\def\beamer@theme@col{\setbeamercolor{}{use=structure,bg=structure.fg!50!bg}}
\DeclareOptionBeamer{bars}{\def\beamer@theme@col{\usecolortheme{whale}}}
\ProcessOptionsBeamer
\usefonttheme[onlysmall]{structurebold}
\beamer@theme@col
\useoutertheme{splitup}
\mode
<all>
\NeedsTeXFormat{LaTeX2e}%
\ProvidesPackage{chronology}[2010/6/12 v1.0 Horizontal timeline]%
\RequirePackage{calc}%
\RequirePackage{tikz}%
\RequirePackage{ifthen}%
\newcounter{step}\newcounter{stepstart}\newcounter{stepstop}%
\newcounter{yearstart}\newcounter{yearstop}\newcounter{deltayears}%
\newlength{\xstart}\newlength{\xstop}%
\newlength{\unit}\newlength{\timelinewidth}%
\newsavebox{\timelinebox}%
\makeatletter%
\newif\ifchronology@star%
\newenvironment{chronology}{%
\@ifstar{\chronology@startrue\chronology@i*}{\chronology@starfalse\chronology@i*}%
}{%
\end{tikzpicture}%
\end{lrbox}%
\raisebox{2ex}{\resizebox{\timelinewidth}{!}{\usebox{\timelinebox}}}%
}%
\def\chronology@i*{%
\@ifnextchar[{\chronology@ii*}{\chronology@ii*[{5}]}%
}%
\def\chronology@ii*[#1]#2#3#4{%
\@ifnextchar[{\chronology@iii*[{#1}]{#2}{#3}{#4}}{\chronology@iii*[{#1}]{#2}{#3}{#4}[{#4}]}%
}%
\def\chronology@iii*[#1]#2#3#4[#5]{%
\newif\ifflipped%
\ifchronology@star%
\flippedtrue%
\else%
\flippedfalse%
\fi%
\setcounter{step}{#1}%
\setcounter{yearstart}{#2}\setcounter{yearstop}{#3}%
\setcounter{deltayears}{\theyearstop-\theyearstart}%
\setlength{\unit}{#5/\thedeltayears}%
\setlength{\timelinewidth}{#4}%
\pgfmathsetcounter{stepstart}{\theyearstart+\thestep-mod(\theyearstart,\thestep)}%
\pgfmathsetcounter{stepstop}{\theyearstop-mod(\theyearstop,\thestep)}%
\addtocounter{step}{\thestepstart}%
\begin{lrbox}{\timelinebox}%
\begin{tikzpicture}[baseline={(current bounding box.north)}]%
\draw [|->] (0,0) -- (\thedeltayears*\unit+\unit, 0);%
\foreach \x in {1,...,\thedeltayears}%
\draw[xshift=\x*\unit] (0,-.1\unit) -- (0,.1\unit);%
\addtocounter{deltayears}{1}%
\foreach \x in {\thestepstart,\thestep,...,\thestepstop}{%
\pgfmathsetlength\xstop{(\x-\theyearstart)*\unit}%
\draw[xshift=\xstop] (0,-.1\unit) -- (0,.1\unit);%
\ifflipped%
\node at (\xstop,0) [above=.2\unit] {\x};%
\else%
\node at (\xstop,0) [below=.2\unit] {\x};%
\fi%
}%
}%
\makeatother%
\newcommand{\event}[3][e]{%
\pgfmathsetlength\xstop{(#2-\theyearstart)*\unit}%
\ifx #1e%
\ifflipped%
\draw[fill=blue,draw=none,opacity=0.5]%
(\xstop, 0) circle (.05\unit)%
node[opacity=1,rotate=-45,right=.1\unit] {#3};%
\else%
\draw[fill=blue,draw=none,opacity=0.5]%
(\xstop, 0) circle (.05\unit)%
node[opacity=1,rotate=45,right=.1\unit] {#3};%
\fi%
\else%
\pgfmathsetlength\xstart{(#1-\theyearstart)*\unit}%
\ifflipped%
\draw[fill=black,draw=none,opacity=0.5,rounded corners=.2\unit]%
(\xstart,-.2\unit) rectangle%
node[opacity=1,rotate=-45,right=.5\unit] {#3} (\xstop,.2\unit);%
\else%
\draw[fill=black,draw=none,opacity=0.5,rounded corners=.2\unit]%
(\xstart,-.2\unit) rectangle%
node[opacity=1,rotate=45,right=.5\unit] {#3} (\xstop,.2\unit);%
\fi%
\fi}%
\newcommand{\decimaldate}[3]{(#1-1)/31/12+(#2-1)/12+#3}%
\endinput%
#!/bin/bash
pdflatex -interaction nonstopmode otb-light-presentation-en.tex
pdflatex -interaction nonstopmode otb-light-presentation-en.tex
\section{How to use OTB?}
\begin{frame}
\frametitle{Where to start ?}
\begin{columns}
\column{0.4\textwidth}
\begin{itemize}
\item \href{https://www.orfeo-toolbox.org}{orfeo-toolbox.org}
\item OTB CookBook : \href{https://www.orfeo-toolbox.org/CookBook/Recipes.html}{list of recipes}
\item GitLab : \href{https://gitlab.orfeo-toolbox.org}{developer's corner}
\item Many more resources : user forum, software guide, APIs documentation, tutorials, training resources, etc.
\end{itemize}
\column{0.6\textwidth}
\includegraphics[width=\textwidth]{images/OTB-useful_websites.jpg}
\end{columns}
\end{frame}
\begin{frame}
\frametitle{The applications: write it once, use everywhere}
\begin{columns}
\column{0.5\textwidth}
\begin{itemize}
\item 87 applications are shipped with OTB
\item 1 application $=$ 1 dynamic library (plugin)
\item Applications are auto-descriptive and auto-documented
\item Applications can be extended outside of OTB
\item Several plugins players:
\begin{itemize}
\item Command-line
\item Qt auto-generated
\item Python
\end{itemize}
\item Applications are meant for integration in external systems
\end{itemize}
\column{0.5\textwidth}
\includegraphics[width=\textwidth]{../OTB-General/images/cloud_applications.png}
\end{columns}
\end{frame}
\begin{frame}
\frametitle{How to use OTB?}
\vspace{-0.5cm}
\begin{center}
\includegraphics[width=\textwidth]{../OTB-General/images/sandwich.pdf}
\end{center}
\vspace{-0.5cm}
\begin{block}{Use Monteverdi (or QGIS !)}
Visualization, data management, \textcolor{red}{Access to all applications}
\end{block}
\begin{block}{Use the applications}
High level functions (e.g. segmentation), callable from CLI, Qt, Python, can be extended
\end{block}
\begin{block}{Write your own code}
Flexible, access to full API, requires C++ knowledge
\end{block}
\end{frame}
\begin{frame}[fragile]
\frametitle{Show me the code!}
\begin{lstlisting}[language=c++,breaklines=true,breakatwhitespace=true,frame = tb,framerule = 0.25pt,fontadjust,backgroundcolor={\color{listlightgray}},basicstyle = {\ttfamily\tiny},keywordstyle = {\ttfamily\color{red}\textbf},identifierstyle = {\ttfamily},commentstyle = {\ttfamily\color{listcomment}\textit},stringstyle = {\ttfamily},showstringspaces = false,showtabs = false,numbers = none,numbersep = 2pt, numberstyle={\ttfamily\color{listnumbers}},tabsize = 2]
#include "otbImage.h"
#include "otbImageFileReader.h"
#include "otbImageFileWriter.h"
#include "itkCannyEdgeDetectionImageFilter.h"
#include "itkRescaleIntensityImageFilter.h"
int main(int argc, char * argv[])
{
typedef double PixelType;
typedef otb::Image<PixelType> ImageType;
typedef unsigned char OutputPixelType;
typedef otb::Image<OutputPixelType> OutputImageType;
typedef otb::ImageFileReader<ImageType> ReaderType;
ReaderType::Pointer reader = ReaderType::New();
reader->SetFileName(argv[1]);
typedef itk::CannyEdgeDetectionImageFilter
<ImageType, ImageType> FilterType;
FilterType::Pointer filter = FilterType::New();
filter->SetInput(reader->GetOutput());
typedef otb::ImageFileWriter<OutputImageType> WriterType;
WriterType::Pointer writer = WriterType::New();
writer->SetFileName(argv[2]);
writer->SetInput(filter->GetOutput());
writer->Update();
}
\end{lstlisting}
\end{frame}
\begin{frame}[fragile]
\frametitle{Applications: command-line invocation}
\begin{scriptsize}
\vspace{-0.5cm}\begin{verbatim}
$ otbcli_OrthoRectification
ERROR: Waiting for at least one parameter...
This is the OrthoRectification application, version 5.2.1
This application allows to ortho-rectify optical images from supported sensors.
Complete documentation: http://www.orfeo-toolbox.org/Applications/OrthoRectification.html
Parameters:
-progress <boolean> Report progress
MISSING -io.in <string> Input Image (mandatory)
MISSING -io.out <string> [pixel] Output Image [pixel=uint8/uint16/int16/uint32/int32/float/double] (default value is float) (mandatory)
-map <string> Output Cartographic Map Projection [utm/lambert2/lambert93/wgs/epsg] (mandatory, default value is utm)
-map.utm.zone <int32> Zone number (mandatory, default value is 31)
-map.utm.northhem <boolean> Northern Hemisphere (optional, off by default)
-map.epsg.code <int32> EPSG Code (mandatory, default value is 4326)
-outputs.mode <string> Parameters estimation modes [auto/autosize/autospacing/outputroi/orthofit] (mandatory, default value is auto)
MISSING -outputs.ulx <float> Upper Left X (mandatory)
MISSING -outputs.uly <float> Upper Left Y (mandatory)
MISSING -outputs.sizex <int32> Size X (mandatory)
MISSING -outputs.sizey <int32> Size Y (mandatory)
MISSING -outputs.spacingx <float> Pixel Size X (mandatory)
MISSING -outputs.spacingy <float> Pixel Size Y (mandatory)
-outputs.lrx <float> Lower right X (optional, off by default)
-outputs.lry <float> Lower right Y (optional, off by default)
-outputs.ortho <string> Model ortho-image (optional, off by default)
-outputs.isotropic <boolean> Force isotropic spacing by default (optional, on by default)
-outputs.default <float> Default pixel value (optional, on by default, default value is 0)
-elev.dem <string> DEM directory (optional, off by default)
-elev.geoid <string> Geoid File (optional, off by default)
-elev.default <float> Default elevation (mandatory, default value is 0)
-interpolator <string> Interpolation [bco/nn/linear] (mandatory, default value is bco)
\end{verbatim}
\end{scriptsize}
\end{frame}
\begin{frame}[fragile]
\frametitle{Applications: Graphical interface}
\begin{center}
\includegraphics[width=1\textwidth]{../OTB-General/images/otbgui.png}
\end{center}
\end{frame}
\begin{frame}[fragile]
\frametitle{Applications: Python interface}
\begin{lstlisting}[language=python,breaklines=true,breakatwhitespace=true,frame = tb,framerule = 0.25pt,fontadjust,backgroundcolor={\color{listlightgray}},basicstyle = {\ttfamily\tiny},keywordstyle = {\ttfamily\color{listkeyword}\textbf},identifierstyle = {\ttfamily},commentstyle = {\ttfamily\color{listcomment}\textit},stringstyle = {\ttfamily},showstringspaces = false,showtabs = false,numbers = none,numbersep = 6pt, numberstyle={\ttfamily\color{listnumbers}},tabsize = 2]
#!/usr/bin/python
# Import the otb applications package
import otbApplication
# The following line creates an instance of the OrthoRectification application
OrthoRectification = otb.Registry.CreateApplication("OrthoRectification")
# The following lines set all the application parameters:
OrthoRectification.IO.IN = "QB_TOULOUSE_MUL_Extract_500_500.tif"
OrthoRectification.IO.OUT = "QB_Toulouse_ortho.tif"
app.MAP = 'epsg'
app.MAP.EPSG.CODE = 32768
# The following line execute the application
OrthoRectification.ExecuteAndWriteOutput()
\end{lstlisting}
\end{frame}
\begin{frame}
\frametitle{Monteverdi (acces to OTB applications)}
\begin{minipage}[t][6cm][t]{\textwidth}
\begin{center}
\includegraphics[width=1.0\textwidth]{../OTB-General/images/monteverdi.png}
\end{center}
\end{minipage}
\end{frame}
%\vspace*{-3.0mm}
\begin{frame}
\frametitle{QGIS}
\begin{minipage}[t][6cm][t]{\textwidth}
\begin{center}
\includegraphics[width=1\textwidth]{../OTB-General/images/otb_in_qgis.png}
\end{center}
\end{minipage}
\end{frame}
\vspace*{-6.5mm}
\begin{frame}[plain]
\hspace*{-11mm}
\includegraphics[keepaspectratio,height=1.1\paperheight]{../OTB-General/images/mayotte2012.png}
\end{frame}
\vspace*{-6.5mm}
\begin{frame}[plain]
\hspace*{-11mm}
\includegraphics[keepaspectratio,height=1.1\paperheight]{../OTB-General/images/mayotte2013.png}
\end{frame}
\vspace*{-6.5mm}
\begin{frame}[plain]
\hspace*{-11mm}
\includegraphics[keepaspectratio,height=1.1\paperheight]{../OTB-General/images/mayotte_mad.png}
\end{frame}
\vspace*{-6.5mm}
\begin{frame}[plain]
\hspace*{-11mm}
\includegraphics[keepaspectratio,height=1.1\paperheight]{../OTB-General/images/saint_paul_lsd.png}
\end{frame}
\vspace*{-6.5mm}
\begin{frame}[plain]
\hspace*{-11mm}
\includegraphics[keepaspectratio,width=1.005\paperwidth,height=1.1\paperheight]{../OTB-General/images/argentiere_left.png}
\end{frame}
\vspace*{-6.5mm}
\begin{frame}[plain]
\hspace*{-11mm}
\includegraphics[keepaspectratio,width=1.005\paperwidth,height=1.1\paperheight]{../OTB-General/images/argentiere_right.png}
\end{frame}
\vspace*{-6.5mm}
\begin{frame}[plain]
\hspace*{-11mm}
\includegraphics[keepaspectratio,width=1.005\paperwidth,height=1.1\paperheight]{../OTB-General/images/argentiere_anaglyphe.png}
\end{frame}
\vspace*{-6.5mm}
\begin{frame}[plain]
\hspace*{-11mm}
\includegraphics[keepaspectratio,height=1.1\paperheight]{../OTB-General/images/segmentation.png}
\end{frame}
\vspace*{-6.5mm}
\begin{frame}[plain]
\hspace*{-11mm}
\includegraphics[keepaspectratio,height=1.1\paperheight]{../OTB-General/Images/samples_selection.png}
\end{frame}
\vspace*{-6.5mm}
\begin{frame}[plain]
\hspace*{-11mm}
\includegraphics[keepaspectratio,height=1.1\paperheight]{../OTB-General/Images/final_classification.png}
\end{frame}
\vspace*{-6.5mm}
\begin{frame}[plain]
\hspace*{-11mm}
\includegraphics[keepaspectratio,height=1.1\paperheight]{../OTB-General/images/imag4tci.jpg}
\end{frame}
\vspace*{-6.5mm}
\begin{frame}[plain]
\hspace*{-11mm}
\includegraphics[keepaspectratio,height=1.1\paperheight]{../OTB-General/images/image4_glob_each_lim20_8b_sub.jpg}
\end{frame}
\section*{Introduction}
\begin{frame}
\frametitle{Things to know about OTB\ldots}
\begin{block}{Orfeo ToolBox is:}
\begin{itemize}
\item An \textbf{image processing library} for remote sensing
\item \textbf{Free and open source software} under Apache v2.0 license :
\begin{itemize}
\item maximum reach,
\item quality and efficiency,
\item reproductible search
\end{itemize}
\item \textbf{Funded and developed by CNES} (French Space Agency) in the frame
the development of the Pléiades satellite (and beyond)
\item A project of OSGeo since 2017
\item Used at CNES, ESA (European Space Agency), mission exploitation platforms,
remote sensing labs, teaching\ldots
\item Written in \textbf{C++} on top of \href{www.itk.org}{ITK} (medical image
processing)
\item Built on the shoulders of giants (GDAL, OSSIM, OpenCV\ldots)
\item \textbf{Big Data} capable, thanks to built-in streaming and multithreading
\end{itemize}
\end{block}
\begin{center}
{\huge\textcolor{red}{\href{http://www.orfeo-toolbox.org}{orfeo-toolbox.org}}}
\end{center}
\end{frame}
% Note : this is a lighter version of OTB general presentation
% It's a short introduction (20mn) to OTB, typically for a short workshop/training session (1/2 day)
%
%----------------------------------------------------------------------------------------
% PACKAGES & THEMES
%----------------------------------------------------------------------------------------
\documentclass[8pt]{beamer}
\usepackage{etex}
\mode<presentation> {
\usetheme{Vilanova}
}
\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage{array}
\usepackage{graphicx}
\usepackage{booktabs}
\usepackage{amsmath,amssymb,amsthm}
\usepackage{xcolor}
\usepackage{tikz}
\usetikzlibrary{arrows}
\usepackage{pifont}
\usepackage{listings,color}
\definecolor{listcomment}{rgb}{0.0,0.5,0.0}
\definecolor{listkeyword}{rgb}{0.0,0.0,0.5}
\definecolor{listnumbers}{gray}{0.65}
\definecolor{listlightgray}{gray}{0.955}
\definecolor{listwhite}{gray}{1.0}
\AtBeginSection[]
{