1. Produse
  2.   Imagine
  3.   Java
  4.   ImgLib2
 
  

Bibliotecă Java cu sursă deschisă pentru procesarea imaginilor

Un API de procesare a imaginilor multidimensională, cu scop general, care creează imagini noi, modifică imaginile existente, lucrează cu date rare, duplică imaginea existentă folosind API-ul Java gratuit.

Biblioteca cu sursă deschisă ImgLib2 oferă dezvoltatorilor de software capacitatea de a crea și manipula imagini în aplicațiile lor Java. Biblioteca oferă un design bazat pe interfață care permite utilizatorilor să utilizeze cu ușurință tipuri de date numerice și non-numerice în cadrul propriilor aplicații.

ImgLib2 este o bibliotecă de procesare a imaginilor multidimensională de uz general, care oferă suport pentru câteva caracteristici importante legate de procesarea imaginilor, cum ar fi crearea de noi imagini, modificarea imaginilor existente, deschiderea și citirea imaginilor existente, lucrul cu date rare, duplicarea imaginilor existente, generic copierea datelor de imagine, Desenarea unei sfere, suport pentru interpolare și multe altele.

Biblioteca este foarte ușor de utilizat și evită complexitățile inutile, astfel dezvoltatorii se pot concentra asupra esenței algoritmului în timp ce își dezvoltă proiectele. Lucrul grozav al bibliotecii este că este independent de dimensiune și permite utilizatorilor să-și exprime codul într-un mod care poate fi aplicat datelor cu mai multe dimensiuni. Funcționarea bibliotecii nu se limitează la imagini, doar există exemple care lucrează și pe secvențele de ARN.

Previous Next

Noțiuni introductive cu ImgLib2

Cel mai simplu și recomandat mod de a instala ImgLib2 este prin GitHub.

Instalați ImgLib2 prin GitHub

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

Crearea de noi imagini prin Java

Biblioteca Java cu sursă deschisă ImgLib2 a inclus suport pentru crearea unei noi imagini de la zero cu doar câteva linii de cod Java. Folosind biblioteca ImgLib2, puteți crea diferite tipuri de imagini, cum ar fi imagini simple, imagini 3D, ImgFactory și altele. De asemenea, puteți modifica imaginile imaginilor existente cu doar câteva linii de cod.

Creați imagini noi prin API-ul Java


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

Duplicarea imaginii prin API-ul Java

Biblioteca ImgLib2 a inclus funcționalitate pentru duplicarea imaginilor folosind comenzi Java. Puteți face cu ușurință o copie a imaginii existente. Puteți folosi cursori pentru a realiza această sarcină. Puteți utiliza, de asemenea, metoda copierii, care este o metodă generică, iar lucrul grozav este că va funcționa pe orice tip de tip.

Imagine duplicată prin API-ul Java


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

Vizualizați imaginile parțial prin Java

Biblioteca gratuită ImgLib2 le permite dezvoltatorilor de software să afișeze doar unele părți ale imaginii în aplicațiile lor prin câteva linii de cod Java. Vizualizările sunt foarte puternice și le puteți folosi pentru a afișa părți selectate ale imaginilor, pentru a afișa o vizualizare rotită și alte câteva lucruri. Vizualizările pot fi Acces aleatoriu, Interval și, prin urmare, pot fi făcute Iterabile.

Gestionarea datelor rare

Biblioteca gratuită ImgLib2 oferă dezvoltatorilor de software capacitatea de a lucra cu date rare folosind cod Java. Biblioteca a furnizat două scheme de interpolare pentru afișarea datelor rare. Utilizatorii pot calcula o valoare pentru fiecare locație din spațiu returnând fie valoarea celui mai apropiat eșantion, fie o valoare interpolată, ponderată în funcție de distanță, a celor mai apropiați k vecini de locația eșantionată.

Lucrați cu date rare în aplicațiile Java


        // 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 );
	}
 Română