Friday, May 22, 2009

Flash and PaperVision Play With Spider has put together a nice experiment using flash and 3D (Papervision).
The demo is a spider crawling around following your mouse in 3D perspective. There is a crontrol panel to alter different characteristics of the spider (Body Scale, Speed and Velocity, Leg Reach, Height (shadow) etc…

Wednesday, May 20, 2009

Streaming A Live Event Using Mogulus

Mogulus live broadcast tool seemed to be able to pull off the task of streaming the show for a pretty decent cost, and with only about 15 minutes of setup time. Their free streaming service only allows for 50 concurrent connected viewers, and for a streaming data rate of around 500kbps, but it may do the trick. We still have to get a feel for how the online streaming shows popularity is going to play out. If you shell out the $350 per month, you can have HD quality streaming, remove all of the ads, have access to a white label player, be provided deep Analytics for your page viewers, and more importantly…have unlimited amounts of viewers. Pretty smoking Deal.

Web Camera in Flash

Setting up a webcam in Flash has always been pretty simple. There are two cases in flash that you would use the webcam in a project: Streaming video for video chat or using it as a tool to take a photo(snapshot). These two cases have completely different purposes and thus you want your camera setup properly for each.

Setup Your Camera
First, let’s setup your camera and a video instance for playback. This code will setup a default camera and default video instance. Both will be setup for 320×240 playback.

1 var camera:Camera = Camera.getCamera();
2var video:Video = new Video();
3 video.attachCamera(camera);
4 addChild(video);

Setup Camera for Streaming Video Chat

Setting up your camera for streaming video chat involves a little more work and planning than just using it to take a photo within the player. Streaming video will require you to sacrifice video quality for speed, especially if you need to sync the video with audio. There are two methods of the Camera class that we will use to balance video quality and frame rate with bandwidth: Camera.setQuality() and Camera.setMode(). setQuality() is used to specify bandwidth and overall image quality of the Camera’s output video. Adobe’s Help Documentation has this to say:

» To indicate that bandwidth use takes precedence, pass a value for bandwidth and 0 for quality . Flash Player transmits video at the highest quality possible within the specified bandwidth. If necessary, Flash Player reduces picture quality to avoid exceeding the specified bandwidth. In general, as motion increases, quality decreases.
» To indicate that quality takes precedence, pass 0 for bandwidth and a numeric value for quality . Flash Player uses as much bandwidth as required to maintain the specified quality. If necessary, Flash Player reduces the frame rate to maintain picture quality. In general, as motion increases, bandwidth use also increases.
» To specify that both bandwidth and quality are equally important, pass numeric values for both parameters. Flash Player transmits video that achieves the specified quality and that doesn’t exceed the specified bandwidth. If necessary, Flash Player reduces the frame rate to maintain picture quality without exceeding the specified bandwidth.
Lets setup our code to have medium compressed quality and a frame rate of 15.

1 var bandwidth:int = 0; // Specifies the maximum amount of bandwidth that the
2 current outgoing video feed can use, in bytes per second. To specify that Flash
3 Player video can use as much bandwidth as needed to maintain the value of quality
4 , pass 0 for bandwidth . The default value is 16384.
5 var quality:int = 50; // this value is 0-100 with 1 being the lowest quality. Pass 6 0 if you want the quality to vary to keep better framerates
7 var camera:Camera = Camera.getCamera();
8 camera.setQuality(bandwidth, quality);
9 camera.setMode(320,240,15,true); // setMode(videoWidth, videoHeight, video fps,
10 favor area)

// Now attach the webcam stream to a video object.
var video:Video = new Video();

Depending on your project, you can change bandwidth, quality, and frame-rate settings to find the best combination. It is recommended to set the video capture size smaller, then stretching it up. This will allow for a higher frame rate since you are sending smaller video that is stretched. The video is a littler blurry, but if you plan on having lots of movement, having a higher frame-rate will be more important.

Setup Camera to take a photo (snapshot)

This type of configuration isn’t a whole lot different the the code example above. The main difference is that we aren’t passing constant amounts of data to a streaming server each second. Instead, we just need to get the camera’s data once. So, we can up the quality and frame rate to our hearts content (granted the user’s hardware allows for the settings).

Here is the above example, but with maxed out configuration for high photo quality.

1 var bandwidth:int = 0; // Specifies the maximum amount of bandwidth that the
2 current outgoing video feed can use, in bytes per second. To specify that Flash
3 Player video can use as much bandwidth as needed to maintain the value of quality 4 , pass 0 for bandwidth . The default value is 16384.
5 var quality:int = 100; // this value is 0-100 with 1 being the lowest quality.
6 Pass 0 if you want the quality to vary to keep better framerates
7 var camera:Camera = Camera.getCamera();
8 camera.setQuality(bandwidth, quality);
9 camera.setMode(320,240,30,false); // setMode(videoWidth, videoHeight, video fps, 10 favor area)
11 var video:Video = new Video();
12 video.attachCamera(camera);
13 addChild(video)

AJAX Web Cam

AJAX Cam is a lightweight webcam script to automatically refresh an image on your webpage without having the whole page refresh. This saves on bandwidth, and makes for a better looking presentation.

Web Cam Driver Robot

Flash Media Server Live Video Record and Playback
Using FMS File Object For Dynamic File Play and Delete

This is an update of the Adobe supplied demo to record and playback a single flv file. This version keeps the same skin but includes user supply of the file name, using the FMS server side File class to provide a list of flv files for the current application instance, calling a server side function and returning results, dynamically maintained list of recorded files to play, deleting of the files and dynamic input of the uri connection string.
Rebuilt and updated of the Macromedia FMS tutorial_record adding in a dynamic uri for connection, disconnecting, a video selection combo that gets the list from the server side main.asc and a delete function. Reset the layers more functionally. Updated components to V2 and removed V1 components

Flash Media Server Text Chat Example

This is a Flash 8 AS 2 update of the Adobe supplied demo for a text chat on FMS server. Includes the V2 UI components and improvment of various coding elements. Improved the code comments.

For FMS2 you do not need a main.asc file in the application folder to try this.

Inside the FLA the following line requires your FMS server URI and then republish the movie:
var c_FmsUri:String = "rtmp://yourFMSdomain/tutorial_textchat/

Thursday, May 14, 2009

FMS Live Service / Application doesn't have permissions for server-side record/append of streams; access denied to stream liveStream

When trying to publish a stream towards a freshly installed Flash Media Server
With a new AppInstance eg rtmp://localhost/live/test, you may hit the following error
When trying to publish the stream

** xml url : http://localhost:1935/fcs/uInfo/live.xml
** NetConnection.onStatus
objectEncoding : 0
description : Connection succeeded.
code : NetConnection.Connect.Success
level : status
** Inbound NetStream.onStatus
clientid : BCAA0IxC
details : liveStream
description : Playing and resetting liveStream.
code : NetStream.Play.Reset
level : status
** Inbound NetStream.currentFps 0
** Inbound NetStream.onStatus
clientid : BCAA0IxC
details : liveStream
description : Started playing liveStream.
code : NetStream.Play.Start
level : status
** Inbound NetStream.currentFps 0
** Outbound NetStream.onStatus
clientid : BCAA0IxC
description : Application doesn't have permissions for server-side record/append of streams; access denied to stream liveStream.
code : NetStream.Record.NoAccess
level : error

To solve this problem proceed as follow or read the

\Program Files\Adobe\Flash Media Server 3\applications\live\readme.txt file

Deploying an unsigned live service

To deploy an unsigned live service:

1. Create a new folder inside the {FMS-Install-Dir}/applications/ folder.

2. If you are replacing the default Adobe signed live service, back up
the following files:
* main.far
* Application.xml
* allowedHTMLDomains.txt
* allowedSWFDomains.txt

3. Copy files from ${FMS-Install-Dir}/samples/applications/live to the directory you created in step 1.

Wednesday, May 13, 2009

Canon 5D MK II - Sick !!!

Computer Vision Interesting Stuff

Research Code

