Numarare Celule cu scikit-image — Complete Guide
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
- Numara toate obiectele fara filtrare -- artefactele falsifica rezultatul
- Nu separa celulele aglomerate -- subestimeaza numarul real
- Foloseste un singur prag de arie -- pierde celule mici sau include artefacte mari
- Ignora calibrul imaginii -- aria in pixeli nu reflecta aria reala
- 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
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