Home

Awesome

Saccade (Sophisticated Image + OpticalFlow Viewer)

Build Status GitHub release

A saccade (/səˈkɑːd/ sə-KAHD) is a quick and simultaneous movement of both eyes in the same direction.

<p align="center"> <img src="https://github.com/patwie-stuff/img/blob/master/saccade_intro.gif?raw=true"> </p>

This project is the missing scientific HDR image viewer for Linux. It is OpenGL-based and aims at providing an efficient image viewer with some sophisticated functions for comparing images. When dragging and zooming an image in one viewport, all other viewports synchronously zoom and shift in the same way, so you see exactly the same patch in all images.

Features

Supports the following file formats:

Synchronized view-ports

Hereby, each viewport consists of different image-layers. Some action might affect only the active layer across all viewports (global effects), e.g., zooming and dragging, e.g. setting the crop-region:

<p align="center"> <img src="https://github.com/patwie-stuff/img/blob/master/saccade_crop.gif?raw=true"> </p>

When manipulating the histogram, the changes can be applied to only the current active layer or all layers in the current viewport (holding the SHIFT key). Further, a marker can be set precisely on a specific pixel, and all other views share the marker at exactly the same location. It uses the FreeImage library to load images from different types:

<p align="center"> <img src="https://github.com/patwie-stuff/img/blob/master/saccade_histogram.gif?raw=true"> </p>

Install from binary

The related binaries for the master branch are generated automatically and statically linked to Qt5.9.2 to reduce dependencies and file-size. The pre-compile binaries are available with all dependencies and are tested in a VM with plain Ubuntu 16.04 .

Install from Source

Requirements

The requirements (Ubuntu 16.04) are currently:

I plan to add CUDA for speeding up some functions.

Get dependencies and compile

The dockerfile lists all dependencies for building this project. Or follow the following guide:

Assuming you are on Ubuntu 16.04 getting all dependencies is done by

# install dependencies
sudo apt-get install libfreeimage3 libfreeimage-dev libgflags-dev libgoogle-glog-dev

The Ubuntu-packages contain an old version of Qt5. To get a recent Qt5 version (>=5.9) use the following commands (you might need to register for Qt).

cd /tmp
wget http://download.qt.io/official_releases/qt/5.9/5.9.1/qt-opensource-linux-x64-5.9.1.run
chmod +x qt-opensource-linux-x64-5.9.1.run
./qt-opensource-linux-x64-5.9.1.run

And finally just get and build this repository by

# clone this repo
git clone https://github.com/PatWie/saccade.git
cd saccade
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j4

A copy and paste version to automate the GUI installer is described in the Dockerfile.

To add the saccade application to the unity-launcher, edit the saccade.desktop file by adjust the paths:

edit saccade.desktop
cp saccade.desktop $HOME/.local/share/applications/saccade.desktop

and you find the app icon in the Ubuntu search bar. When debugging the application, it might be helpful to start it with the flag --logtostderr 1 and build it with DCMAKE_BUILD_TYPE=Debug.

Keyboard Shortcuts

These are very likely to changed in the next versions.

General shortcuts

ActionShortcut
quit entire the appCtrl + Q
version infoF1
set all viewports to same sizeF2
automatically arrange viewportsF3
new viewportCtrl + N

shortcuts for a single viewport (visible layer)

ActionShortcut
quit viewportCtrl + W
add new imageCtrl + O
save current imageCtrl + S
crop rectangleCrlt + left mouse
toggle cropCtrl + right click
save current cropCtrl + X
next image⇩, ⇨
delete single imageDel
previous image⇧, ⇦
fit window to imageCtrl + F
reset histogramCtrl + H

shortcuts for local effects (all layers in single viewport)

ActionShortcut
reset histogram (all layers)Ctrl + Shift + H
delete all imagesCtrl + Del
change hist. for all layersShift + mouse (histogram)

shortcuts for global effects (synchronized across all viewports)

ActionShortcut
zoom rectangleShift + left mouse
zoom inCtrl + plus
zoom outCtrl + minus
no zoomCtrl + 0
fit to windowCtrl + 9
center imageCtrl + C
toggle markerCtrl + M
toggle markerright click
shift image 10% rightShift + ⇨
shift image 10% leftShift + ⇦
shift image 10% downShift + ⇩
shift image 10% upShift + ⇧
next image in all viewportsCtrl + ⇩, Ctrl + ⇨
prev. image in all viewportsCtrl + ⇧, Ctrl + ⇦