Skip to content

Segmentare Imagini Biomedicale cu scikit-image

DodaTech Updated 2025-01-15 2 min read

You will learn how to segment biomedical images using scikit-image algorithms: thresholding, watershed, and active contours.

The Problem

Segmentarea corecta a imaginilor biomedicale necesita alegerea algoritmului potrivit si parametrizarea corecta. O aplicare gresita a acestor metode duce la rezultate inexacte si timp pierdut.

The Wrong Way

Cea mai frecventa greseala este aplicarea unui threshold global pe imagini cu iluminare neuniforma:

from skimage import io, filters
import numpy as np
image = io.imread('celule.tif', as_gray=True)
binary = image > 0.5  # threshold fix gresit

Ce se intampla: Celulele din zonele mai intunecate ale imaginii sunt pierdute complet.

The Right Way

Foloseste thresholding adaptiv sau Otsu pentru imagini cu iluminare variabila:

from skimage import io, filters, morphology, segmentation
image = io.imread('celule.tif', as_gray=True)
thresh = filters.threshold_otsu(image)
binary = image > thresh
cleaned = morphology.remove_small_objects(binary, min_size=50)

Rezultat asteptat: O masca binara curata, cu celulele detectate corect independent de iluminare.

Step-by-Step Fix

1. Alege algoritmul potrivit

Pentru imagini cu fundal uniform, foloseste threshold_otsu. Pentru imagini neuniforme, incearca threshold_local.

from skimage import filters
thresh = filters.threshold_local(image, block_size=51)
binary = image > thresh

2. Aplica watershed pentru separarea obiectelor

from scipy import ndimage as ndi
from skimage.segmentation import watershed
distance = ndi.distance_transform_edt(binary)
markers = ndi.label(
    morphology.remove_small_holes(binary, area_threshold=100)
)[0]
labels = watershed(-distance, markers, mask=binary)

3. Foloseste active contours pentru contururi precise

from skimage.segmentation import active_contour
init_contour = np.array([[50, 50], [50, 100], [100, 100], [100, 50]])
snake = active_contour(image, init_contour, alpha=0.015, beta=10)

Prevention Tips

  • Aplica intotdeauna preprocesare (filtrare gaussiana, corectie iluminare) inainte de segmentare
  • Foloseste thresholding adaptiv pentru imagini cu iluminare neuniforma
  • Combina watershed cu markeri pentru separarea obiectelor in contact
  • Evalueaza rezultatul vizual si cu metrici (IoU, Dice) inainte de a continua
  • Pastreaza imaginile originale si parametrii utilizati pentru reproductibilitate

Common Mistakes

  1. Threshold global pe imagini neuniforme -- pierde obiecte in zone intunecate
  2. Watershed fara markeri -- genereaza suprasegmentare masiva
  3. Active contours cu parametri nepotriviti -- conturul nu converge sau explodeaza
  4. Omite preprocesarea -- zgomotul degradeaza grav segmentarea
  5. Foloseste parametri impliciti fara ajustare pentru tipul specific de imagine

Practice Exercise

Segmentheaza o imagine cu celule folosind watershed, apoi numara obiectele detectate si calculeaza aria medie.

FAQ

### Ce algoritm de segmentare sa aleg pentru inceput?

Thresholding Otsu este cel mai simplu si functioneaza bine pentru imagini cu histograma bimodala.

Cum separ obiecte care se ating?

Foloseste watershed cu markeri bazati pe distanta transformata. Acesta separa obiectele chiar si atunci cand sunt in contact.

De ce nu converge active contour?

Parametrii alpha si beta trebuie ajustati. Alpha mic permite conturului sa se curbeze, beta mare mentine conturul neted.

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