* A rational methodology for lossy compression - REWIC is a software-based implementation of a a rational system for progressive transmission which, in absence of a priori knowledge about regions of interest, choose at any truncation time among alternative trees for further transmission.
To circumvent the lack of knowledge of what distortion measure is more suitable for optimization of the trade-off between image fidelity and coding rate, this coder shall introduce a novel mathematical methodology for rate control by organizing the progressive transmission in accordance with coherence constraints for avoiding forms of behavioral inconsistency. A set of postulates is provided for specifying the ways in which preferences need to be made precise and fit together if illogical forms of behavior are to be avoided. We show that the rational choice for transmission at truncation time t is to select bit streams which have the maximum expected increase in utility per coding bit, where ``rational'' must be understood in the sense that it cannot lead the transmission system into forms of behavioral inconsistency. This method is then used within a progressive transmission scheme to produce a new compression method called rational embedded wavelet image coding (REWIC). (by J.A.Garcia, Rosa Rodriguez-Sanchez, J. Fdez-Valdivia / Computer Vision Group. University of Granada. / University of Granada)
* Active Appearance Models - Extensions and Cases - This site acts as home for the the AAM-API which is a free C++ implementation of the Active Appearance Model method. Several results and models are also given. ( Section for Image Analysis / The Technical University of Denmark)
* Associative Memory for Face Memorization and Recognition - Free fully self-contained C++ code for on-the-fly storing and retrieving of patterns, such as binary coded faces, using projective associative memory. (by Dmitry Gorodnichy / Computational Video Group / NRC-CNRC)
* Automatic edge thresholding - Automatic edge thresholding as described in paper by Venkatesh and Rosin (GMIP, Vol. 75, pp. 146-160, 1995) (by Paul Rosin, Svetha Venkatesh / Cardiff University / Cardiff University)
* Belief Propagation for Early Vision - Fast algorithms for MRF based stereo and image restoration. (by Pedro Felzenszwalb)
* BrainTech's Odysee Development Studio - Commercial program - A drag-and-drop environment for vision system prototyping and testing (a la Wit, Vision Blox, Khoros, etc.). It is also an open architecture so that one can import their own C/C++ functions. (by Ajay Sidda / Odysee / BrainTech)
* Camera Array Viewer - CAView is a free package about a 3D viewer from multiple input images (image-based rendering) using on-the-fly geometry reconstruction.
CAView includes an algorithm that reconstructs the scene geometry in the form of a 2D mesh model, which runs fast and gives good rendering quality. It could be easily extended and used in 3D video conferencing applications. (by Cha Zhang / Advanced Multimedia Processing Lab / Carnegie Mellon University)
* Camera Calibration - Routines for calibrating using Roger Tsai's perspective projection camera model. (by Reg Willson / CMU)
* CMVision Color Machine Vision Library - A free low level color vision processing library, which is able to threshold and calculate connected components of 640x480 60fps video streams entirely in software. (by James Bruce / CORAL research group / Carnegie Mellon University )
* Collective rationality for the allocation of bits - CORAL is a software-based implementation of a new coder scheme that in absence of a priori knowledge about regions of interest propose a new method for bit allocation which can be used with reasonable internal consistency and acceptable image fidelity.
The effectiveness of a coding method can be improved through a space-varying filterbank tree representation of the image, and this property can be conveniently exploited using appropriate bit allocation strategies among the spatial segments of the image. In CORAL we examine the conditions for achieving a rational agreement on the distribution problem by stating axioms that its solution must obey in absence of a priori knowledge about regions of interest. Firstly, a measure of benefit avoiding certain forms of behavioral inconsistency is to be assigned to each possible bit allocation in such a way that each region's preference may be inferred between any two bit allocations from their respective benefits. Secondly, individual regions are to agree on an allocation of bits which is then to be brought about by a joint strategy, but, under what conditions is their agreement rational? CORAL propose a characterization of rational agreement whose solution is an application of a general procedure for cooperative action where each may benefit only on terms which permit proportionately equal benefits to others. Experimental results are given to evaluate the performance of the strategy of COllective Rationality for the ALlocation of bits (CORAL), based upon a validated predictor for visual distinctness from digital imagery. (by J.A.Garcia, Rosa Rodriguez-Sanchez, J. Fdez-Valdivia / Computer Vision Group. University of Granada. / University of Granada)
* Compound Gain: A visual distinctness metric for coder performance evaluation - CG is a visual distinctness metric that constitutes an alternative to PSNR for evaluating the performance of compression methods. ( Computer Vision Group / University of Granada. Spain)
* Convex grouping code - Robustly locates salient convex collections of line segments in an image. (by David Jacobs)
* Coriander - Coriander is a 1394 camera controller for Linux. It let you control the camera, plus save, FTP, stream and display live video. (by Damien Douxchamps / Telecom lab / Universite Catholique de Louvain)
* Disparity Analysis of Images - This java-based application estimates the disparity between two images. It works by first detecting remarkable points in both images and then finding the best possible match between the two sets of points. (by Lionel Le Briquer)
* Distance Transform - Fast algorithm for computing the Euclidean distance transform of a binary image and the distance transform of a sampled function. (by Pedro Felzenszwalb / University of Chicago)
* Edge list approximation code - From Nonparametric segmentation of curves into various representations, PAMI 1995 pp 1140-1153. by Paul Rosin and Geoff West.
* EuclidStudio Preview - Preview of an open source project for integration and development of computer vision and video processing libraries. The preview application demonstrates a simple integration of Intel's OpenCV library and the MPEG-4 AVC reference software.
* Gandalf - Gandalf is a computer vision and numerical algorithm library, written in C, which allows you to develop new applications that will be portable and run FAST. Includes many useful vision routines, including camera calibration, homographies, fundamental matrix computation, and feature detectors (includes source code).
Dynamically reconfigurable vector, matrix and image structures in Gandalf allow efficient use of memory. Gandalf has been used to develop the "MoKey" motion editing software, released at IBC'2001 in Amsterdam. MoKey performs automatic inpainting of moving objects over an image sequence, and can also be used to compute an accurate alpha matte or outline of an object. Gandalf currently contains four packages: 1) Common package of simple structures and routines used by the other packages, such as memory allocation, linked lists and error handling; 2) Linear algebra package with a large number of routines for matrix and vector manipulations; 3) Image package defining a general purpose image structure and low-level image manipulation routines; 4) Vision package containing a number of standard image processing, computer vision and numerical routines. The major design features of Gandalf are: (i) Efficient use of memory through dynamically reconfigurable structures; (ii) Emphasis on support of numerical algorithms, especially optimisation; (iii) A very flexible and efficient internal image representation, (iv) A comprehensive set of matrix/vector operations, incorporating implicit matrix transpose & inverse, and in-place computation where appropriate; Exploitation of the computational and compilation speed advantages of C over C++ in reducing the number of layers of abstraction over the raw data, an approach we believe is appropriate for simple objects such as matrices, vectors and images. The documentation for Gandalf comes in two parts. There is a LaTex tutorial with examples available also in HTML (via Latex2html). Reference documentation for Gandalf has also been generated using ObjectOutline, (by Philip McLauchlan / Imagineer Software Ltd)
* General Image Rectification - Re-usable free C++ source code library for performing general image rectification
Rectification is the process of simplifying the epipolar geometry by making epipolar lines in a pair of images co-incident and parallel to the x axis. The code presented here is a free C++ library incl. source code for performing general image rectification given the fundamental or essential matrix. The method used is general and so will work for ANY valid epipolar geometry. The method also has the advantage over other methods of attempting to minimise image distortion caused by rectification and ensuring that disparities will be roughly centred on 0 pixels. (by Daniel Oram)
* Gradient Vector Flow Active Contour - The purpose of GVF active contour is to extract parameterized contour description from images. Matlab implementation is available for both UNIX and Windows. (by Chenyang Xu and Jerry L. Prince / Image Analysis and Communications Laboratory / Johns Hopkins University)
* GREYCstoration : A fast PDE-based algorithm for image restoration. - This web site exposes a fast algorithm for image restoration. Several examples are provided, and the executable can be downloaded for Windows and Unix. (by David Tschumperle / GREYC)
* GSnake - Contour modeling, extraction, detection, and classification.
* Hidden Markov Model routines - Implementation of Forward, Backward, Viterbi and Baum-Welch algorithms. The code follows Rabiner and Juang notation. Written in c. (by Tapas Kanungo / Center for Automation Research / University of Maryland, College Park)
* IIDC Control Library for 1394 cameras - libdc1394 is a library for controlling and acquiring images from a 1394 IIDC compliant camera. (by Gord Peters, Damien Douxchamps, Dan Dennedy & al. / Telecom Lab / UCL)
* Image Segmentation - Implementation of an efficient graph-based image segmentation algorithm. (by Pedro Felzenszwalb / University of Chicago)
* Intel Open Source Computer Vision Library - Computer vision routines, applications and tutorials. Open Source, FREE for academic AND commercial use. Assembly language optimized on Intel's processor line. Areas covered are Geometric Methods, Recognition, Image Pyramids Camera Calibration, Tracking, and Fitting. (by Vadim Pisarevsky, Dmitry Abrosimov , Jean-Yves Bouguet , Gary R. Bradski , Valery Cherepennikov , Michael Chu , Boris Chudinovich , Prof. Trevor , Bob Davies , Prof. James Davis , Victor Eroukhimov , Prof. Irfan Essa , Radek Grzeszczuk , Mark Holler , Prof. Jitendra Malik , Sergey Molinov , Valery Mosyagin , Ara Nefian , Sergey Oblomov , Prof. Pietro Perona , Vadim Pisarevsky, Alexander Pleskov, Chuck Richards, Prof. Stan Scarloff, Stewart Taylor, Prof. Carlo Tomasi / Visual Interactivity Lab / Intel Corporation)
* KLT - An implementation of the Kanade-Lucas-Tomasi feature tracker. (by Stan Birchfield)
* Logical/Linear Operators (by Lee Iverson)
* LTI-LIB computer vison library - an object oriented library with algorithms and data structures frequently used in image processing and computer vision.
The LTI-Lib is an object oriented library with algorithms and data structures frequently used in image processing and computer vision. It has been developed at the Chair of Technical Computer Science (Lehrstuhl fuer Technische Informatik) LTI at the Aachen University of Technology, as part of many research projects in computer vision dealing with robotics, object recognition and sing language and gesture recognition.
* Machine vision without pixels - A tutorial and open source code for finding edges and corners based on the filters used in primary visual cortex. (by Tyler Folsom / DigiPen Institute of Technology)
* MATLAB Functions for Computer Vision - A collection of MATLAB functions including: Feature detection via Phase Congruency, Non-maxima suppression and hysteresis thresholding, Edge linking and line segment fitting, Image denoising, Frequency domain transformations, Functions supporting projective geometry, Surface normals to surfaces using Shapelets, Robust estimation, and more. (by Peter Kovesi / Vision Research Group / The University of Western Australia)
* Maximum-Flow Stereo Algorithm - Code for the maximum-flow formulation of the N camera stereo correspondence problem. (by Sebastien Roy / Universit?de Montr?l)
* MeasTex - A framework for quantitative measurement of image texture classification algorithms.
* MegaWave - Wavelet, Snake and Segmentation source code.
* Microsoft Easy Camera Calibration Tool - a flexible camera calibration technique, which only requires the camera to observe a planar pattern shown at a few (at least two) different (unknown) orientations. (by Zhengyou Zhang / Vision Technology Group / Microsoft Corp.)
* MMach - A Mathematical Morphology Toolbox for the Khoros System
* Modelling the initial stages of visual information processing. - Ret4 - software for modelling and observing reactions of retinal cells
* NIST Handwriting OCR Testbed - OCR software and datasets for UNIX systems.
* Non-Rigid Structure from Motion - Matlab software for reconstructing non-rigid 3D shape from tracking data. (by Lorenzo Torresani, Aaron Hertzmann, and Chris Bregler / Movement Group)
* OpenVIDIA : Parallel GPU Computer Vision - The OpenVIDIA project implements computer vision algorithms on computer graphics hardware, using OpenGL and Cg. The project provides useful example programs which run real time computer vision algorithms on single or parallel graphics processing units(GPU). ( EyeTap Personal Imaging Lab / University of Toronto)
* OpenVIDIA: Parallel GPU Computer Vision - The OpenVIDIA project implements computer vision algorithms on computer graphics hardware in real-time, using OpenGL and Cg.
The OpenVIDIA project implements computer vision algorithms on computer graphics hardware in real-time, using OpenGL and Cg. The project provides useful example programs which run real time computer vision algorithms on single or parallel graphics processing units(GPU). OpenVIDIA utilizes the computational power of the GPU to provide real--time computer vision much faster than the CPU is capable of, and leaves the CPU free to conduct other tasks beyond vision.
* Perceptual Organization Software
* Philip Torr's stereo vision code - routines to generate corner matches between images guided by RANSAC and epipolar geometry, fundamental matrix estimation, synthetic data generation, trifocal tensor estimation, and more. (by Philip Torr / Oxford Brookes University)
* Projective Vision Toolkit - PVT is a series of utilities that allows one to take an image sequence and compute the fundamental matrix and trilinear tensor.
This can be used for such problems as camera self-calibration, structure from motion, camera motion annotation, image stabilization, 3D tracking and recognition, etc. ( Computational Video Group of NRC)
* Real-time dense stereo - E-Stereo is a library that enables to perform real-time dense stereo from 2 or 3 rectified images. It relies on a two-pass algorithm. (correlation-based algorithm + region growing w.r.t. photometric constraints). (by David Demirdjian / Vision Interfaces / MIT)
* Salience distance transform - The salience distance transform incorporates edge strength information into the distance transform. The output is more robust and informative as input for techniques such as snakes. (by Paul Rosin, Geoff West / Cardiff University)
* Savitzky-Golay Filters for 2D Images - This web page describes the derivation of the Savitzky-Golay filters for 2D images, gives MatLab routines for computing the filters, and gives C files with the filter coefficients. (by John Krumm / Vision Technology Research Group / Microsoft Research)
* sba: A Generic Sparse Bundle Adjustment C/C++ Package Based on the Levenberg-Marquardt Algorithm - Generic sparse bundle adjustment for multiview reconstruction vision tasks. sba exploits the sparse structure of the problem to efficiently minimize the image reprojection error. (by Manolis Lourakis / Computational Vision and Robotics Lab / Foundation for Research and Technology - Hellas)
* Segmentation of Skin-Cancer Images - Implementation of an algorithm for segmenting images of skin cancer and other pigmented lesions (see Image and Vision Computing, January 1999, pp. 65-74).
An automatic method for segmention of images of skin cancer and other pigmented lesions is implemented. This method first reduces a color image into an intensity image and approximately segments the image by intensity thresholding. Then, it refines the segmentation using image edges. Double thresholding is used to focus on an image area where a lesion boundary potentially exists. Image edges are then used to localize the boundary in that area. A closed elastic curve is fitted to the initial boundary and is locally shrunk or expanded to approximate edges in its neighborhood in the area of focus. Segmentation results from twenty randomly selected images show an average error that is about the same as that obtained by four experts manually segmenting the images. (by L. Xu, M. Jackowski, A. Goshtasby, C. Yu, D. Roseman, S. Bines, A. Dhawan, A. Huntley / Intelligent Systems Laboratory / Wright State University)
* SketchUp - A demo package for recognizing hand-drawn sketches through Size Functions. ( Vision Mathematics group / University of Bologna)
* SRI Stereo Engine Software - fast stereo software for PCs. It performs disparity calculations and filtering in real time on images up to 320x240 in size. ( SRI Artificial Intelligence Center / SRI International)
* SSD tracking matlab toolbox (Jacobian Factorisation based) - Matlab toolbox for SSD based tracking, in which we implemented the Jacobian Matrix factorisation of Hager and Belhumeur. In this toolbox we have additionaly implemented our Jacobian matrix factorisation for a projective motion model (see paper: Real-time tracking and estimation of plane pose, Jos?Miguel Buenaposada Biencinto, Luis Baumela Molina. Proc. of International Conference on Pattern Recognition, ICPR 2002. Vol II, pp. 697-700, IEEE. Quebec, Canada, August 2002."). (by Jose M. Buenaposada, Luis Baumela / Technical University of Madrid (Universidad Polit?nica de Madrid))
* Statistical Discriminant Learning for Face Recognition - Matlab source code for Linear/Quadratic/Kernel Discriminant Learning algorithms, which can be used for applications such as face recognition. (by Juwei Lu / Multimedia Laboratory at the University of Toronto / University of Toronto)
* Steerable Pyramid
Check Eero's home page for a tar file. (by Eero Simoncelli)
* Stereo Calibration - free java-based software for camera calibration and stereo rig calibration. The device uses a calibration object.
Non-linear estimation of the parameters of a single camera. correction of distortion. Non-linear estimation of the parameters of a stereo-rig from several positions of a calibration object. 3D reconstruction and metrologic statistics. acquisition of images. (by Matthieu Personnaz / MOVI / INRIA)
* Stereo Matching and Evaluation - A stand-alone C++ implementation of many stereo algorithms including an evaluation module using ground truth and prediction error (by Daniel Scharstein, and Richard Szeliski / Middlebury Stereo Vision Research Page / Middlebury College)
* SUSAN - Low-level image processing.
SUSAN is an acronym for Smallest Univalue Segment Assimilating Nucleus. The SUSAN algorithms cover image noise filtering, edge finding and corner finding. (by Steve Smith / Oxford University)
* TargetJr - A C++ Computer Vision Environment - C++ programing environment with libraries to support: image processing; image segmentation; camera modeling; 2-d and 3-d geometry; a graphical user interface based on FRESCO.
TargetJr has been developed over the last 10 years, starting at GE's Corporate R&D Center. Currently TargetJr is used by a number of vision research groups with emaphasis on geometric algorithms and object recognition. TargetJr is written in C++ and organized into a number of libraries including: numerics; spatial objects; image; image processing; segmentation; computational geometry; 3-d modeling; and user interface. (by Joseph Mundy, William Hoffman, Andrew Fitzgibbon, Peter Vanroose and Rupert Curwen / GE Corp. R&D, Oxford University, University of Leuven)
* Texture Synthesis and Analysis by Rupert Paget - Fast texture synthesis by nonparametric MRF modelling. Source code is provided, plus many free textures.
Fast Semi Causal Nonparametric Markov Random Field Texture Synthesis. This algorithm is a cut down version of the algorithm published in IEEE Transactions on Image Processing 1998. In this version, it has been rewritten for a single cpu machine. To maintain speed of synthesis, the update function UpdateFn() has been set to return the maximum value. If this was modified to return a portion of the maximum value, then the synthesis would take longer, but there would be a gain in quality. If you do decide to modify the code, be careful, as I have not put in any safeguard checks. Best to fully understand the whole code, before modifying it. Recently there has been quite an influx of nonparametric sampling techniques for texture synthesis, this is because it has been the nonparametric models that have had the greatest success at synthesising arbitrary textures. This technique uses a multiscale approach, which has the advantage that only a small neighbourhood is required. This fast version implements a modification based on Ashikhmin's Synthesizing Natural Textures. As noted in his work, the L2 norm may not be the best measure to test for perceptual similarity between two neighbourhoods. Instead, we may note that if we are only taking pixels from the input image (and not sampling from a larger distribution), then when we iterate a respective pixel, we can be assured that each of its defined neighbours occur within the input image. Speed can be gained if, instead of doing a exhaustive search, we only sample from those pixels which have the same neighbour. In this algorithm I have modified Ashikhmin's approach by using our previous algorithm, and sampling from all pixels which have at least one of its neighbours the same colour as its respective neighbour of the pixel being iterated. This algorithm works well for natural textures which have a pixelwise noise distribution. (by Rupert Paget / Swiss Federal Institute of Technology - Computer Vision Group / Swiss Federal Institute of Technology)
* The Reading People Tracker - The Reading People Tracker is a software for tracking people in camera images for visual surveillance purposes.
The Reading People Tracker is written in C++. It originates from research work on people tracking for automatic visual surveillance systems for crime detection and prevention. It was built within the context of two PhD theses (by AM Baumberg and NT Siebel) and contains many image processing algorithms. It is easily maintainable and well documented. Therefore it can (and has already been) easily be adapted to new requirements and different projects. The Reading People Tracker contains the necessary functionality to read video sequences from hard disk or a video camera (IEEE1394/DV), to manipulate the images with image filters and to analyse them with a number of detection and tracking modules. (by Nils T Siebel, Adam Baumberg / Cognitive Systems Group / Christian-Albrechts-University of Kiel)
* ToolDiag - Pattern recognition of multivariate numerical data.
* Uncalibrated Stereo by Singular Value Decomposition - This stereo algorithm allows to match features across a pair of stereo images with unparalleled algorithmic simplicity and neatness. Results are comparable to complex relaxation methods. Its simple implementation has made it a good off-the-shelf solution for a number of researchers needing a fast a easy-to-integrate matching module. (by Maurizio Pilu / Hewlett Packard Research Laboratories)
* University of Calgary vision software - Includes chain code, Hough transform, and others.
* UNL Fourier Features (UFF) - An implementation of a general purpose 2-D shape description method. (by Thomas Rauber)
* VISCA(tm) Control Library - libVISCA is a library for controlling a VISCA compliant camera (such as several camera blocks from Sony) (by Damien Douxchamps / Telecom Lab / UCL)
* Visual Hull Modeling Library - A linux library for building a polyhedral representation of the visual hull, from a set of binary images and the corresponding camera calibration matrices. (by Jean-Sebastien Franco / MOVI - Models for Vision / INRIA Rhone-Alpes)
* VXL - C++ libraries for Computer Vision - The Vision-something-Libraries are a collection of C++ libraries designed for computer vision research. It was created from TargetJr and the Image Understanding Environment (IUE) with the aim of making a lighter, faster and more consistent system. VXL is written in ANSI/ISO C++ and is designed to be portable over many platforms. It is developed and used by a consortium including groups from the Universities of Leuven, Oxford, Manchester, and RPI, GE CRD. ( VXL Consortium)
* XVision visual tracking software - Application independent, configurable interface to high-speed tools for visual feature tracking. Uses include tracking a person's eyes and mouth, gesture recognition. Contains interfaces to many popular cameras and frame grabbers. (by Greg Hager / Computational Interaction with Physical Systems)
* ZipPack Polygon Mesh Zippering - Combines several range images into a polygonal mesh.

Image Processing Toolkits

* 2D and 3D Image Filter: Facor. - Facor is an image filter suitable for enhancement of wide variety of 2D and 3D images, including medical diagnostic images (commercial software).
Facor image filter is a program that detects image structures and distinguishes them from a noise in digital images. Based on this detection, it is possible to suppress noise, or to emphasize image structures, or both. This processing improves the Signal to Noise Ratio and visual presentation of images. (by Michael Semenchenko)
* Able Image Analyser - Windows application for image analysis, processing and measurement (commercial software).
Able Image Analyser supports image analysis functions that include dimensional, gray scale and 24 bits color measurements: distance, area, angle, point, line, pixel profile, histogram etc. (from images or selections) with statistics that calculate basic statistics (count, mean, median, minimum, maximum, range, variance, standard deviation, coefficient of variation, skew and kurtosis) and frequencies. Spatial calibration is available to provide real world dimensional measurements such as kilometers, centimeters, millimeters, nanometers, microns, cm, miles, etc,. for both linear and area measurements. All manual measurements are written into a spreadsheet, where you can enter and edit data as well. The measurements can be exported as CSV, HTML or ASCII file formats. The images can be exported as RGB, HSV or 8 Bit channels, generating a matrix with the decimal or hexadecimal values of the image pixels, in order to process them in another application. Able Image Analyser provides for geometric transformations such as rotate, resize, merge, flip horizontal and vertical, rotate or flip selection. The program is a multiple document interface (MDI) application supporting any number of windows (images) simultaneously. The program supports standard image processing functions such as subtract background, brightness and contrast manipulation, invert image color, channels manipulation, spatial convolutions with user-defined convolution masks and morphing filters. ( MuLabs)
* AcquireNow - A real-time image acquisition and processing product. (Commercial product $$).
The product includes a COM (Component Object Model) component, which allows developers to create powerful imaging applications quickly and easily using COM supported languages such as C++ and Visual Basic. The AcquireNow package include the AcquireNowClient application. AcquireNowClient is a stand-alone application, which can be used to acquire, display, and save images to disk. The AcquireNowClient application also allows the user to perform real time image averaging, scaling and flat fielding. Source code for the AcquireNowClient application is included, and can be used by customers as a base for their own imaging applications. ( Boulder Imaging, Inc.)
* AdOculos - PC-based image processing without the need of extensive programming knowledge
The following image processing functions are realized as DLLs. The complete C source code of these DLLs is part of the standard pack. Point, local and global, morphological operations Texture, image sequence Histograms procedures Hough and color transformations Automatic counting and interactive measuring Pattern recognition, graylevel profile General purpose and display functions ( The Imaging Source)
* An Image Processing Laboratory - IMLAB is a free open source graphical application for Scientific Image Processing that runs in Windows, Linux and many other UNIX systems. It supports multiple windows, data types including 32 bit integers, 32 bit real numbers and complex numbers. It is implemented in C++ and also in C to provide a very simple way to add new functions. It has many image operations and supports several file formats.
* An Imaging Library - IM is free open source set of libraries that contains a series of C functions and C++ classes for handling digital images. It has support for capture devices, multipaged image file formats, many image processing functions, scientific data types and attributes. ( Tecgraf/PUC-Rio)
* Aphelion - Commercial image processing and understanding package for Windows. Features a rapid prototyping environment, image processing and object recognition libraries, and a vision tutorial.
Aphelion is a commercial software product which can be used to quickly develop vertical imaging applications. It is a comprehensive and powerful development environment and a delivery vehicle for image-based applications, including a Graphical User Interface, Image Processing libraries available as DLLs or ActiveX components, a Visual Basic compatible scripting language, a chart server, etc. Aphelion provides the very latest developments in mathematical morphology and symbolic representation/recognition, as well as effective tools for quantitative analysis, microscopy, pattern recognition, and classification. (by Bruno Lay / Amerinex Applied Imaging Inc.)
* AutoTrace - AutoTrace converts bitmaps to vector graphics (by Martin Weber)
* Bersoft Image Measurement - Measure length, angle, segments, perimeter and area in digital images. Commercial package for windows.
Bersoft Image Measurement runs under Windows 9.x/NT and it is intended to measure length, angle, segments, perimeter and area in digital images. It can be used in multiple scientific disciplines, such as Biology, Ecology, Geography, Agronomy, and Natural Sciences. It also can export matrixes (Exporting RGB values) with the decimal or hexadecimal values of the image pixels. The DEMO version can realize all the functions, but only over images saved in a propietary format: Image Bersoft Bitmap (bim extension). ( Bersoft)
* CImg : A C++ Image Processing Library - CImg is a free C++ toolkit providing a set of classes designed to process and display images. Contains algorithms classically used in computer vision. (by David Tschumperle / Odyss? Lab / INRIA Sophia Antipolis)
* Clemex Vision - Commercial software for analysis of images from microscopes.
* Color Reduction and Multithresholding - Free image processing software for color reduction and quantization, multithresholding, Hough Transform etc. (Image and Multimedia Laboratory / Democritus University of Thrace, Greece)
* Common Vision Blox - A modular and open software development platform to solve image processing and machine vision applications (Windows, Commercial product) ( Stemmer Imaging GmbH)
* CppIma - C++ image processing library.
* CVIPtools - GUI-based computer vision and image processing tools, ANSI-C source code and libraries for Windows95/NT and UNIX, extended computer imaging TCL shell.
Also contains an extended Tcl shell with all the computer imaging functions. ANSI-C source code and libraries for image analysis, image compression, image enhancement, image restoration, and many imaging utilities. Used for both research and education, as well as applications development. (by Scott E Umbaugh, Greg Hance, Arve Kjoelen, Kun Luo, Mark Zuke, Yansheng Wei and others / CVIP Group / Southern Illinois University at Edwardsville)
* DTU Image Viewer and Analyser - The DIVA consists of a number of image analysis functions collected in C++ template image classes and a windows interface, which handles a wide variety of different image file formats and pixel types. Everything is available as source code. (Section for Image Analysis / Technical University of Denmark)
* Edge Detection and Image Segmentation - EDISON is a system with a GUI that performs mean shift based discontinuity preserving filtering and image segmentation as well as edge detection with embedded confidence. The operations can be executed either alone or synergistically. ( Robust Image Understanding Laboratory / Rutgers University)
* EdgeDetector - JavaBean for edge detection using Canny algorithm (commercial software)
EdgeDetector is a JavaBean that implements Canny edge detection algorithm. The Canny algorithm is advantageous with its capability of anti-noise, subpixel-level detecting accuracy, and one-pixel width of resulting edges. The employment of the Canny algorithm is able to detect edges of an image with much less loss than the use of other algorthms of edge detection. The EdgeDetector can be integreted into any Java application or Applet in Java 1.1 or later visions with the JDK or JavaBeans environment. An application example is included in the software package.
* EIKONA - A family of general purpose, highly portable image processing applications. The full implementations contain more than 500 routines. Demos available. (commercial software) (AlphaTec )
* eVision - Commercial image processing and analysis toolkit for use in industrial applications on Windows platforms. There is also a rapid prototyping development environment called EasyAccess.
eVision provides all familiar tools in image processing such as image linear and morphological filtering, projections, profiles, geometric transforms, color conversions, blob analysis, pattern matching as well as application libraries such as OCR, matrix code reading, mark inspection. These tools are provided in a form well suited for rapid application development and are extremely fast. ( Euresys)
* Exbem: Scientific Image Processing & Analysis - Exbem is a software for scientific image processing & analysis under MacOS. Exbem handles images, QuickTime movies, and live-video. Multiple operators can be assigned to multiple ROIs. ( Pixlock e.K. (company))
* Free portable image processing software - AnaLogic is a developer of machine vision hardware and software, has made its image processing library for Texas Instruments digital signal processors available as a free download.
* Geographic Resources Analysis Support System - An open source, Free Software Geographical Information System (GIS) with raster, topological vector, image processing, and graphics production functionality that operates on various platforms through a graphical user interface and shell in X-Windows. It is released under GNU General Public License (GPL).
* Graphics Gems - Generally useful graphics and image processing subroutines from the similarly-named books.
* HALCON - a commercial computer vision tool consisting of an image processing library, C and C++ interfaces, and a rapid prototyping tool called HDevelop.
HALCON is manufactured by MVTec, which is a spin-off of the Technische Universit? M?chen and the Bavarian Research Center for Knowledge Based Systems (FORWISS). The company is specialized in software solutions for image processing using standard hardware and framegrabbers. HALCON covers a wide field of applications like factory automation, quality control, medical image analysis, aerial image analyis, surveillance, research, and education. ( MVTec Software GmbH)
* HIPS - General Unix-based Image Processing System with C source code (Commercial package $$)
HIPS is a software package for image processing that runs under the UNIX operating system. HIPS is modular and flexible, it provides automatic documentation of its actions, and is almost entirely independents of special equipment. It handles sequences of images (movies) in precisely the same manner as single frames. Over 200 such image transformation programs have been developed. HIPS is written in C, provided as source code, and is both a set of separate programs as well as a callable library. (by Michael S. Landy)
* Image processing and analysis in Java - ImageJ is a public domain Java image processing program inspired by NIH Image for the Macintosh.
It runs, either as an online applet or as a downloadable application, on any computer with a Java 1.1 or later virtual machine. Downloadable distributions are available for Windows, Mac OS, Mac OS X and Linux. It can display, edit, analyze, process, save and print 8-bit, 16-bit and 32-bit images. It can read many image formats including TIFF, GIF, JPEG, BMP, DICOM, FITS and "raw". It supports "stacks", a series of images that share a single window. It is multithreaded, so time-consuming operations such as image file reading can be performed in parallel with other operations. It can calculate area and pixel value statistics of user-defined selections. It can measure distances and angles. It can create density histograms and line profile plots. It supports standard image processing functions such as contrast manipulation, sharpening, smoothing, edge detection and median filtering. It does geometric transformations such as scaling, rotation and flips. Image can be zoomed up to 32:1 and down to 1:32. All analysis and processing functions are available at any magnification factor. The program supports any number of windows (images) simultaneously, limited only by available memory. Spatial calibration is available to provide real world dimensional measurements in units such as millimeters. Density or gray scale calibration is also available. ImageJ was designed with an open architecture that provides extensibility via Java plugins. Custom acquisition, analysis and processing plugins can be developed using ImageJ's built in editor and Java compiler. User-written plugins make it possible to solve almost any image processing or analysis problem. ImageJ is being developed on Mac OS X using its built in editor and Java compiler, plus the BBEdit editor and the Ant build tool. The source code is freely available. The author, Wayne Rasband (, is at the Research Services Branch, National Institute of Mental Health, Bethesda, Maryland, USA
* Image Processing Library 98 - A platform independent image manipulating C/C++ library
The purpose of the library is to be useful, for combining tailor-made image processing and interpretation with standard methods for acquisitions, processing, display and storage of image information. Emphasis is put on interactivity in projects made by students, as well as for advanced research and development. (by Ivar Balslev and Ren?Dencker / The Maersk Mc-Kinney Moller Institute for Production Technology / University of Southern Denmark, Odense University)
* Image Restoration and Inpainting - Large Library in c++ for slow and fast image restoration, inpainting, morphology, and distance mapping. (free software) (by Bernard De Cuyper)
* Image Restoration and Inpainting in C++ - New free software about image restoration and inpainting using Level Set technology.
The project is open and related to image enhancement. It permit interested people to get a first idea and move up ;-)
* Image-Pro Plus - Commercial image analysis software used in biological and industrial microscopy applications.
* ImageGear - Commercially available imaging toolkit for Windows, UNIX, and MAC. Supports all of the popularly used graphics file formats.
ImageGear Professional Edition supports over 700 imaging functions, full multi-threading and easy Internet integration. ImageGear includes analysis, correction, and manipulation of both computer-generated and scanned images, "special effects", file format conversion, image enhancement through color reduction/promotion/dithering, and GUI (Graphical User Interface) functions. ( AccuSoft Corporation)
* ImageLib - An Image Processing C++ Class Library (template based)
ImageLib is a C++ class library providing image processing and related facilities. The main set of classes provides a variety of image and vector types, with additional modules supporting scalar and vector quantisation, wavelet transforms, DCT transforms, and simple histogram operations. (by Brendt Wohlberg / University of Cape Town)
* IMAQ Vision - Adds machine vision and image processing functionality to LabVIEW and ActiveX containers (National Instruments)
* ImgStar Image Processing Tools - Complements Pbmplus with edge detection, high/low/band-pass filters, thresholding, etc. (by Simon Winder)
* ImLib3D - ImLib3D is an open source C++ library for 3D (volumetric) image processing. It comes with an optional viewer that features 3D (OpenGL) multiplanar.
Templated: ImLib3D images are STL-like templated containers. This means you can create images of arbitrary types (examples: float, int, complex, 3D vectors for deformation fields, ...) Iterators: ImLib3D provides STL-like iterators for moving around images. This provides a much faster, more efficient and easier to use framework. This also provides a common simple syntax for moving around images in special ways, like in masked images or rectangular sub-zones in an image. Speed: ImLib3D is very fast. Iterators hide all the gory details of making it fast. Command line: All image processing operators can be called from the unix command line. This is, with the viewer, important for easy image processing experimentation. Fast BSpline interpolation (thanks to Unser et all.) Rigid, affine, deformable registration (thanks to O.Musse) Very fast fft (thanks to fftw) Image processing (arithmetic,convolution,morphological operations...) 3D image viewer. (by Marcel Bosc, Torbjorn Vik / LSIIT/IPB ULP Strasbourg France)
* Intel Image Processing Library - Optimized assembly MMX code for image processing, pattern recognition, signal processing, and matrix manipulation. The computer vision code was folded into the Integrated Performance PRimitives library and it is no longer free. ( Intel Corporation)
* Interactive Data Language (IDL) - IDL is a development environment for data visualization, 2D and 3D graphics, and image processing.
* IPTool - Freeware image processing toolkit for Windows
* Karma Library - Image processing and interprocess communications toolkit
* Khoros - An integrated software environment for data exploration and visualization, visual programming and simulation, and sofware development.
* LaboImage - Image processing and analysis toolkit for Windows or X11/Motif.
* LEADTOOLS Imaging Development Toolkit - commercial toolkit that supports loading, saving, converting, and processing of color, greyscale, and document images - Windows-based
commercial toolkit that ( LEAD Technologies, Inc.)
* LookingGlass Real-time ImageProcessing System - multithreaded PC-based image proccessing environment that supports realtime video processing.
LookingGlass is an Image Processing Environment for developing imaging applications and for research and development of new image system. LookingGlass supports real-time live video processing from VideoForWindow compatible device, and also supports BMP, JPG, GIF89 and AVI or user can write a dll to support other vdo format or image acquisition device. LookingGlass can produce AVI file, sequence of BMP or JPG files, or just display images to screen, or users can write a dll to do what ever output they want. LookingGlass is derived from RobotVision2(, so LookingGlass uses the pipeline idea and support using the same IP-DLL as RobotVision2. (by PongSuvan)
* LuaMat: An Image Processing Script Language - Image Processing script language based on Lua and OpenCV library. Includes common detection and segmentation algorithms. Can be used for rapid prototyping in interactive mode. Runs under Windows. Shareware.
* Matlab Pyramid Tools - MatLab tools for multi-scale (pyramid) image decomposition.
This includes Laplacian pyramids, QMFs/wavelets, and steerable pyramids as well as fast convolution routines, histogram tools, and synthetic image generation.
* Matrox Imaging - Matrox Imaging Library (MIL) is a development toolkit for machine vision, medical imaging and image analysis. ActiveMIL, a collection of ActiveX controls for managing image capture, transfer, processing, analysis and display is bundled with MIL. Additional software includes Matrox Inspector, an interactive Microsoft?Windows?based prototyping tool and an intelligent camera interface utility.
* Microsoft Vision SDK - Visual C++ library for vision which defines an image object and supports digitizer independent image acquisition.
* Mimas Toolkit - The Mimas Toolkit if an open source library that contains a variety of image processing, computer vision and mathematical tools.
Mimas's original emphasis was on real-time computer vision, although it has grown to encompass much more. It is actively supported by the Microsystems and Machine Vision Laboratory at Sheffield Hallam University, UK. (by Bala Amavasai and Stuart Meikle / Microsystems and Machine Vision Laboratory)
* MontiVision Development Kit - A DirectX-based development kit for vendor independent image and video processing applications, programmable via COM interfaces. Contains a free development environment. (commercial software)
* MRF image segmentation - Platform independent implementation of a Markov random field based supervised image segmentation algorithm. ( SZTE)
* NeatVision: An Image Analysis & Software Development Environment - NeatVision is a Java based image analysis and software development environment. It provides high level access to a wide range of machine vision algorithms through a well defined and easy to use graphical interface. NeatVision is distributed as a shareware product.
NeatVision contains over 200 image and general data processing algorithms. Users can extend the core NeatVision library using the developers interface, a plug-in which features, automatic source code generation, compilation with full error feedback and dynamic algorithm updates. The Developers interface supports algorithm development based on Java AWT Imaging, Java 2D Imaging and Java Advanced Imaging. NeatVision is primarily an image processing application and offers an extensive range of image analysis and visualisation tools (these include zoom, pseudo colour, intensity scan, histogram and 3D profile mesh). In addition, the ability to read and write a wide range of image file formats is supported. ( Vision Systems Laboratory / Dublin City University)
* NeuroCheck - Commercial Windows-based image processing system for automatic presence verification, bar and DataMatrix code reading, character and pattern recognition, robot guidance and gauging.
NeuroCheck?/sup> is the complete framework for configuring and operating industrial visual quality control systems. Its powerful graphical tools enable the user to easily develop solutions within a familiar Windows - based environment to achieve rapid system integration into production line processes. ( DS GmbH)
* NewCyber3D - Commercial software for OpenGL 3D graphics, GIS, stereo display, image processing, and visualization
* Nuages - A package for 3D reconstruction from parallel cross-sectional data. It uses the Delaunay triangulation.
* Optimas: Analytical Imaging - Complete commercial image-analysis program for Windows used in biological and industrial measurement environments.
Optimas implements hundreds of measurement, image processing, and image management operations, all available from the graphical user interface. Optimas is designed for the imaging professional who needs the ability to prototype and quickly develop custom imaging solutions, and therefore includes an integrated development environment enabling one to record, edit, and debug macros. It is being used the world over to develop cutting-edge solutions to imaging problems. An Automation Server and Client (formerly known as "OLE Automation") Optimas also allows itself to be controlled via VB or any Automation Client, and conversely can control Excel or any Automation Server via an elegant syntax. Help is richly linked and context-sensitive. ( Media Cybernetics)
* PBMPlus - Image manipulation toolkit.
This is the standard toolkit for Unix, it converts between dozens of formats. A version with many more features called NetPBM is also available, but may not be as easy to install. Some NetPBM patches are available.
* Perl Data Language - An extension to perl that implements fast, compact manipulation of large, N-dimensional data arrays for scientific computing and image processing.
* Phase-based estimation of the optical flow field - Implementation of the phase-based optical flow algorithm described in Gautama, T. and Van Hulle, M.M. (2002). A Phase-based Approach to the Estimation of the Optical Flow Field Using Spatial Filtering, IEEE Trans. Neural Networks, 13(5), 1127--1136. (by Temu Gautama / Laboratorium voor Neuro- en Psychofysiologie, K.U.Leuven)
* PiXCL and geoPiXCL - A commercial image processing scripting language and Win9x/NT/2000 EXE builder for TWAIN scanner and digital camera image sources. geoPiXCL adds geographic imagery extensions. IP and geo library APIs are available. (by Stewart DIBBS)
* PixeLook - PixeLook is a powerful set of components for Delphi 6 for creating professional-looking image- and 2D-data processing applications.
Features at glance: - Windows bitmap images (8-bit grayscale, 8-bit indexed color, 24- and 32-bit true color) are supported; - Custom multichannel 2D-data of the following types: byte, 16-bit integer (unsigned, signed), 32-bit integer, 32- and 64-bit float) are supported. For example, you can define in your program 2D-data where each 'pixel' is a vector of 10 32-bit float numbers. - Big images and data matrices are easily handled using Windows memory-mapped files concept - Components for visualization of single images, stereo images and image sequences with scrolling/zooming capabilities are included; - Components for 2D- and 3D-plots visualization are included; - All visualization components can contain graphic layers; - Graphic layers components (fully custom layers, layers of vector objects, raster layers) are included; - Very sophisticated image viewer with image analysis tools (histogram/thresholding, projections, profiles, aperture, surface, look-up-table transformations, scattergrams) is included; - Plugin-based image processing procedures are supported; - All drawing mouse handling is doing in world coordinates. It is no need to worry about current zoom level and scroller positions in the image window.
* RobotVision2 - real-time image processing software that uses any VideoForWindow(VFW) compatible camera as the image source (by Pong Suvan / Northeastern University)
* RobotVisionCAD - RobotVisionCAD(RvCAD) is an Image Processing Environment for developing imaging applications and for research and development of new image system.
RobotVisionCAD(RvCAD) is an Image Processing Environment for developing imaging applications and for research and development of new image system. RvCAD supports real-time live video processing from VideoForWindow compatible device, and also supports BMP, JPG, GIF89 and AVI or user can write a dll to support other vdo format or image acquisition device. RvCAD can also produce AVI file, sequence of BMP or JPG files, or just display images to screen, or users can write a dll to output images to whatever device they'd like. RvCAD is similar to an electonic logic gate simulation Program. Users drag and drop RvCadProcessor components from the left tree view then connect them together to build an ImageProcessing pipeline. (by pong suvan)
* Scion ImagePC - Scion frame grabber interface and image processing software based on NIH Image. Windows and Mac versions available. (free)
Versions also available for Mac NuBus (inquire). (by Jeff Reidler / Scion Corporation)
* Scorpion Vision Software - Scorpion is a windows-based commercial software package for industrial machine vision applications such as inspection. (by Thor Vollset)
* SDC Morphology Toolbox for Matlab - Matlab add-on: Gray-scale morphological tools for image segmentation, non-linear filtering, pattern recognition and image analysis: watershed, Euclidean distance transform, top-hat, reconstruction. (many real-life demonstrations)
* Sherlock Machine Vision Software - Machine vision and image processing package with intuitive user interface. For commercial machine vision tasks, but free demo allows unlimited use on image files.
Sherlock software is used for rapid development of machine vision applications. Its vision algorithms include measurement, defect analysis, image processing, OCR, barcode reading, search, pattern recognition, etc. The graphical user interface makes it easy to set up sequences of algorithms for an application. It supports a wide variety of line- and area-scan cameras, digital and analog input and output, and frame grabbers. Sherlock programs can be "wrapped" using Visual Basic or OPC. The demo version is the full package but without support for image capture using a frame grabber. (ipd / Coreco Imaging, Inc.)
* SNVision SDK - A windows-based SDK for real-time recognition and tracking. (commercial software)
Advanced object recognition and tracking technology for video surveillance, traffic monitoring, incident detection, biometric authentification. Locates multiple targets extremely fast at any angle scale or resolution. Tolerates noise and light variations. Real-time Image Processing using biologically inspired processing algorithms. (by Simon Thorpe / Brain and Cognition Research Centre in Toulouse (France) / SpikeNet Technology)
* SpikeNET research: object recognition using spiking neurons - SpikeNET is a program designed for simulating very large networks of asynchronous spiking neurons able to perform object recognition (faces, digits, ...) in natural images. (by Arnaud Delorme, and Simon Thorpe / Swartz Center for Computational Neuroscience / University of San Diego California)
* SpikeNet Technology - (Company) Vendor of SpikeNet, a biologically-inspired computer vision system for object detection, recognition, and related applications. (by Simon Thorpe / Centre de Recherche Cerveau & Cognition)
* THBComponentware - THBImage - Commercial windows-based image processing library.
Displays an image with the ability to align, stretch, scroll, zoom and pan it. PreviewScrollWindow for convenient scrolling. Magnification window to take a closer look to any part of the image. Popup menu to access all zooming functions. With databinding capabilities. Supports all common raster image formats BMP, PCX, JPG, TIF, PNG, TGA, PSD. Image processing operations like Resize,Rotate,Crop,Mirror,Brightness,Contrast,Invert... Filter operations like Antialias, Sharpen, Blur... Color Conversion. Easy printing. Clipboard support. Ole Drag&Drop. Image Annotation. Supports .NET,VB,VC,MSAccess. Now with JPEG2000 AddOn - Add the new JPEG2000 compression codec to your application.
* The Delft Scientific Image Processing Library - DIPlib is a scientific image processing library written in C. It contains a large number of functions for processing and analysing multi dimensional image data.
The library provides functions for performing transforms, filter operations, object generation, and statistical analysis of images. (by Michael van Ginkel, Geert van Kempen, Cris Luengo Hendriks, Lucas van Vliet Geert van Kempen Cris Luengo Hendriks Lucas van Vliet / Pattern Recognition Group / Delft University of Technology)
* The Image Processing Tool Kit - Comprehensive set of image processing and analysis routines in the form of Photoshop-compatible plug-ins for Mac and PC, with extensive tutorial. (commercial package $$) (by Chris Russ, John Russ)
* TINA - A set of vision algorithm development libraries written in C
TINA is the result of over 50 man years of vision research. It is a set of libraries providing various levels of infrastructure for people developing vision algorithms. It covers a wide range of activities, from low level image reading, writing and manipulation to complete algorithms for depth estimation from stereo pairs. TINA is used as a research tool by several vision research groups in the UK. It is written in C and following the EU funded OSMIA project it has recently been updated to use gnu autoconfigure and CVS source control, and to separate the core libraries from the user interface specific code. The TINA libraries have now been compiled and used on UNIX, Linux, Mac OS X and Windows under Visual Studio.
* Tracking moving object - Given a sequence of images you can identify target object and track their path. Exports position/speed to excel spreadsheet (by Andrea Giacosi)
* Uratek - Software for real-time object tracking, gaze tracking, and camera motion estimation (by Philippe Guillemant / Artificial Vision and Biophysics Group / Polytechnic University School of Marseille)
* USB camera driver toolkit for LabVIEW - USB cameras and video capture devices are now included in the LabVIEW programming world.
INVENTvisionVFW 1.0 gives you the power to view and capture any VFW (Video For Windows) video devices in any programming language that can interface to activex technology. INVENTvisionVFW can be implemented in VB, VC++, G (LabVIEW) programming environments. This mean that USB cameras and video capture devices are now included in the LabVIEW programming world. This product integrates and works with LabVIEW Picture Control and IMAQ. A real-time overlay is display on the activex control placed on the LabVIEW front Panel. Images can be captured to a 2D Array[U32], Visual Basic Picturebox, LabVIEW Picture Control or IMAQ Image. Images can be loaded from and saved to disk in BMP and JPG formats. (by George Miles / INVENTeering)
* Utah Raster Toolkit - UNIX commands and C libraries for an 8 bits/pixel, 1-255 channel image format.
Contains a nice display tool for X11; it's fast, supports animation and zooms in on any image. Wes Barris' URT extensions are quite useful too.
* UTHSCSA ImageTool - A free image processing and analysis program for windows.
UTHSCSA ImageTool (IT) is a free image processing and analysis program for Microsoft Windows 9x, Windows ME or Windows NT. IT can acquire, display, edit, analyze, process, compress, save and print gray scale and color images.IT can read and write over 22 common file formats including BMP, PCX, TIF, GIF and JPEG. Image analysis functions include dimensional (distance, angle, perimeter, area) and gray scale measurements (point, line and area histogram with statistics). ImageTool supports standard image processing functions such as contrast manipulation, sharpening, smoothing, edge detection, median filtering and spatial convolutions with user-defined convolution masks. IT also has built-in scripting capabilities that allow the user to record repetitive tasks and playback saved scripts to automate image analysis.
* VASARI Image Processing Software - An optimised library in C/C++ running on Unix. Its strengths are handling high-resolution images and colour spaces. Automatically parallel on SMP systems. ( Intelligence Agents and Multimedia Research Group (IAM) / University of Southampton, UK)
* Video OCX - Windows-based interface for easy integration of video capture into your applications. It supports VFW video devices (USB cameras or framegrabber) AND AVI sequences as image sources. ( vision pearls GbR)
* VideoOCX - VideoOCX functions in an ActiveX programming environment and allows you to easily integrate video capture and image processing capabilities into your software program. (commercial software)
VideoOCX Video Capture and Image Processing Capabilities VideoOCX functions in an ActiveX programming environment and allows you to easily integrate video capture and image processing capabilities into your software program. VideoOCX is compatible with all Video-for-Windows (VFW) devices, such as USB cameras (webcams) and framegrabbers in conjunction with a CCD camera or camcorder. VideoOCX allows you to capture video in one simple step. Just drop VideoOCX into your programming application, change a few properties, add a few lines of code and you are ready to go. VideoOCX works smoothly in any ActiveX hosting environment, such as Visual Basic, Visual C, FoxPro and Delphi. VideoOCX applications range from professional scientific image processing and surveillance to computer vision and general multimedia programs.
* VIPS image processing system - free image processing library and interface for unix, mac and windows (Scientific Department / National Gallery, London)
* Visiopharm Integrator System - A commercial, database-driven image analysis system aimed at medical image analysis.
VIS is a database-driven image analysis system, which is fully configurable and extensible. In its standard configuration, VIS is equipped with a wide range of modules for viewing, montage, and segmentation of images. Measurement results from these modules are automatically stored in the built-in database, making data management an integrated part of the work flow. Custom developed image analysis software is provided as plug-in modules and seamlessly integrated into the VIS user-interface.
* Vista - A flexible library of C-routines, command-line filters, and Motif widgets for image representation and manipulation.
* Visus Imaging - Image analysis toolkit and complete systems aimed at researchers and microscopists in Biomedical and Material Sciences. (commercial product $$) (Foresthill Products)
* WiT - Visual programming environment for image processing (demo).
* XCaliper - Commercial Windows NT software toolkit for machine vision and thermal imaging applications. ( FSI Automation)
* XMegaWave, an Image Processing Environment - a freeware graphical windows environment oriented towards image processing, where the user can create his own function in a very easy way.
Some european universities have developed a freeware image processing environment, named XMegaWave (XMW). It runs on Unix workstations or Linux machines, running Motif and X11 windows libraries. XMW includes some classical procedures for image processing (edge detection, segmentation, morphological filters). But the important thing is that XMW is also a programming library, where the user can implement his own image processing algorythm in C in a very very very easy way. The time needed to write the code and debug it is very short, so you can obtain results rapidly. Besides, XMW is a pedagogic tool suitable for using in image processing classes. It can be explained in just one class, and the students can easily implement any kind of image filter. (Image Mathematical Analysys Group (AMI) / University Las Palmas )

