IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

Enregistrement de matrices dans un fichier .mat à l’intérieur de boucles imbriquées


Sujet :

MATLAB

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Sri Lanka

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 191
    Points : 63
    Points
    63
    Par défaut Enregistrement de matrices dans un fichier .mat à l’intérieur de boucles imbriquées
    Bonjour,

    Je reprends mon projet après une semaine de repos et c’est très dur

    Revenons au choses sérieuses, voilà j’ai déjà fini le programme principal il y’a une semaine et je l’ai aussi discuté sur ce forum, maintenant j’ai terminé le traitement qui doit se mettre au cœur du programme et je l’ai mis dans une fonction ‘edge_brut’
    La fonction marche très bien pour une seule image mais j’ai un petit souci de la mettre au cœur du programme principal,
    La fonction edge_brut donne 4 vecteur de 2000 colonnes comme sorties
    Elle doit tourner au sein de la boucle et fournir à la fin des 300 k (tours) : 4 matrices de 2000 colonnes et 300 lignes qu’on doit mettre dans un fichier mat
    donc pour chaque fichier d’indice i on doit obtenir (s-d+1) fichiers mat, c’est plus expliquer sur les commentaires de mes programmes
    je vous montre dans les programmes ce que j’ai fais, l’essaie étant très long je veux savoir votre avis avant, s’il y a des fautes clair que je peux corriger avant de lancer le programme, j'ai aussi des questions derrière les %%%

    merci

    programme principal
    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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    function lire_image
     
    choice=menu('Choix du dossier des images suivant le fetch',...
        {'fetch 2m','fetch 6m','fetch 13m','fetch 26m',...
        'Quitter l exécution du programme'}) ; % entrer le choix
     
     
    switch choice
        case 1
            doss_nom = 'Fetch2m';
            Fetch=2;
            n=6;%nombre de dossiers vents
            d=1;%début de la série
            s=7;%fin de série
        case 2
            doss_nom = 'Fetch6m';
            Fetch=6;
            n=6;%nombre de dossiers vents
            d=1;%début de la série
            s=8;%fin de série
        case 3
            Fetch=13;
            doss_nom = 'Fetch13m';
            n=7;%nnombre de dossiers vents
            d=1;%début de la série
            s=8;%fin de série
        case 4
            Fetch=26;
            doss_nom = sprintf('Fetch26m');
            n=6;%nombre de dossiers vents
            d=0;%début de la série
            s=9;%fin de série
    end
     
    %%% ce sont les matrices que je veux obtenir à la fin, chaque fichier i
    %%% doit fournir (s-d+1)fichiers mat et chaque fichier mat doit contenir 4
    %%% matrices, j'ai mis en commentaire car je pense que ce n'est pas
    %%% necessaire de les définir au début, non?
     
    % M_C=zeros(300,2000);
    % M_C_adjus=zeros(300,2000);
    % M_L=zeros(300,2000);
    % M_L_adjust=zeros(300,2000);
     
     
    chem='D:\images_manipvent2007\';
    chemi=fullfile(chem,doss_nom);%D:\images_manipvent2007\Fetch<Fetch>m
     
    for i=1:n
        %D:\images_manipvent2007\Fetch<Fetch>m\Fetch<Fetch>-1 à n
        chemin=fullfile(chemi,sprintf('%s-%d',doss_nom,i));
        %cd(chemin);
        for j=d:s
            for k=0:299
                %Construction du nom de fichier :
                %f<Fetch sur 2 digits>v<i><j><k sur 4 digits>
                nomfichier = sprintf('f%02dv%01d%01d%04d.tif',Fetch,i,j,k);
                %Nom complet avec le répertoire :
                nomcomplet = fullfile(chemin,nomfichier);
                if exist(nomcomplet,'file')
                    edge_brut(nomcomplet);
                    %%%je ne sais pas si l'enregistrement dans les matrices est
                    %%%juste?
                    M_C(k+1,:)=ind_nonadjust;
                    M_C_adjust(k+1,:)=L_nonadjust;
                    M_L(k+1,:)=ind_adjust;
                    M_L_adjust(k+1,:)=L_adjust;
                end
            end
            %%% c'est la ou je définis (et je veux crée)le .mat et je veux
            %%% enregistrer les 4 matrices dedans mais je ne sais pas si c
            %%% juste??
            cd('dossier_registres');
            nom_registre=sprintf('f%02dv%01d%01db.mat',Fetch,i,j);
            save nom_registre M_C M_C_adjust M_L M_L_adjust
            cd ..
        end
    end
    fonction edge_brut
    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
    function [output]=edge_brut(nomcomplet)
    %%% la definition de la fonction, on peut ne rien mettre dans output??
     
    %définition de mes vecteurs contour et luminosité
    ind_nonadjust=[]; ind1=[]; L_nonadjust=[];
    ind_adjust=[]; ind4=[]; L_adjust=[];ind=[];
     
    I=imread([nomcomplet]);%lecture du fichier
    [l,c]=size(I);%taille
    II=double(I);
    I1=edge(II,'canny',0.1,1);%canny sans ajustement
    I2=imadjust(I,[0 0.5],[],1); % j'ajuste le contraste de l'image
    I3=double(I2); % une image est en uint8, je la passe en real
    I4=edge(I3,'canny',0.1,1);%canny avec ajustement
     
    %tester si'image existe ou "not an image"
    if I(1,1)~= 0;
        for j=1:2000;
            ind=639;L=0;
            ind_nonadjust=[ind_nonadjust ind];
            L_nonadjust=[L_nonadjust L];
            ind_adjust=[ind_adjust ind];
            L_adjust=[L_adjust L];
        end
    else
     
        for j=1:c; % je lis l'image colonne par colonne
            % je cherche l'indice du premier pixel qui a la valeur 1
            %je stocke mes indices de coontour ensuite jextrait la luminosité
            %correspondante
            ind1=find(I1(:,j)==1,1);
            if isempty(ind1)==1; ind1=1;  end;
            ind_nonadjust=[ind_nonadjust l-ind1]; L_nonadjust=[L_nonadjust I(ind1,j)];
            ind4=find(I4(:,j)==1,1);
            if isempty(ind4)==1; ind4=1;  end;
            ind_adjust=[ind_adjust l-ind4]; L_adjust=[L_adjust I(ind4,j)];
        end;
    end
    cd ..
     
    %%% ce sont mes sorties en vecteurs (quand on fait le lien avec le programme
    %%% principale, ce sont les vecteurs pour k donné)
    ind_nonadjust(k);
    L_nonadjust(k);
    ind_adjust(k);
    L_adjust(k);
     
    %%%j'ai fait les plot juste pour vérifier les sorties
    % X=1:2000;
    % plot(X,ind_nonadjust,'g');
    % hold on
    % plot(X,L_nonadjust,'y');
    %
    % plot(X,ind_adjust,'m');
    % hold on
    % plot(X,L_adjust,'b');

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Points : 726
    Points
    726
    Par défaut
    Peux tu poser clairement ta question ?

    Pour sauver des données en format ".mat", regardes la fonction "SAVE"

    Christophe
    INCIA : MATLAB R2014a sous MAC OS 10.9.3

    Nous piétinerons éternellement aux frontières de l'Inconnu, cherchant à comprendre ce qui restera toujours incompréhensible. Et c'est précisément cela qui fait des nous des hommes. Isaac Asimov

  3. #3
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    1. Dans la boucle
    Il n'y a aucun sortie à l'appel de edge_brut.
    Ton programme va planter car il ne connait pas les variables définies dans la fonction edge_brut (ind_nonadjust,...etc)

    2. Pour la sauvegarde :
    Pour que la variable soit évaluée il faut utiliser la forme fonctionnelle de SAVE.
    Et comme toujours les CD sont inutiles (et dangereux) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    %cd('dossier_registres');
    nom_registre=sprintf('f%02dv%01d%01db.mat',Fetch,i,j);
    save(fullfile(pwd,'dossier_registres',nom_registre),'M_C','M_C_adjust','M_L','M_L_adjust');
    %cd ..
    Règles du Forum

    Adepte de la maïeutique

  4. #4
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Sri Lanka

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 191
    Points : 63
    Points
    63
    Par défaut
    merci caroline!!! j'ai fais la correction de 'save' et j'ai définis les sorties de edge_brut dans le titre de la fonction et dans l'appel comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [ind_nonadjust,L_nonadjust,ind_adjust,L_adjust]=edge_brut(nomcomplet)
    j'ai lancé le programme et ça tourne depuis un moment, j'espère que c'est un bon signe!!
    j'aurais du mettre l'affichage du 'nomcomplet' avant de lancer, comme ça je vois au moins qu'il passe d'une image à une autre :p

  5. #5
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Citation Envoyé par helaaa Voir le message
    j'aurais du mettre l'affichage du 'nomcomplet' avant de lancer, comme ça je vois au moins qu'il passe d'une image à une autre :p
    Mauvaise idée...
    Tu as énormément de boucles, faire un affichage te feras donc perdre un temps considérable.

    Par contre là je suis en train de regarder ta fonction edge_brut (qui est appelée 299*(s-d)*n fois) et elle est très optimisable.
    Règles du Forum

    Adepte de la maïeutique

  6. #6
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Ceci devrait être plus efficace :
    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
    63
    function [ind_nonadjust,L_nonadjust,ind_adjust,L_adjust]=edge_brut(nomcomplet)
     
    %En fait ici les initialisations ne servent plus à rien avec mes modifs
    % %définition de mes vecteurs contour et luminosité
    % ind_nonadjust=[];
    % %ind1=[];
    % L_nonadjust=[];
    % ind_adjust=[];
    % %ind4=[];
    % L_adjust=[];ind=[];
     
    I=imread(nomcomplet);%lecture du fichier
    [l,c]=size(I);%taille
    II=double(I);
    I1=edge(II,'canny',0.1,1);%canny sans ajustement
    I2=imadjust(I,[0 0.5],[],1); % j'ajuste le contraste de l'image
    I3=double(I2); % une image est en uint8, je la passe en real
    I4=edge(I3,'canny',0.1,1);%canny avec ajustement
     
    %tester si'image existe ou "not an image"
    if I(1,1)~= 0;
        %%Note : il vient d'où ce 2000 ?
        %Initialisation
        ind_nonadjust = 639*ones(1,2000);
        ind_adjust = ind_nonadjust;
        L_nonadjust = zeros(1,2000);
        L_adjust = L_nonadjust;
    %     for j=1:2000;
    %         ind=639;
    %         L=0;
    %         ind_nonadjust=[ind_nonadjust ind];
    %         L_nonadjust=[L_nonadjust L];
    %         ind_adjust=[ind_adjust ind];
    %         L_adjust=[L_adjust L];
    %     end
    else
        %Initialisations
        ind_nonadjust=zeros(1,c);
        L_nonadjust=ind_nonadjust;
        ind_adjust=ind_nonadjust;
        L_adjust=ind_nonadjust;
        for j=1:c; % je lis l'image colonne par colonne
            % je cherche l'indice du premier pixel qui a la valeur 1
            %je stocke mes indices de coontour ensuite jextrait la luminosité
            %correspondante
            ind1=find(I1(:,j)==1,1);
            if isempty(ind1) %==1
                ind1=1;  
            end
            ind_nonadjust(j)=l-ind1;
            L_nonadjust=I(ind1,j);
            ind4=find(I4(:,j)==1,1);
            if isempty(ind4) %==1
                ind4=1;  
            end
            ind_adjust=l-ind4;
            L_adjust=I(ind4,j);
        end;
    end
    %cd .. %ne sert à rien
     
     
    %La suite non plus
    Règles du Forum

    Adepte de la maïeutique

  7. #7
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Sri Lanka

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 191
    Points : 63
    Points
    63
    Par défaut
    ah bon!! encore? et moi qui croyais l'avoir bien optimiser, mon tout premier essai de cette fonction était vraiment trop long et compliqué

    quelles sont les modifications sur lesquelles je dois retravailler pour optimiser encore? des idées?

  8. #8
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Je suppose que nos posts se sont croisés.

    Sinon un truc à utiliser au maximum c'est l'éditeur de MATLAB : il te parle !! Et oui !

    Un peu comme le correcteur orthographique de Word, quand quelque chose ne lui plait pas il le souligne avec une vague : rouge (là c'est très mal, il y a une erreur) ou orange (plutôt une recommandation) :
    il suffit alors de passer la souris sur le mot souligné et MATLAB raconte un tas de choses intéressantes.
    Evidemment tous les zigouigouis oranges ne sont pas supprimables, il s'agit juste de recommandations.

    On peut retrouver un listing de ces recommandations en utilisant M-Lint : Menu Tools > M-Lint > Save and Show...
    Règles du Forum

    Adepte de la maïeutique

  9. #9
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Sri Lanka

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 191
    Points : 63
    Points
    63
    Par défaut
    effectivement Caroline !! c'est beaucoup mieux, merci

    pour la valeur 2000 c'est le nombre de colonne pour une image normale mais pour les fausses images (où il est écrit dessus 'not an image') le nombre de colonnes est inférieur à 2000
    comme je veux mettre tous les vecteurs par la ensuite dans une même matrice je rempli un vecteur de 2000 colonnes par la même valeur (qui sera ma valeur d'erreur)
    dans mes programmes qui vont suivre je vais faire un traitement qui détecte les erreurs mais au moins, il ne sera pas aussi long que celui là car je travaillerai sur les profils brut des fichier .mat

  10. #10
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Sri Lanka

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 191
    Points : 63
    Points
    63
    Par défaut
    ah oui c'est génial!!! je vais y jeter un coup d'œil
    je ne savais pas que l'éditeur fait tous ça
    merciiiiii

  11. #11
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Sri Lanka

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 191
    Points : 63
    Points
    63
    Par défaut
    c'est bizarre ce que j'ai trouvé là!!!

    j'ai arrêté le programme et j'ouvre mon dossier, à ce stade j'ai trouvé 3 fichiers '.mat' (peut être le dernier n'est pas encore complet)
    mais le problème c'est que la tailles des matrices qui doit être [300,2000] est de [200,2000], ça peut être liés à la taille du fichier type .mat???
    je revois mon programme et je ne trouve pas d'explications!!!
    pour le moment je vais faire l'affichage des indices i, j et k dans les boucles et essayer de suivre le traitement

    ceci c'est les tailles trouvé pour les 3 fichiers (ce qui est aussi bizarre le troisième est à 201, je ne sais pas si je l'ai encore laissé il sera à 300 ou non)


    open('f02v11b.mat')

    ans =

    M_C: [200x2000 double]
    M_C_adjust: [200x2000 double]
    M_L: [200x2000 double]
    M_L_adjust: [200x2000 double]


    >> open('f02v12b.mat')

    ans =

    M_C: [200x2000 double]
    M_C_adjust: [200x2000 double]
    M_L: [200x2000 double]
    M_L_adjust: [200x2000 double]

    >> open('f02v13b.mat')

    ans =

    M_C: [201x2000 double]
    M_C_adjust: [201x2000 double]
    M_L: [201x2000 double]
    M_L_adjust: [201x2000 double]

  12. #12
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Sri Lanka

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 191
    Points : 63
    Points
    63
    Par défaut
    Pardon pardon pardon !!! je suis bête , je suis pas aller vérifier combien d’images j’en ai à la base, et j’aurais dû mettre un vecteur de valeur 639 si le fichier avec ‘nomcomplet’ n’existe pas, parce que je dois avoir toutes les matrices de taille [300,2000]

    C’est juste de faire ceci sur la boucle for (niveau d’indices k) ?



    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
    for k=0:299
                %Construction du nom de fichier :
                %f<Fetch sur 2 digits>v<i><j><k sur 4 digits>
                nomfichier = sprintf('f%02dv%01d%01d%04d.tif',Fetch,i,j,k);
                %Nom complet avec le répertoire :
                nomcomplet = fullfile(chemin,nomfichier);
                if exist(nomcomplet,'file')
                    %nomcomplet
                    k
                    [ind_nonadjust,L_nonadjust,ind_adjust,L_adjust]=edge_brut_fin(nomcomplet);
                    M_C(k+1,:)=ind_nonadjust;
                    M_C_adjust(k+1,:)=L_nonadjust;
                    M_L(k+1,:)=ind_adjust;
                    M_L_adjust(k+1,:)=L_adjust;
                else
                    ind_nonadjust = 639*ones(1,2000);
                    ind_adjust = ind_nonadjust;
                    L_nonadjust = zeros(1,2000);
                    L_adjust = L_nonadjust;
     
                    M_C(k+1,:)=ind_nonadjust;
                    M_C_adjust(k+1,:)=L_nonadjust;
                    M_L(k+1,:)=ind_adjust;
                    M_L_adjust(k+1,:)=L_adjust;
                end
            end

  13. #13
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Dans ce cas, je te propose les modifications ci-dessous :
    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
    %Initialisations
    M_C = 639*ones(300,2000);
    M_C_adjust = M_C;
    M_L = zeros(300,2000);
    M_L_adjust(k+1,:)=M_L;
    for k=0:299
        %Construction du nom de fichier :
        %f<Fetch sur 2 digits>v<i><j><k sur 4 digits>
        nomfichier = sprintf('f%02dv%01d%01d%04d.tif',Fetch,i,j,k);
        %Nom complet avec le répertoire :
        nomcomplet = fullfile(chemin,nomfichier);
        if exist(nomcomplet,'file')
            %nomcomplet
            k
            [ind_nonadjust,L_nonadjust,ind_adjust,L_adjust]=edge_brut_fin(nomcomplet);
            if ~isempty(ind_nonadjust)
                M_C(k+1,:)=ind_nonadjust;
                M_C_adjust(k+1,:)=L_nonadjust;
                M_L(k+1,:)=ind_adjust;
                M_L_adjust(k+1,:)=L_adjust;
            end
        end
    end
    Et dans edge_brut :
    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
    function [ind_nonadjust,L_nonadjust,ind_adjust,L_adjust]=edge_brut(nomcomplet)
    %Tous à vide
    [ind_nonadjust,L_nonadjust,ind_adjust,L_adjust]=deal([]);
     
    I=imread(nomcomplet);%lecture du fichier
    %tester si l'image existe ou "not an image"
    if I(1,1)== 0
        [l,c]=size(I);%taille
        II=double(I);
        I1=edge(II,'canny',0.1,1);%canny sans ajustement
        I2=imadjust(I,[0 0.5],[],1); % j'ajuste le contraste de l'image
        I3=double(I2); % une image est en uint8, je la passe en real
        I4=edge(I3,'canny',0.1,1);%canny avec ajustement
     
        %Initialisations
        ind_nonadjust=zeros(1,c);
        L_nonadjust=ind_nonadjust;
        ind_adjust=ind_nonadjust;
        L_adjust=ind_nonadjust;
        for j=1:c; % je lis l'image colonne par colonne
            % je cherche l'indice du premier pixel qui a la valeur 1
            %je stocke mes indices de coontour ensuite jextrait la luminosité
            %correspondante
            ind1=find(I1(:,j)==1,1);
            if isempty(ind1) %==1
                ind1=1;
            end
            ind_nonadjust(j)=l-ind1;
            L_nonadjust=I(ind1,j);
            ind4=find(I4(:,j)==1,1);
            if isempty(ind4) %==1
                ind4=1;
            end
            ind_adjust=l-ind4;
            L_adjust=I(ind4,j);
        end;
    end
    Règles du Forum

    Adepte de la maïeutique

Discussions similaires

  1. Réponses: 6
    Dernier message: 26/10/2010, 08h54
  2. enregistrement des matrices dans des fichier text
    Par fleurrouge dans le forum Signal
    Réponses: 1
    Dernier message: 22/05/2009, 20h23
  3. Enregistrer un script dans un fichier externe
    Par Furius dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 30/11/2005, 12h57
  4. Comment enregistrer une string dans un fichier
    Par Dnx dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 23/09/2005, 14h52
  5. enregistrement de matrices dans une base
    Par funkadelic dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 02/06/2005, 17h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo