Filtro convoluzione

di il
5 risposte

Filtro convoluzione

Salve,
ho un'applicazione che applica filtri su immagini, questa informazione è nota a chi ha letto qualche altro mio post di recente.
In pratica mi sono accorta che quando applico il filtro scala di grigi e poi il filtro convoluzione l'immagine scompare, cosa potrebbe causare il tutto? vi posto la porzione di codice dei due filtri
public BufferedImage filtroScalaDiGrigio(BufferedImage originalImage) {
        BufferedImage destImg = new BufferedImage(originalImage.getWidth(), originalImage.getHeight(), BufferedImage.TYPE_INT_ARGB);
        int alpha, red, green, blue;
        for (int x = 0; x < originalImage.getWidth(); x++) {
            for (int y = 0; y < originalImage.getHeight(); y++) {

                int pixel = originalImage.getRGB(x, y);

                alpha = (pixel >> 24) & 0xFF;
                red = (pixel >> 16) & 0xFF;
                green = (pixel >> 8) & 0xFF;
                blue = pixel & 0xFF;

                int avg = (red + blue + green) / 3;
                int grey = (alpha << 24) + (avg << 16) + (avg << 8) + avg;
                destImg.setRGB(x, y, grey);
            }
        }
        return destImg;
    }

public BufferedImage operatoreConvoluzione(Immagine immagine) {     
        BufferedImage immagineResult = immagine.getOriginalImage();
        BufferedImageOp blur = new ConvolveOp(new Kernel(3, 3, convKernel));
        immagineResult = blur.filter(immagineResult, null);
        return immagineResult;
    }
Grazie a tutti

5 Risposte

  • Re: Filtro convoluzione

    Innanzitutto cosa intendi per "scompare"? Diventa tutta nera o tutta bianca?
    Prova i due filtri singolarmente:
    - la sola trasformazione in grigi funziona? Vedi l'immagine grigia oppure "scompare"
    - il solo blur, sull'immagine a colori, funziona?
  • Re: Filtro convoluzione

    Ciao candaluar e grazie per la risposta,
    Innanzitutto cosa intendi per "scompare"?
    Significa che se applico prima il filtro scala di grigi e poi la convoluzione l'immagine non si vede più, non è ne bianca nè nera, vedo il pannello che dovrebbe contenere l'immagine.
    Prova i due filtri singolarmente:
    Fatto i due filtri singolarmente non hanno problemi solo se uniti generano la scomparsa dell'immagine.
    Grazie ancora
  • Re: Filtro convoluzione

    Cosa suggerisco?
    Fai il debugging dell'applicazione, solo così puoi trovare eventuali errori o valori che non ti aspetti di trovare in un particolare array o struttura dati che stai usando....di più è difficile dirti senza vedere o provare il codice.

    Ciao.
  • Re: Filtro convoluzione

    Grazie schumy2000 per il suggerimento,
    ma l'applicazione in questione è grafica quindi anche mettendo dei punti di debug non riesco a capire cosa succede di preciso, ho messo in compenso delle stampe per verificare il valore di RBG che ovviamente viene settato a zero come dovrebbe accadere per la convoluzione, ma anzichè vedere l'intera immagine nera vedo il JPanel sottostante.
    Cos'altro potrei fare?
  • Re: Filtro convoluzione

    Risolto, l'errore era in questa riga
    BufferedImage destImg = new BufferedImage(originalImage.getWidth(), originalImage.getHeight(), originalImage.getType());
    Grazie a tutti
Devi accedere o registrarti per scrivere nel forum
5 risposte