1. Produkter
  2.   Bild
  3.   Java
  4.   ImgLib2
 
  

Java-bibliotek med öppen källkod för bildbehandling

Ett multidimensionellt bildbearbetnings-API för allmänna ändamål som skapar nya bilder, modifierar befintliga bilder, arbetar med sparsam data, duplicerar befintlig bild med hjälp av Free Java API.

ImgLib2-biblioteket med öppen källkod ger mjukvaruutvecklare möjlighet att skapa och manipulera bilder i sina Java-appar. Biblioteket erbjuder en gränssnittsdriven design som gör det möjligt för användare att använda numeriska och icke-numeriska datatyper med lätthet i sina egna applikationer.

ImgLib2 är ett allmänt ändamål, flerdimensionellt bildbehandlingsbibliotek som ger stöd för flera viktiga funktioner relaterade till bildbehandling, som att skapa nya bilder, ändra befintliga bilder, öppna och läsa befintliga bilder, arbeta med sparsam data, duplicera befintliga bilder, Generic kopiering av bilddata, rita en sfär, interpolationsstöd och många fler.

Biblioteket är mycket användarvänligt och undviker onödig komplexitet, vilket gör att utvecklare kan koncentrera sig på algoritmens väsen medan de utvecklar sina projekt. Det fina med biblioteket är att det är dimensionsoberoende och tillåter användare att uttrycka sin kod på ett sätt som kan appliceras på mångdimensionell data. Biblioteket fungerar inte är begränsat till bilder bara det finns exempel som arbetar med RNA-sekvenser också.

Previous Next

Komma igång med ImgLib2

Det enklaste och rekommenderade sättet att installera ImgLib2 är via GitHub.

Installera ImgLib2 via GitHub

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

Skapa nya bilder via Java

Java-biblioteket med öppen källkod ImgLib2 har inkluderat stöd för att skapa en ny bild från början med bara ett par rader Java-kod. Med hjälp av ImgLib2-biblioteket kan du skapa olika typer av bilder som enkla bilder, 3D-bilder, ImgFactory och mer. Du kan också ändra bilder av befintliga bilder med bara ett par rader kod.

Skapa nya bilder 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 );
        }

Bildduplicering via Java API

ImgLib2-biblioteket har inkluderat funktionalitet för bildduplicering med Java-kommandon. Du kan enkelt göra en kopia av den befintliga bilden. Du kan använda Cursorer för att utföra denna uppgift. Du kan också använda kopieringsmetoden som är en generisk metod och det fina är att den fungerar på alla typer av typ.

Duplicera bild via 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;
	}

Visa bilder Delvis via Java

Det kostnadsfria ImgLib2-biblioteket gör det möjligt för mjukvaruutvecklare att visa endast vissa delar av bilden i sina appar via ett par rader Java-kod. Vyer är mycket kraftfulla och du kan använda dem för att visa utvalda delar av bilderna, visa en roterad vy och några andra saker. Visningar kan vara RandomAccessible, Interval och kan därför göras Iterable.

Spare Data Management

Det kostnadsfria ImgLib2-biblioteket ger mjukvaruutvecklare möjlighet att arbeta med gles data med hjälp av Java-kod. Biblioteket har tillhandahållit två interpolationsscheman för att visa glesa data. Användare kan beräkna ett värde för varje plats i rymden genom att returnera antingen värdet för det närmaste samplet eller ett interpolerat, avståndsviktat värde för k närmaste grannar till den samplade platsen.

Arbeta med Sparse Data inuti Java Apps


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