1. Tuotteet
  2.   Kuva
  3.   Java
  4.   ImgLib2
 
  

Avoimen lähdekoodin Java-kirjasto kuvankäsittelyä varten

Yleiskäyttöinen, moniulotteinen kuvankäsittelysovellusliittymä, joka luo uusia kuvia, muokkaa olemassa olevia kuvia, työskentelee niukalla datalla ja kopioi olemassa olevan kuvan ilmaisen Java API:n avulla.

Avoimen lähdekoodin ImgLib2-kirjasto antaa ohjelmistokehittäjille mahdollisuuden luoda ja käsitellä kuvia Java-sovelluksissaan. Kirjasto tarjoaa käyttöliittymäpohjaisen suunnittelun, jonka avulla käyttäjät voivat käyttää numeerisia ja ei-numeerisia tietotyyppejä helposti omissa sovelluksissaan.

ImgLib2 on yleiskäyttöinen, moniulotteinen kuvankäsittelykirjasto, joka tukee useita tärkeitä kuvankäsittelyyn liittyviä ominaisuuksia, kuten uusien kuvien luomista, olemassa olevien kuvien muokkaamista, olemassa olevien kuvien avaamista ja lukemista, niukan datan käsittelyä, olemassa olevien kuvien monistamista, yleistä kuvatietojen kopiointi, pallon piirtäminen, interpolointituki ja paljon muuta.

Kirjasto on erittäin käyttäjäystävällinen ja välttää turhat monimutkaiset, joten kehittäjät voivat keskittyä algoritmin olemukseen kehittäessään projektejaan. Hienoa kirjastossa on, että se on ulottuvuuksista riippumaton ja antaa käyttäjille mahdollisuuden ilmaista koodiaan tavalla, jota voidaan soveltaa moniulotteiseen dataan. Kirjaston toiminta ei rajoitu kuviin, vaan on esimerkkejä myös RNA-sekvensseistä.

Previous Next

ImgLib2:n käytön aloittaminen

Helpoin ja suositeltava tapa asentaa ImgLib2 on GitHubin kautta.

Asenna ImgLib2 GitHubin kautta

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

Uusien kuvien luominen Javalla

Avoimen lähdekoodin Java-kirjasto ImgLib2 sisältää tuen uuden kuvan luomiseen alusta alkaen vain parilla Java-koodirivillä. ImgLib2-kirjaston avulla voit luoda erilaisia kuvia, kuten yksinkertaisia kuvia, 3D-kuvia, ImgFactory-kuvia ja paljon muuta. Voit myös muokata kuvia olemassa olevista kuvista vain muutamalla koodirivillä.

Luo uusia kuvia Java API:n kautta


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

Kuvan monistaminen Java API:n kautta

ImgLib2-kirjastossa on toiminnot kuvien monistamiseen Java-komentojen avulla. Voit helposti tehdä kopion olemassa olevasta kuvasta. Voit käyttää kohdistimia tämän tehtävän suorittamiseen. Voit myös käyttää kopiointimenetelmää, joka on yleinen menetelmä, ja hienoa on, että se toimii kaikenlaisissa tyypeissä.

Kopioi kuva Java API:n kautta


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

Katsele kuvia osittain Javan kautta

Ilmaisen ImgLib2-kirjaston avulla ohjelmistokehittäjät voivat näyttää vain osan kuvasta sovellusten sisällä muutaman Java-koodirivin avulla. Näkymät ovat erittäin tehokkaita, ja voit käyttää niitä kuvien valittujen osien näyttämiseen, käännetyn näkymän ja muutamien muiden asioiden näyttämiseen. Näkymät voivat olla RandomAccessible, Interval, ja ne voidaan siksi tehdä iteroitaviksi.

Harva tiedonhallinta

Ilmainen ImgLib2-kirjasto antaa ohjelmistokehittäjille mahdollisuuden käsitellä niukkoja tietoja Java-koodin avulla. Kirjasto on tarjonnut kaksi interpolointimallia harvaan datan näyttämiseen. Käyttäjät voivat laskea arvon jokaiselle avaruuden sijainnille palauttamalla joko lähimmän näytteen arvon tai interpoloidun, etäisyydellä painotetun arvon k lähimpien naapureiden näytteille.

Työskentele harvassa datassa Java-sovellusten sisällä


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