mirror of
https://github.com/wassname/scikit-image.git
synced 2026-07-04 04:10:34 +08:00
e9a56655c6
Corrected wrap-80 Switched `ndim` check to `atleast_3d` Removed `elif` from ndim check. Updated felzenszwalb rgb test to reflect min_size fix Update docstring multi to single & multi channel Also Added spaces between `,` and `:` in distance function Updated indentations, array shape specification Updated function name _rgb > _cython Added missing spaces in ValueError message Updated docs
55 lines
1.9 KiB
Python
55 lines
1.9 KiB
Python
import numpy as np
|
|
|
|
from .._shared.utils import warn
|
|
from ._felzenszwalb_cy import _felzenszwalb_cython
|
|
|
|
|
|
def felzenszwalb(image, scale=1, sigma=0.8, min_size=20):
|
|
"""Computes Felsenszwalb's efficient graph based image segmentation.
|
|
|
|
Produces an oversegmentation of a multichannel (i.e. RGB) image
|
|
using a fast, minimum spanning tree based clustering on the image grid.
|
|
The parameter ``scale`` sets an observation level. Higher scale means
|
|
less and larger segments. ``sigma`` is the diameter of a Gaussian kernel,
|
|
used for smoothing the image prior to segmentation.
|
|
|
|
The number of produced segments as well as their size can only be
|
|
controlled indirectly through ``scale``. Segment size within an image can
|
|
vary greatly depending on local contrast.
|
|
|
|
For RGB images, the algorithm uses the euclidean distance between pixels in
|
|
color space.
|
|
|
|
Parameters
|
|
----------
|
|
image : (width, height, 3) or (width, height) ndarray
|
|
Input image.
|
|
scale : float
|
|
Free parameter. Higher means larger clusters.
|
|
sigma : float
|
|
Width of Gaussian kernel used in preprocessing.
|
|
min_size : int
|
|
Minimum component size. Enforced using postprocessing.
|
|
|
|
Returns
|
|
-------
|
|
segment_mask : (width, height) ndarray
|
|
Integer mask indicating segment labels.
|
|
|
|
References
|
|
----------
|
|
.. [1] Efficient graph-based image segmentation, Felzenszwalb, P.F. and
|
|
Huttenlocher, D.P. International Journal of Computer Vision, 2004
|
|
|
|
Examples
|
|
--------
|
|
>>> from skimage.segmentation import felzenszwalb
|
|
>>> from skimage.data import coffee
|
|
>>> img = coffee()
|
|
>>> segments = felzenszwalb(img, scale=3.0, sigma=0.95, min_size=5)
|
|
"""
|
|
|
|
image = np.atleast_3d(image)
|
|
return _felzenszwalb_cython(image, scale=scale, sigma=sigma,
|
|
min_size=min_size)
|