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
Ont-ils les mêmes dimensions? –