A generalized pattern recognition system for images developed by the Goldberg group at the NIH/NIA.
Switch branches/tags
Nothing to show
Clone or download
igg Merge pull request #112 from josiahjohnston/Split_bugfix
Make FeatureSpace.Split() behavior more consistent with documentation
Latest commit de98947 May 10, 2017
Permalink
Failed to load latest commit information.
config renamed all haarlick references to haralick. remade build system usin… Dec 21, 2012
examples Add example Jupyter Notebook re: feature calc from Numpy Aug 31, 2016
m4 Checkpoint checkin: added wndchrm sources, and re-libtoolized, autosc… Sep 13, 2013
src clean up warnings Nov 2, 2016
tests upgraded sig file to new output format Nov 2, 2016
wndcharm Make the default behavior of parameter test_size in FeatureSpace.Spli… Apr 25, 2017
.gitignore Built files repository cleanup Nov 1, 2016
AUTHORS Removed test.tif May 11, 2012
COPYING Removed test.tif May 11, 2012
ChangeLog renamed all haarlick references to haralick. remade build system usin… Dec 21, 2012
INSTALL renamed all haarlick references to haralick. remade build system usin… Dec 21, 2012
Makefile.am Adding GITREV git hash to C-wndchrm for more specific version string Nov 1, 2016
Makefile.in Adding GITREV git hash to C-wndchrm for more specific version string Nov 1, 2016
NEWS Removed test.tif May 11, 2012
README.md Update README for v1.60 release Nov 2, 2016
acinclude.m4 Removed test.tif May 11, 2012
aclocal.m4 Fix AC_FUNC_MALLOC/REALLOC issue; PredictedValuesGraph improvements Sep 4, 2015
aminclude.am Removed test.tif May 11, 2012
autogen.sh Final merge with EigenImageMatrix Dec 21, 2012
build.sh Added an explicit check which causes ./configure script to fail if c+… May 29, 2014
compile adding build.sh to touch files in correct order so that users don't h… May 28, 2014
config.guess Checkpoint checkin: added wndchrm sources, and re-libtoolized, autosc… Sep 13, 2013
config.h.in Adding GITREV git hash to C-wndchrm for more specific version string Nov 1, 2016
config.sub checkpoint checkin, config.sub is required for ./configure Sep 16, 2013
configure Adding GITREV git hash to C-wndchrm for more specific version string Nov 1, 2016
configure.ac Adding GITREV git hash to C-wndchrm for more specific version string Nov 1, 2016
depcomp Checkpoint checkin: added wndchrm sources, and re-libtoolized, autosc… Sep 13, 2013
install-sh BEGIN merge of pychrm and wndchrm codebase. Checkpoint checkin 1: Pyc… Sep 11, 2013
ltmain.sh Checkpoint checkin: added wndchrm sources, and re-libtoolized, autosc… Sep 13, 2013
missing BEGIN merge of pychrm and wndchrm codebase. Checkpoint checkin 1: Pyc… Sep 11, 2013
py-compile Checkpoint checkin: added wndchrm sources, and re-libtoolized, autosc… Sep 13, 2013
setup.py Revert "Force Tamura texture values to be consistent across compilers" Oct 31, 2016

README.md

WND-CHARM

WND-CHARM is a multi-purpose image classifier that can be applied to a wide variety of image classification tasks without modifications or fine-tuning, and yet provides classification accuracy comparable to state-of-the-art task-specific image classifiers. WND-CHARM can extract up to ~3,000 generic image descriptors (features) including polynomial decompositions, high contrast features, pixel statistics, and textures. These features are derived from the raw image, transforms of the image, and compound transforms of the image (transforms of transforms). The features are filtered and weighted depending on their effectiveness in discriminating between a set of predefined image classes (the training set). These features are then used to classify test images based on their similarity to the training classes. This classifier was tested on a wide variety of imaging problems including biological and medical image classification using several imaging modalities, face recognition, and other pattern recognition tasks. WND-CHARM is an acronym that stands for "Weighted Neighbor Distance using Compound Hierarchy of Algorithms Representing Morphology."

