206 views
--- title: INFO911 (5c) Segmentation - approches contours type: slide slideOptions: transition: slide progress: true slideNumber: true --- # Segmentation d'image - approches contours ## (Traitement et Analyse d'Image 5c) > [name=Jacques-Olivier Lachaud][time=Decembre 2020][color=#907bf7] > (Les images peuvent être soumises à des droits d'auteur. Elles sont utilisées ici exclusivement dans un but pédagogique) ###### tags: `info911` Retour à [INFO911 (Main) Traitement et analyse d'image](https://codimd.math.cnrs.fr/s/UE_B59gMy) --- # Approches contours | échographie | contours perceptuels | | -------- | -------- | | ![](https://codimd.math.cnrs.fr/uploads/upload_c55933f92d78fa90cf57cf4e6c8c7db5.jpg =x140) | ![](https://codimd.math.cnrs.fr/uploads/upload_7ceba99fdbd4e097d53f43c1365668fd.png =x180)| :::warning Parfois, régions peu homogènes, limites entre régions plus visibles ou information de contour plus pertinente ::: --- ## Détecteur de contours de [Canny, 1980] Détecteur de Canny sur image $I$ : paramètres $\sigma, s_1, s_2$. 1. Flou pour éliminer le bruits des capteurs => $I' := I \ast M_\sigma$ 2. Filtres dérivatifs pour direction $\mathbf{v}^\perp$ des contours => $(I_x,I_y) := (I' \ast S_x, I' \ast S_y)$ 3. Calcul de la force des contours => $G=\sqrt{I_x^2+I_y^2}$ 4. $E$ = pixels $p$ tels que $G[p]$ est un maximum local dans la direction $\mathbf{v}^\perp$ 5. $E'$ = pixels de $E$ tels que $G[p] \ge s_1$ 6. On rassemble les pixels de $E'$ voisins dans des contours $C_1, C_2, \ldots$ 7. On ne garde que les contours qui ont au moins un pixel $q$, tel que $G[q] \ge s_2$. --- ## Etapes de calcul de Canny | ![jol](https://codimd.math.cnrs.fr/uploads/upload_bae176538c5489eddcb51bf3cbab2879.png =x120)| ![jol-gx](https://codimd.math.cnrs.fr/uploads/upload_d3b6cf6280e71af8fc76b9e46737729d.png =x120)| ![jol-gy](https://codimd.math.cnrs.fr/uploads/upload_0ea0b778f88c680042626c16c9f54e17.png =x120)| | -------- | -------- | -------- | | ![jol-g](https://codimd.math.cnrs.fr/uploads/upload_c02aa4df2c1152e3338c8b04657b98b8.png =x120)| ![jol-e-15-15](https://codimd.math.cnrs.fr/uploads/upload_3d7fc75862823e5689d9c72485676883.png =x120)| ![jol-e-15-30-s](https://codimd.math.cnrs.fr/uploads/upload_f9e71106087cabfb8d0ab522589f80e8.png =x120)| --- ## Etape 4 : identification des maximas locaux du gradient ![jol-zoom-g](https://codimd.math.cnrs.fr/uploads/upload_d358f2d73d110c40c87c01a52d806732.png) --- ## Détecteur de contours de Canny | input | $\sigma=1.4, s_1=24, s_2=96$ | $\sigma=1.9, s_1=12, s_2=25$ | |:----------------------------------------------------------------------------------------------:| ------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ | | ![lena](https://codimd.math.cnrs.fr/uploads/upload_d2c0313c655a51f9d4ba0cd164b652fe.png =x200) | ![lena-canny-1](https://codimd.math.cnrs.fr/uploads/upload_6a60f6c815f18d24a46f635266cd493c.png =x200) | ![lena-canny-2](https://codimd.math.cnrs.fr/uploads/upload_ba9a861610cc0c068c00e425319838e0.png =x200) | :::danger En général, les contours ne ferment pas les régions `video-contours` ::: --- ## Algorithme de ligne de partage des eaux (Watershed) ==Principe== Voir l'image gradient comme une carte topographique, et trouver les bassins où l'eau s'écoule. | Image norme gradient | Vue topographique | Remplissage des bassins | | -------- | -------- | -------- | | ![watershed-input](https://codimd.math.cnrs.fr/uploads/upload_a2e68b480b2eb2e8466391f9e74b7ed4.png =x200) | ![watershed-topo](https://codimd.math.cnrs.fr/uploads/upload_64b741b9ebc3b3b82070dca593216174.png =x200) | ![](https://codimd.math.cnrs.fr/uploads/upload_9aeba6af6f40d50dd27cc6726f742def.gif =x200) | --- ## Watershed: exemple de résultats | Image | Résultat| | -------- | -------- | | ![watershed-tools-input](https://codimd.math.cnrs.fr/uploads/upload_47478a99062f54cce15d1276fbf1aaf7.png =x200)| ![watershed-tools-result](https://codimd.math.cnrs.fr/uploads/upload_a643853070dcab8d435e0b1a415eac15.png =x200) | --- ## Watershed: sursegmentation, sensibilité au bruit | Image | Résultat| | -------- | -------- | | ![watershed-texte-input](https://codimd.math.cnrs.fr/uploads/upload_ae6fd4759d92a5dd7dfb3e9a498fe6aa.png =x180)|![watershed-text-result](https://codimd.math.cnrs.fr/uploads/upload_a5000bc75df0466f85a63c21c32f91b1.png =x200) | --- ## Watershed: marqueurs donnant les bassins à garder | Marqueurs | watershed | | --------- | --------- | | ![lena-markers-watershed](https://codimd.math.cnrs.fr/uploads/upload_909d2226d38bc00cb3215366fc3beefd.png =x200) | ![lena-markers-watershed-result](https://codimd.math.cnrs.fr/uploads/upload_e54cfd5797076ea1aba3bcfccc9bb571.png =x200) | `video-watershed` --- ## Watershed : algorithme [Vincent, Soille 1991] ![](https://codimd.math.cnrs.fr/uploads/upload_b2d0af1322254b36993b6a1db52b0005.png =x80) 1. Norme du gradient de l'image $G=\sqrt{I_x^2+I_y^2}$, avec $I_x = I \ast S_x$ et $I_y = I \ast S_y$ 2. Tri des pixels dans l'ordre croissant de $G$ 3. Par groupe de pixels de même altitude a. Tri des pixels par distance à bassin existant b. Assignation des labels suivant configuration locale ![watershed-vs-config](https://codimd.math.cnrs.fr/uploads/upload_408bca4002cecc921d8cd642fea6e4af.png =x70) c. Si pixels non étiquetés, nouvelle étiquette --- ## Stochastic watershed [Angulo, Jeulin 2007] ==Idée== Faire tourner plusieurs le watershed avec des marqueurs tirés aléatoirement puis **sommer** les contours obtenus ![stoch-watershed](https://codimd.math.cnrs.fr/uploads/upload_f824f0b3bdc76d51fac7d25670e5ab0c.png =x200) `video-stochastic-watershed` --- ## Conclusion * algorithmes efficaces, plus simples à mettre en oeuvre que les algos région * problèmes de fermeture des contours pour l'approche filtre (Canny) * joliment résolu par watershed * mais problèmes de sursegmentation * utilisation de marqueurs en général * manque de géométrie dans les contours