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 :

calcul du max de chaque bloc d'une image (reconstruction)


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2009
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 62
    Par défaut calcul du max de chaque bloc d'une image (reconstruction)
    bonjour
    j'ai un petit programme a faire, mais j'ai soucis ; mon programme procéde comme suit:
    1- j'ai une image RGB , je la transforme en HSV.
    2- je prend le plan H(hue c'est a dire la teinte), je subdivise mon image en bloc 16*16.
    3- pour chaque bloc je calcul l'histogramme.
    4-chaque histogramme je calcul son maximum.
    je veux avoir a la fin un vecteur qui contient le maximum de chaque bloc.
    Mais la j'obtient une seule valeur je sais pas pour quoi, enfin je n'arrive pas a trouver le probleme.
    voila mon programme.

    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
    %% transformation HSV
    I=imread('image.jpg');
    I1=rgb2hsv(I);
    % subplot(2,2,1);imshow(I)
    % subplot(2,2,2);imshow(I1)
    h=I1(:,:,1);
    [m n l]=size(h);
    %% subdivision en blocs
    w=16;
    for i=m/w
        for j=n/w
            B(1:w,1:w)=h((i-1)*w+1:i*w,(j-1)*w+1:j*w);
            %% calcul de l'histogramme pour chaque bloc de la teinte:
            bh=floor(B*100);
            hi(1:100)=0;
            for u=1:w
                for v=1:w
                    hi(uint8(bh(u,v)+1))=hi((bh(u,v))+1)+1;
                end
            end
     
            vect1=[hi];
            %% ouvrir un fichier
            a=100;
            fp=fopen('fich111.dat','w');
            fwrite(fp,a,'int');
            fwrite(fp,hi,'int');
            fclose(fp);
            %% lecture du fichier
            fp1=fopen('fich111.dat','r');
            a1=fread(fp1,1,'int');
            %% construction du vecteur de la teinte max de chaque bloc
            k=1;
            M=[]
            ma=hi(1)
            for u=1:100
                if (hi(u)>ma)
                    ma=hi(u);
                    l=u;
                end
            end
            vectma(k)=l/100;
            k=k+1;
        end
    end
    M=vectma

  2. #2
    Membre émérite Avatar de tubaas
    Homme Profil pro
    Acousticien
    Inscrit en
    Août 2009
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Par défaut
    es-tu sûre de tes boucles ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for i=m/w
    for j=n/w
    %ou plutôt
    for i=0:m/w:m
    for j=0:n/w:n
    (a plus ou moins adapté mais c'est l'idée, car apparemment m, n et w sont des scalaires donc tu ne fais pas de boucles, tu ne passes qu'une fois avec une valeur)

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2009
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 62
    Par défaut
    Merci pour ta réponse, mais est ce que c'est juste comme ça j'ai modifié quelque truc;
    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
    %% transformation HSV
    I=imread('image.jpg');
    I1=rgb2hsv(I);
    h=I1(:,:,1);
    [m n l]=size(h);
    %% subdivision en blocs
    w=16;
    for i=1:m/w
        for j=1:n/w
            B(1:w,1:w)=h((i-1)*w+1:i*w,(j-1)*w+1:j*w);
            %% calcul de l'histogramme pour chaque bloc de la teinte:
            bh=floor(B*100);
            hi(1:100)=0;
            for u=1:w
                for v=1:w
                    hi(uint8(bh(u,v)+1))=hi((bh(u,v))+1)+1;
                end
            end
     
            vect1=[hi];
            %% ouvrir un fichier
            a=100;
            fp=fopen('fich111.dat','w');
            fwrite(fp,a,'int');
            fwrite(fp,hi,'int');
            fclose(fp);
            %% lecture du fichier
            fp1=fopen('fich111.dat','r');
            a1=fread(fp1,1,'int');
            %% construction du vecteur de la teinte max de chaque bloc
            k=1;
            M=[];
            ma=hi(1)
            for u=1:100
                if (vect1(u)>ma)
                    ma=vect1(u);
                    l=u;
                end
            vect11(k)=ma;    
            end
     
            vect11(k)=l/100;
            k=k+1;
        end
    end
    vect11

  4. #4
    Membre émérite Avatar de tubaas
    Homme Profil pro
    Acousticien
    Inscrit en
    Août 2009
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Par défaut
    ça me semble correct, du moins pour la définition de B (en prenant bien sûr garde à ce que m/w soit entier)

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2009
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 62
    Par défaut
    MErciiii.
    mais les valeur sont un peu bizar, pour quoi les 50 premières valeurs sont des zéros et les dernières sont des valeurs constantes.
    je n'arrive pas a comprendre. ( je sais que sa dépend l'image qui j'ai choisit), mais coméme les valeurs me semble vraiment bizar.

  6. #6
    Membre émérite Avatar de tubaas
    Homme Profil pro
    Acousticien
    Inscrit en
    Août 2009
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Par défaut
    on dirait que tu as un autre problème ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    k=1;
            M=[];
            ma=hi(1)
            for u=1:100
                if (vect1(u)>ma)
                    ma=vect1(u);
                    l=u;
                end
            vect11(k)=ma;    
            end
            
            vect11(k)=l/100;
    k=k+1;
    le k=k+1 ne te servira pas, je suppose que tu veux initialiser k à 1 avant les boucles sur i et j afin d'avoir un vecteur qui a des valeurs pour chaque bloc
    une autre solution est de faire une matrice et tu auras directement

Discussions similaires

  1. [Turbo Pascal] Calculer le max de chaque ligne d'un tableau puis le min de ces max
    Par med.ycf dans le forum Turbo Pascal
    Réponses: 6
    Dernier message: 08/02/2014, 23h26
  2. Calculer le numéro du bloc dans une image
    Par bechir ouni dans le forum Images
    Réponses: 4
    Dernier message: 08/06/2012, 08h30
  3. Réponses: 6
    Dernier message: 11/08/2010, 15h50
  4. [Débutant] moyenne de chaque pixel d'une image
    Par ghadatou dans le forum Images
    Réponses: 4
    Dernier message: 16/02/2009, 22h05
  5. Calcul du champ de vision couvert par une image
    Par progfou dans le forum Traitement d'images
    Réponses: 0
    Dernier message: 28/10/2008, 15h32

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