MIN-Faculty
Department of Informatics
Scene analysis and visualization (SAV)

Homepage of the Master project Image Processing (Mi 14-18) summer 2016 part 1

Project aim

Despite the description in Stine, we will focus on the exciting research field of Manucript Cultures in this course. From an Image Processing point of view, there are a lot of possible interactions and algorithms, like: layout analysis, write detection/determination of ancient manuscripts of different cultures.

Zum Ende der vorlesungsfreien Zeit (1. Oktober 2016)

Zum Ende der vorlesungsfreien zeit sollte das gewählte Thema vorerst abgeschlossen werden. Hierzu gehören:

  • Ein Projektbericht über das Verfahren, den Stand und Mittel der verwendeten Implementierung, Ergebnisse und eine abschließende Diskussion dieser,
  • Lauffähiger Quelltext der erstellten Software sowie ein
  • Manual zur Software, das den Umgang mit dieser beschreibt.

Ein Beispiel für einen gelungenen Bericht habe ich hier hinterlegt: Carstens, Martens: Ausarbeitung zu SIFT.

Am 13.07.2016: Endpräsentation der Gruppen (1. Teil des Projekts)

An diesem Termin stellen die Gruppen die vorläufigen Endresultate dar, die bis zum Ende des ersten Teils erreicht werden konnten. Hierbei sollen zudem auch weiterführende Aufgaben vorgeschlagen werden, die im zweiten Teil des Projekts (im WiSe 16/17) bearbeitet werden können.

29.06.2016: Einführung in die interaktive Bildverarbeitung

An diesem gtermin wird die Verwendung von Qt5 zur interaktiven Bildverarbeitung demonstriert. Die Präsentation zur Qt Einführung kann hier heruntergeladen werden: QtIntroduction.pdf. Die Präsentation zur grafischen Visualisierung kann hier heruntergeladen werden: QGraphicsView.pdf. Die ebenfalls an diesem Termin vorgestellte GUI, kann hier heruntergeladen werden: VigraQImageViewer.zip. Die GUI benötigt Qt5 und verwendet CMake-Makefiles zur Erstellung der ausführbaren Datei. Nach dem Entpacken sollte daher die bereits weiter unten beschriebene Vorgehensweise zum Ziel führen.

Am 22.06.2016: Zwischenpräsentation der Gruppen

An diesem Termin stellen die Gruppen die bisher erreichten Fortschritte in Bezug auf die Zielsetzungen vom 25.05.2016 dar. Hierbei können neben Fortschritten auch Probleme und Schwierigkeiten angesprochen werden.

Zum 25.05.2016: Analytischer Bericht

Zum Termin nach den Pfingstferien erwarten wir einen analytischen Bericht, in dem die gewählten Themen der Teams vorgestellt und analysiert werden. Dieser sollte folgendes umfassen:

  • Die Namen der Team-Mitglieder
  • Einen Projekt-Namen
  • Für jedes gewählte Teilthema:
    • Referenz, ein (langes) oder mehrere Paper zum Ansatz bzw. zum Verfahren
    • Zusammenfassung des Inhalts der Referenz(en) in eigenen Worten.
    • Herausarbeiten der verwendeten, grundlegenden Verfahren und Nennung der Funktionalität in der VIGRA-Bibliothek.
      Auch nennen, wenn keine Korrespondenz gefunden werden konnte.

Am 25.05.2016 werden wir die Einführung in C++11 noch nachholen. Anschließend werden die Themen anhand der erstellten Berichte noch einmal im Plenum diskutiert.

Material

Introduction into Manuscript Cultures:

Selected articles for proposed topics:

  • Noise Estimation
    • Stanislav Pyatykh, Jürgen Hesser, and Lei Zheng (2013): Image Noise Level Estimation by Principal Component Analysis (Download)
    • Ce Liu, William T. Freeman, Richard Szeliski, Sing Bing Kang (2006): Noise Estimation from a Single Image (Download)
  • Estimating the Point Spread Function (PSF)
    • Neel Joshi, Richard Szeliski, David J. Kriegman (2007): PSF Estimation using Sharp Edge Prediction (Download)
    • Xiang Zhu, Scott Cohen, Stephen Schiller, Peyman Milanfar (2013): Estimating Spatially Varying Defocus Blur From A Single Image (Download)
    • Amit Goldstein, Raanan Fattal (2011): Blur-Kernel Estimation from Spectral Irregularities (Download)
    • Libin Sun, Sunghyun Cho, Jue Wang, James Hays(2013): Edge-based Blur Kernel Estimation Using Patch Priors (Download)
    • Taeg Sang Cho, Sylvain Paris. Berthold K. P. Horn. William T. Freeman (2011): Blur Kernel Estimation using the Radon Transform (Download)
  • Super Resolution
    • Daniel Glasner Shai Bagon Michal Irani (2009): Super-Resolution From a Single Image (Website)
    • Yoav HaCohen, Raanan Fattal, Dani Lischinski (2010): Image Upsampling via Texture Hallucination (Website)
    • William T. Freeman, Thouis R. Jones, Egon C. Pasztor (2002): Example-Based Super-Resolution (Download)
    • Raanan Fattal (1995): Image Upsampling via Imposed Edge Statistics (Download)
    • Qi Shan, Zhaorong Li, Jiaya Jia, Chi-Keung Tang (2008): Fast Image/Video Upsampling (Website)

Introduction into C++, slightly revised German slides (according to U. Schroeder, RWTH Aachen):

  1. Part: From Java to C++ C++
  2. Part: Data Types, Pointer, References and 1D-Arrays
  3. Part: Function pointer, ADTs and nD-Arrays
  4. Part: Class definitions
  5. Part: The STL
    additionally: Dokumentation zu Boost 1.58.0
  6. Part: Introduction to Modern C++ (Olve Maudal)
    Further Literature: Top 11 Features of C++11 (Heise Developer, German)

For Image Processing, we will use the generic VIGRA library. In the first weeks, we will go through the Tutorial following this scheme:

  1. Part: MultiDimensionalArrayTutorial, up to "One-dimensional Indexing and Scan-Order Iterator",
            and: Image Input/Output
  2. Part: MultiDimensionalArrayTutorial, from "Important MultiArray Methods"
  3. Part: Mathematics with Multi-Dimensional Arrays, up to "STL-style transformation algorithms"
  4. Part: Mathematics with Multi-Dimensional Arrays, from "Feature Accumulators"
  5. Part: Image Processing
  6. Part: Writing your own functions,
            and: VIGRA Python Bindings

Software

We work with the language C++ and the VIGRA library. Both generally run under all big operating systems. We recommend the following development environments:

  • Under Windows:
    Use MS Visual Studio 2012 Ultimate (UHH Dreamspark) and install the dependencies like described on this page.
  • Under Linux:
    Follow the installation instructions at th VIGRA-Homepage
  • Under Mac OS X:
    Install the MacPorts package manager and than install the vigra Port by opening a terminal and typing:
    sudo port install vigra

To simplyfy the work with the C++ compiler, we selected to use the CMake build system. CMake needs a project description in a certain format. Using this description it is able to generate Makefiles as well as Visual Studio, XCode, or other project files. Here, you find a sample project for the use with CMake. To generate a binary (under Unix, Mac OS X), this may be used as follows:

cd TUTORIAL_DIR
mkdir build
cd build
cmake ..
make

You may also let CMake generate XCode-Project files for you:

cd TUTORIAL_DIR
cmake -G Xcode .

CMake also provides a generator for MS Visual Studio project files. To generate a project file for 64 bit compilation of the tutorial, you may just type:

cd TUTORIAL_DIR
cmake -G "Visual Studio 11 2012 Win64" .

Distinguish between 32/64 bit: For 32 bit compilation, just omit the "Win64" suffix.

ATETENTION The System's PATH variable (%PATH%) has to contain the directory of the currently used binaries (32 or 64 bit DLLs) - CMake does not check for this. My recommendation: Just use 64 bit compilation for modern Windows versions on current processor architectures.

References:

  • Richard Szeliski (2010): Computer Vision: Algorithms and Applications (Homepage and eBook download)
  • Sonka, Hlaváč und Boyle (3. Auflage 2008): Image Processing, Analysis and Machine Vision, Thomson
  • D.A. Forsyth, J. Ponce: Computer Vision, A Modern Approach, Prentice-Hall 2003
  • R.C. Gonzalez, R.E. Woods: Digital Image Processing, Prentice-Hall 2001
  • B. Jähne (1997): Digitale Bildverarbeitung (4. Auflage), Springer-Verlag
  • R. Klette, A. Koschan, K. Schluns (1996): Computer Vision, Vieweg
  • R.M. Haralick, L.G. Shapiro (1993): Computer and Robot Vision, Vol. I & II, Addison-Wesley