This package contains two implementations both of which use common image transform and feature extraction code:

  • A command-line program wndchrm (without the a) written in C++ that streamlines the WND-CHARM algorithm workflow. It reads images and their class membership from a directory hierarchy or text file, and outputs classifier statistics to an HTML report or STDOUT. To build from distribution tarball, use ./configure && make. To build from a cloned repository use ./build.sh.
  • A Python library wndcharm that provides an API to do many of the same things as wndchrm while providing the flexibility of a scripting language to perform low manipulation and visualization of pixel intensities, generated features and classification results. To build, use python setup.py build.

This research was supported entirely by the Intramural Research Program of the National Institutes of Health, National Institute on Aging, Ilya Goldberg, Investigator. Address: Laboratory of Genetics/NIA/NIH, 251 Bayview Blvd., Suite 100, Baltimore, MD, 21224, USA


####A full description of the wndchrm utility can be found at:

Shamir L, Orlov N, Eckley DM, Macura T, Johnston J, Goldberg IG. Wndchrm - an open source utility for biological image analysis. BMC Source Code for Biology and Medicine. 3: 13, 2008. PDF download

####The wndchrm utility is an implementation of the WND-CHARM algorithm described here:

Orlov N, Shamir L, Macura T, Johnston J, Eckley DM, Goldberg IG. WND-CHARM: Multi-purpose image classification using compound image transforms. Pattern Recognition Letters. 29(11): 1684-93, 2008.

####A review of techniques used in pattern-recognition/machine learning as applied to image analysis is here:

Shamir L, Delaney JD, Orlov N, Eckley DM, Goldberg IG. Pattern Recognition Software and Techniques for Biological Image Analysis. PLoS Computational Biology. 6(11): e1000974, 2010

Current Release

The current release of the wndchrm command-line utility is version 1.60, available here: wndchrm-1.60.977f5f6.tar.gz

The previous release, v1.52, is available here: wndchrm-1.52.775.tar.gz

Supported Platforms

WND-CHARM should compile and run on any POSIX-compliant operating system. It has been tested on Linux (Ubuntu 12.04 w/ GCC 4.6, CentOS 6.3 w/ GCC 4.4) and Mac OS X (<=10.7 w/ GCC 4.2, with experimental support for 10.9 Mavericks w/ clang compiler).

Dependencies

Installation of WND-CHARM minimally requires a C++ compiler, LibTIFF and FFTW.

  • C++ Compiler
    • Mac OS X: Install the command-line developer tools.
    • Ubuntu/Debian: sudo apt-get install build-essential
  • LibTIFF 3.x:
    • CentOS/RedHat: sudo yum install libtiff-devel
    • Ubuntu/Debian: sudo apt-get install libtiff4-dev
    • Mac OS X: brew install libtiff
  • FFTW 3.x:
    • CentOS/RedHat: sudo yum install fftw-static fftw-devel
    • Ubuntu/Debian: sudo apt-get install libfftw3-dev
    • Mac OS X: brew install fftw
  • Optional for dendrograms: PHYLIP
    • Some X11 libraries must be installed prior to compiling/installing PHYLIP (make install in the src dir.)
      • CentOS/RedHat: sudo yum install libX11-devel libXt-devel libXaw-devel
      • Ubuntu/Debian: sudo apt-get install libX11-dev libxt-dev libxaw7-dev

WND-CHARM Python API additional dependencies

The WND-CHARM Python API additionally requires the Python development package, SWIG, and the common Python 3rd-party packages numpy and scipy. Optionally, result visualization tools are enabled by installing the package matplotlib. To run the provided example scripts, the package argparse is required (included with Python 2.7+).

  • Python utilities:
    • CentOS/RedHat: sudo yum install python-devel swig
    • Ubuntu/Debian: sudo apt-get install python-dev swig
    • Mac OS X: brew install python swig
  • Python packages:
    • CentOS/RedHat: sudo yum install numpy scipy python-matplotlib argparse
    • Ubuntu/Debian: sudo apt-get install python-numpy python-scipy python-matplotlib
    • Pip: pip install numpy scipy matplotlib argparse

Recommended Hardware

2 GB RAM (per core), 10 GB HD space, 2 GHZ CPU. Please be aware that this utility is very computationally intensive. Multiple instances of wndchrm can work concurrently on the same dataset on multi-core/multi-processor CPUs. Simply use the same command line to launch as many instances of wndchrm as there are CPU cores available.

Test Images

Please also visit the IICBU Biological Image Repository, which provides a benchmark for testing and comparing the performance of image analysis algorithms for biological imaging.