Bonjour à tous,
J'ai développé le code suivant :
(Je vous épargne le code utilisant les fenêtres de matplotlib pour afficher mes résultats.)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 import numpy as np import matplotlib.pyplot as plt from skimage import data from PIL import Image as imge from skimage.filter import canny from scipy import ndimage from skimage import morphology from skimage.filter import sobel img = imge.open("ortho0007.tiff") gray = img.convert('L') coins = np.asarray(gray) coins=ndimage.gaussian_filter(coins, 1) elevation_map = sobel(coins) markers = np.zeros_like(coins) markers[coins < 60] = 3 markers[coins > 130] = 1 segmentation = morphology.watershed(elevation_map, markers) test2=np.bool_(segmentation) #test2= np.int_(segmentation) coins_cleaned = morphology.remove_small_objects(test2, 50)
Le problème se situe au niveau de la dernière ligne avec l'utilisation de la fonction remove_small_objects.
En l’occurrence, cette dernière est censée me supprimer, sur mon image résultat, toutes les composantes faisant (ici) moins de 50pixels.
Quoi que je fasse, que je place en entrée une image booléenne ou en int, que je met 50 ou 300, le résultat que j'obtiens est noir (soit que des 0).
Au contraire, si je place directement le fichier "segmentation" au lieu de "test2" en entrée de cette fonction le résultat retournée est "segmentation", ni plus ni moins. Il ne le change donc pas.
Auriez-vous une idée de mon problème ?
Dans l'attente d'une réponse favorable,
Cordialement,
Pierre.
PS: - L'image "ortho0007" est une image .tiff d'une façade de pierres et briques.
- Voici le lien sur la documentation de cette fonction :
http://scikit-image.org/docs/dev/api..._small_objects
Partager