zoomzoo Skrevet 27. mai 2009 Del Skrevet 27. mai 2009 (endret) Har lastet opp bilder i 4 faner, og ønsker nå å summere opp pikslene i hvert bilde, for å vise ett resultatbilde. Bildene har pikselverdier 1-4 etter reklassifisering. Er det noen som har en enkel ADD-funksjon jeg kan bruke? Dette er et skoleprosjekt, og er ikke kommersielt. Det er heller ikke snakk om å jukse seg til noe:) Er nybegynner, så dersom jeg har tatt med for lite, gjerne si ifra! Kan sende NetBeans prosjektet på mail dersom det er til hjelp. -------------------------------------------------------------------------------------- package desktopapplication2; import java.awt.Point; import java.awt.image.ColorModel; import java.awt.image.DataBuffer; import java.awt.image.DataBufferInt; import java.awt.image.Raster; import java.awt.image.renderable.ParameterBlock; import javax.media.jai.JAI; import javax.media.jai.PlanarImage; import java.awt.image.SampleModel; import javax.media.jai.PlanarImage; import javax.media.jai.RasterFactory; import javax.media.jai.TiledImage; import javax.media.jai.iterator.RandomIter; import javax.media.jai.iterator.RandomIterFactory; /** * * @author Fredrik */ public class ImageCalc { public PlanarImage convert2gray(PlanarImage src) { double[][] matrix = { {.114D, 0.587D, 0.299D, 0.0D} }; // Create the ParameterBlock. ParameterBlock pb = new ParameterBlock(); // Object image = null; pb.addSource(src); pb.add(matrix); // Perform the band combine operation. PlanarImage dst = (PlanarImage) JAI.create("bandcombine", pb, null); return dst; } //------------------------------------------------------------------------- public PlanarImage getClassified(PlanarImage src) { int width = src.getWidth(); int height = src.getHeight(); int[] imageDataSingleArray = new int[width * height]; SampleModel sm = src.getSampleModel(); int nbands = sm.getNumBands(); int[] pixel = new int[nbands]; System.out.println("Antall bånd: " + nbands); RandomIter iterator = RandomIterFactory.create(src, null); int count = 0; for (int h = 0; h < height; h++) { for (int w = 0; w < width; w++) { iterator.getPixel(w, h, pixel); // System.out.print("at (" + w + "," + h + "): "); for (int band = 0; band < nbands; band++) { // System.out.print(pixel[band] + " "); // System.out.println(pixel[band]); if (pixel[band] > 29 && pixel[band] < 129) { imageDataSingleArray[count++] = 4; } else if (pixel[band] > 129 && pixel[band] < 159) { imageDataSingleArray[count++] = 3; } else if (pixel[band] > 159 && pixel[band] < 179) { imageDataSingleArray[count++] = 2; } else if (pixel[band] > 179 && pixel[band] < 200) { imageDataSingleArray[count++] = 100; } else if (pixel[band] > 200) { imageDataSingleArray[count++] = 0; } } } } // Create a Data Buffer from the values on the single image array. DataBufferInt dbuffer = new DataBufferInt(imageDataSingleArray, width * height); // Create an int data sample model. SampleModel sampleModel = RasterFactory.createBandedSampleModel(DataBuffer.TYPE_INT, width, height, 1); // Create a compatible ColorModel. ColorModel colorModel = PlanarImage.createColorModel(sampleModel); // Create a WritableRaster. Raster raster = RasterFactory.createWritableRaster(sampleModel, dbuffer, new Point(0, 0)); // Create a TiledImage using the SampleModel and ColorModel. TiledImage tiledImage = new TiledImage(0, 0, width, height, 0, 0, sampleModel, colorModel); // Set the data of the tiled image to be the raster. tiledImage.setData(raster); // private Object pi; return tiledImage; } } Endret 28. mai 2009 av zoomzoo Lenke til kommentar
___ Skrevet 27. mai 2009 Del Skrevet 27. mai 2009 Kan du være så vennlig å lære deg hvordan man poster kode? Werner Lenke til kommentar
MrEspen Skrevet 27. mai 2009 Del Skrevet 27. mai 2009 Når du først poster så koster det vel ikke så masse å forklare hvordan han gjør det også? Til trådstarter; Edit posten din og bruk "code" tagen rundt koden din [ code ] slik bare uten mellomrom [ /code ] da blir det mye lettere for alle å tyde koden din. Lenke til kommentar
Tafsen Skrevet 12. juni 2009 Del Skrevet 12. juni 2009 Du kan gjerne legge ut løysninga sånn at andre også ser det Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå