[bwarea/fill] Calcul de l'aire de disques
Bonjour
Je suis une nouvelle utilisatrice de matlab (quelques semaines..). Et grace aux infos que j'ai trouvé sur les forums j'ai reussi à programmer quelque chose (merci) mais c'est assez lent…
J’ai des disques dont je connais les positions des centres et les rayons. Et je voudrais avoir une idée de l’air projetée.
J’utilise la function bwarea de matlab. Le code marche mais j’ai un pb de vitesse et de memoire (segmentation fault) si je fais trop de relances.
Voila mon script :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| discount %nb de disques
%X matrice avec les position des centres pour chaque disque
discX = X(1,:);
discY = X(2,:);
discRadius=r;
figure('Position',Pos1,'Visible', 'off')
hold on
for i=1:discCount
c=discX(i);
b=discY(i);
circle(c,b,discRadius);
end
axis equal
axis off
hold off
print -f -djpeg 'projection'
b = imread('projection.jpg');
delete('projection.jpg')
b = im2bw(b);
%b=b;%(200:700,352:952); %crop the image
intensity=bwarea(b); |
et j’appelle circle qui est :
Code:
1 2 3 4 5 6 7 8
| function [x y]=circle(a,b,r)
theta = linspace(0,2*pi,100000);
x = a+r*cos(theta);
y = b+r*sin(theta);
%plot(x,y); % plot circle
fill(x,y,'k')
axis('equal');% set equal scale on axes per pixel
end |
J’utilise la function bwarea de matlab. Mais du coup, il me faut une image binaire.
Est ce que c’est possible de sauvegarder (dans une matrix) les point du cercles qui sont remplie par le fill et de juste les compter (sans consruire une vraie image)?
Ou est ce qu’il y a une fonction comme fill qui donne une matrice au lieu d’une image?
Je ne sais pas si j’ai été assez claire, dites moi s’il vous faut plus d’infos.
Merci beaucoup!