Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    19

    problema nell'uso di fill per riempimento buchi immagini binaria

    Salve a tutti, ho un problema riguardo all'utilizzo della funzione fill in java per poter riempire i buchi di un'immagine binaria.

    In matlab la funzione è imfill ed è facilissima poiché basta inserire l'immagine da elaborare e in automatico fa tutto..

    In java ho cercato come fare ciò e ho visto che i metodi sono all'interno di ij.process.ImageProcessor ma comunque non so come utilizzare tale funzione fiill()
    ho provato in questo modo..

    codice:
    BufferedImage image = ImageIO.read(new File("/BrainTesi/src/fuzzy_CM/a.tiff")); 
    		
    		ImagePlus imagePlus = new ImagePlus(); 
    		imagePlus.setImage(image); 
            	
    		ImageProcessor ip = new ByteProcessor(340,512);
    		
    		ip.setColor(Color.WHITE);
    		
    		ip.fill();
    ma ottengo tutta l'immagine bianca...altrimenti se non metto Color.WHITE diventa nera...
    Questo settaggio lo inserisco perchè ho letto che i metodi fill e draw hanno di default valore nero..quindi dato che a me serve riempire un area di un'immagine bianca che ha buchi neri su sfondo nero ho pensato che dovrebbe essere settato a bianco il colore.

    In allegato ho inserito una delle immagini da elaborare

    Spero che qualcuno sappia aiutarmi...è importante..son bloccato con la tesi per questo problema..

    Grazie..
    Immagini allegate Immagini allegate

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

    Re: problema nell'uso di fill per riempimento buchi immagini binaria

    Originariamente inviato da Thedoc46
    i metodi sono all'interno di ij.process.ImageProcessor

    codice:
    		ImagePlus imagePlus = new ImagePlus(); 
    		imagePlus.setImage(image); 
            	
    		ImageProcessor ip = new ByteProcessor(340,512);
    Qui stai parlando di classi/metodi di una libreria esterna al framework standard. Quindi innanzitutto precisa quale è e dove eventualmente si può trovare online (almeno per vedere il javadoc). Certo, a me personalmente basterebbe fare una ricerca in rete ma tieni presente in generale che se parli di qualcosa di non-standard dovresti precisare di che cosa si tratta!
    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
    Apr 2009
    Messaggi
    19
    Si...scusami..hai ragione..la documentazione si trova al seguente link
    Documentazione


    e tali librerie le utilizzo proprio per effettuare operazioni morfologiche sulle immagini..

    L'istanza dell'oggetto imagePlus la utilizzo per poter passare l'oggetto di tipo BufferedImage come oggetto ImageProcessor. Per poi avere a disposizione il metodo fill()...

    Mi sono accorto che nel copiare ed incollare il codice ho scritto errato qualche passaggio..
    lo riporto qui completo magari per un maggiore chiarimento.

    Grazie ancora

    codice:
    	
    BufferedImage image = ImageIO.read(new File("BrainTesi/src/fuzzy_CM/a.jpg")); 
    		
    		ImagePlus imagePlus = new ImagePlus(); 
    		
    		imagePlus.setImage(image); 
            
    		ImageProcessor ip = imagePlus.getProcessor(); 
    		
    		ip.setColor(Color.WHITE);
    		
    		ip.fill();
    				
    		int image_width = ip.getWidth(); 
    		int image_height = ip.getHeight(); 
    
    
    		BufferedImage bimg = null; 
    		
    		Image img = ip.createImage();
    		
    		//creating a new bufferedimage from above image 
    		//if you pass BufferedImage.TYPE_INT_RGB in place of Type_BYTE_GRAY then 
    		//you will get your original colored image 
    		bimg = new BufferedImage((int)image_width, (int)image_height, 
    		BufferedImage.TYPE_BYTE_GRAY); 
    
    		 
    		//getting graphics from Image 
    		Graphics2D gg = bimg.createGraphics(); 
    
    		//drawing your image on this new graphics 
    		gg.drawImage(img, 0, 0, img.getWidth(null), img.getHeight(null), null); 
    
    		//file name for saving jpeg file on to hard disk 
    		String temp = "out2h.tiff"; 
    		File fi = new File("BrainTesi/src/" + temp); 
    		ImageIO.write(bimg, "jpg", fi); 
    		
    	}

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2009
    Messaggi
    19
    Ok.tutto risolto.. ho utilizzato una classe che ho trovato sul web...e poi l'ho utilizzata tramite questi passi..

    codice:
      ImagePlus imagePlus = new ImagePlus();
    	    
    	    imagePlus.setImage(img_final);
    	    
    	    ImageProcessor ip = imagePlus.getProcessor();
    	    
    	    BinaryFill fill = new BinaryFill();
    	    
    	    fill.run(ip);
    Grazie cmq per l'attenzione dedicatami...

    Saluti

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.