Skip to content
An easy-to-use Matlab wrapper around the original felzenszwalb segmentation code
C++ C MATLAB Other
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
data
COPYING
Makefile
README.md
compileFelzenszwalbSegmentation.m
convolve.h
demoFelzenszwalbSegmentation.m
disjoint-set.h
filter.h
image.h
imconv.h
imutil.h
initWorkspaceSegmentation.m
misc.h
pnmfile.h
segment-graph.h
segment-image-labelOutput.h
segment-image.h
segment.cpp
segmentFelzenszwalb.cpp
segmentFelzenszwalb.m

README.md

A matlab wrapper for unsupervised segmentation of images based on Felzenszwalb and Huttenlocher

Matlab aspects

Compilation

simply run

compileFelzenszwalbSegmentation.m

Setup - safely add repo to search path

To make Matlab familiar with all relevant paths (there are only 2 currently) go to the root folder and execute

initWorkspaceSegmentation.m

Demo

  1. Run
demoFelzenszwalbSegmentation.m

which requires Matlabs GUI to show images and segmentation results

  1. Inspect the demo file to learn how to setup variables, and how to call the underlying mex functions

C++ aspects

Implementation of the segmentation algorithm described in:

Efficient Graph-Based Image Segmentation Pedro F. Felzenszwalb and Daniel P. Huttenlocher International Journal of Computer Vision, 59(2) September 2004.

The program [segment.cpp, note by A. Freytag] takes a color image (PPM format) and produces a segmentation with a random color assigned to each region.

  1. Type make to compile segment.cpp

  2. Run segment sigma k min input output.

The parameters are: (see the paper for details)

  • sigma: Used to smooth the input image before segmenting it.
  • k: Value for the threshold function.
  • min: Minimum component size enforced by post-processing.
  • input: Input image.
  • output: Output image.

Typical parameters are sigma = 0.5, k = 500, min = 20. Larger values for k result in larger components in the result.

NOTE ( by Alexander Freytag )

  • only images with less then std::numeric_limits::max() pixels are supported properly!
You can’t perform that action at this time.