Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    38

    filtraggio immagine

    ivoglio visualizzare a video lìimmagine originaria e poi cliccando su button l'immaginr filtrata ma in realtà ottengi tutto nero.Qualcuno mi può aiutare?javascript:void(0);
    Mannaggia li pescetti

    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.*;




    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));

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


    }
    catch (IOException e) {};
    }


    public Dimension getPreferredSize()
    {

    int width = immagine.getWidth(this);
    int height = immagine.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,2);

    fft.transform();
    fft.butterworthLowPassFilter(1,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 ("mattgrey.jpg");

    Frame f = new Frame("Esempio1");

    f.setLayout(new BorderLayout());
    f.add(BorderLayout.CENTER,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: filtraggio immagine

    Originariamente inviato da ann9
    ivoglio visualizzare a video lìimmagine originaria e poi cliccando su button l'immaginr filtrata ma in realtà ottengi tutto nero.Qualcuno mi può aiutare?
    Vedo che hai usato una libreria particolare ... che non conosco. Comunque ne ho trovato la documentazione javadoc qui.

    Il problema a mio avviso è tutto in questa parte:

    fft=new ImageFFT(immagine,2);
    fft.transform();
    fft.butterworthLowPassFilter(1,1d);
    fft.transform();
    leggi=fft.toImage(null);

    Tu crei un ImageFFT passando 'immagine' che è il BufferedImage senza immagine ... quello tutto nero. Mentre invece dovresti passare la immagine da elaborare! Il fatto però è che quella documentazione dice che il costruttore lancia FFTException se la immagine non è 8-bit greyscale e non credo proprio che lo sia la tua immagine mattgrey.jpg, visto che è appunto JPEG.

    E poi a quel punto puoi invocare toImage() passando 'immagine' che verrà riempita. A dire il vero credo che tu possa passare anche lo stesso BufferedImage originale, ma non ne sono sicuro al 100%.

    Insomma ... visto che stai usando una libreria particolare, documentati bene su cosa offre e richiede per l'utilizzo.
    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

    conversione immagine

    chiedo aiuto su come convertire un'immagine jpg in un immagine a 8-bit grayscale

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

    Re: conversione immagine

    Originariamente inviato da ann9
    chiedo aiuto su come convertire un'immagine jpg in un immagine a 8-bit grayscale
    Soluzione 1)

    codice:
    BufferedImage rgbImage;
    
    // .... carica immagine di partenza in rgbImage ....
    
    ColorSpace space = ColorSpace.getInstance (ColorSpace.CS_GRAY);
    ColorConvertOp operation = new ColorConvertOp (space, null);
    
    BufferedImage greyImage = operation.filter (rgbImage, null);

    Soluzione 2)

    codice:
    BufferedImage rgbImage;
    
    // .... carica immagine di partenza in rgbImage ....
    
    BufferedImage greyImage = new BufferedImage (rgbImage.getWidth (), rgbImage.getHeight (),
                                                 BufferedImage.TYPE_BYTE_GRAY);
    greyImage.getGraphics ().drawImage (rgbImage, 0, 0, null);
    EDIT: Giusto per chiarezza, BufferedImage/ColorConvertOp sono nel package java.awt.image mentre ColorSpace è nel package java.awt.color.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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

    soglia

    ho due immagine in scala di grigi,devo creare una treza immagine confronto i suoi pixel con un valore numerico se sono maggioi nella terza immagine vado a mettere il valore di quel pixel della prima immagine altrimenti metto zero(grigio).Qualcuno sa aiutarmi?

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    è sempre parte di questa?
    http://forum.html.it/forum/showthrea...readid=1246998

    Qui già cominciamo a ragionare sul che cosa si confronta. Però non è chiaro che cosa devi fare con esattezza: che cosa finisce nella terza immagine? Il "maggiore" dei due pixel corrispondenti nelle prime due immagini? Per esempio, se il pixel [0][0] (l'angolo in alto a sinistra) nella prima immagine è (in rgb) (200,200,200) ossia un grigio chiaro mentre il corrispondente nella seconda è (100,100,100), che cosa va a finire nella terza immagine in [0][0]? Per intenderci, comunque, (0, 0, 0) è nero, (255, 255, 255) bianco.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

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

    soglia

    nella terza andrebbe a finire il valore della prima ciòè 200 200 200

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    codice:
    public BufferedImage highpass(BufferedImage img1, BufferedImage img2) {
            BufferedImage ret = new BufferedImage(img1.getWidth(), img1.getHeight(), BufferedImage.TYPE_BYTE_GRAY);
            for (int i = 0; i < ret.getWidth(); i++) {
                for (int j = 0; j < ret.getHeight(); j++) {
                    ret.setRGB(i, j, Math.max(img1.getRGB(i, j), img2.getRGB(i, j)));
                }
            }
            return ret;
        }
    assumendo che img1 e img2 abbiano le stesse dimensioni. Altrimenti devi fare qualche altro magheggio, e decidere quali parti delle immagini confrontare e quanto grande dev'essere la risultante della loro composizione
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

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

    soglia

    quetso codice mi da eccezione perchè?



    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 Esempio4 extends Canvas implements ActionListener
    {
    /* immagine contenuta */
    BufferedImage img1;
    BufferedImage img2;
    BufferedImage ret;

    /* creatore, carica l'immagine dal file che e' passato come argomento */
    public Esempio4(String imageFile1,String imageFile2)
    {


    try
    {
    img1 = ImageIO.read(new File(imageFile1));
    img2 = ImageIO.read(new File(imageFile2));



    }
    catch (IOException e) {};
    }


    public Dimension getPreferredSize()
    {

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



    return new Dimension(width,height);
    }


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

    }

    /* reagisce invertendo i colori dell'immagine e ridisegnandola */
    public void actionPerformed(ActionEvent ev)
    {

    try{

    img1 = new BufferedImage(img1.getWidth(), img1.getHeight(), BufferedImage.TYPE_BYTE_GRAY);
    for (int i = 0; i < ret.getWidth(); i++) {
    for (int j = 0; j < ret.getHeight(); j++) {
    if(img2.getRGB(i, j)>0.9){
    img1.setRGB(i, j, img1.getRGB(i, j));
    }
    else{
    img1.setRGB(i, j, 0);
    }
    }
    }

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


    }

    /* main di esempio */
    public static void main(String[] args)
    {

    Esempio4 es = new Esempio4("filtro16(20-50).jpg","16.jpg");

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

    b.addActionListener(es);

    f.pack();

    f.setVisible(true);
    }

    }

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013

    Re: soglia

    Prendiamo questo brano di codice
    codice:
    try {
      img1 = new BufferedImage(img1.getWidth(), img1.getHeight(), BufferedImage.TYPE_BYTE_GRAY);
      for (int i = 0; i < ret.getWidth(); i++) {
        for (int j = 0; j < ret.getHeight(); j++) {
          if(img2.getRGB(i, j)>0.9) {
            img1.setRGB(i, j, img1.getRGB(i, j));
          }
          else {
            img1.setRGB(i, j, 0);
          }				    
        }
      }
    }
    Per prima cosa, istanzi una nuova img1, con le dimensioni della vecchia img1 e color-space scala di grigi. Ok, fin qui tutto regolare.
    poi cicli, come da mio codice, su img2 e verifichi se i pixel "abbiano un valore maggiore" di una certa soglia... ecco già qui cominciano i problemi: DEVI leggere le API associate: quel getRGB restituisce un int e ti assicuro che sempre e comunque sarà più grande di 0.9, a meno che il pixel non sia completamente nero... quindi siamo dentro l'if e qui sorgono i problemi: setti il colore del pixel i,j di img1 al colore che ha il pixel i,j di img1!!!!! Assurdo, ancora non esiste nemmeno quel pixel.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

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.