1. Produktai
  2.   Vaizdas
  3.   Java
  4.   ImgLib2
 
  

Atvirojo kodo Java biblioteka vaizdo apdorojimui

Bendrosios paskirties daugiamačio vaizdo apdorojimo API, kuri kuria naujus vaizdus, modifikuoja esamus vaizdus, dirba su retais duomenimis, dubliuoja esamą vaizdą naudodama nemokamą Java API.

Atvirojo kodo ImgLib2 biblioteka suteikia programinės įrangos kūrėjams galimybę kurti ir manipuliuoti vaizdais savo Java programose. Biblioteka siūlo sąsaja pagrįstą dizainą, leidžiantį vartotojams lengvai naudoti skaitmeninius ir neskaitinius duomenų tipus savo programose.

„ImgLib2“ yra bendros paskirties daugiamatė vaizdų apdorojimo biblioteka, kuri palaiko keletą svarbių funkcijų, susijusių su vaizdo apdorojimu, pvz., naujų vaizdų kūrimas, esamų vaizdų modifikavimas, esamų vaizdų atidarymas ir skaitymas, darbas su retais duomenimis, esamų vaizdų kopijavimas, bendrasis vaizdo duomenų kopijavimas, sferos piešimas, interpoliacijos palaikymas ir daug daugiau.

Biblioteka yra labai patogi vartotojui ir išvengiama bereikalingo sudėtingumo, todėl kūrėjai kurdami projektus gali susikoncentruoti ties algoritmo esme. Puikus bibliotekos dalykas yra tai, kad ji nepriklauso nuo matmenų ir leidžia vartotojams išreikšti savo kodą taip, kad jį būtų galima pritaikyti daugelio dimensijų duomenims. Biblioteka veikia ne tik vaizdais, bet yra ir RNR sekų pavyzdžių.

Previous Next

Darbo su ImgLib2 pradžia

Lengviausias ir rekomenduojamas būdas įdiegti „ImgLib2“ yra per „GitHub“.

Įdiekite „ImgLib2“ per „GitHub“.

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

Naujų vaizdų kūrimas naudojant Java

Atvirojo kodo „Java“ bibliotekoje „ImgLib2“ yra palaikymas, leidžiantis sukurti naują vaizdą nuo nulio naudojant tik kelias „Java“ kodo eilutes. Naudodami ImgLib2 biblioteką galite kurti įvairių tipų vaizdus, pvz., paprastus vaizdus, 3D vaizdus, ImgFactory ir kt. Taip pat galite keisti esamų vaizdų vaizdus naudodami tik kelias kodo eilutes.

Kurkite naujus vaizdus naudodami 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 );
        }

Vaizdo kopijavimas per Java API

Į ImgLib2 biblioteką įtraukta vaizdų dubliavimo funkcija naudojant Java komandas. Galite lengvai padaryti esamo vaizdo kopiją. Norėdami atlikti šią užduotį, galite naudoti žymeklius. Taip pat galite naudoti kopijavimo metodą, kuris yra bendras metodas, ir puiku, kad jis veiks su bet kokio tipo tipu.

Vaizdo kopijavimas per 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;
	}

Peržiūrėkite vaizdus iš dalies per „Java“.

Nemokama „ImgLib2“ biblioteka leidžia programinės įrangos kūrėjams rodyti tik kai kurias vaizdo dalis savo programose per kelias „Java“ kodo eilutes. Rodiniai yra labai galingi ir galite juos naudoti norėdami parodyti pasirinktas vaizdų dalis, rodyti pasuktą vaizdą ir keletą kitų dalykų. Rodiniai gali būti atsitiktinai prieinami, intervalai, todėl juos galima pakeisti.

Retas duomenų valdymas

Nemokama ImgLib2 biblioteka suteikia programinės įrangos kūrėjams galimybę dirbti su mažais duomenimis naudojant Java kodą. Biblioteka pateikė dvi interpoliacijos schemas negausiems duomenims rodyti. Naudotojai gali apskaičiuoti kiekvienos vietos erdvėje vertę, grąžindami arba artimiausios imties vertę, arba interpoliuotą, pagal atstumą svertinę k artimiausių atrinktos vietos kaimynų vertę.

Dirbkite su retais duomenimis „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 );
	}
 Lietuvių