A voir également:
- Stocker des valeurs dans un vecteur matlab
- Excel intervalle entre 2 valeurs ✓ - Forum Excel
- Formule excel si compris entre plusieurs valeurs ✓ - Forum Excel
- Les données fournies dans le fichier à télécharger peuvent être synthétisées par le tableau récapitulatif suivant. dans le fichier, générez ce tableau automatiquement (tableau croisé dynamique ou table de pilote) à partir des 4 premières colonnes. cinq valeurs manquent dans le tableau suivant. retrouvez-les dans votre tableau puis reportez-les, arrondies à l’entier le plus proche, dans la zone de réponse. ✓ - Forum Excel
- Remplir une matrice matlab ✓ - Forum Matlab
- Excel liste de valeurs - Guide
3 réponses
yg_be
Messages postés
22779
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
12 mai 2024
1 481
22 mars 2021 à 12:57
22 mars 2021 à 12:57
bonjour,
ton code ne fait pas ce que tu souhaites?
quel résultat obtiens-tu?
que souhaites-tu obtenir?
ton code ne fait pas ce que tu souhaites?
quel résultat obtiens-tu?
que souhaites-tu obtenir?
%%%IMPORTER TOUTES LES IMAGES QUI SE TROUVENT DANS LE DOSSIER TEST1
rep = 'C:\Users\33780\Desktop\NAVIER STAGE\12-03\test1\';% chemin vers le répertoire
ext = '*.tiff'; %extension des fichiers
chemin = fullfile(rep,ext); % chemin complet complet vers les fichiers
list = dir(chemin); % accés aus fichiers
for n = 1:numel(list) % boucle pour la lecture des images
a= imread(fullfile(rep, list(n).name), ext(3:end)); % lire les fichier
%%% FILTRER TOUTES LES IMAGES IMPORTEES PAR UN FILTRE MOYENNEUR
a=mean(a,3);
% Filtrage moyenneur
fx=[0 0 0;-1 1 0; 0 0 0];
fy=fx';
fm=[1 1 1 ;1 1 1 ;1 1 1]/9 ;% filtre moyeneur;
b=filter2(fm,a) ;gx=filter2(fx,b) ;gy=filter2(fy,b) ;
g=sqrt(gx.^2+gy.^2);
%%% BINAIRISER TOUS LES IMAGES APRES LE FILTRAGE
[l,p]=size(g); % matrice simple allant de 0 à 255;
s=6; % critére de binairisation qui va parcourir l'ensemble des cses de la matrice (seuillage);
x1=[]; % initialiser la variable x1;
y1=[]; % initialiser la variable y1;
k=1; % initialiser un compteur à 1;
%figure(1),imshow(g); % affiche l'image binairisée;
for i=1:l % on définit la ligne i que va prendre un pixel;
for j=1:p % la colonne j que va prendre aussi un pixel;
if g(i,j)<s % si la valeur de la matrice est inférieur au critére;
g(i,j)=0; % met 0;
else
%% TRACER UN CERCLE QUI VA PRENDRE QUE LES POINTS OU LES PIXELS SONT A 255 ET LES METTRE DANS UNE MATRICE X1 & Y1 QUE L'ON VA TRACER
g(i,j)=255; % sinon met 1;
x=i;
y=j;
x1=[x1,x]; % calcul de la nouvelle variable x1;
y1=[y1,y]; % calcul de la nouvelle variable y1;
k=k+1;
plot(x1,y1,'r'); %% on trace le cercle donnée par les pixels à 255 en rouge
end
end
end
%% J'INTRODUIS UNE FONCTION CIRCFIT QUI VA ME PERMET DE FITTER UN CERCLE AFIN DE DETERMINER LE RAYON DU CERCLE DONNEE PAR X1 & Y1
function [xc,yc,R,a] = circfit(x1,y1) % la fontion circfit qui prend en entée x1 & y1 renvoie en sortie xc, yc, le rayon R et un paramétre du cercle
% [xc yx R] = circfit(x,y);
% x^2+y^2+a(1)*x+a(2)*y+a(3)=0;
x1=x1(:); y1=y1(:);
a=[x1 y1 ones(size(x1))]\[-(x1.^2+y1.^2)];
xc = -.5*a(1)
yc = -.5*a(2)
R = sqrt((a(1)^2+a(2)^2)/4-a(3))
end
%% CREER UN DOSSIER OU ON VA STOCKER A CHAQUE FOIS LA VALEUR DU RAYON R DANS UNE COLONNE
pathname = 'test11';
mkdir('test11') % création d'un sous-répertoire pour stocker les résultats
fid=fopen('R','rb'); %
test11 = fread(fid, count, 'int16'); %
count=[n inf];% lire les données dans la matrice avec n colonnes utilisées
end
voila en gros mon code avec les commentaires de ce que je veux faire.
c'est archi complexe ce code.
mes principaux problémes c'est au niveau de l'importation des fichiers pour le code arrive a lire toutes les images et traitent une par une ensuite qu'il face la binairisation et aprés je veux utiliser une fonction fit circle pour fitter un cercle pour calculer le rayon de mes images binairisées.
par contre j'ai un grand soucis avec la fonction fit circle que matlab ne reconnait pas et j'arrive pas à fitter un cercle.
Aussi je souhaiterais stocker pour chaque valeur du rayon trouver dans un fichier sur une colonne et j'en ai du mal à le faire.
merci de votre compréhension et aidez moi à résoudre ce code s'il vous plait.
merci d'avance.
rep = 'C:\Users\33780\Desktop\NAVIER STAGE\12-03\test1\';% chemin vers le répertoire
ext = '*.tiff'; %extension des fichiers
chemin = fullfile(rep,ext); % chemin complet complet vers les fichiers
list = dir(chemin); % accés aus fichiers
for n = 1:numel(list) % boucle pour la lecture des images
a= imread(fullfile(rep, list(n).name), ext(3:end)); % lire les fichier
%%% FILTRER TOUTES LES IMAGES IMPORTEES PAR UN FILTRE MOYENNEUR
a=mean(a,3);
% Filtrage moyenneur
fx=[0 0 0;-1 1 0; 0 0 0];
fy=fx';
fm=[1 1 1 ;1 1 1 ;1 1 1]/9 ;% filtre moyeneur;
b=filter2(fm,a) ;gx=filter2(fx,b) ;gy=filter2(fy,b) ;
g=sqrt(gx.^2+gy.^2);
%%% BINAIRISER TOUS LES IMAGES APRES LE FILTRAGE
[l,p]=size(g); % matrice simple allant de 0 à 255;
s=6; % critére de binairisation qui va parcourir l'ensemble des cses de la matrice (seuillage);
x1=[]; % initialiser la variable x1;
y1=[]; % initialiser la variable y1;
k=1; % initialiser un compteur à 1;
%figure(1),imshow(g); % affiche l'image binairisée;
for i=1:l % on définit la ligne i que va prendre un pixel;
for j=1:p % la colonne j que va prendre aussi un pixel;
if g(i,j)<s % si la valeur de la matrice est inférieur au critére;
g(i,j)=0; % met 0;
else
%% TRACER UN CERCLE QUI VA PRENDRE QUE LES POINTS OU LES PIXELS SONT A 255 ET LES METTRE DANS UNE MATRICE X1 & Y1 QUE L'ON VA TRACER
g(i,j)=255; % sinon met 1;
x=i;
y=j;
x1=[x1,x]; % calcul de la nouvelle variable x1;
y1=[y1,y]; % calcul de la nouvelle variable y1;
k=k+1;
plot(x1,y1,'r'); %% on trace le cercle donnée par les pixels à 255 en rouge
end
end
end
%% J'INTRODUIS UNE FONCTION CIRCFIT QUI VA ME PERMET DE FITTER UN CERCLE AFIN DE DETERMINER LE RAYON DU CERCLE DONNEE PAR X1 & Y1
function [xc,yc,R,a] = circfit(x1,y1) % la fontion circfit qui prend en entée x1 & y1 renvoie en sortie xc, yc, le rayon R et un paramétre du cercle
% [xc yx R] = circfit(x,y);
% x^2+y^2+a(1)*x+a(2)*y+a(3)=0;
x1=x1(:); y1=y1(:);
a=[x1 y1 ones(size(x1))]\[-(x1.^2+y1.^2)];
xc = -.5*a(1)
yc = -.5*a(2)
R = sqrt((a(1)^2+a(2)^2)/4-a(3))
end
%% CREER UN DOSSIER OU ON VA STOCKER A CHAQUE FOIS LA VALEUR DU RAYON R DANS UNE COLONNE
pathname = 'test11';
mkdir('test11') % création d'un sous-répertoire pour stocker les résultats
fid=fopen('R','rb'); %
test11 = fread(fid, count, 'int16'); %
count=[n inf];% lire les données dans la matrice avec n colonnes utilisées
end
voila en gros mon code avec les commentaires de ce que je veux faire.
c'est archi complexe ce code.
mes principaux problémes c'est au niveau de l'importation des fichiers pour le code arrive a lire toutes les images et traitent une par une ensuite qu'il face la binairisation et aprés je veux utiliser une fonction fit circle pour fitter un cercle pour calculer le rayon de mes images binairisées.
par contre j'ai un grand soucis avec la fonction fit circle que matlab ne reconnait pas et j'arrive pas à fitter un cercle.
Aussi je souhaiterais stocker pour chaque valeur du rayon trouver dans un fichier sur une colonne et j'en ai du mal à le faire.
merci de votre compréhension et aidez moi à résoudre ce code s'il vous plait.
merci d'avance.
yg_be
Messages postés
22779
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
12 mai 2024
1 481
23 mars 2021 à 12:16
23 mars 2021 à 12:16
si je comprends bien, tu as écrit un long code complexe qui ne fait pas ce que tu souhaites.
ne serait-il pas préférable de faire d'abord de petits morceaux qui fonctionnent?
ne serait-il pas préférable de faire d'abord de petits morceaux qui fonctionnent?
ce que je souhaite faire je l'ai décris dans les commentaires et y'a des parties comme le filtre moyenneur, la binairisation et le traçage du cercle en utilisant les pixels à 255.
Mon problème est que je ne suis pas sur qu'il importe tous les images et les traites.
De plus je ne sais pas pourquoi ma fonction circfit ne marche pas alors que je l'ai appelé dans matlab.
Et mon autre soucis comment stocker les valeurs du rayon R après chaque calcul dans un fichier sur la même colonne.
En gros c'est cela que je n'arrive pas faire.
si vous pouviez m'aider j'aimerais bien si possible.
merci.
Mon problème est que je ne suis pas sur qu'il importe tous les images et les traites.
De plus je ne sais pas pourquoi ma fonction circfit ne marche pas alors que je l'ai appelé dans matlab.
Et mon autre soucis comment stocker les valeurs du rayon R après chaque calcul dans un fichier sur la même colonne.
En gros c'est cela que je n'arrive pas faire.
si vous pouviez m'aider j'aimerais bien si possible.
merci.