Software for Multiscale Image Segmention using Edgeflow-based
Anisotropic diffusion.
DOWNLOAD:
-
ImageMagick software (needed for image format support).
-
Binary segmentation software (Version 1.1 - released on October 25, 2005).
-
Source code for segmentation software (for Version 1.0)
(parts of the software, e.g. FFT, Poisson solver, etc are not available since I
don't have access to these source code either. I use Intel MKL or IMSL libraries
for these).
INSTALLATION:
- Install ImageMagick executable (if Imagemagick is not installed in your system
yet).
- Unzip the binary distribution to a directory of your choice.
DOCUMENTATION:
See this
Technical Report
for most implementation details.
USAGE:
main.exe <image_name> <normalize> <initial_scale>
<scale_jump> <end_scale> <angle_limit> <ratio_limit> <smoothing_weighting> <stopping_error>
<accuracy> <post-process> <post-processing_stopping_error>
EXPLANATION OF ARGUMENTS
image_name:
(string) Name of the image. Most image formats are supported through ImageMagick.
normalize:
(integer, 0 or 1)This is a boolean argument (set to either 1 or 0). If set to 1,
edges are enhanced and low contrast boundaries are also detected. For example,
if there is a lighting change
over an object, at parts of the object, the edges may be lower contrast. With
normalization set to 1, all edges would be more or less equally well detected.
(This is a new feature that is
not described in the technical report. I haven't written its details down. If
set to 0, it will behave similar to how it is described in the technical
report.) In general, when
normalization is set to 1, more boundaries are detected.
initial scale:
(float) Starting scale to analyse the edges in the image. Units are in terms of
(length_of_image_diagonal/1000) pixels. A good suggestion would be between 3 to
8.
scale_jump:
(float) jumps in scale when scanning multiple scales. Good suggestions are
between 1 to 3.
end_scale:
(float) End scale to analyze edges. Image will be analyzed between initial_scale
to end_scale with increments of scale_jump. Running time is proportional to the
number of scales the image
is analyzed.
angle_limit:
(float) In degrees. This specifies the threshold a vector direction is allowed
to change from one scale to the next. See the technical report for more details.
Good suggestions are between
60 to 150. 90 is a safe choice. The larger this value, the larger scales may be
favored slightly more.
ratio_limit:
(float) This is the threshold (in terms of multiples) for the magnitude change
of the vectors from one scale to the next. Good choices are between 10 to 30.
The larger this value,
potentially the smaller scales are favored more. See the technical report for
more details.
smoothing_weighting:
(float) This specifies the weighting of the mean curvature flow (boundary
smoothing). Good suggestions are 1 to 4. The larger this value, edges are
smoothed more and potentially less number
of regions are detected. Corresponds to 1/gamma in the technical report.
stopping_error:
(float) This is a stopping criteria. Specified how much average change after 200
iterations is small enough. Good choices are between 0.1 to 1.0. 0.2 or 0.3 are safe
choices. Increase this to speed up segmentation process. The larger this
value, the sooner diffusion will stop.
accuracy:
(integer, 1, 2, 3, or 5) Specifies the gradient estimation accuracy in level set
methods. First, second, third or fifth order accurate Essentially Non-Oscilatory
(ENO) schemes are used.
Allowed selections are 1, 2, 3, 5. The higher the accuracy the slower diffusion
becomes. 2 is a safe choice.
post-process:
(integer, 0 or 1)This is a boolean argument (set to either 1 or 0). If set to 1,
diffusion result is post-processed for more cleaning (e.g. it will have a
similar effect of region merging). To clean up the diffused image Perona-Malik
flow with a very small K (set to 1) is used. I suggest enabling post-processing
to obtain a cleaner segmentation result. In general, when post-processing is set to 1,
less boundaries are detected.
post-processing stopping_error:
(float) This is a stopping criteria for post processing. This is only effective
if post-processing is set to 1. Specifies how much average change after 200
iterations is small enough. Good choices are between 0.1 to 1.0. 0.2 is a safe
choice. The larger this
value, the sooner diffusion will stop.
|