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

Images Discussion :

Pansharpening sur Matlab


Sujet :

Images

  1. #1
    Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Février 2009
    Messages : 227
    Points : 69
    Points
    69
    Par défaut Pansharpening sur Matlab
    Bonjour

    voilà avec la toolbox matlab j'essaye de faire du pansharpening en commencant avec l'algorithme de brovey, je fais ça:

    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
    image = imread('D:\redim\redim_msi_test.tif');
     
    image = upsample_ms(image);
     
      pan = imread ('D:\redim\redim_pan_test.tif')
     
     [~, ~, d_im] = size(image);
    % 
     sharpened = zeros(size(image));
    % 
     denom = sum(image, 3);
    % 
     for k = 1 : d_im
        sharpened(:,:,k) = (d_im * pan .* image(:,:,k) ) ./ denom;
     end
    j'ai cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Error using  .* 
    Integers can only be combined with integers of the same class, or scalar doubles.
     
    Error in test_fin_fin (line 15)
        sharpened(:,:,k) = (d_im * pan .* image(:,:,k) ) ./ denom;
    la taille de l'image MS = 32*32*4 aprés upsampled elle devient 64*64*4
    la panchro est a 128*128

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 316
    Points : 52 948
    Points
    52 948
    Par défaut
    Pour commencer, renomme les variables image et pan car ce sont déjà des noms de fonctions MATLAB :

    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
    img = imread('D:\redim\redim_msi_test.tif');
     
    img = upsample_ms(img );
     
      pans = imread ('D:\redim\redim_pan_test.tif')
     
     [~, ~, d_im] = size(img );
    % 
     sharpened = zeros(size(img ));
    % 
     denom = sum(img , 3);
    % 
     for k = 1 : d_im
        sharpened(:,:,k) = (d_im * pans .* img (:,:,k) ) ./ denom;
     end
    Ensuite, que renvoi ceci ?


  3. #3
    Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Février 2009
    Messages : 227
    Points : 69
    Points
    69
    Par défaut
    bonsoir

    voila ce que renvoit l'instruction

    Name        Size               Bytes  Class     Attributes
    
      d_im        1x1                    8  double              
      img        64x64x4            131072  double              
      pans      128x128              16384  uint8 
    voici le code de up_sample
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function [ high_res ] = upsample_ms( low_res )
    [m, n, d] = size(low_res);
     
    high_res = zeros([m*2, n*2, d]);
     
    for j = 1 : m*2
        for k = 1 : n*2
            high_res(j, k, :) = low_res( ceil(j/2), ceil(k/2), :);
        end
    end
     
    end

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 316
    Points : 52 948
    Points
    52 948
    Par défaut
    Converti la variable pans en classe Double :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    pans = imread ('D:\redim\redim_pan_test.tif');
    pans = double(pans);

  5. #5
    Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Février 2009
    Messages : 227
    Points : 69
    Points
    69
    Par défaut
    j'ai toujours la même erreur!

    Quand j'execute le code avec les images fournies avec la toolbox tout marche, j'ai un probleme avec mes images je crois, voici le code initial :



    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
    paths = ['brovey_pansharp:', 'common:'];
    addpath(paths);
     
    load imagery/cropped/1_ms.mat
    A = cropped_im(:,:, 1:3);
    A = double(A)/255;
     
    load imagery/cropped/1_pan.mat
    B = double(cropped_gray)/255;
     
    sharped = solve_pansharp(A, B);
     
    figure, imshow(imresize(A, 2));
    figure, imshow(sharped);
     
    rmpath(paths);

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 316
    Points : 52 948
    Points
    52 948
    Par défaut
    Montre nous le code que tu utilises.

  7. #7
    Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Février 2009
    Messages : 227
    Points : 69
    Points
    69
    Par défaut
    Bonjour

    j'utilise ce code :

    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
    img = imread('D:\redim\redim_msi_test.tif');
     
    img = upsample_ms(img );
     
      pans = imread ('D:\redim\redim_pan_test.tif')
     
     [~, ~, d_im] = size(img );
    % 
     sharpened = zeros(size(img ));
    % 
     denom = sum(img , 3);
    % 
     for k = 1 : d_im
        sharpened(:,:,k) = (d_im * pans .* img (:,:,k) ) ./ denom;
     end

  8. #8
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 316
    Points : 52 948
    Points
    52 948
    Par défaut
    Tu n'as pas converti pans en classe Double

  9. #9
    Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Février 2009
    Messages : 227
    Points : 69
    Points
    69
    Par défaut
    si si j'ai testé avec pans en double j'ai eu le même message d'erreur

  10. #10
    Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Février 2009
    Messages : 227
    Points : 69
    Points
    69
    Par défaut
    j'ai un autre message d'erreur là

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Error using.*
    Matrix dimensions must agree
    sharpened(:,:,k) = (d_im * pans .* img(:,:,k) ) ./ denom;

  11. #11
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 316
    Points : 52 948
    Points
    52 948
    Par défaut
    Voir la FAQ : Matrix dimensions must agree.

    Montre nous ce que renvoi la commande suivante juste avant de rentrer dans la boucle for :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    whos d_im pans img denom

  12. #12
    Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Février 2009
    Messages : 227
    Points : 69
    Points
    69
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Name         Size               Bytes  Class     Attributes
     
      d_im         1x1                    8  double              
      denom       64x64               32768  double              
      img         64x64x4            131072  double              
      pans       128x128             131072  double

  13. #13
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 316
    Points : 52 948
    Points
    52 948
    Par défaut
    Et donc ?

  14. #14
    Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Février 2009
    Messages : 227
    Points : 69
    Points
    69
    Par défaut
    et donc le denom doit eêtre de la meme taille c'est a dire 64*64*4

    par contre que je met le denom à cette taille la ça me renvoit une matrice nulle

  15. #15
    Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Février 2009
    Messages : 227
    Points : 69
    Points
    69
    Par défaut
    voila ce que me retourne cette partie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for k = 1 : d_im
        c=  d_im * pans;
        sharpened(:,:,k) = (c .* img (:,:,k) ) ./ denom;
     end
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    size(c) = 128*128
    size(img(:,:,k)) = 64*64
    size(denom)=64 *64
    dois je faire double img((:,:,k))?

  16. #16
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 316
    Points : 52 948
    Points
    52 948
    Par défaut
    Peux-tu nous expliquer comment tu comptes multiplier une matrice 64x64 par une matrice 128x128 ?

  17. #17
    Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Février 2009
    Messages : 227
    Points : 69
    Points
    69
    Par défaut
    justement faudrait que je change la taille de ma matrice mais je sais pas comment le faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    reshape (img, 128, 128)
    c'est ce que j'ai fait aprés je sais pas si je fais des bétises

  18. #18
    Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Février 2009
    Messages : 227
    Points : 69
    Points
    69
    Par défaut
    voici jusqu'ou je suis arrivée dans mon code:

    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
    img = imread('D:\redim\redim_msi_test.tif');
    img = upsample_ms(img );
     
    pans = imread ('D:\redim\redim_pan_test.tif');
    pans = double(pans);
     
     
    [~, ~, d_im] = size(img );
    sharpened = zeros(size(img ));
     
     %denom = sum(img , 3);
    %
    img =reshape (img,128,128);
    denom = sum(img , 3);
     
     for k = 1 : d_im
     
           sharpened(:,:,k) = (d_im * pans .* img (:,:,k) ) ./ denom;
     end
     
     figure
     imshow(sharpened);
    erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    test_brovey
    Subscripted assignment dimension mismatch.
     
    Error in test_brovey (line 19)
           sharpened(:,:,k) = (d_im * pans .* img (:,:,k) ) ./ denom;
    pourtant la taille de d_im * pans .* img (:,:,k)= 128*128 et taille de denom =128* 128

  19. #19
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 316
    Points : 52 948
    Points
    52 948
    Par défaut
    Tu définis la variable sharpened avant de modifier la taille de la variable img

    Par ailleurs, j'ai un peu l'impression que tu ne comprends pas tout ce que tu écris…

  20. #20
    Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2009
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Février 2009
    Messages : 227
    Points : 69
    Points
    69
    Par défaut
    exacte je ne comprends tout ce qui est ecrit je fais des efforts

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [MEX] Modifier des Mex-Files Matlab 7 pour utilisation sur Matlab 5.3
    Par mathieu2703 dans le forum MATLAB
    Réponses: 3
    Dernier message: 03/08/2007, 12h20
  2. Matrice indicée sur matlab
    Par Surf!ng_jOe dans le forum MATLAB
    Réponses: 2
    Dernier message: 27/07/2007, 14h28
  3. Problème variable locale sur MATLAB
    Par nuans dans le forum MATLAB
    Réponses: 10
    Dernier message: 12/04/2007, 10h34
  4. Nombre pair sur Matlab
    Par cricri04 dans le forum MATLAB
    Réponses: 2
    Dernier message: 16/03/2007, 16h46
  5. Un nouveau qui a besoin d'aide sur MATLAB
    Par bf491499 dans le forum MATLAB
    Réponses: 4
    Dernier message: 26/02/2007, 16h10

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