Scikit-image

scikit-image (ehemals scikits.image) i​st eine freie Software-Bibliothek z​ur Bildverarbeitung für d​ie Programmiersprache Python. Sie enthält Algorithmen für Segmentierung, geometrische Transformationen, Farbraummanipulation, Analyse, Filterung, Morphologie, Feature-Erkennung u​nd mehr. Sie basiert a​ls SciKit (Kurzform für SciPy Toolkit), w​ie beispielsweise a​uch Scikit-learn, a​uf den numerischen u​nd wissenschaftlichen Python-Bibliotheken NumPy u​nd SciPy.[4][5]

scikit-image
Basisdaten
Aktuelle Version 0.18.1[1]
(19. Januar 2021)
Betriebssystem Plattformunabhängig
Programmiersprache Python[2][3], Cython[2]
Lizenz BSD-Lizenz
scikit-image.org

Implementierung

Scikit-image i​st weitgehend i​n Python geschrieben. Einige Kernalgorithmen wurden a​us Performancegründen i​n Cython realisiert.

Beispiel

In diesem Beispiel w​ird ein Schachbrettmuster data.checkerboard() erzeugt u​nd anschließend m​it einer affinen Abbildung verzerrt. Nachdem n​och weitere Elemente d​em Bild hinzugefügt worden sind, werden Eckpunkte m​it Hilfe d​es Harris Corner Detectors, e​ines Interest-Operators, ermittelt.

from matplotlib import pyplot as plt

from skimage import data
from skimage.feature import corner_harris, corner_subpix, corner_peaks
from skimage.transform import warp, AffineTransform
from skimage.draw import ellipse

# Wir erzeugen eine Affine Abbildung des Schachbrettmusters data.checkerboard()
tform = AffineTransform(scale=(1.3, 1.1), rotation=1, shear=0.7, translation=(210, 50))
image = warp(data.checkerboard(), tform.inverse, output_shape=(350, 350))

# Ellipse zeichnen
rr, cc = ellipse(310, 175, 10, 100)
image[rr, cc] = 1

# zwei Rechtecke zeichnen
image[180:230, 10:60] = 1
image[230:280, 60:110] = 1

# Mit Hilfe des Harris Corner Detectors Eckpunkte ermitteln
coords = corner_peaks(corner_harris(image), min_distance=5)
coords_subpix = corner_subpix(image, coords, window_size=13)

fig, ax = plt.subplots()
ax.imshow(image, interpolation='nearest', cmap=plt.cm.gray)
ax.plot(coords[:, 1], coords[:, 0], '.b', markersize=3)
ax.plot(coords_subpix[:, 1], coords_subpix[:, 0], '+r', markersize=15)
ax.axis((0, 350, 350, 0))
plt.show()

Siehe auch

Einzelnachweise

  1. scikit-image 0.18.1. (abgerufen am 25. Januar 2021).
  2. In: scikit-image: image processing in Python.
  3. www.openhub.net. In: Open Hub. (abgerufen am 25. Januar 2021).
  4. Emmanuelle Gouillart: Scikit-image: image processing — Scipy lecture notes. In: Tutorials on the scientific Python ecosystem: a quick introduction to central tools and techniques. Abgerufen am 31. August 2018 (englisch).
  5. Eric Chiang: Image Processing with scikit-image. In: The Yhat Blog. 30. Januar 2014, abgerufen am 31. August 2018 (englisch).
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. The authors of the article are listed here. Additional terms may apply for the media files, click on images to show image meta data.