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

ImageJ Java Discussion :

Une macro pour une compilation de sélection ?


Sujet :

ImageJ Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Amateur
    Inscrit en
    Mars 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Amateur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2019
    Messages : 6
    Par défaut Une macro pour une compilation de sélection ?
    Bonjour,

    J'ai un projet important à réaliser et je suis bien motivé pour apprendre tout sur ImageJ et la programmation Java nécessaire avec, bien que je parte de 0.

    Avant de me rendre compte que ce n'est pas possible, pourriez-me confirmer la possibilité de réaliser l'automatisation suivante
    + éventuellement quelques pistes si c'est possible, mais déjà la réponse à la faisabilité me donnerait espoir (photoshop étant vraiment trop lourd malgré une macro qui automatise les opérations suivantes) :

    Objectif : Création d'une image à partir de N images distinctes (N=4592 la plupart du temps), tel que l'image finale soit constituée de :

    - 1ère colonne de pixel de l'image n°1
    - la 2ème colonne de pixel de l'image n°2
    -...
    - 4592ème colonne de pixel de l'image n°4592

    Chaque colonne serait copier successivement les unes à côté des autres pour constitué l'ensemble de l'image finale


    Merci d'avance pour vos retours.
    Fred

  2. #2
    Membre éprouvé Avatar de Tchoukatroc
    Homme Profil pro
    Soupière
    Inscrit en
    Mai 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Soupière
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2014
    Messages : 99
    Par défaut
    Bonjour,

    Oui, c'est possible et facile à réaliser avec le langage macro de ImageJ. Tu as toutes les fonctions macro disponible ici (https://imagej.nih.gov/ij/developer/...functions.html).
    Pour ta macro, tu pourrais créer une image vide (si tu connais la taille finale de ton image à créer), puis faire une boucle "for" pour ouvrir tes images les unes après les autres. Dans cette boucle "for", rajouter une deuxième boucle "for" qui lirais les pixels et les ecrirait dans l'image vide.

    Voila grossièrement ce que ça pourrait donner.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    newImage(title, type, width, height, depth);
    for (i=0; i<nombre d'images dans le dossier 4592; i++)
    {
        open image
        for(y=0; y<nombre de pixel dans la colonne; y++)
        {
            selectionner image ouverte
            valeurPixel = get pixel (i; y)
            selectionner image vide
            setPixel (i; y; valeurPixel)
        }
        close Image
    }
    Je peux t'aider si tu bloques.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Amateur
    Inscrit en
    Mars 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Amateur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2019
    Messages : 6
    Par défaut
    Bonjour,

    Déjà, merci pour la bonne nouvelle Tchoukatroc !

    Merci pour les pistes, voire le début de solution, je me penche dessus ce we.

    Fred

    PS : C'est globalement la macro que j'avais faite pour photoshop, mais avec la possibilité de copier une colonne entière directement (et non pas pixel par pixel) mais l'impossibilité dramatique d'aller directement à la colonne i, mais par incrémentation depuis la première colonne

  4. #4
    Membre éprouvé Avatar de Tchoukatroc
    Homme Profil pro
    Soupière
    Inscrit en
    Mai 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Soupière
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2014
    Messages : 99
    Par défaut
    Tu pourrais aussi faire une région de 1 pixel de large et n pixels de haut (makeRectangle(x, y, largeur, hauteur), et faire un copier coller de la colonne. Tu peux bouger ta région avec Roi.move(x, y). Cette méthode serait surement plus rapide que de récupérer la valeur pixel par pixel.
    Tu peux aussi utiliser la fonction SetBatchMode() si tu veux gagner en vitesse d’exécution de la macro.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Amateur
    Inscrit en
    Mars 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Amateur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mars 2019
    Messages : 6
    Par défaut
    Bon, après essais, bricolages et recherches, je m'en suis sorti en faisant comme ç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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
     
    newImage("Coueron", "RGB", 4592, 3064, 1);
    imageTitle=getTitle()
    dir = getDirectory( "Choose the Directory" ); 
    list = getFileList( dir );                                                // je comprend pas bien la manip encore, mais ca marche
    i=0;
    setBatchMode(true);
    while (i<=4591)
    {
    	open( dir + list[i]);
    	makeRectangle(i,0,1,3064);
    	run("Copy");
    	selectWindow(imageTitle);
    	run("Paste");                                         // là, le pbme, c'est qu'il colle automatiquement au centre de l'image, 
    	run("Copy");                                         //donc je recopie 
            setSelectionLocation(i, 0);                     //pr le repositionner... car je n'ai pas réussis à maîtriser roi.move aussi;)
    	run("Paste");
    	selectWindow(list[i]);
    	run("Close");
     
    i=i+1;
    }
    setBatchMode(false);
     
    open( dir + list[2296]);                                // là je remet pour finir, la colonne du milieu polluée par ts les coller successifs de la boucle
    	makeRectangle(i,0,1,3064);
    	run("Copy");
    	selectWindow(imageTitle);
    	run("Paste");
    	selectWindow(list[i]);
    	run("Close");
     
    showMessage("Over", "<html>"
         +"<h1><font color=red><i>Compilation terminéeFin</i></h1>");
    je sais pas si c'est opti du point de vue du code, mais ça fait le taf...faut que je vérifie aussi si ya pas de pertes de qualité d'images

    Merci pr ton lead!!
    Fred

  6. #6
    Membre éprouvé Avatar de Tchoukatroc
    Homme Profil pro
    Soupière
    Inscrit en
    Mai 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Soupière
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2014
    Messages : 99
    Par défaut
    Et comme ça, est ce que la macro fonctionne?

    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
     
     
    newImage("Coueron", "RGB", 4592, 3064, 1);
    imageTitle=getTitle()
    dir = getDirectory( "Choose the Directory" ); 
    list = getFileList( dir );                                                // je comprend pas bien la manip encore, mais ca marche
    i=0;
    setBatchMode(true);
    while (i<=4591)
    {
    	open( dir + list[i]);
    	makeRectangle(i,0,1,3064);
    	run("Copy");
    	selectWindow(imageTitle);
    	makeRectangle(i,0,1,3064);
    	run("Paste");                                         // là, le pbme, c'est qu'il colle automatiquement au centre de l'image, 
    	selectWindow(list[i]);
    	run("Close");
     
    i=i+1;
    }
    setBatchMode(false);
     
    showMessage("Over", "<html>"
         +"<h1><font color=red><i>Compilation terminéeFin</i></h1>");

Discussions similaires

  1. Réponses: 7
    Dernier message: 15/06/2018, 17h00
  2. [XL-2010] Macro pour fusionner une sélection
    Par xuan203 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 05/07/2017, 07h43
  3. Réponses: 0
    Dernier message: 11/11/2010, 08h30
  4. Complexité d'une macro pour Excel
    Par MatMeuh dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 14/04/2006, 11h23
  5. [VBA-E] [help]macro pour dupliquer une feuille (en valeur)
    Par minikisskool dans le forum Macros et VBA Excel
    Réponses: 31
    Dernier message: 07/11/2005, 19h24

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