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 :

Enregistrement d'image et type de donnée


Sujet :

Images

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 7
    Points : 1
    Points
    1
    Par défaut Enregistrement d'image et type de donnée
    Bonjour,

    Je souhaite traiter une image en niveau de gris qui utilise le type de donnée "float" et sauvegarder l'image en output sous ce même type de donnée. Les valeurs d'entrée sont comprises entre 0 et 1.
    Voici mon code actuel:

    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
    clear all
     
    X = multibandread('t112252_MS_Subset', [10125, 304, 85], 'float', 0, 'bil', 'ieee-le');
    A = squeeze(X(:,:,9));
    B = squeeze(X(:,:,19));
     
    Corr750= ...
    Corr950= ...
     
     
    for i=1:10125
        for j=1:304
    Bande9Corr(i,j)=A(i,j)-Corr750(j);
     
        end
    end
     
    for i=1:10125
        for j=1:304
    Bande19Corr(i,j)=B(i,j)-Corr950(j);
     
        end
    end
     
    % t112252_750Corr = mat2gray(Bande9Corr, [0 1]);
    % imshow(t112252_750Corr)
     
    t112252_750Corr = imwrite(
    La fonction multibandread permet de lire des images multispectrales.

    Les deux ligne Corr750 et Corr950 sont deux matrices ligne de 304 valeurs... je n'ai pas jugé utile des les afficher. La correction proprement dite fonctionne. Je bloque maintenant sur l'étape d'enregistrer l'image. Je suis quelque peu embrouillé avec les types de données. Pour information, l'image initiale est en "32-bit floating point".

    J'ai laissé les lignes avec mat2gray juste pour indiquer que j'ai essayé de l'utiliser. Cette fonction produit bien une image avec des valeurs comprises entre 0 et 1 mais ne possède pas d'autres arguments.

    La solution est surement triviale mais je tourne en rond depuis plusieurs heures sans trouver ;-/

    Hoshen

  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 302
    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 302
    Points : 53 165
    Points
    53 165
    Par défaut
    Pourquoi ne pas utiliser multibandwrite ?
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Dut Voir le message
    Pourquoi ne pas utiliser multibandwrite ?
    Hum... Parce que mon regard s'est porté plusieurs fois sur cette fonction sans la voir dans la doc' MathWork? Parce-que, en dépit du bon sens, je n'ai jamais envisager qu'une telle fonction existe?
    Soit, ça semble a priori résoudre mon problème. Merci! J'éditerai l'intitulé du topic une fois que j'aurai obtenu le résultat voulu.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Je vous rejoins avec la suite du problème. La fonction multibandwrite semble effectivement être la clé, mais j'ai, a priori, un souci dans les arguments. Voici mon code en l'état actuel.
    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
     
    clear all
    %A = imread('imagetestFFT_B2.jpg');
    %M = mean(A)
    % X = multibandread('image.bsq',[2878,512,125],'int16',0,'bsq','ieee-le');
     
    X = multibandread('t112252_MS_Subset', [10125, 304, 85], 'float', 0, 'bil', 'ieee-le');
    A = squeeze(X(:,:,9));
    B = squeeze(X(:,:,19));
    % imshow(B)
     
    Corr950=[0.002854233, 0.002643807, 0.002442821, 0.002250979, 0.002067994, 0.001893583, 0.001727471, 0.001569386, 0.001419066, 0.001276253, 0.001140696, 0.001012147, 0.000890367, 0.000775121, 0.00066618, 0.000563321, 0.000466325, 0.00037498, 0.000289077, 0.000208415, 0.000132795, 6.20264E-05, -4.07971E-06, -6.57055E-05, -0.000123029, -0.000176223, -0.000225457, -0.000270895, -0.000312695, -0.000351015, -0.000386003, -0.000417808, -0.000446572, -0.000472433, -0.000495526, -0.000515981, -0.000533925, -0.000549481, -0.000562768, -0.000573901, -0.000582993, -0.000590151, -0.000595481, -0.000599084, -0.000601058, -0.000601499, -0.000600497, -0.000598142, -0.000594518, -0.000589709, -0.000583794, -0.000576849, -0.000568949, -0.000560165, -0.000550565, -0.000540214, -0.000529176, -0.000517512, -0.00050528, -0.000492535, -0.000479331, -0.000465719, -0.000451748, -0.000437464, -0.000422913, -0.000408136, -0.000393175, -0.000378067, -0.000362849, -0.000347556, -0.00033222, -0.000316873, -0.000301545, -0.000286262, -0.000271051, -0.000255936, -0.000240941, -0.000226086, -0.000211392, -0.000196878, -0.000182561, -0.000168456, -0.000154579, -0.000140942, -0.000127559, -0.000114441, -0.000101597, -8.9037E-05, -7.67686E-05, -6.47989E-05, -5.31343E-05, -4.17797E-05, -3.07397E-05, -2.00178E-05, -9.61668E-06, 4.6155E-07, 1.02156E-05, 1.96449E-05, 2.87495E-05, 3.753E-05, 4.59876E-05, 5.41242E-05, 6.19419E-05, 6.94436E-05, 7.66326E-05, 8.35124E-05, 9.00872E-05, 9.63613E-05, 0.00010234, 0.000108027, 0.000113429, 0.000118552, 0.0001234, 0.000127981, 0.0001323, 0.000136364, 0.000140179, 0.000143753, 0.000147091, 0.000150201, 0.00015309, 0.000155764, 0.00015823, 0.000160496, 0.000162569, 0.000164454, 0.000166159, 0.000167691, 0.000169057, 0.000170262, 0.000171313, 0.000172217, 0.000172979, 0.000173605, 0.000174102, 0.000174475, 0.000174728, 0.000174868, 0.000174899, 0.000174826, 0.000174653, 0.000174385, 0.000174025, 0.000173577, 0.000173044, 0.00017243, 0.000171738, 0.00017097, 0.000170128, 0.000169214, 0.00016823, 0.000167177, 0.000166056, 0.000164868, 0.000163614, 0.000162294, 0.000160907, 0.000159452, 0.00015793, 0.000156339, 0.000154678, 0.000152945, 0.000151138, 0.000149254, 0.000147292, 0.000145248, 0.00014312, 0.000140904, 0.000138597, 0.000136194, 0.000133691, 0.000131085, 0.000128371, 0.000125543, 0.000122598, 0.00011953, 0.000116333, 0.000113003, 0.000109534, 0.000105919, 0.000102154, 9.8232E-05, 9.41472E-05, 8.98935E-05, 8.54648E-05, 8.08549E-05, 7.60577E-05, 7.10669E-05, 6.58763E-05, 6.04799E-05, 5.48716E-05, 4.90455E-05, 4.29955E-05, 3.67161E-05, 3.02015E-05, 2.34464E-05, 1.64456E-05, 9.19405E-06, 1.687E-06, -6.08E-06, -1.41111E-05, -2.24102E-05, -3.09808E-05, -3.9826E-05, -4.89484E-05, -5.83503E-05, -6.80335E-05, -7.79992E-05, -8.82483E-05, -9.87807E-05, -0.000109596, -0.000120694, -0.000132071, -0.000143727, -0.000155657, -0.000167858, -0.000180325, -0.000193052, -0.000206033, -0.000219261, -0.000232727, -0.000246422, -0.000260335, -0.000274455, -0.00028877, -0.000303266, -0.000317927, -0.000332739, -0.000347682, -0.000362739, -0.000377889, -0.000393111, -0.000408382, -0.000423677, -0.00043897, -0.000454234, -0.000469439, -0.000484553, -0.000499545, -0.00051438, -0.000529021, -0.00054343, -0.000557566, -0.000571387, -0.00058485, -0.000597907, -0.000610509, -0.000622607, -0.000634147, -0.000645073, -0.000655327, -0.00066485, -0.000673579, -0.000681448, -0.000688389, -0.000694331, -0.000699203, -0.000702926, -0.000705423, -0.000706611, -0.000706405, -0.000704718, -0.000701459, -0.000696532, -0.000689842, -0.000681287, -0.000670763, -0.000658162, -0.000643374, -0.000626284, -0.000606773, -0.000584721, -0.00056, -0.000532482, -0.000502033, -0.000468516, -0.000431789, -0.000391707, -0.00034812, -0.000300874, -0.00024981, -0.000194765, -0.000135573, -7.20618E-05, -4.05402E-06, 6.86311E-05, 0.00014618, 0.000228783, 0.000316636, 0.00040994, 0.000508902, 0.000613732, 0.000724648, 0.00084187, 0.000965626, 0.00109615, 0.001233679, 0.001378458, 0.001530736, 0.00169077, 0.001858821, 0.002035157, 0.002220052, 0.002413786];
    Corr750=[0.002586813, 0.002405756, 0.002231926, 0.002065123, 0.001905153, 0.001751825, 0.00160495, 0.001464346, 0.001329833, 0.001201234, 0.001078376, 0.000961091, 0.000849212, 0.000742578, 0.000641029, 0.000544409, 0.000452568, 0.000365355, 0.000282626, 0.000204237, 0.000130049, 5.99252E-05, -6.2668E-06, -6.86578E-05, -0.000127375, -0.000182543, -0.000234284, -0.000282716, -0.000327956, -0.000370116, -0.000409308, -0.000445639, -0.000479215, -0.000510139, -0.000538511, -0.000564428, -0.000587987, -0.00060928, -0.000628397, -0.000645428, -0.000660458, -0.000673572, -0.000684849, -0.000694371, -0.000702214, -0.000708454, -0.000713163, -0.000716413, -0.000718273, -0.00071881, -0.00071809, -0.000716175, -0.000713127, -0.000709007, -0.000703871, -0.000697777, -0.000690779, -0.000682929, -0.00067428, -0.000664879, -0.000654777, -0.000644018, -0.000632649, -0.000620712, -0.00060825, -0.000595302, -0.00058191, -0.00056811, -0.000553939, -0.000539432, -0.000524623, -0.000509546, -0.000494231, -0.000478709, -0.000463009, -0.000447159, -0.000431186, -0.000415117, -0.000398975, -0.000382786, -0.000366571, -0.000350352, -0.000334151, -0.000317987, -0.000301879, -0.000285847, -0.000269906, -0.000254074, -0.000238366, -0.000222798, -0.000207383, -0.000192134, -0.000177066, -0.000162189, -0.000147516, -0.000133056, -0.000118821, -0.000104819, -9.1059E-05, -7.755E-05, -6.42995E-05, -5.13148E-05, -3.86025E-05, -2.6169E-05, -1.402E-05, -2.16076E-06, 9.40381E-06, 2.06693E-05, 3.16317E-05, 4.22873E-05, 5.2633E-05, 6.26657E-05, 7.23831E-05, 8.17828E-05, 9.08631E-05, 9.96222E-05, 0.000108059, 0.000116172, 0.000123961, 0.000131426, 0.000138565, 0.000145379, 0.000151869, 0.000158034, 0.000163875, 0.000169393, 0.000174589, 0.000179463, 0.000184017, 0.000188253, 0.000192171, 0.000195774, 0.000199062, 0.000202039, 0.000204705, 0.000207063, 0.000209115, 0.000210863, 0.000212309, 0.000213455, 0.000214304, 0.000214859, 0.00021512, 0.000215092, 0.000214776, 0.000214175, 0.000213291, 0.000212128, 0.000210687, 0.000208971, 0.000206983, 0.000204725, 0.0002022, 0.000199411, 0.00019636, 0.000193049, 0.000189482, 0.000185661, 0.000181589, 0.000177268, 0.0001727, 0.000167889, 0.000162837, 0.000157547, 0.000152021, 0.000146262, 0.000140272, 0.000134055, 0.000127613, 0.000120948, 0.000114064, 0.000106963, 9.96473E-05, 9.21206E-05, 8.43856E-05, 7.6445E-05, 6.83018E-05, 5.99591E-05, 5.142E-05, 4.26875E-05, 3.3765E-05, 2.46558E-05, 1.53633E-05, 5.89095E-06, -3.75751E-06, -1.35784E-05, -2.35677E-05, -3.37216E-05, -4.40357E-05, -5.45059E-05, -6.51275E-05, -7.5896E-05, -8.68064E-05, -9.78537E-05, -0.000109033, -0.000120338, -0.000131763, -0.000143303, -0.000154951, -0.0001667, -0.000178544, -0.000190476, -0.000202488, -0.000214573, -0.000226722, -0.000238926, -0.000251178, -0.000263467, -0.000275785, -0.00028812, -0.000300463, -0.000312803, -0.000325127, -0.000337424, -0.000349682, -0.000361888, -0.000374027, -0.000386086, -0.00039805, -0.000409904, -0.000421632, -0.000433217, -0.000444642, -0.000455888, -0.000466938, -0.000477772, -0.000488369, -0.000498708, -0.000508769, -0.000518527, -0.000527961, -0.000537044, -0.000545753, -0.000554061, -0.000561941, -0.000569364, -0.000576303, -0.000582726, -0.000588603, -0.0005939, -0.000598586, -0.000602626, -0.000605983, -0.000608622, -0.000610504, -0.000611589, -0.000611839, -0.000611209, -0.000609658, -0.000607141, -0.000603613, -0.000599024, -0.000593328, -0.000586474, -0.000578409, -0.000569082, -0.000558436, -0.000546416, -0.000532962, -0.000518017, -0.000501517, -0.0004834, -0.000463601, -0.000442053, -0.000418687, -0.000393433, -0.000366219, -0.000336969, -0.000305608, -0.000272057, -0.000236236, -0.000198062, -0.00015745, -0.000114314, -6.85651E-05, -2.01112E-05, 3.11409E-05, 8.52872E-05, 0.000142426, 0.000202658, 0.000266086, 0.000332815, 0.000402955, 0.000476615, 0.000553909, 0.000634952, 0.000719864, 0.000808766, 0.000901781, 0.000999037, 0.001100663, 0.001206792, 0.00131756, 0.001433106, 0.00155357, 0.001679098, 0.001809837, 0.001945939, 0.002087557, 0.00223485, 0.002387978, 0.002547104, 0.002712397, 0.002884028];
     
     
    for i=1:10125
        for j=1:304
    t112252_750Corr(i,j)=A(i,j)-Corr750(j);
     
        end
    end
     
    for i=1:10125
        for j=1:304
    t112252_950Corr(i,j)=B(i,j)-Corr950(j);
     
        end
    end
    % figure, imshow(t112252_950Corr)
    % title('t112252_950Corr')
     
    % multibandwrite(data,filename,interleave,start,totalsize)
    % multibandwrite(t112252_750Corr,'t112252_Corr', 'bil',[1, 1, 1],[10125, 304, 1], 0);
    multibandwrite(t112252_750Corr,'t112252_Corr', 'bil', [1, 1, 1],[10125, 304, 2], 0, 'float');
     
    E = multibandread('t112252_Corr', [10125, 304, 1], 'float', 0, 'bil', 'ieee-le', {'Row',[1:1:100]}, {'Band','Direct',[1]});
    F = squeeze(E(:,:,1));
    imshow(F)
    Le second "multibandread" sert à visualiser un échantillon de l'image générée par multibandwrite. Cependant, l'image affichée est complètement fausse.
    Nom : untitled.jpg
Affichages : 191
Taille : 75,2 Ko

    Est-ce que quelqu'un a une idée?

    Hoshen

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Dans la documentation de la fonction multibandwrite il est spécifié :
    'machfmt' String to control the format in which the data is written to the file. Typical values are 'ieee-le' for little endian and 'ieee-be' for big endian. See the help for fopen for a complete list of available formats. The default machine format is the local machine format.
    Étant donné que tu spécifies 'ieee-le' pour la lecture, afin de rester portable sur un système qui n'est pas en iittle-endian, il vaut mieux spécifier aussi à l'écriture :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    multibandwrite(. . ., 'machfmt', 'ieee-le');
    En ce qui concerne la lecture, on peut voir :
    Citation Envoyé par doc multibandread
    size Three-element vector of integers consisting of [height, width, N], where
    • height is the total number of rows
    • width is the total number of elements in each row
    • N is the total number of bands.

    This will be the dimensions of the data if it is read in its entirety.
    Étant donné que tu écris une taille de [10125, 304, 2], ce serait plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    E = multibandread('t112252_Corr', [10125, 304, 2]
    à la lecture aussi.

    Je ne vois par contre rien qui corresponde au 0 que tu as mis dans multibandwrite.

    Concernant les boucles for, pense à pré-allouer tes variables t112252_750Corr et t112252_950Corr.
    Tu peux aussi les simplifier (cf. Défi 2) directement par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    t112252_750Corr = bsxfun(@minus, A, Corr750);
    t112252_950Corr = bsxfun(@minus, B, Corr950);
    À noter que les crochets ici sont inutiles : {'Row',[1:1:100]}, {'Band','Direct',[1]});
    Dernière modification par Invité ; 07/12/2014 à 02h19.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Merci pour ta réponse!

    Le "0" dans les arguments correspond à "l'ordre des bytes"
    The byte order: the endian-ness of the saved data:

    0: means little-endian byte order, format used on PC/Intel machines

    1: means big-endian (aka IEEE, aka "network") byte order, format used on UNIX and
    Macintosh machines
    http://www.ehu.es/ccwintco/uploads/d...ubesMatlab.pdf (milieu de page 2 et milieu de page 3)
    A priori, pour le peu que je comprends, ça semble faire doublon avec l'argument 'ieee-le'. Cependant, si je retire le "0", il me met une erreur faute d'arguments suffisants.

    Je remets ici le code avec tes suggestions. J'ai simplement changé l'image de départ utilisée.

    Le résultat reste inchangé... la correction se fait correctement donc c'est vraisemblablement au niveau de l'écriture de l'image que ça coince.
    Je garde ton conseil de pré-allouement en tête. Mais je préfère terminer ce problème avant de penser à optimiser.

    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
    clear all
     
    X = multibandread('MosaicSubset', [579, 856, 2], 'float', 0, 'bil', 'ieee-le');
    A = squeeze(X(:,:,1));
    B = squeeze(X(:,:,2));
    figure,imshow (A)
    title('Mosaique750 avant correction')
     
    Corr750=[...]
    Corr950=[...]
     
    for i=1:579
        for j=1:856
    Mosaic_750Corr(i,j)=A(i,j)-Corr750(j);
     
        end
    end
     
    for i=1:579
        for j=1:856
    Mosaic_950Corr(i,j)=B(i,j)-Corr950(j);
     
        end
    end
    figure, imshow(Mosaic_750Corr)
    title('Mosaic750 après correction')
     
    % multibandwrite(data,filename,interleave,start,totalsize)
    % multibandwrite(t112252_750Corr,'t112252_Corr', 'bil',[1, 1, 1],[10125, 304, 1], 0);
    multibandwrite(Mosaic_750Corr,'Mosaic_750Corr', 'bil', [1, 1, 1],[879, 856, 2], 0, 'float', 'iee-le');
     
    E = multibandread('Mosaic_750Corr', [879, 856, 2], 'float', 0, 'bil', 'ieee-le', {'Row',[1:1:100]}, {'Band','Direct',[1]});
    F = squeeze(E(:,:,1));
    imshow(F)
    [EDIT] Si ça peut aider: Les valeurs avant écriture sont toutes de l'ordre de 0.003 et ne peuvent pas dépasser 1. Les valeurs de l'image lue par le dernier multibandread (l'image écrite donc) sont:
    -3,31312288694598e+21 1,26095604896545 -1,04093865544735e+21 1,25951969623566
    0 0 0 0
    5,27810927178144e-37 1,26085710525513 -1,65831095197826e-37 1,25628185272217

    Avec à chaque fois une alternances de 0 et de valeurs de ce type.

  7. #7
    Invité
    Invité(e)
    Par défaut
    De ce que je vois c'est dans le fichier que l'on a un 0 ou un 1 :
    ...
    sensor type = Unknown
    byte order = 0
    wavelength units = Unknown
    ...
    et en concordance avec cela, on met soit 'ieee-le' (pour 0) soit 'ieee-be' (pour 1) en paramètre.
    Et ce paramètre va de pair avec 'machfmt', de même pour la 'precision', il ne s'utilisent pas tout seuls dans la fonction multibandwrite.

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Erratum, je me suis emmêllé les pinceaux, l'argument "0" est en fait la valeur de l'OFFSET.
    "The header offset: number of bytes in the binary file that we have to skip before
    accessing the raster data:"

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Hoshen Voir le message
    Citation Envoyé par Winjerome Voir le message
    Et ce paramètre va de pair avec 'machfmt', de même pour la 'precision', il ne s'utilisent pas tout seuls dans la fonction multibandwrite.
    Hum je ne suis pas sur de te comprendre, qu'entends tu par "il va de pair"?
    Pour moi 'ieee-le' est une des valeurs de l'argument 'machfmt', de même que 'float' est une valeur (je ne sais pas si j'utilise le bon terme) de 'precisions'.

    A priori, la fonction serait bien écrite telle que je l'ai affichée dans mon dernier message en en retirant le "0". Cependant, il m'indique toujours une erreur quand je l'omets.
    Error using multibandread (line 107)
    Not enough input arguments.
    Par ailleurs, l'auteur du pdf que j'ai mis en lien ajoute bien ce "0" dans les arguments. :-/. De plus, je mets cet argument "0" dans le premier multibandread, et il lit bien l'image convenablement...

    Désolé si j'ai mal compris, j'ai ouvert Matlab pour la première fois avant-hier. Rien n'est clair pour moi.

    Merci pour ton aide cependant!

    PS: Le code à l'origine de la fonction est ici https://lost-contact.mit.edu/afs/tu-...ltibandwrite.m. J'ai tenté de l'interpréter, au moins en partie, pour y voir plus clair, mais ça reste du charabia pour moi
    De pair comme ceci :
    Citation Envoyé par Winjerome Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    multibandwrite(. . ., 'machfmt', 'ieee-le');
    Regarde la tableau de la documentation avec juste au dessus :
    multibandwrite(...,param,value...) writes the multiband data to a file, specifying any of these optional parameter/value pairs.
    avec
    • param dans la colonne de gauche ;
    • value sa valeur associée de la colonne de droite.
    Dernière modification par Invité ; 07/12/2014 à 02h23. Motif: suite à édition précédent, afin de garder la cohérence

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Ha, effectivement. Je trouvais improbable de devoir spécifier un argument avant de donner sa valeur, et ce sous la même forme 'xxx' Voici donc la fin du code après modification.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    multibandwrite(Mosaic_750Corr,'Mosaic_750Corr2', 'bil', [1, 1, 1],[879, 856, 2], 0, 'precision', 'float','machfmt', 'iee-le');
     
    E = multibandread('Mosaic_750Corr', [879, 856, 2], 'float', 0, 'bil', 'ieee-le', {'Row',1:1:100}, {'Band','Direct',1});
    F = squeeze(E(:,:,1));
    figure, imshow(F)
    title('test')
    Plus d'erreur, mais le résultat, lui, reste inchangé ^^'

  11. #11
    Invité
    Invité(e)
    Par défaut
    Erreur de recopie ? Le fichier n'est pas le même (autant le mettre dans une seule et même variable pour éviter ce genre d'erreur), et il manque un 'e', et toujours ce 0 en trop
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    multibandwrite(Mosaic_750Corr,'Mosaic_750Corr2', 'bil', [1, 1, 1],[879, 856, 2], 0, 'precision', 'float','machfmt', 'ieee-le');
    On a
    Citation Envoyé par doc multibandwrite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    multibandwrite(data,filename,interleave,start,totalsize)
    multibandwrite(...,param,value...)
    Ici
    • data = Mosaic_750Corr
    • filename = 'Mosaic_750Corr2'
    • interleave = 'bil'
    • start = [1, 1, 1]
    • totalsize = [879, 856, 2]
    • param, value = 'precision', 'float' et 'machfmt', 'ieee-le'

    aucun paramètre pour correspondre à ce 0 dans la lecture, contrairement à l'écriture où :
    Citation Envoyé par doc multibandread
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    X = multibandread(filename, size, precision, offset, interleave, byteorder)
    X = multibandread(...,subset1,subset2,subset3)
    • filename = 'Mosaic_750Corr2'
    • size = [879, 856, 2]
    • precision = 'float'
    • offset = 0 OK
    • interleave = 'bil'
    • byteorder = 'ieee-le'
    • subset1 = {'Row',1:1:100}
    • subset2 = {'Band','Direct',1}

  12. #12
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Merci d'avoir pris cette peine, je crois que c'était nécessaire ^^
    J'en suis donc là:

    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
     
    clear all
    %A = imread('imagetestFFT_B2.jpg');
    %M = mean(A)
    % X = multibandread('image.bsq',[2878,512,125],'int16',0,'bsq','ieee-le');
     
    X = multibandread('MosaicSubset', [579, 856, 2], 'float', 0, 'bil', 'ieee-le');
    A = squeeze(X(:,:,1));
    B = squeeze(X(:,:,2));
    figure,imshow (A)
    title('Mosaique750 avant correction')
     
    Corr750=...
    Corr950=...
     
    for i=1:579
        for j=1:856
    Mosaic_750Corr(i,j)=A(i,j)-Corr750(j);
     
        end
    end
     
    for i=1:579
        for j=1:856
    Mosaic_950Corr(i,j)=B(i,j)-Corr950(j);
     
        end
    end
    figure, imshow(Mosaic_750Corr)
    title('Mosaic750 après correction')
     
     
    % multibandwrite(data,filename,interleave,start,totalsize)
    % multibandwrite(t112252_750Corr,'t112252_Corr', 'bil',[1, 1, 1],[10125, 304, 1], 0);
    multibandwrite(Mosaic_750Corr,'Mosaic_750Corr2', 'bil', [1, 1, 1],[579, 856, 2], 'precision', 'float','machfmt', 'ieee-le');
     
    E = multibandread('Mosaic_750Corr2', [579, 856, 2], 'float', 0, 'bil', 'ieee-le', {'Row',1:1:100}, {'Band','Direct',1});
    F = squeeze(E(:,:,1));
    figure, imshow(F)
    title('test')
    Il m'indique maintenant l'erreur:
    Error using multibandwrite>verifyFileConsistency (line 583)
    TOTALSIZE is inconsistent with the existing file size.

    Error in multibandwrite (line 118)
    verifyFileConsistency(filename, options)

    Error in MBread_MosaicFFT (line 35)
    multibandwrite(Mosaic_750Corr,'Mosaic_750Corr2', 'bil', [1, 1, 1],[879, 856, 2], 'precision', 'float','machfmt', 'ieee-le');
    Peut-être est-ce dû au fait que je ne donne qu'une seule image à la fonction multibandwrite? Mais je ne comprends pas pourquoi il produisait une image avant alors ...

    PS: Effectivement, je ne sais pas à quel moment dans mes manip' mais j'ai du modifier les dimensions de l'image dans mon précédent message, c'est corrigé.

Discussions similaires

  1. [MySQL] Affichage d'une image avec type de donnée Blob
    Par djkhalid dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 16/05/2013, 14h08
  2. Réponses: 3
    Dernier message: 30/05/2010, 18h35
  3. Réponses: 3
    Dernier message: 09/04/2008, 14h19
  4. Réponses: 3
    Dernier message: 01/07/2006, 11h27
  5. Type de donnée image sous Sql Server Dba
    Par Vanesse dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 11/05/2004, 11h43

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