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

Open Source Java-bibliotek for bildebehandling

En multidimensjonal bildebehandlings-API for generell bruk som lager nye bilder, endrer eksisterende bilder, jobber med sparsomme data, dupliserer eksisterende bilder ved hjelp av Free Java API.

Åpen kildekode ImgLib2-biblioteket gir programvareutviklere muligheten til å lage og manipulere bilder inne i Java-appene deres. Biblioteket tilbyr en grensesnittdrevet design som gjør det mulig for brukere å bruke numeriske og ikke-numeriske datatyper med letthet i sine egne applikasjoner.

ImgLib2 er et flerdimensjonalt bildebehandlingsbibliotek for generell bruk som gir støtte for flere viktige funksjoner knyttet til bildebehandling, som å lage nye bilder, endre eksisterende bilder, åpne og lese eksisterende bilder, arbeide med sparsomme data, duplisere eksisterende bilder, Generisk kopiering av bildedata, Tegning av en kule, Interpolasjonsstøtte og mange flere.

Biblioteket er svært brukervennlig og unngår unødvendig kompleksitet, slik at utviklere kan konsentrere seg om essensen av algoritmen mens de utvikler sine prosjekter. Det flotte med biblioteket er at det er dimensjonsuavhengig og lar brukere uttrykke koden sin på en måte som kan brukes på mangedimensjonale data. Biblioteket fungerer ikke begrenset til bilder, bare det er eksempler som jobber med RNA-sekvenser også.

Previous Next

Komme i gang med ImgLib2

Den enkleste og anbefalte måten å installere ImgLib2 på er via GitHub.

Installer ImgLib2 via GitHub

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

Opprette nye bilder via Java

Open source Java-biblioteket ImgLib2 har inkludert støtte for å lage et nytt bilde fra bunnen av med bare et par linjer med Java-kode. Ved å bruke ImgLib2-biblioteket kan du lage forskjellige typer bilder som enkle bilder, 3D-bilder, ImgFactory og mer. Du kan også endre bilder av de eksisterende bildene med bare et par linjer med kode.

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

Bildeduplikering via Java API

ImgLib2-biblioteket har inkludert funksjonalitet for bildeduplisering ved bruk av Java-kommandoer. Du kan enkelt lage en kopi av det eksisterende bildet. Du kan bruke Cursorer for å oppnå denne oppgaven. Du kan også bruke kopieringsmetoden som er en generisk metode, og det fine er at den vil fungere på alle typer type.

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

Vis bilder Delvis via Java

Det gratis ImgLib2-biblioteket gjør det mulig for programvareutviklere å vise bare noen deler av bildet i appene sine via et par linjer med Java-kode. Visninger er veldig kraftige, og du kan bruke dem til å vise utvalgte deler av bildene, vise en rotert visning og få andre ting. Visninger kan være RandomAccessible, Interval, og kan derfor gjøres Iterable.

Sparsom databehandling

Det gratis ImgLib2-biblioteket gir programvareutviklere muligheten til å jobbe med sparsomme data ved hjelp av Java-kode. Biblioteket har levert to interpolasjonsskjemaer for visning av sparsomme data. Brukere kan beregne en verdi for hver plassering i verdensrommet ved å returnere enten verdien av den nærmeste prøven eller en interpolert, avstandsvektet verdi av k nærmeste naboer til den samplede plasseringen.

Arbeid med sparsomme data i Java-apper


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