Skip to content

Numarare Celule cu scikit-image — Complete Guide

DodaTech Updated 2025-01-15 2 min read

You will learn how to automatically count cells or objects in biomedical images using scikit-image.

The Problem

Numararea manuala a celulelor in imagini biomedicale este subiectiva, consuma timp si este nereproductibila. Tehnicile automate de numarare necesita o segmentare corecta si filtrare a artefactelor.

The Wrong Way

Simpla numarare a obiectelor dintr-o masca binara fara filtrare duce la supranumarare:

from skimage import io, filters, measure
image = io.imread('celule.tif', as_gray=True)
binary = image > filters.threshold_otsu(image)
labels = measure.label(binary)
print(f"Numar celule: {labels.max()}")

Ce se intampla: Artefactele si zgomotul sunt numarate ca celule, falsificand rezultatul.

The Right Way

Aplica filtrare morfologica si filtreaza obiectele dupa arie si circularitate:

from skimage import io, filters, morphology, measure
image = io.imread('celule.tif', as_gray=True)
binary = image > filters.threshold_otsu(image)
cleaned = morphology.remove_small_objects(binary, min_size=50)
cleaned = morphology.remove_small_holes(cleaned, area_threshold=30)
labels = measure.label(cleaned)
props = measure.regionprops_table(labels, properties=('area', 'perimeter', 'eccentricity'))
print(f"Celule detectate: {len(props['area'])}")

Rezultat asteptat: Numarul corect de celule, ignorand artefactele mai mici de 50 pixeli.

Step-by-Step Fix

1. Segmentheaza imaginea

from skimage import filters, morphology
thresh = filters.threshold_otsu(image)
binary = image > thresh

2. Curata masca binara

binary = morphology.remove_small_objects(binary, min_size=50)
binary = morphology.remove_small_holes(binary, area_threshold=30)

3. Eticheteaza si masoara

from skimage import measure
labels = measure.label(binary)
props = measure.regionprops_table(
    labels, properties=('area', 'centroid', 'eccentricity')
)

4. Filtreaza dupa forma

valid = [i for i, a in enumerate(props['area'])
         if 50 < a < 5000 and props['eccentricity'][i] < 0.95]
print(f"Celule valide: {len(valid)}")

Prevention Tips

  • Filtreaza dupa arie pentru a elimina artefactele si aglomerarile mari
  • Foloseste circularitatea sau eccentricitatea pentru a distinge celulele de debris
  • Aplica watershed pentru a separa celulele aglomerate inainte de numarare
  • Valideaza vizual un subset de imagini pentru a verifica acuratetea
  • Pastreaza parametrii de filtrare documentati pentru reproductibilitate

Common Mistakes

  1. Numara toate obiectele fara filtrare -- artefactele falsifica rezultatul
  2. Nu separa celulele aglomerate -- subestimeaza numarul real
  3. Foloseste un singur prag de arie -- pierde celule mici sau include artefacte mari
  4. Ignora calibrul imaginii -- aria in pixeli nu reflecta aria reala
  5. Nu valideaza rezultatele -- erorile sistematice raman nesesizate

Practice Exercise

Numara celulele rosii dintr-o imagine de hematologie. Aplica watershed pentru separare si filtreaza dupa arie si forma circulara.

FAQ

### Cum numar celule care se ating?

Foloseste watershed cu markeri. Transformata de distanta separa obiectele chiar si in aglomerari dense.

Ce proprietati sunt utile pentru filtrare?

Aria, perimetrul, circularitatea, eccentricitatea si soliditatea sunt cele mai frecvent utilizate.

Cum calibrez numaratoarea?

Foloseste o imagine de referinta cu un numar cunoscut de celule si ajusteaza parametrii de filtrare pentru a potrivi numaratoarea manuala.

Built by the developers of Doda Browser, DodaZIP, and Durga Antivirus Pro. DodaTech tools integrate seamlessly with Python Data Science workflows for enhanced productivity and security.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro