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

Open Source Java-bibliotek til billedbehandling

En generel multidimensional billedbehandlings-API, der skaber nye billeder, ændrer eksisterende billeder, arbejder med sparsomme data, duplikerer eksisterende billede ved hjælp af Free Java API.

Open source ImgLib2-biblioteket giver softwareudviklere mulighed for at skabe og manipulere billeder inde i deres Java-apps. Biblioteket tilbyder et interface-drevet design, der gør det muligt for brugere at bruge numeriske og ikke-numeriske datatyper med lethed i deres egne applikationer.

ImgLib2 er et multidimensionelt billedbehandlingsbibliotek til generelle formål, der understøtter flere vigtige funktioner relateret til billedbehandling, såsom oprettelse af nye billeder, ændring af eksisterende billeder, åbning og læsning af eksisterende billeder, arbejde med sparsomme data, duplikering af eksisterende billeder, generisk kopiering af billeddata, Tegning af en kugle, Interpolationsunderstøttelse og mange flere.

Biblioteket er meget brugervenligt og undgår unødvendig kompleksitet, så udviklere kan koncentrere sig om essensen af algoritmen, mens de udvikler deres projekter. Det fantastiske ved biblioteket er, at det er dimensionsuafhængigt og giver brugerne mulighed for at udtrykke deres kode på en måde, der kan anvendes på mangedimensionelle data. Bibliotekets arbejde er ikke begrænset til billeder, men der er også eksempler på RNA-sekvenser.

Previous Next

Kom godt i gang med ImgLib2

Den nemmeste og anbefalede måde at installere ImgLib2 på er via GitHub.

Installer ImgLib2 via GitHub

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

Oprettelse af nye billeder via Java

Open source Java-biblioteket ImgLib2 har inkluderet support til at skabe et nyt billede fra bunden med blot et par linjer Java-kode. Ved hjælp af ImgLib2-biblioteket kan du oprette forskellige typer billeder, såsom simple billeder, 3D-billeder, ImgFactory og mere. Du kan også ændre billeder af de eksisterende billeder med blot et par linjer kode.

Opret nye billeder 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 );
        }

Billedduplikering via Java API

ImgLib2-biblioteket har inkluderet funktionalitet til billedduplikering ved hjælp af Java-kommandoer. Du kan nemt lave en kopi af det eksisterende billede. Du kan bruge Cursorer til at udføre denne opgave. Du kan også bruge kopieringsmetoden, som er en generisk metode, og det fantastiske er, at det vil fungere på enhver form for type.

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

Se billeder Delvis via Java

Det gratis ImgLib2-bibliotek gør det muligt for softwareudviklere kun at vise nogle dele af billedet inde i deres apps via et par linjer Java-kode. Visninger er meget kraftfulde, og du kan bruge dem til at vise udvalgte dele af billederne, vise en roteret visning og få andre ting. Visninger kan være RandomAccessible, Interval og kan derfor gøres Iterable.

Spare Data Management

Det gratis ImgLib2-bibliotek giver softwareudviklere mulighed for at arbejde med sparsomme data ved hjælp af Java-kode. Biblioteket har leveret to interpolationsskemaer til visning af sparsomme data. Brugere kan beregne en værdi for hver placering i rummet ved at returnere enten værdien af den nærmeste prøve eller en interpoleret, afstandsvægtet værdi af de k nærmeste naboer til den prøvede placering.

Arbejd med sparse data i 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 );
	}
 Dansk