Bilder zuschneiden#

Bei der Arbeit mit mikroskopischen Bildern macht es oft nur begrenzt Sinn, das gesamte Bild zu verarbeiten. Typischerweise schneiden wir interessante Bereiche aus und verarbeiten diese im Detail.

from skimage.io import imread, imshow
image = imread("../../data/blobs.tif")

Bevor wir ein Bild zuschneiden können, möchten wir vielleicht seine genaue Form (Dimensionen) kennen:

image.shape
(254, 256)

Zusammenfassung: Visualisierung mit imshow:

imshow(image)
<matplotlib.image.AxesImage at 0x2448a01e9d0>
../_images/9a8c839dc0acff2ba809f86a23468055d8bdd1640593ff51f6da4c23eaeaaa5e.png

Das Zuschneiden von Bildern funktioniert genau wie das Zuschneiden von Listen und Tupeln, indem man Indizes verwendet, um den Bereich der zu verwendenden Elemente anzugeben:

cropped_image1 = image[0:128]

imshow(cropped_image1);
../_images/166eed5c1c0ee8fe248cd58b80a3ba6890fe8f13143de5e8c646a1a7a0ab4b6e.png
mylist = [1,2,2,3,4,5,78]

Um das Bild auch in der zweiten Dimension zuzuschneiden, fügen wir ein , in den eckigen Klammern hinzu:

cropped_image2 = image[0:128, 128:]

imshow(cropped_image2);
../_images/6984d54e12d0cfc03d33deacd59308e9501822d4506d7273fd2bebfca85d82e3.png

Unterabtastung von Bildern#

Auch Schrittgrößen können angegeben werden, als würden wir Listen und Tupel verarbeiten. Technisch gesehen führen wir in diesem Fall eine Unterabtastung des Bildes durch. Wir nehmen eine Teilmenge der ursprünglichen Pixel, zum Beispiel in Schritten von 5:

sampled_image = image[::5, ::5]

imshow(sampled_image);
../_images/9acacd83d855db9ff4df52fe458641d10f4ceb657e208677466e538cfd68ad56.png

Bilder spiegeln#

Negative Schrittgrößen spiegeln das Bild.

flipped_image = image[::, ::-1]

imshow(flipped_image);
../_images/9975815040af600d91ec3649a4a64b2ef821164b2b1d7babdd7702cfab6e38c0.png

Übung#

Öffnen Sie den banana020.tif Datensatz und schneiden Sie den Bereich aus, in dem sich die Bananenscheibe befindet.