janhubicka / Color-Screen

Set of tools to work with scans of early color photographs taken using additive color screen processes
https://github.com/janhubicka/Color-Screen/wiki
GNU General Public License v3.0
4 stars 0 forks source link
early-color-potography

Color-Screen

Color-Screen is a software tool designed to digitally align viewing screens with scans of negatives and transparencies created using additive color screen processes. See our wiki for details.

Color-Screen began as a simplistic solution developed for the 2013 exhibition at the Šechtl and Vošeček Museum of Photography. The exhibition showcased photographs from the Matson (G. Eric and Edith) Photograph Collection, digitized by the Library of Congress. During the preparation process, Mark Jacobs identified rare scans of early color negatives using the Finlay color process. To address these unique negatives, Jan Hubička quickly created a rendering tool that would later become Color-Screen.

Installing Color-Screen

Binary packages

We provide binary packages for Windows (x86) and MacOS (aarch64) at our wiki page. We are happy to build more configurations if that seem useful.

Building from source code

Prequisities

Color-Screen can be built using recent versions of either GCC or Clang compilers. For optimal performance, OpenMP support in your compiler is recommended.

Building the main library and command-line utility requires the following additional libraries:

If you wish to develop colorscreen, additional packages are recommended

To build a GTK2 based gui, GTK2 and Glade libraries are needed. Note that the GTK2 gui is deprecated and new Java based Color-Screen GUI is being developed by Linda Kimrová

Building on Linux (and other UNIX-like systems)

On typical Linux distribution it is enough to do the following.

CXXFLAGS="-Ofast -flto" CFLAGS="$CXXFLAGS" ./configure --prefix=<where_to_install>
make
make install-strip

To build the gui use use addition --enable-gtkgui option to the configure script.

For better performance, if you are going to use the binary on the same CPU as you are building it, add -march=native to CXXFLAGS. This will enable use of extended instruction set of your CPU.

Building on Windows

Easiest way to install on Windows is to use MSYS2. Then start MSYS2 WINGW64 from Windows start menu. Install all necessary packages

pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-gtk2 mingw-w64-x86_64-libtiff mingw-w64-x86_64-libjpeg-turbo git make diffutils automake autoconf mingw-w64-x86_64-pkg-config vim gdb libtool mingw-w64-x86_64-libraw mingw-w64-x86_64-lcms  mingw-w64-x86_64-libzip mingw-w64-x86_64-gsl 

Then close the terminal emulation window and open MSYS2 MINGW64 again (this is necessary to get PATH set up). Now Color-Screen can be built in standard way.

git clone https://github.com/janhubicka/Color-Screen.git Color-Screen
mkdir Color-Screen-build
cd Color-Screen-build/
CXXFLAGS="-Ofast -flto" CFLAGS="$CXXFLAGS" LDFLAGS="-Wl,--stack,16777216" ../Color-Screen/configure --prefix=~/Color-Screen-install --enable-gtkgui
make
make install-strip

For better performance, if you are going to use the binary on the same CPU as you are building it, add -march=native to CXXFLAGS. This will enable use of extended instruction set of your CPU.

As a result native Color-Screen library, GTK gui and command line utilities will be built. Note that ~ does not point to Windows home directory, but to a home directory in msys2 tree.

To make the package stand-alone it is necessary to copy all DLL libraries to ~/Color-Screen-install/bin/. To figure out what libraries are necessary use

ldd libcolorscreen0.dll

This will print all libraries used. Copy all DLL files from mingw64 subdirectory to bin subdirectory.

Building on MacOS

Install Xcode to obtain the C++ compiler (clang). Xcode version of clang has OpenMP for multithreading disabled. For Color–Screen to run smoothly and faster, install (using homebrew) the libomp package together with the other required packages listed above:

CXXFLAGS="-Ofast -flto -I/opt/homebrew/include -I/opt/homebrew/opt/libomp/include -Xclang=-fopenmp" \
LDFLAGS="-L/opt/homebrew/lib -L/opt/homebrew/opt/libomp/lib -lomp" \
./configure --prefix=<where_to_install> --disable-openmp
make
make install-strip

This works around the disabled OpenMP support.

Wonderful examples

Once colorscreen is built, make examples will download some sample images from the Library of Congress webpages and produce color renderings.

Usage

There are two programs installed.

colorscreen is a command line utility to render into tiff files. See colorscreen --help and its wiki for usage information.

colorscreen-gtk is a (deprecated) GTK based gui application. Invoke it with colorscreen-gtk <scan file>. Scan must be either in tiff or jpeg file format.

Jan Hubička (hubicka@ucw.cz)