Display Tools

* 3DViewnix - Demo of a commercial package.
* FP Image - View/Process Floating Point and integer images in Windows 95/98/NT. Formats include DICOM and user defined formats. Includes a image processing scripting language.
* FP Image for Windows - Scientific/Medical imaging software. Formats include floating point, integer and DICOM. Built-in image processing scripting language, batch processing, 3D solid modeling. ( FP Image)
* FreeImage - FreeImage is an Open Source project for developers who would like to support popular graphics image formats like BMP, JPEG, TIFF, PNG, RAS, PNM, PCX, TGA in their C++ applications for Windows. (by Floris van den Berg, Herv?Drolon)
* GD - a graphics library for GIF creation - provides GIF read/write code in a C library. It also provides minimal image manipulation functions (lines, arcs, text, colors). Includes versions for Unix and Windows systems. (by Thomas Boutell / Boutell.Com)
* GNU Image Manipulation Program (GIMP) - Photoshop-style image editor.
* ImageMagick - Load, display, process, save, and convert images in many formats. Works on Unix, Linux, Windows, and Mac. Includes a display program, a converter, screen capture, animator, and more.
* JPEG - Library source code and simple display tools.
* Jpeg/Dicom library - MFC source code for jpeg/dicom/twain (commercial, but limited free version available)
C++ MFC source code for Dicom, Jpeg, Dib codecs plus TWAIN manager. Up to 32 bits per channel (=96 bpp in RGB mode), 12-16 bits per channel jpeg codec. (by Paolo Brandoli)
* Mesa - Mesa is a 3-D graphics library with an API which is very similar to that of OpenGL.
* MPEG-1 player and encoder
Also: FAQ and fancy VCR-like interface using Motif.
* NIH Image - for Macintosh
* TIFF - Library source code and tools
* VisGenie: a Generic Video Information Visualization System - VisGenie is a Generic Video Information Visualization System
VisGenie is a generic video based information visualization system on computers running Microsoft Windows operating systems, capable of rendering video data in a manner suitable for the research / development purpose instead of entertainment, and visualizing the associated metadata streams. (by Yong Wang, Lexing Xie, and Shih-Fu Chang / Digital Video | Multimedia (DVMM) / Columbia University)
* Volumetric Image Display and Analysis (VIDA) - Demo of a commercial package.
* XAnim - X11 display tool.
Supports many animation and image formats ("everything" except mpeg). Notes on integrating xanim with Web clients/MIME are also available.
* XLI - X11 display tool.
Not as featureful as xv but it understands nearly all the same formats and displays images much more quickly. [BINARY] Source archive is available.
* XV - X11 Image Display tool.
Provides an amazing assortment of image operators, reads and writes images in many different formats.
* Ygl - Emulation of SGI GL library for X11.

Synthetic Data Generators

* Persistence of Vision - Ray Tracer.
* Philip Torr's stereo vision code - routines to generate synthetic data for testing and evaluating fundamental matrix estimation algorithms (by Philip Torr / Machine Learning and Perception Group / Microsoft)
* Radiance - Ray tracer
Produces floating point photometrically accurate images, with emphasis on good light source modeling.
* Random dot stereogram generators - Pictures, programs, and information on single image random dot stereograms.
* Ray Tracers - A nice summary of free ray tracers. (by Eric Haines)
* Rayshade - Ray tracing renderer.
Generates realistic 2D images from a text description of a 3D world.