Création d'un point de coordonée X,Y et d'un fichier txt. // Create X, Y coordinate point and txt file.

15 views (last 30 days)
Bonjour, nous travaillons sur un projet d'analyse des grains de beauté. Cela passe dabord par la detection automatique des contours du grain de beauté puis par le calculs du baricentre, du perimetre,de l'irregularité (ecart type entre les distances du barycentre)... + création d'un fichier texte
  • j'ai pas mal de chose qui fonctionne mais je n'arrive pas à calculer l'ecart type pour l'irrégularité du grain de beauté sous pretexte que mon barycentre n'est pas un point de coordonée x, y mais XBary et Y Bary son independant l'un de l'autre. En parcourant les sites Web je ne trouves pas d'indication sur cette chose ultra simple : "comment crée un point de coordonée X,Y sous matlab?".
  • Je souhaites crée un fichier text mais cela ne marche pas en suivant bettement les indications de la documentation matlab :
??? Error using ==> fprintf
Invalid file identifier. Use fopen to generate a valid file identifier.
Hi, we’re working on a mole analysis project.
This is done by automatically detecting the contours of the mole and then by calculating the baricentre, the perimetre, the irregularity (standard deviation between the distances of the barycentre)... + creating a text file
  • I have a lot of things that work but I can’t calculate the standard deviation for mole irregularity because my barycenter is not an X coordinate point, but XBary and Y Bary are independent of each other. By browsing the websites I can’t find any indication on this ultra-simple thing: "how to create a X,Y coordinate point under Matlab?".
  • I want to create a text file but this does not work by following the instructions in the Matlab documentation:
??? Error using ==> fprintf
Invalid file identifier. Use fopen to generate a valid file identifier.
Je vous joins mon code si vous avez des indications c'est avec grand plaisir
I enclose my code if you have indications it is with great pleasure
clear all;
close all;
clc;
%% ouvrir l'image et la convertir en noir et blanc
img=imread( 'TEST.jpg' );
img = im2double(rgb2gray(img)); %converti en double et en niveau de gris
subplot(1,2,1)
imshow(img)
%%traitements
level = graythresh(img) %sortie seuil pas entre 0 et 1
img = img>level; %si je met < le grain de beauté est blanc
test = im2bw(img,level/255); % converti en binaire a partir d'une valeur seuil entre 0 et 1
h=fspecial('gaussian',100,100); %synthese du filtre 10,10 selon nombre de pixel du grain de beauté
bw=imfilter(test,h); %application du filtre sur l'image test afin d'avoir N=1 objets contourés
bw=imfill(~bw,'hole');%remplit les trous dans l’image binaire d’entrée BW. Dans cette syntaxe, un perçage est un ensemble de pixels d’arrière-plan qui ne peuvent pas être atteints en remplissant l’arrière-plan du bord de l’image.
bw=~bw; % '~' est un Logical NOT :: ~A est vrai quand A est faux et ~A est faux quand A est vrai.
[B,L,N]=bwboundaries(bw); %avec B=coordonnées de ligne et colonne de pixels limite// N=nombre d'objets trouvé//L=une matrice dont Les éléments de valeur zéro de L forment l’arrière-plan (peu servir pour filtrer)
hold on
for k=1:length(B)
contour=B{k};
plot(contour(:,2),contour(:,1),'g','LineWidth',2); %largeur trait 2
end
hold on
%%Calcul barycentre
C= B{1} %%matrice du contour N ligne et de 2colonnes Y,X
[m,n]=size(C)%%nombre de ligne = m, nombre de colonne = n
Y=C(:,1)%% valeur de toutes les lignes de la colonne1
X=C(:,2)%% valeur de toutes les lignes de la colonne2
XBary=mean(X)%%moyenne des valeurs de ligne 2 %%Mean(1,C) ne marche pas ecrit tel quel
YBary=mean(Y)%%moyenne des valeurs de ligne 1
Bary = plot(XBary,YBary,'xg')
JE VEUX QUE BARY= un point de coodonées XBary,YBary
%%Calcul périmètre Ca semble fonctionner sur une image de 100*100
Perim=0;
for i=1:m %% m un nombre de ligne
if i==m
dist=C(1,:)-C(m,:);
else
dist=C(i+1,:)-C(i,:);
end
dist=norm(dist);
Perim=Perim+dist
end
%% regularité
vectdist=zeros(m,1);
for i=1:N;
diag=C(i,:)- Bary ;
diag=norm(diag);
vectdist(i)=diag;
end
irregularite=std(vectdist) %donne indication sur la dispersion/régularité =0 pour un
%plot tout sur image noir et blanc
subplot(1,2,2);%% en mettant cette consigne ici, le contour est dessiné sur l'image réeelle en noir et blanc
imshow(test);
%%création de fichier
[fileID,auto] = fopen('\\teraetu.univ-lyon1.fr\homeetu\p1612604\My Documents\name.txt','r+')
string=sprintf('%d %d',Perim,irregularite)
fprintf(fileID,'%s',string)

Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!