2012-09-03 2 views
0

En utilisant l'imageJ api, j'essaie de sauvegarder une image composée composée de plusieurs images disposées côte à côte.ImageJ API: Combiner des images

J'ai du code qui charge les objs ImagePlus et les enregistre. Mais je n'arrive pas à comprendre comment coller une image dans une autre image.

+0

Ont-ils les mêmes dimensions? –

Répondre

0

J'interprète le problème comme le fait de prendre plusieurs images et de les assembler côte à côte pour en former une grande où les images peuvent avoir des dimensions différentes. Le code incomplet suivant est une façon de le faire et devrait vous aider à démarrer.

public ImagePlus composeImages(ArrayList<ImagePlus> imageList){ 
    int sumWidth = 0; 
    int maxHeight = 0; 

    for(ImagePlus imp : imageList){ 
     sumWidth = sumWidth +imp.getWidth(); 
     if(imp.getHeight() > maxHeight) 
      maxHeight = imp.getWidth(); 

    } 

    ImagePlus impComposite = new ImagePlus(); 

    ImageProcessor ipComposite = new ShortProcessor(sumWidth, maxHeight); 

    for(int i=0; i<sumWidth; i++){ 
     for(int j=0; j<sumWidth; j++){ 

      ipComposite.putPixelValue(i, j, figureOutThis); 

     } 
    } 

    impComposite.setProcessor(ipComposite); 
    return impComposite; 

} 

Vous devez écrire un algorithme pour trouver la valeur de pixel (figureOutThis) pour mettre dans l'image composite à i, j. C'est assez trivial si toutes les images ont la même largeur et un peu plus de travail autrement. Codage heureux

Modifier: Je devrais ajouter que je suppose qu'ils sont également toutes des images courtes (je travaille avec des niveaux de gris médicaux). Vous pouvez le modifier pour d'autres processeurs