Gå til innhold

[Løst]Slå sammen bilder og pikselverdier.


Anbefalte innlegg

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 av zoomzoo
Lenke til kommentar
Videoannonse
Annonse

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
  • 3 uker senere...

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...