Visualizzazione dei risultati da 1 a 3 su 3

Discussione: filtro passo a basso

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    38

    filtro passo a basso

    Ho utilizzato il seguente codice x visualizzare un immagine filtrata ma nn ottengo nulla ottengo un immagine nera.Qualcuno mi sa aiutare?oppure mi sa indicare un altro modo per poter filtrare l'immagine?

    import com.pearsoneduc.ip.op.*;
    import java.awt.*;
    import java.awt.image.*;
    import java.awt.event.*;
    import java.io.*;
    import javax.imageio.*;
    import javax.swing.*;
    import java.awt.color.ColorSpace;



    class Esempio2 extends Canvas implements ActionListener
    {

    ImageFFT fft;
    BufferedImage leggi;
    BufferedImage immagine;
    BufferedImage outimage;


    public Esempio2 (String imageFile) {

    try
    {
    leggi = ImageIO.read(new File(imageFile));
    /*ColorSpace space = ColorSpace.getInstance(ColorSpace.CS_GRAY);
    ColorConvertOp operation = new ColorConvertOp ( space, null);
    BufferedImage immagine = operation.filter(leggi, null);*/


    immagine=new BufferedImage(leggi.getWidth(),leggi.getHeight(),B ufferedImage.TYPE_BYTE_GRAY);


    }
    catch (IOException e) {};
    }


    public Dimension getPreferredSize()
    {

    int width = leggi.getWidth(this);
    int height = leggi.getHeight(this);



    return new Dimension(width,height);
    }

    public void paint(Graphics g)
    {
    g.drawImage(leggi,0,0,this);
    }


    public void actionPerformed(ActionEvent ev)
    {

    try{
    fft=new ImageFFT(immagine);
    fft.transform();
    //System.out.println("WWW");
    fft.butterworthLowPassFilter(1,0.1d);
    fft.transform();
    leggi=fft.toImage(null);
    repaint();

    }
    catch(Exception e){
    System.out.println("eccezione");
    }


    }


    public static void main(String[] args)
    {

    Esempio2 es =new Esempio2 ("immagineoriginale.jpg");

    Frame f = new Frame("Esempio1");

    f.setLayout(new BorderLayout());
    f.add(es);
    Button b = new Button("fft");
    f.add(BorderLayout.SOUTH,b);

    b.addActionListener(es);

    f.pack();

    f.setVisible(true);
    }

    }

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: filtro passo a basso

    Originariamente inviato da ann9
    ma nn ottengo nulla ottengo un immagine nera.
    Per convertire una immagine in gray-scale, avevo già fatto degli esempio qui, proprio in una tua discussione.

    Nel tuo codice sopra

    immagine=new BufferedImage(.....);

    hai solo creato un BufferedImage ma senza disegnarci nulla (quindi l'immagine che passi a ImageFFT è tutta nera)!!! Rivedi l'esempio che avevo fatto io!!!

    Come dice il detto: "errare è umano, perseverare è diabolico".


    P.S. Aggiungo ora una cosa che avrei dovuto aggiungere in quel mio vecchio post. Avevo mostrato 2 metodi diversi per convertire una immagine da colori a gray-scale. I due esempio danno risultati leggermenti diversi. Perché cambia il metodo di conversione. Usando il secondo, quello del disegno su un BufferedImage creato con TYPE_BYTE_GRAY è più corretto dell'altro dal punto di vista visivo perché il colore RGB viene convertito in grigio in modo "pesato" secondo la percentuale R al 30%, G al 59% e B al 11%, che è più appropriato per l'occhio umano.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    38

    filtro passo a basso

    Grazie
    adesso funziona sbagliavo proprio nella trasformazione dell'immagine in scala di grigi

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.