Watershed image segmentation


Watershed image segmentation

Hovedtrekk for algoritmen

Separerer ulike "basins" (vannbaseng) separert i terrenget med ulik høyde på vannet. Som fjellheimen i Norge.

Tutorial: https://opencv24-python-tutorials.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_watershed/py_watershed.html

  1. Threshold
  2. Distance transform
  3. Erosion ved å kjøre threshold på distance transform.
  4. Markers på sure foreground
  5. ![[Pasted image 20231013141056.png|300]]
  6. Watershed som utvider sure foreground utover i unknown background.

watershed.png

Watershed objektorientert

Basert koden på Arthurs program watershed4.py. Laget objektorientert så man kan bruke klassen til å utføre delvis segmentering hvis man vil.

Endret dist_transform.max()

opprinnelig fra eksempel fungerer 0.7 som en faktor som ganges med dist_transform.max().

factor*dist_transform.max()

Forsøker faktor 0.3: ![[Pasted image 20231013131221.png|500]] Nå synes alle bokstavene. Pga. de er små og tynne må det en mindre max-avstand ved bruk av cv2.threshold() Faktor 0.2, sure_fg (sikker forgrunn) ser slik ut. Ganske tynne... ![[Pasted image 20231013131800.png|400]] Faktor 0.3, sure_fg ![[Pasted image 20231013131907.png|400]] Her ser vi at W blir delt opp: ![[Pasted image 20231013131937.png|150]] Faktor 0.35, sure_fg ![[Pasted image 20231013132040.png|400]] Nå er alle sikre objekter som ikke er bakgrunn for små til at det gir mening.

Faktor 0.1 sure_fg ![[Pasted image 20231013132154.png|400]] Ved en liten faktor på kun 10% innspising av threshold-image blir det tykke bokstaver. Resultat er 37 separate objekter: ![[Pasted image 20231013132307.png|500]]

Legger inn faktor som parameter i tilpasning

Tester ut på water_coins.png factor 0.7: ![[Pasted image 20231013141918.png|500]] factor 0.5: ![[Pasted image 20231013141944.png|500]] ![[Pasted image 20231013142010.png|500]]

Tester lavoppløst bilde av jellybeans 0.1: ![[Pasted image 20231013142133.png|500]] ![[Pasted image 20231013142227.png|500]] ![[Pasted image 20231013142600.png|500]] ![[Pasted image 20231013142317.png|500]] ![[Pasted image 20231013142440.png|500]] ![[Pasted image 20231013142348.png|500]] ![[Pasted image 20231013142411.png|500]]

På lit mer løse objekter

![[Pasted image 20231013142658.png|500]]

Man må tilpasse faktoren nøye til bildet. Så ikke så robust.