Innere und äußere Zellgrenzen
Bei der Untersuchung von Geweben, Organismen und Organoiden ist oft die Position und Orientierung der Zelle und ihrer Membranen innerhalb des Gewebes relevant. Zum Beispiel unterscheiden wir zwischen apikalen (an einer Spitze, am Ende, äußeren) und basalen (an der Basis, inneren) Seiten von Zellen innerhalb des Gewebes. Ausgehend von einem Zellsegmentierungs-Labelbild können wir Pixel identifizieren, die außerhalb oder innerhalb einer aus Zellen bestehenden Struktur liegen. Im folgenden Beispiel arbeiten wir mit einem synthetischen zweidimensionalen Bild einiger Zellen, die ein Organoid bilden. Die gleichen Funktionen funktionieren auch in 3D.
Zuerst erstellen wir unseren synthetischen Datensatz. Er besteht aus 6 Zellzentren, die wir zu einem Organoid erweitert haben.
Dies sind unsere Zellen:
|
cle._ image
shape | (100, 100) |
dtype | uint32 |
size | 39.1 kB |
min | 0.0 | max | 6.0 |
|
Und das ist das Organoid:
|
cle._ image
shape | (100, 100) |
dtype | uint8 |
size | 9.8 kB |
min | 0.0 | max | 1.0 |
|
Wir identifizieren nun die Pixel, die sich an den Grenzen der Zellen befinden.
|
cle._ image
shape | (100, 100) |
dtype | uint32 |
size | 39.1 kB |
min | 0.0 | max | 6.0 |
|
Wir können genau dasselbe mit dem Organoid machen, um die Pixel auf seiner Oberfläche zu identifizieren.
|
cle._ image
shape | (100, 100) |
dtype | uint32 |
size | 39.1 kB |
min | 0.0 | max | 1.0 |
|
Indem wir die Zellgrenzen mit der Organoidgrenze maskieren - technisch gesehen ist das eine pixelweise Multiplikation - können wir die äußeren Grenzen identifizieren.
|
cle._ image
shape | (100, 100) |
dtype | uint32 |
size | 39.1 kB |
min | 0.0 | max | 6.0 |
|
Wenn wir die äußeren Grenzen von allen Zellgrenzen abziehen, erhalten wir die inneren Grenzen
|
cle._ image
shape | (100, 100) |
dtype | uint32 |
size | 39.1 kB |
min | 0.0 | max | 6.0 |
|
Bei der Nachbearbeitung dieser Labelbilder sollten Sie etwas vorsichtig sein, da diese Bilder möglicherweise nicht sequenziell beschriftet sind. Es gibt Bibliotheken und Funktionen, die möglicherweise Probleme mit solchen Labelbildern haben (z.B. cle.statistics_of_labelled_pixels()
). Sie können die vorhandenen Labels in einem Labelbild mit np.unique()
ausgeben und die Labelbilder mit cle.relabel_sequential()
sequenziell machen.
array([0, 2, 3, 4, 5, 6], dtype=uint32)
array([0, 1, 2, 3, 4, 5, 6], dtype=uint32)