Getting started
---------------

``scikit-image`` is an image processing Python package that works with
:mod:`numpy` arrays. The package is imported as ``skimage``: ::

    >>> import skimage as ski

Most functions of ``skimage`` are found within submodules: ::

    >>> camera = ski.data.camera()

A list of submodules and functions is found on the `API reference
<https://scikit-image.org/docs/stable/api/api.html>`_ webpage.

Within scikit-image, images are represented as NumPy arrays, for
example 2-D arrays for grayscale 2-D images ::

    >>> type(camera)
    <type 'numpy.ndarray'>
    >>> # An image with 512 rows and 512 columns
    >>> camera.shape
    (512, 512)

The :mod:`skimage.data` submodule provides a set of functions returning
example images, that can be used to get started quickly on using
scikit-image's functions: ::

    >>> coins = ski.data.coins()
    >>> threshold_value = ski.filters.threshold_otsu(coins)
    >>> threshold_value
    107

Of course, it is also possible to load your own images as NumPy arrays
from image files, using :func:`skimage.io.imread`: ::

    >>> import os
    >>> filename = os.path.join(ski.data_dir, 'moon.png')
    >>> moon = ski.io.imread(filename)

If you need more control over how images are loaded, you may want to
consider using one of the many external Python libraries that can read
images into NumPy arrays. For example, `imageio
<https://imageio.readthedocs.io/en/stable/>`_ : ::

    >>> import imageio.v3 as iio3
    >>> filename = os.path.join(ski.data_dir, 'moon.png')
    >>> moon = iio3.imread(filename)

Use `natsort <https://pypi.org/project/natsort/>`_ to load multiple images ::

    >>> import os
    >>> from natsort import natsorted, ns
    >>> list_files = os.listdir('.')
    >>> list_files
    ['01.png', '010.png', '0101.png', '0190.png', '02.png']
    >>> list_files = natsorted(list_files)
    >>> list_files
    ['01.png', '02.png', '010.png', '0101.png', '0190.png']
    >>> image_list = []
    >>> for filename in list_files:
    ...   image_list.append(ski.io.imread(filename))
