Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Java - Matching di una porzione di immagine
Forum - Java - Matching di una porzione di immagine

Avatar
hopenthink (Normal User)
Newbie


Messaggi: 3
Iscritto: 31/01/2008

Segnala al moderatore
Postato alle 16:44
Giovedì, 31/01/2008
Salve a tutti!
Vorrei essere in grado di eseguire un confronto tra:
- un immagine;
- ed una porzione di immagine contenuta in un altra immagine più grande (la porzione è grande come l'immagine da confrontare) .
Potete segnalarmi quale costrutto utilizzare per eseguire il pattern matching?
Sarebbe meglio ritagliare l'immagine, salvarla e metcharla con la prima oppure ci sono altre soluzioni?

Taks, Hopenthink.

PM Quote
Avatar
netarrow (Admin)
Guru^2


Messaggi: 2502
Iscritto: 12/05/2004

Segnala al moderatore
Postato alle 18:51
Giovedì, 31/01/2008
ci sono classi apposite che da un'immagine ottengono vettori contenenti tutti i dati dell'immagine quali PixelGrabber(esempi: http://www.pierotofy.it/pages/guide_tutorials/Java/Immagin ... che ti ritorna i pixel appunto esprimendone il colore (RGB o altre notazioni ora non ricordo).
Quindi presumo che se ottieni i pixel delle due immagini puoi dopo gestire gli algoritmi che preferisci per ricercare la porzione di pixel che corrisponde a quelli dell'immagine da cercare.
Se poi esiste qualche tecnica di potatura per ritagliere parti superflue non saprei, il matching di immagini non l'ho mai affrontato.

Se ho capito male rispiegami pure, se quello che ho scritto ti era già scontato prima oltre non saprei andare.

Ultima modifica effettuata da netarrow il 31/01/2008 alle 18:52
PM Quote
Avatar
hopenthink (Normal User)
Newbie


Messaggi: 3
Iscritto: 31/01/2008

Segnala al moderatore
Postato alle 19:24
Giovedì, 31/01/2008
Grazie per la tempestiva risposta.
Ho provato a ridurre l'immagine e ci sono parzialmente riuscito, ora però potrei intraprendere due strade:
1) salvo l'immagine e la confronto;
2) oppure confronto direttamente l'immagine.

1) Seguendo la prima strada la porzione di immagine che salvo non è corretta. Si vede tutto scuro...
Comunque, allego il codice, magari qualcuno può dirmi dove ho sbagliato.
Se riesco a salvare l'immagine, esiste qualcosa che confronta le immagini senza scendere in dettaglio utilizzando pixelGrubber???

Ancora grazie.

Codice sorgente - presumibilmente Java

  1. import java.awt.*;
  2. import java.awt.image.*;
  3. import java.io.File;
  4. import java.io.IOException;
  5. import javax.imageio.ImageIO;
  6. import javax.swing.ImageIcon;
  7. import javax.swing.JFrame;
  8.  
  9. public class Taglia extends JFrame
  10. {      
  11.     Insets insets;
  12.    
  13.     Image orig;
  14.     Image crop;
  15.    
  16.     int width = 40;
  17.     int height = 15;
  18.    
  19.     File file = new File("imgTagliata.jpg");
  20.    
  21.     BufferedImage bimage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
  22.  
  23.     Graphics imgGraphics  = bimage.createGraphics();
  24.  
  25.  
  26.         // PRENDO L'IMMAGINE BASE E LA TAGLIO
  27.     public Taglia(String s)
  28.     {  
  29.         ImageIcon imageicon = new ImageIcon(s);
  30.         orig = imageicon.getImage();
  31.         crop = createImage(new FilteredImageSource(orig.getSource(), new CropImageFilter(75, 30, width, height)));
  32.  
  33.     }
  34.        
  35.         // ORA DEVO STAMPARE L'IMMAGINE OTTENUTA IN UNA NUOVA CREATA DA ME
  36.     //*****************************
  37.     public void paint(Graphics g)
  38.     {
  39.         super.paint(imgGraphics);
  40.         if(insets == null)
  41.             insets = getInsets();
  42.         g.drawImage(crop, insets.left, insets.top, this);
  43.  
  44.                 Graphics2D g2 = (Graphics2D)g;
  45.  
  46.         try
  47.         {
  48.             ImageIO.write(bimage, "jpg", file);
  49.         }
  50.         catch(IOException ioexception) { }
  51.     }
  52.         //******************************
  53.     public static void main(String args[])
  54.     {
  55.         Taglia taglia = new Taglia("ok.jpg");
  56.         taglia.setSize(100, 100);
  57.         taglia.show();
  58.     }
  59. }

:k::k:

Ultima modifica effettuata da hopenthink il 31/01/2008 alle 19:32
PM Quote