bonjour,
j'ai un petit problème, je cherche le code matlab de JSEG algorithme (region growing) qui permet de segmenter une image
Merci d'avance
bonjour,
j'ai un petit problème, je cherche le code matlab de JSEG algorithme (region growing) qui permet de segmenter une image
Merci d'avance
Bonjour,
Je doute que quelqu'un ici t'aide à construire ton code dans son intégralité. Si tu veux de l'aide pour sa construction, montre nous d'abord ce que tu as commencé par faire et à quel endroit tu bloques. Si tu désires le code déjà tout fait, je connais un outil particulièrement efficace qui pourrait te donner des débuts de pistes.
Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!
Bonjour
J'ai un code Matlab qui permet de segmenter une telle image en entrée par croissance de régions.
j'ai pas compris comment affiche l'image segmente
S'il vous plait, aidez moi.
merci
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62 clear all; clc; I = imread('fabric.png'); I=im2double(I); x= 1; y= 5; if(exist('reg_maxdist','var')==0), reg_maxdist=0.2; end if(exist('y','var')==0), figure, imshow(I,[]); [y,x]=getpts; y=round(y(1)); x=round(x(1)); end J = zeros(size(I)); % Output Isizes = size(I); % Dimensions of input image reg_mean = I(x,y); % The mean of the segmented region reg_size = 1; % Number of pixels in region % Free memory to store neighbours of the (segmented) region neg_free = 10000; neg_pos=0; neg_list = zeros(neg_free,3); pixdist=0; % Distance of the region newest pixel to the regio mean % Neighbor locations (footprint) neigb=[-1 0; 1 0; 0 -1;0 1;-1 -1;-1 1;1 -1;1 1]; % Start regiogrowing until distance between regio and posible new pixels become % higher than a certain treshold while(pixdist<reg_maxdist&®_size<numel(I)) % Add new neighbors pixels for j=1:8, % Calculate the neighbour coordinate xn = x +neigb(j,1); yn = y +neigb(j,2); % Check if neighbour is inside or outside the image ins=(xn>=1)&&(yn>=1)&&(xn<=Isizes(1))&&(yn<=Isizes(2)); % Add neighbor if inside and not already part of the segmented area if(ins&&(J(xn,yn)==0)) neg_pos = neg_pos+1; neg_list(neg_pos,:) = [xn yn I(xn,yn)]; J(xn,yn)=1; end end % Add a new block of free memory if(neg_pos+10>neg_free), neg_free=neg_free+10000; neg_list((neg_pos+1):neg_free,:)=0; end % Add pixel with intensity nearest to the mean of the region, to the region dist = abs(neg_list(1:neg_pos,3)-reg_mean); [pixdist, index] = min(dist); J(x,y)=2; reg_size=reg_size+1; % Calculate the new mean of the region reg_mean= (reg_mean*reg_size + neg_list(index,3))/(reg_size+1); % Save the x and y coordinates of the pixel (for the neighbour add proccess) x = neg_list(index,1); y = neg_list(index,2); % Remove the pixel from the neighbour (check) list neg_list(index,:)=neg_list(neg_pos,:); neg_pos=neg_pos-1; end % Return the segmented area as logical matrix J=J>1;
A première vue ton code segmente une unique région de l'image en entrée, à partir du pixel (1,5), spécifié comme (x,y) au début du programme. La région segmentée est renvoyée sous forme d'une matrice binaire J en dernière ligne du programme.
Pour afficher J, tu peux procéder comme pour toute image. La partie en blanc (pixels à 1) correspond à la région segmentée.
Si tu veux segmenter ton image en plus de 2 régions, il faut a priori que tu fasses tourner ce code avec différents pixels de départ. Une fois toutes tes régions trouvées, tu peux afficher le tout en donnant une valeur différente aux pixels de chaque région pour bien visualiser la segmentation.
Pour être honnête avec toi, n'importe quel code qui fait de la segmentation d'image risque d'être plus compliqué que celui-ci (qui de plus est commenté). La méthode utilisée ici est très basique. Dis-nous plutôt quelle partie du code te pose problème.
Je te conseille également de faire une recherche Google avec les simples termes "image segmentation region growing" et de regarder quelques tutoriels vidéos, lire la page wikipédia associée. Après ça, le code pourrait te paraître plus limpide
Bonjour,
Quel genre d'image dois-tu annoter? et que désires tu segmenter dans cette image?
Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!
Personnellement je ne peux pas t'aider si tu ne nous décris pas avec précision quel genre d'images tu souhaites analyser. Toutes les segmentations ne sont pas utilisables avec toutes les applications. Si tu désires par exemple séparer des nuages blanc dans un ciel bleu, tu pourras utiliser un type de segmentation.
Et pour répondre à cette question
Je te conseille de suivre ce conseilEnvoyé par DeepKdd
Envoyé par eskapp
Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager