Pages: 1 2 [3]   Go Down
Print
Author Topic: mentre attendete... criteri di correzione  (Read 20541 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Fabiux
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 401



« Reply #30 on: 13-02-2009, 11:49:59 »

Scusate cari colleghi ... io solo adesso sto svolgendo la prova per esercitarmi ... ma nel punto C)  che dice :
c) red: i canali blue, green e alfa sono lasciati inalterati. Sul canale red, e solo sul canale red, viene invece
applicato un filtro convolutivo che applicato ad un pixel aumenta il suo valore in ragione di un decimo della
somma dei valori dei pixel a lui circostanti in un intorno 3 x3. L'immagine risultante da tale elaborazione
viene quindi visualizzata in un frame a parte.

Qaulcuno potrebbe aiutarmi? io all'inizio lo avevo fatto .. ma  a tutta l'immagine e fatto operazioni che nn c'entrano niente...  ma qualcuno potrebbe spiegarmi o mettere solo quel pezzo di metodo che serve? ....solo il punto C gli altri due ci sono riuscito a farli...grazie anticipatamente
Logged
Crazy Diamond
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 243



WWW
« Reply #31 on: 13-02-2009, 11:57:06 »

Ecco la mia versione della funzione red().

Code:
public void red(BufferedImage source)
{
BufferedImage grayInput = new BufferedImage(source.getWidth(),source.getHeight(),BufferedImage.TYPE_BYTE_GRAY);
BufferedImage grayOutput = new BufferedImage(source.getWidth(),source.getHeight(),BufferedImage.TYPE_BYTE_GRAY);
BufferedImage finalImage = new BufferedImage(source.getWidth(),source.getHeight(),source.getType());

Graphics g = grayOutput.getGraphics();
g.drawImage(source,0,0,source.getWidth(),source.getHeight(),null);

int[] red = source.getRaster().getSamples(0,0,source.getWidth(),source.getHeight(),0,(int[])(null));
int[] green = source.getRaster().getSamples(0,0,source.getWidth(),source.getHeight(),1,(int[])(null));
      int[] blue = source.getRaster().getSamples(0,0,source.getWidth(),source.getHeight(),2,(int[])(null));

WritableRaster redRaster = grayInput.getRaster();
WritableRaster outputRaster = grayOutput.getRaster();
WritableRaster finalRaster = finalImage.getRaster();

redRaster.setSamples(0,0,source.getWidth(),source.getHeight(),0,red);

float[] kernel = new float [9];

        kernel[0] = 1F/10; kernel[1] = 1F/10; kernel[2] = 1F/10;
        kernel[3] = 1F/10; kernel[4] = 1F; kernel[5] = 1F/10;
        kernel[6] = 1F/10; kernel[7] = 1F/10; kernel[8] = 1F/10;
       
        Kernel convolutionKernel = new Kernel(3,3,kernel);

ConvolveOp RedConvolve = new ConvolveOp(convolutionKernel);

RedConvolve.filter(redRaster,outputRaster);

int[] convolvedRed = outputRaster.getSamples(0,0,source.getWidth(),source.getHeight(),0,(int [])(null));

finalRaster.setSamples(0,0,source.getWidth(),source.getHeight(),0,convolvedRed);
finalRaster.setSamples(0,0,source.getWidth(),source.getHeight(),1,green);
finalRaster.setSamples(0,0,source.getWidth(),source.getHeight(),2,blue);

OutputFrame outFrame2 = new OutputFrame(finalImage);
}

Ah...funziona :-)
Logged

"God does not care about our mathematical difficulties. He integrates empirically." (A. Einstein)
________________________

www.davidemoltisanti.com | La mia galleria fotografica
Fabiux
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 401



« Reply #32 on: 13-02-2009, 12:05:58 »

Grazie davvero ....ci sbatto da una mattina XD ..... ciao ciao
Logged
Pages: 1 2 [3]   Go Up
Print
Jump to: