Bonjour,
Je souhaite récupérer mes objets segmentés (noir et blanc) en niveau de gris.
J'ai pour cela une image NB et l'image de départ en niveau de gris. Je fait un regionprops récupère les pixels blancs et je veux créer pour chacuns une image avec mon objet en niveau de gris et le reste en blanc.
imggris me donne l'image la fenetre avec mon objet mais, je souhaiterai avoir juste mon objet.
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 L = bwlabel(imgBW); s = regionprops(L, Igray, {'Centroid','Area','Solidity','Perimeter','Image','MinorAxisLength','MajorAxisLength','PixelIdxList','PixelList','BoundingBox'}); numObj = numel(s); for k = 1 : numObj learea{k}=s(k).Area; leperimeter{k}=s(k).Perimeter; ... % img black and white Image{k} =s(k).Image; y1=max(round(s(k).BoundingBox(1)),1); y2=min(round(s(k).BoundingBox(1)+s(k).BoundingBox(3)),YY); x1=max(round(s(k).BoundingBox(2)),1); x2=min(round(s(k).BoundingBox(2)+s(k).BoundingBox(4)),XX); clear imggris imgbw imggris(:,:)=Igray(x1:x2,y1:y2); Image{k}=imggris(:,:); ImageName=strcat(path,'-obj-',num2str(k),'.jpg'); imwrite(Image{k},ImageName,'jpg'); else % no save images end end
J'imagine qu'on peut le faire avec PixelIdxList ou PixelListmais je n'y arrive pas.
Pour l'objet 4,
Ca me donne des matrices plates.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 J(:,:) = Igray(s(4).PixelIdxList); ssqass(:,:) = Igray(s(4).PixelList);
... je vous demande, mais le pire c'est que je l'ai déja fait ... mais l'intermittence dans le codage c'est pas top.
Merci par avance
ImagingAll
Partager