June 18th:: Exams tests for the Phd course are published

June 7th:: All material is available, click link below the logos ->

May 29th:: Final Programme (swap of two courses, same day)

May 17th:: Payment by bank transfer and credit card is available

April 24th:: Programme is available

CG Libs

Smart Libraries for Computer Graphics
Pisa, June 3-5

Behind a great application there is a great library! That set of functionalities and those concepts that are common to so many applications on the same domain and that we should keep rewriting if we did not have libraries. CG Libs is a series of intensive courses on 6 great open source libraries for Computer Graphics, written and maintained by well known scientists and made available to everyone!

material material material material material material material

3D Geometry

VCGLib The Visualization and Computer Graphics Library is an open source portable C++ templated library for manipulation, processing and displaying with OpenGL of polygonal meshes.
Speaker: Paolo Cignoni

The Point Cloud Library is a large scale, open project for 2D/3D image and point cloud processing. The PCL framework contains numerous state-of-the art algorithms including filtering, feature estimation, surface reconstruction, registration, model fitting and segmentation. These algorithms can be used, for example, to filter outliers from noisy data, stitch 3D point clouds together, segment relevant parts of a scene, extract keypoints and compute descriptors to recognize objects in the world based on their geometric appearance, and create surfaces from point clouds and visualize them -- to name a few. PCL was born as part of the Robot Operating System (ROS), a project launched by Willow Garage (the same guys behind OpenCV and other amazing open-source robotics libraries). Recently, PCL is mostly being catered by the Open Perception Foundation, a non-profit spin-off from Willow Garage, backed up by numerous research institutions and companies from across the world.

Course description: This short course aims at introducing the main aspects related to the Point Cloud library. First, we will briefly introduce the goals, the activities, the industrial partners and the community related to the library. This will be done also by pointing at some of the most common application scenarios for which PCL is being deployed by its community. Successively, we will give an outlook on the main modules being developed, highlighting the theoretical background, functionalities and design choices of a few of them and illustrating the large set of tools and state-of-the-art algorithms currently present in PCL for advanced 3D processing. Finally, a whole object modeling pipeline will be presented, showing how the components can be put together in a highly customizable pipeline, that allows for experimentation and rapid deployment.
Speakers: Federico Tombari and Alexandru Ichim

3D Graphics for the Web

SpiderGL is a JavaScript CG library that provides a series of utilities, data structures, and algorithms to serve typical graphics tasks.
Marco Di Benedetto

General Purpose Computation

Eigen is a C++ template library for linear algebra: matrices, vectors, numerical solvers, and related algorithms.

course description : project history and management, feature overview, comparisons, key aspects in design and internals, practical examples to show a bit the API, short roadmap.
Speaker: Gael Guennebaud

ViennaCL is a free open-source linear algebra library for computations on GPUs and multi-core CPUs. The library is written in C++ and supports CUDA, OpenCL, and OpenMP. In addition to core functionality and many other features including BLAS level 1-3 support and iterative solvers, the latest release ViennaCL 1.4.0 now includes an incomplete Cholesky factorization preconditioner.

Course description: The course will start with a detailed introduction of ViennaCL, including a presentation of the structure and the design of the library, followed by an overview of the library features. Afterwards, examples are discussed, demonstrating the utilization of ViennaCL with respect to algorithms and data structures. The next section will cover advanced ViennaCL usage, like pitfalls, OpenCL management, custom kernels, and ViennaCL backend management. Last but not least, ViennaCL and OpenGL interaction is explained and some additional usecases are shown.
Speaker: Florian Rudolf

g2o is an open-source C++ framework for optimizing graph-based nonlinear error functions. g2o has been designed to be easily extensible to a wide range of problems and a new problem typically can be specified in a few lines of code. The current implementation provides solutions to several variants of SLAM and BA. A wide range of problems in robotics as well as in computer-vision involve the minimization of a non-linear error function that can be represented as a graph. Typical instances are simultaneous localization and mapping (SLAM) or bundle adjustment (BA). The overall goal in these problems is to find the configuration of parameters or state variables that maximally explain a set of measurements affected by Gaussian noise. g2o is an open-source C++ framework for such nonlinear least squares problems. g2o has been designed to be easily extensible to a wide range of problems and a new problem typically can be specified in a few lines of code. The current implementation provides solutions to several variants of SLAM and BA. g2o offers a performance comparable to implementations of state-of-the-art approaches for the specific problems

Course description: This course will consist of two parts. In the first one we will cover the general aspects of least squares minimization over euclidean and non euclidean spaces. Then we will introduce a systematic procedure to construct solvers for these classes of problems. We will provide simple examples in Octave/Matlab. Subsequently, we will illustrate how these concepts can be mapped on g2o, and we will create a simple solver for 2D SLAM. To benefit most from the tutorial, it is recommended some knowledge of C++. The supported operating system is Linux.
Speaker: Giorgio Grisetti


Meshlab is an open source, portable, and extensible system for the processing and editing of unstructured 3D triangular meshes. The system is aimed to help the processing of the typical not-so-small unstructured models arising in 3D scanning, providing a set of tools for editing, cleaning, healing, inspecting, rendering and converting this kind of meshes.
Course description: The MeshLab course at CGLibs will be the first one ever done by the MeshLab Team introducing the well known geometric processing tool from the plugin developer point of view. The course will review all the existing programming interfaces exposed by MeshLab in order to let the developers to easily and quickly create their own MeshLab's plugins. During the course will be also revealed the new MeshLab plugins development paradigm and the new MeshLab scripting interface that will be both officially released along with MeshLab 2.0.
Speaker: Guido Ranzuglia