1. Prodotti
  2.   Immagine
  3.   Java
  4.   ImgLib2
 
  

Libreria Java open source per l'elaborazione delle immagini

Un'API di elaborazione delle immagini multidimensionale per uso generico che crea nuove immagini, modifica le immagini esistenti, lavora con dati sparsi, duplica l'immagine esistente utilizzando l'API Java gratuita.

La libreria open source ImgLib2 offre agli sviluppatori di software la possibilità di creare e manipolare immagini all'interno delle loro app Java. La libreria offre un design basato sull'interfaccia che consente agli utenti di utilizzare facilmente tipi di dati numerici e non numerici all'interno delle proprie applicazioni.

ImgLib2 è una libreria di elaborazione di immagini multidimensionale per uso generico che fornisce supporto per diverse importanti funzionalità relative all'elaborazione delle immagini, come la creazione di nuove immagini, la modifica di immagini esistenti, l'apertura e la lettura di immagini esistenti, il lavoro con dati sparsi, la duplicazione di immagini esistenti, copia dei dati dell'immagine, disegno di una sfera, supporto per l'interpolazione e molti altri.

La libreria è molto intuitiva ed evita inutili complessità, così gli sviluppatori possono concentrarsi sull'essenza dell'algoritmo durante lo sviluppo dei loro progetti. Il bello della libreria è che è indipendente dalla dimensione e consente agli utenti di esprimere il proprio codice in un modo che può essere applicato a dati multidimensionali. Il funzionamento della libreria non si limita alle immagini, ma ci sono anche esempi che lavorano su sequenze di RNA.

Previous Next

Iniziare con ImgLib2

Il modo più semplice e consigliato per installare ImgLib2 è tramite GitHub.

Installa ImgLib2 tramite GitHub

go get -u github.com/imglib/imglib2.git 

Creazione di nuove immagini tramite Java

La libreria Java open source ImgLib2 ha incluso il supporto per la creazione di una nuova immagine da zero con solo un paio di righe di codice Java. Usando la libreria ImgLib2, puoi creare diversi tipi di immagini come immagini semplici, immagini 3D, ImgFactory e altro. Puoi anche modificare le immagini delle immagini esistenti con solo un paio di righe di codice.

Crea nuove immagini via Java API


        public Example1c()
        {
            // create the ImgFactory based on cells (cellsize = 5x5x5...x5) that will
            // instantiate the Img
            final ImgFactory< FloatType > imgFactory = new CellImgFactory<>( new FloatType(), 5 );
            // create an 3d-Img with dimensions 20x30x40 (here cellsize is 5x5x5)Ø
            final Img< FloatType > img1 = imgFactory.create( 20, 30, 40 );
            // create another image with the same size. Note that the input provides the size for the new image as it implements the Interval interface
            final Img< FloatType > img2 = imgFactory.create( img1 );
            // display both (but they are empty)
            ImageJFunctions.show( img1 );
            ImageJFunctions.show( img2 );
        }

Duplicazione delle immagini tramite API Java

La libreria ImgLib2 include funzionalità per la duplicazione delle immagini utilizzando i comandi Java. Puoi facilmente fare una copia dell'immagine esistente. Puoi utilizzare i Cursori per svolgere questa attività. Puoi anche usare il metodo di copia che è un metodo generico e la cosa grandiosa è che funzionerà su qualsiasi tipo di tipo.

Immagine duplicata tramite Java API


	public DuplicateImage() throws ImgIOException
	{
		// open with SCIFIO as a FloatType
		Img< FloatType > img = IO.openImgs( "DrosophilaWing.tif", new FloatType() ).get( 0 );
		// copy the image, as it is a generic method it also works with FloatType
		Img< FloatType > duplicate = copyImage( img );
		// display the copy
		ImageJFunctions.show( duplicate );
	}
        // Generic, type-agnostic method to create an identical copy of an Img
	public < T extends Type< T > > Img< T > copyImage( final Img< T > input )
	{
		// create a new Image with the same properties
		Img< T > output = input.factory().create( input );
		// create a cursor for both images
		Cursor< T > cursorInput = input.cursor();
		Cursor< T > cursorOutput = output.cursor();
		// iterate over the input
		while ( cursorInput.hasNext())
		{
			// move both cursors forward by one pixel
			cursorInput.fwd();
			cursorOutput.fwd();
			// set the value of this pixel of the output image to the same as the input,
			// every Type supports T.set( T type )
			cursorOutput.get().set( cursorInput.get() );
		}
		// return the copy
		return output;
	}

Visualizza le immagini in parte tramite Java

La libreria gratuita ImgLib2 consente agli sviluppatori di software di visualizzare solo alcune parti dell'immagine all'interno delle loro app tramite un paio di righe di codice Java. Le viste sono molto potenti e puoi usarle per visualizzare parti selezionate delle immagini, visualizzare una vista ruotata e poche altre cose. Le viste possono essere RandomAccessible, Interval e possono quindi essere rese iterabili.

Gestione dei dati scarsi

La libreria gratuita ImgLib2 offre agli sviluppatori di software la possibilità di lavorare con dati sparsi utilizzando il codice Java. La libreria ha fornito due schemi di interpolazione per la visualizzazione di dati sparsi. Gli utenti possono calcolare un valore per ogni posizione nello spazio restituendo il valore del campione più vicino o un valore interpolato e ponderato per la distanza dei k vicini più vicini alla posizione campionata.

Lavora con Sparse Data all'interno di Java App


        // Working with sparse data
	public SparseExample()
	{
		// the interval in which to create random points
		FinalInterval interval = new FinalInterval( new long[] { 375, 200 } );
		// create an IterableRealInterval
		IterableRealInterval< FloatType > realInterval = createRandomPoints( interval, 250 );
		// using nearest neighbor search we will be able to return a value an any position in space
		NearestNeighborSearch< FloatType > search =
			new NearestNeighborSearchOnKDTree<>(
				new KDTree<>( realInterval ) );
		// make it into RealRandomAccessible using nearest neighbor search
		RealRandomAccessible< FloatType > realRandomAccessible =
			Views.interpolate( search, new NearestNeighborSearchInterpolatorFactory< FloatType >() );
		// convert it into a RandomAccessible which can be displayed
		RandomAccessible< FloatType > randomAccessible = Views.raster( realRandomAccessible );
		// set the initial interval as area to view
		RandomAccessibleInterval< FloatType > view = Views.interval( randomAccessible, interval );
		// display the view
		ImageJFunctions.show( view );
		// compute a gauss on it
		Img< FloatType > convolved = new ArrayImgFactory<>( new FloatType() ).create( interval );
		Gauss.inFloat( new double[] { 3, 3 }, view, interval, convolved,
			new Point( view.numDimensions() ), convolved.factory() );
		// display the view
		ImageJFunctions.show( convolved );
	}
 Italiano