Color is the human perception of various frequencies/wavelengths and intensity of light (electromagnetic radiation) based on an object's physical properties such as light absorption, reflection, or emission spectra. Colors are defined and quantified by the degree to which they stimulate human cone cells in the retina. For humans, this is known as "visible light".
|red||700–635 nm||430–480 THz|
|orange||635–590 nm||480–510 THz|
|yellow||590–560 nm||510–540 THz|
|green||560–490 nm||540–610 THz|
|blue||490–450 nm||610–670 THz|
|violet||450–400 nm||670–750 THz|
Digital display of color:Digital monitors: The representation of Red, Green and Blue (RGB) combined (additive coloring) to radiate light in various quantities to achieve the appropriate color. Each color can be represented by individual numeric quantities.
The combination of all colors renders white.
Digital printers: Cyan, Magenta and Yellow (CMY) combined (subtractive coloring) to absorb light in various quantities to achieve the appropriate color.
The combination of all colors renders black.
Primary colors are red, blue and yellow which can be combined to any other color (used in the arts and painting world).
Digital representation of color:Hex representation of the digital representation of colors: The more bits which are assigned to represent a color, the more shades that can be represented. Twenty four bit color uses eight bits to represent each of red, green and blue. Eight bits can represent a number from 0 to 255 (0 to FF in hex).
Description Red Green Blue Color White (All colors) FF FF FF Red FF 00 00 Green 00 FF 00 Blue 00 00 FF Black (No colors) 00 00 00 Hex 18 C7 9E Integer 166 88 78
See color picker
|TIFF||Tagged Image File Format: supports a wide range of options. Most applications only support a subset of TIFF called baseline TIFF. Lossless LZW compression. TIFF also supports Zip lossless and JPEG Lossy compression. Expired Adobe ownership. Used by scanners and professional photographers. Not a good web format.|
|GIF||Graphics Interchange Format: 8 bits/pixel, color-map of 256 colors from a 24 bit RGB color-space. Lossless compression (LZW). Good for simple images. Patents were owned by Unisys and Compuserve. Patents have expired. Supports interlacing, animations and transparency. GIF uses only 256 colors. Best for non photographic images with fewer colors, like icons.|
Little endian byte order
|JPEG||Joint Photographic Experts Group: preferred for photographs as it supports more colors (16 million colors, 24 bit) simultaneously. Compressed (10:1) with quality of 1 to 100 (full quality) using Huffman encoding of 8x8 pixel blocks. Starts to have obvious pixelation after about 70 due to reduced color availability. Lossy compression (acceptable for web). Various formats available eg 12 bit version for grey-scale medical imaging, EXIF and JFIF. Uses YCC (not RGB unless at quality 100%) to store brightness (luma) and color (chroma B & chroma R). Patents overturned due to prior art or have expired (20 yrs). (.jpg .jpeg .jpe .jif .jfif .jfi)|
Big endian byte order
|PNG||Portable Network Graphics: 8 bit (256 colors) and 24 bit (16 million colors) color palettes. Lossless MNG compression thus tend to be larger files than equivalent JPEG. Supports multiple representations for color palette index (color map). Supports transparency, interlacing, animations. Comparable to GIF without the 256 color palette limitation. JPEG better choice for web images. Supports alpha channels (transitions from opaque to completely transparent). Great for use with transparent backgrounds while not having jagged boundaries.|
|XPM||ASCII Text - good for embedding images in C/C++ and Python source code|
|BMP||Microsoft bitmap image file: Supports multiple compression methods or none and multiple bits per pixel varieties.|
|ICO||Icons (web and Microsoft desktop)|
|RAW||no compression. Full color (no translation to color map). Direct dump from camera. No compression thus large files. Hundreds of formats due to variations in cameras CCD, resolution and sensitivity.|
|SVG||Scalable Vector Graphics: coordinates for line segments and curves. Not an pixel raster image.|
|8 bit color support||yes||yes||yes||no||yes|
|16 bit color support||no||yes||yes||no||yes|
Also see the YoLinux image mime type example tests.
Exposure fusion is a similar and more simple technique creating the resulting tone mapped image directly from the bracketed exposures without generating the intermediate HDR image.
HDR Image Formats:
- OpenEXR is a high dynamic-range (HDR), high color fidelity image file format (.exr) developed by Industrial Light and Magic for digital imaging.
The OpenEXR format was used in the movies Harry Potter and the Sorcerers Stone, Men in Black II, Gangs of New York, and Signs and is ILM's primary image format.
Also supports transparency.
There are also open source libraries available: IlmImf, lmath and an image display application "exrdisplay".
Source code: https://github.com/openexr/
- RGBE HDR Radiance (.hdr) source images use a four bytes (a full 32 bits) to store pixel information. It avoids clipping by offering a higher range of values by using the fourth byte to store exponent information for the quantity of light per pixel.
The first three bytes are RGB color data.
- 32 bit floating point TIFF supported in current COTS imaging programs.
- Photoshop PSD and PSB large document format supports 32 bits, 300,000 pixels in any dimension. Support limited to Photoshop.
Also see Linux and HDR workflow.
To edit photos correctly and to perform color manipulation properly, one must calibrate the monitor so that when the software displays red, red is what is displayed. This requires a "Colorimeter" which can measure the exact frequency and magnitude of light being displayed by the monitor. Any variance can be adjusted with the video card gamma table and monitor controls. Calibration settings include:
- White Point: native white for the display. Typical values: 5000 to match print media (number refers to a temperature in degrees Kelvin).
- White Level: measured in cd/m2
- Black Level: target brightness of black in cd/m2
- Tone curve/gamma: default is 2.2.
- Black output offset:
- Black point correction:
The "Colorimeter" and affiliated software are used to generate an International Color Consortium (ICC) color profile which can be used to adjust your graphics card and monitor to display the correct colors.
The ICC profile of a device (monitor, camera, scanner, printer, ...) describes the color reproduction characteristics for the device. The device profile is stored in a display.icc file representing the ICC color profile for the device, in this case a monitor. The ICC profile is a table describing the properties of a color-space (range of colors). A device with a large color-space is preferred.
Color Settings:To view your current color profile and settings start the Gnome systems setting tool (/usr/bin/gnome-control-center) and choose color:
Select "View details". If a colorimeter is connected, the "Calibrate..." option will not be grayed out.
The CIE 1931 color-space gamut tab
TRC: Tone Reproduction Curve tab
The following software can calibrate, generate profiles and set the video card gamma table with corrective parameters. The software also supports verification of settings.
|dispcalGUI||Part of the Argyllcms suite of tools. Python program which works with a variety of color meters to define adjustments which need to be made to correct color, brightness/darkness, contrast, etc|
Install: apt-get install dispcalgui
Requires Argyll: download Argyll_Vx.x.x_linux_x86_xx_bin.tgz
|KDE digiKam||Photo manager and camera image offload program with built-in monitor calibration interface. Select "Color Management".|
Colorimeters, also known as Spectro-Colorimeters or Spectrophotometer, are color measurement instruments which are required to measure the color output by the monitor. The products shown are USB devices which are manually placed against the screen to measure display color from known spectral image samples.
DispcalGUI will work with the following models:
|Datacolor - Spyder
DispcalGUI will work with the following models:
|Monitor calibration based on Linux and open source. They ship a USB based colorimeter and a Linux LiveCD.|
Pixel based image processing allows for editing and enhancement of photos and photo image based file formats like JPEG. Vector graphics images are not stored on a pixel basis but on a geometric basis of points, lines and curves and are more popular with graphics designers. Thus the editing must be performed on the geometry. Hybrid editors are becoming popular which allow the use of vector graphics and pixel based images.Linux imaging and editing software falls into two categories:
Pixel based image viewers and photo editors:
|eog||Eye of Gnome: Supplied with most distributions of Linux as the default desktop image browser for systems using the Gnome desktop. Mostly used for viewing image files. Editing is limited to scaling, rotation and flipping of images.|
|Shotwell||Gnome camera image import, viewing and photo organization program. Supports simple image editing such as rotation, crop, red eye reduction, exposure adjustment, color saturation and tint as well as web sharing to popular photo sharing web sites. Very time and date-centric. I still prefer organization by directory.|
|digiKam||KDE camera image import, viewing and photo organization program. Supports JPEG as well as RAW camera imports and tweaking. Supports geo-coding and processing of negatives. Supports display monitor calibration.|
Organization by directory with storage of meta information makes it a little more flexible than Shotwell's mandated time stamp directory organization. DigiKam has strong photo search capability due to meta-tagging photo information.
|Gwenview||Image viewer for the KDE desktop. Viewing and image interrogation. Has sharing interface for most of the popular image sharing web sites. Editing is limited to image resizing, rotation, flipping, cropping and red eye reduction of images.|
|xv||Legacy viewing and image manipulation tool. Edit image with full view of inner workings of the image file such as Gif color-map, color saturation, etc. One of the first FOSS image viewing and editing software applications available on Linux/Unix.|
xv manual [pdf]
|KolourPaint||Paint program, simple image raster annotation (add lines, arrows, curves, circles, boxes, text). Simple graphic generation. Not a photo editor although it can import photographic images for markup.|
Ubuntu Installation: apt-get install kolourpaint4
|XPaint||Paint program, simple image raster annotation (add lines, arrows, curves, circles, boxes, text). Simple graphic generation. Not a photo editor. Supports PPM, XBM, XPM, XWD, LXP, TIFF, PNG, GIF, JPG, BMP, ICO, PS |
Ubuntu Installation: apt-get install xpaint
|Gimp||Supplied with most distributions of Linux as the default desktop image tool. Fully featured editing and pixel image manipulation tool. Many plugins available. Photoshop "like" image editing supporting layers, color editing, perspective and distortion correction, colorizing, image retouching, transparency, sizing, rotation, format conversion, text support, etc.|
Gimp users manual (2.8)
|Tamanoir||Image processing tool to remove small dust artifacts from picture scans.|
(similar to the Gimp "clone stamp" tool)
Ubuntu deb package generation and installation:
Auto identify artifacts or manually move green box to artifact. Clone mode will identify source pixels to clone and arrow will show artifact (pixel clone destination). Left window shows original image while right window will preview the changes.Artifact Categories:
Image rotation menu
|Commercial donation based freeware.|
Simple editing: rotation, crop, resize, adjust brightness, contrast, saturation, filter blur, sharpen, watermarking, vignetting (fix optical edge effects), ...
Strength: Capable of converting between hundreds of different image formats. Use other tools for editing.
|FixPicture||Online web tool. Upload photos and simple edit online. Format conversions. Very limited editing capability.|
Command line/Batch Imaging:
Vector and wire-frame graphics:Note that Kara Xtreme and Krita have combined support for pixel and vector graphics.
|Open Office/Libre Office Draw||Drawing, diagramming, charting and sketching program, simple image editing. Simple business and presentation graphics generation. Can output image formats (BMP, GIF, JPEG, PNG, TIFF, ...)|
|Xara Xtreme||Desktop photo image manipulation, image editing and vector graphics design software. Claims to be very fast with live interactive image updates (not command then wait, fully interactive image adjustments and changes). Based on wxWidgets GUI framework. Photo image editing (red eye reduction, color balance, tones, shadows, color blending, special effects, fades, frames, feathering, lighten/darkening, transparency support). Although it supports so many image editing features, it is not a pixel editing tool. Supports the generation of graphics, text, complex polygons and Scalable Vector Graphics (SVG). Supports most Adobe Illustrator drawing features. Supports Adobe Photoshop and Illustrator files as well as Photoshop plugins.|
GNU open source with impressive professional graphics capabilities.
|Inkscape||Generate and edit Scalable Vector Graphics (SVG). Native file format is SVG.|
Install: apt-get install inkscape
|Karbon14||KDE desktop tool to generate and edit Scalable Vector Graphics (SVG). Support for ODG, SVG, WPG, WMF, EPS/PS vector formats. Drawing and path editing support. |
Ubuntu Installation: apt-get install karbonAlso see Xara Xtreme
|Krita||Derived from Gimp, KOffice/Calligra KImageShop. Painting and image editing. Combines pixel and vector layers to support paint (brushes, patterns, textures and gradients) and illustrator (lines, curves and polygons) features. Supports HDR (Open EXR) and ColorIO for visual effects work.|
File import support: Photoshop PSD, PNG, BMP, GIF, JPEG, JPEG2000, EXR, PNM, EPS. PDF, OpenDocument ODG, OpenRaster, Camera RAW, TIFF, XCF and many more ...
Ubuntu Installation: sudo apt-get install krita
Digital Imaging and Communications in Medicine (DICOM) is a medical imaging format used for X-ray, CT scans and MRI images. DICOM is a wrapper file format encapsulating JPEG images (lossy or lossless variants). Here are a few DICOM file viewers for Linux: (many also can also view volumetric CT and MRI 3D scans)
|AMIDE||Supports DICOM and volumetric medical image viewing. Features include support for multiple color-maps, thresholding, 3D and volume rendering, filtering, fly-through, image data-set alignment,...|
GTK+ based GUI. GPLv2
|Ginkgo CADx||Advanced 3D tools, worklist support, multiplanar reconstruction, fusion, ...|
Commercial application but open source. Free and supported versions (which also has extra capabilities).
Ginkgo CADx Sourceforge page
|MIPAV||MIPAV is a medical image viewer for PET, MRI, CT and microscopy 2D and 3D data-sets. Includes analysis tools to support biomedical data research (Talairach space brain mapping, FRAP, FRET), filtering (spatial, noise, thresholding, Isotropic diffusion), ... |
Java based cross platform application. Source and binaries available.
Funded and developed by the National Institute of Health Center for Information Technology (CIT)
|Aeskulap||This medical image viewer can query and fetch DICOM images from network archive PACS nodes. Open source based on gtkmm, glademm and gconfmm.|
Download not currently available??
|MRIcron||Supports multiple image layers, image intensities, grey-scales and color schemes with threshold control. Also supports volume rendering (voxels) with various viewing angles and slices. GTK2 based GUI.|
(Follow-on to MRIcro)
|XnView||Commercial application. A general image viewer which also happens to support viewing DICOM images.|
- DICOM standard (pdf)
CCD/Camera "raw" images:Support for raw image formats: CRW, NEF, RAF, CR2, DNG, ...
- RawTherapee - advanced features.
- UFRaw (also available as a Gimp plugin)
- Corel AfterShot Pro - commercial product
- UFRaw - Gimp plugin or run as stand-alone application
Digital Camera Storage:
I have always been able to read digital cameras with Linux either using the USB interface or removing the SD card and putting it in a USB attached SD card reader. No special drivers are required. Using the Gnome Nautilus file browser I have always been able to download photos and video.Tip: The SD memory cards used in cameras are typically formatted using the Microsoft DOS FAT16 or FAT32 format. When using an SD memory card in your camera which is greater than 32 Gb, Linux will require additional support drivers to read the "Extended FAT" device:
- Ubuntu: 14.04
- sudo add-apt-repository universe (typically there by default)
- sudo apt-get update
- sudo apt-get install exfat-fuse exfat-utils
Note the difference between the package names "exfat-fuse" and "fuse-exfat" used for the older 12.04 release.
Using the incorrect package and repository name may result in the following error:
fuse-exfat : Depends: fuse-utils (>= 2.7) but it is not installable
- Ubuntu: 12.04
- sudo add-apt-repository ppa:relan/exfat
- sudo apt-get update && sudo apt-get install exfat-utils fuse-exfat
Tethered Camera:(trigger camera shutter remotely from PC)
Satellite and Multi-spectral Imagery:Satellite sensors often gather data in frequency bands invisible to the human eye or in ranges too sensitive for humans to distinguish as different. Image file formats cater to human vision and are usually not valid formats for the frequency spectrum gathered by the sensor. This is true for infrared sensors, chlorophyll and organic carbon studies, etc. For this reason, satellite sensor data is not stored in standard image formats but more typically in HDF format which hosts an internal hierarchical data schema specific to a given sensor. Sensor data can be mapped to various colors for human display and study. Tools like HDFView can generically view and plot graphs of the raw numerical data. Image tools like SeaDAS can generate image displays of the data. GDAL and GMT are typically used when earth projection and warping of data to the globe and vice versa are required.
- NASA Satellite sensor ocean color data and image downloads - publicly available raw satellite data (HDF5) for various satellite sensors, various parts of the planet and for various dates and times.
- HDF5 - Hierarchical Data Format. Site has libraries and tools for use with HDF5 files.
Supports the ability to organize, store, discover, access, analyze and share data. Developed by NCSA, LBNL and DOE.
HDFView - Java file viewing GUI for HDF4 and HDF 5 files.
Tree view on left shows data schema while right hand side shows the data. Select the graph icon to plot data.
- SeaDAS - SeaWiFS Data Analysis System (SeaDAS) to process, display and analyze satellite ocean color data.
Supports statistics and plotting functions, map re-projection and geo-coding.
(screenshot of sensor data mapped to colors) (SeaDAS downloads)
- GDAL - Geospatial Data Abstraction Library - GIS tools from the "Open Source Geospatial Foundation".
Raster geospatial data format translation library and command line tools (translate, warp, etc for raster and vector data).
Released with FWTools (compiled binary downloads [alt]) includes GDAL, NetCDF and other library dependencies. FWTools is a set of GIS tools for raster/vector viewing, projection and mapping/cartography. Includes OpenEV geospatial data analysis viewer for raster and vector data.
- GMT Generic Mapping Tools (140 command line tools for manipulating geographic and Cartesian data sets in support of mapping)
School of Ocean and Earth Science and Technology University of Hawaii Manoa
GUI front-end to GMT command line tools: Mirone, iGMT (Tcl/Tk)
Steganography: Hidden Messages and Invisible WatermarksSteganography is the technology of embedding a message within an image. It is not visible and typically requires a password and decryption to extract. Steganography can also be used to mark images with digital watermarks for identification.
Linux Steganography Software:
- OutGuess - supports PNM and JPEG files
- Steghide - images (JPEG,BMP) and audio (WAV,AU) files
- OpenStego - Java GUI
Image stitching software (Linux and other platforms):
- Hugin - GUI photo stitching application (premier FOSS tool for photo stitching)
(includes PanoTools dependencies and Nona, a PT Stitcher equivalent)
- Pano tools Home - Pano tools on Sourceforge - pano tools Sourceforge project page
by Prof. Dr. Helmut Dersch (Hochschule Furtwangen University of Applied Sciences)
- PT Stitcher: GUI stitching program
- PT Mender: GUI stitching program to replace PT Stitcher
- PT Optimizer: optimizes control points
- Gimp plugin: Stitch Panorama (python plugin)
Image stitching libraries: (rotation-invariant interest point detector and descriptor)
- Parallel SURF - multi-threaded version of SURF
- Panomatic - library used by Hugin
- Scale Invariant Feature Transform (SIFT) - used by Kolor and many "Structure from Motion" stitchers (patented but GNU open source license)
SiftGPU - GPU GLSL and CUDA implementations of SIFT
- SURF - Speeded Up Robust Features
Also see the YoLinux tutorial on displaying panoramic images on the web
Hugin has matured greatly and is a solid panoramic photo stitching tool. It supports a fair amount of automation including automatic generation of control points and stitching as well as very esoteric and advanced support for HDR, lens distortion, exposure optimization and horizon straightening.
Install: apt-get install hugin
Following the three step "assistant" is the easiest approach:
- Load images: select the images to load.
- Align images: select the "Align..." button and after processing, the preview panel will display.
- Create panorama: Using the defaults will generate a project file and a TIFF image.
Spherical Panoramic Photography allows for 360 degree horizontal panoramic coverage as well as 180 degree vertical viewing. The resulting image is an immersive all-around view from a single location.
Spherical Panoramic Photography is enabled by using a Spherical Panoramic tripod head which rotates the camera about its focal point to avoid parallax and allow seamless photo stitching of images.
- Agnos (MrotatorT/MrotatorU)
- Bushman (lightweight)
- Jasper Engineering (PanoHead 2)
- Nodal Ninja
- Peace River Studios (3Sixty)
Motorized Pano Heads:
Spherical Panoramic Tripod Head
Spherical Panoramic Cameras:Spherical Panoramic cameras are available which take a single pano shot. This is enabled by the use of multiple CCDs and wide angle lenses or curved mirrors which broaden the field of view to 360 degrees for a single CCD and lens.
Commercial Linux Spherical Panoramic Software:
- Kolor: Autopano (Pro or Giga), PanoTour
Screenshot of Kolor Autopano Giga: show image links
Screenshot of Kolor Autopano Giga: control points editor
Screenshot of Kolor Panotour:
See the YoLinux list of spherical panoramic viewers for Spherical Panoramic Photography Display
[Potential Pitfall]: AutoPano 440 upgrade on Ubuntu 16.04 fails to install and breaks old version: Remove old version then install fresh package.
- Remove: sudo dpkg -P autopanogiga
- Install fresh: sudo dpkg -i AutopanoGiga_Linux64_440_2017-03-25.deb
[Potential Pitfall]: AutoPano 423 on Ubuntu 16.04 OS upgrade fails and it use to work on Ubuntu 14.04. Error:
/usr/lib/AutopanoGiga/AutopanoGiga: error while loading shared libraries: libicui18n.so.52: cannot open shared object file: No such file or directoryUbuntu 16.04 upgraded the library to libicui18n.so.55 so libicui18n.so.52 no longer exists in the native OS. This error can be fixed if you are also using Panotour (quite typical) as it includes this library. Edit the launch script /usr/bin/AutopanoGiga and extend the library path to include that for Panotour as follows:
[Potential Pitfall]: Upgrading Panotour to version 257 (2017-02-23) is now reliant upon the Ubuntu package libsrtp0: sudo apt-get install libsrtp0
When Panotour fails to launch from the icon, try the command line to see the error messages: /usr/bin/Panotour
[Potential Pitfall]: The LivePano product (embedding a video in a spherical panoramic image) does not "build" a tour on Linux and their support on this product is completely unresponsive.
Spherical Panoramic Image Manipulation Tools:
- Panini perspective tool (PVQT): generate perspective views from panoramic and wide angle photographs.
- KrPano: Tools: conversion tools - sphere to cube, cube to sphere, cylindrical to cube
- PanoramaTools.com: original FOSS tools which started the use of this technology
(Prof. Dr. H. Dersch - HFU Furtwangen originator of panotools software)
Sample Spherical Panoramic Photography:
- MountainYahoos.com: Spherical Panoramic Photos of ski resorts
- AirPano.com - airborne panoramics
- 360 Tourist: Panoramas from around the world
- Utah3D: Outdoor Panoramas
- Spherical Panoramas.com
- Panomax: cylindrical (time lapse)
Spherical Panoramic Tutorials:
- part II creating panoramas
- Bubl - consumer spherical panoramic video camera package
- Immersive Media - 360 video equipment and software, also demos
- 360Heros.com - GoPro 360 video mounts for 6 or more cameras. Stereo 3D spherical panoramic mounts also available.
- Elmo QBiC 360 degree rig + Elmo QBiC MS-1 video camera (Full rig: Panoramic-X) - 360 mount for 4 compact QBiC video cameras
[360 Freadom Tutorials]
- JAUNT - 3D stereo spherical panoramic video hardware package (for Oculus or Samsung VR)
Facebook's Surround 360:Facebook has open-sourced both the hardware design and software for their Surround 360 project. Surround 360 is a 3D stereo VR spherical panoramic video project for use with a VR headset (eg. Oculus). The hardware rig holds 17 industrial cameras connected by USB to a computer dedicated to capturing the video. Github hosts the open source software used to capture and stitch the videos together and generate 360 stereo 3D video.
Spherical Panoramic Photography is the 360 degree view of a single point, looking outwards and is enabled by stitching complete coverage of the sphere as formed by that point.
Structure from Motion (SfM) generates an imaging experience where the view is on the outside looking in at the object. This allows for an unlimited number of view points and thus it is impossible to have 100% photographic coverage. Thus photographs are used to generate points to define a 3D point model from which one can generate a faceted 3D model upon which photographic texture maps can be applied. This 3D CAD model can then be viewed from any direction. At first custom viewers were used but now that most browsers support WebGL, it has become the leading web format.
Microsoft is building the Microsoft Photosynth.net software and cloud service to generate SfM models. The Microsoft ICE program stitches photos and Microsoft Photosynth is used to generate and publish the SfM model to the Microsoft cloud. The client not available for Linux.
The first SfM software was developed by universities and public institutions in both the USA and Europe and made available to the open source community.
SfM "Structure from Motion" tool chain and software:
Multiple images / multiple views
Generate Point Cloud/Vectors
Texture mapped model
- Import Images
- Photo Point Matching (SIFT)
- 3D Reconstruction and PBA (Sparse Point Cloud) generates the Dense Point Cloud (.mat and .sift files generated)
- Dense Point Cloud generation
- Generate Surface Mesh Model
- Texture Mapping
Generate sparse point cloud from multiple unordered photos.
Images must have EXIF focal length info.
Outputs bundle.out and “.ply” camera information (view with Scanalyze).
Bundler uses SIFT key point and feature recognition libraries and Ceres large nonlinear least squares solver.
- PMVS2 / CMVS: Clustering Views for Multi-view Stereo: PMVS2 generates a dense point cloud. Uses Bundler to obtain camera parameters. Run Bundle2PMVS to generate input to PMVS2 from Bundler “.out” files. CMVS used to substructure photos and model so that it is manageable. Uses Bundler output. PMVS2 included with CMVS download.
- IFP: SURE: image pairs (stereo) are selected and used to generate a dense point cloud
[source code] Also see LibTSgm
- DLR: SGM Computer Vision Toolkit [source code]
- libmv: unordered images and dense point cloud
- OpenSynther: FOSS version of MS/Photosynth. Uses OpenSurf/ParallelSurf (image matching using FLANN libraries)
- CMP: SfM cloud service (source available) to generate point cloud from images. Various software solutions available:
- Large Scale Sequential Processing (sfmseqv1 and sfmseqv2) eg ordered data if your source is Google Streetview.
- Large Scale Unordered Data Processing (sfm3drv1 and sfmdrv2)
- Classical Unordered Data Processing (using Bundler)
- Multi-View Dense 3D Reconstruction: colored or textured surface models (final step)
Step 2: Generate a triangular faceted mesh model from a point cloud
- MeshLab: mesh generation from point cloud, edit points and 3D triangular mesh models. GUI program.
- PoissonRecon: Screened Poisson Surface Reconstruction. Command line tool to convert ply formatted oriented points into a surface mesh.
- CMP-MVS: mesh/model generator (NVM file >> CMP-MVS format) Command line executable. Newer versions are only available as an MS/Windows executable. No other platforms and no source. Requires CUDA GPU support.
Step 3: View
- Verold: Web GL based viewing of hosted 3d models
- SketchFab: hosted publishing of 3d models viewable by web browser
Integrated FOSS SfM Applications and tool chains:
[source on github]
Separate tools includes:
- Bundler: convert images to point cloud
- SFMToolkit Bundler support tools: BundlerMatcher, BundlerFocalExtractor, BundlerViewer
- BundlerFocal Extractor: manage image EXIF info
- BundlerMatcher: extract and match features. Performs Bundler function but uses GPU for compute improvement. (based on SiftGPU)
- BundlerViewer: Bundler and PMVS2 output viewer based on Ogre
- BundlerToPly: generate 3D point cloud (and normals) “.ply” file
- BundlerCleaner: remove pts
- CMVS: takes SfM image input and generates sets of image clusters of a manageable size. Subdivides image models so processing and use is manageable.
- MeshLab: Display point cloud and generate triangle mesh model (.stl file) from the point cloud
- Insight3d: integrated GUI application. (uses SBA)
- VisualSFM: all-in-one integrated tools and GUI (CMP, SURE, CMVS)
- Point Cloud Generation:
- CMP-MVS: mesh/model generator (NVM file >> CMP-MVS format)
- CMVS/PMVS: takes SfM image input and generates sets of image clusters of a manageable size. Subdivides image models so processing and use is manageable.
- osm-bundler: 3D geometry reconstruction for OpenStreetMap
- Arc3d: cloud web service for non-commercial use
Integrated Commercial Products:
- Agisoft: Linux, Mac, MS/Win (Russia)
- PhotoScan: generate textured polygonal models
- StereoScan: generation of textured 3D models from individual stereo pairs generated by stereo cameras
- Lens: lens calibration software
- Acute 3D: Mac and MS/Win only (France)
- Airbus Astrium: Pixel Factory: MS/Win and Mac
- Eos Systems: Photomodeler: MS/Win only (Vancouver Canada)
- Hexagon Geospatial (Intergraph): Imagine Auto DTM: generates surface models
- Microsoft Photosynth.net: MS/Win only client to their cloud service. Also Microsoft UltraCam
- Autodesk 123D Catch: This product is MS/Win only. Requires a good internet connection to the Autodesk cloud where much of the processing is performed. Uses licensed Acute 3D technology.
Photo Tips for SfM:
- Every part to be reconstructed should be visible on at least 3 images from three distinct but not radically different viewpoints
- There should be a two thirds overlap of images from one image to the next and limited change in camera angle (15-20 deg) from photo to photo. Acute 3D recommends: "For aerial photography, a longitudinal overlap of 80% and lateral overlap of 50% or more are recommended. To achieve best results, acquire both vertical and oblique photographs ..."
- Disable camera auto-rotate and photo stitching features (if available or enabled)
- Disable any post-processing feature which may adjust saturation, hue, de-noising or brightness
- Focused (not blurred) images are best
- Lots of details and textures help in automated image matching
- Fully exposed (no large dark underexposed shadows) images are best. Photos taken at noon may reduce shadows. Indoor photos with fixed light is preferable to flash. Manual exposure settings help reduce the color discrepancies in the texture map. Auto mode can lead to variations if the exposure is changed from photo to photo.
- Use a fixed focal length for all of the photos. Avoid optical and digital zoom changes between photos.
- Avoid fisheye lenses and lenses with extreme distortions
- Planar scenes are hard to work with as the focal length can not be determined
- Reflective surfaces (mirrors), surfaces with no color variation and transparent objects can be problematic for object (non-terrain) models. This often leads to holes in the model.
- Subject must be stationary. Movement changes the positions of the definition points from photo to photo
- Keep photos less that 3200 pixels in length or width (VisualSFM/Sift limitation)
- Retain camera EXIF data in JPEG photos (focal length, sensor size, etc)
- Points too close to (or behind) the camera plane are problematic
- Precision: projected pixel size (m/px) x focal length (mm) x photo's largest dimension (px) = sensor width (mm) x distance to the subject (m)
- PBA: Parallel Bundle Adjustment
- MVS: multi-view stereo
- PMVS: an implementation of a patched based MVS
- SGM: Semi-Global Matching
- DSM: digital surface model
- DTM: digital terrain model
Feature detection, recognition, processing, analyzing, and understanding images and video. This field has been expanded to include tracking and event detection.
- OpenCV: image recognition, image tracking, images/video. Integrated with CUDA/OpenCL to use the GPU.
- CVpreprocessor: GUI for OpenCv
- ROS: Robot Operating System: Includes lots of Computer Vision algorithms for robotic operation and automation.
- SIP: SCILAB Image Processing: filtering, blurring, edge detection, thresholding, histogram manipulation, segmentation, mathematical morphology, color image processing, etc.
OCR: Optical Character Recognition
- Tesseract OCR: convert images to text in over 60 languages. Sponsored by Google.
- Leptonica: image processing library used by Tesseract OCR.
- OCRopus: use of large scale machine learning for addressing problems in document analysis.
- GNU Ocrad: reads images in pbm (bitmap), pgm (grey-scale) or ppm (color) formats and produces text in byte (8-bit) or UTF-8 formats
- Panoramic hosting
- GD Library - graphics library
- XMP Manager - GUI to manage XMP metadata. XMP is a schema for EXIF, IPTC, JFIF,.. metadata within JPEG, PSD, TIFF, AVI, WAV, MPEG, MP3, MOV file formats