1. Termékek
  2.   Kép
  3.   Java
  4.   ImgLib2
 
  

Nyílt forráskódú Java Library képfeldolgozáshoz

Egy általános célú, többdimenziós képfeldolgozó API, amely új képeket hoz létre, módosítja a meglévő képeket, ritka adatokkal dolgozik, és megkettőzi a meglévő képeket az ingyenes Java API segítségével.

A nyílt forráskódú ImgLib2 könyvtár lehetővé teszi a szoftverfejlesztők számára, hogy képeket hozzanak létre és kezeljenek Java-alkalmazásaikon belül. A könyvtár interfész-vezérelt kialakítást kínál, amely lehetővé teszi a felhasználók számára, hogy saját alkalmazásaikon belül könnyedén használhassanak numerikus és nem numerikus adattípusokat.

Az ImgLib2 egy általános célú, többdimenziós képfeldolgozó könyvtár, amely támogatja a képfeldolgozáshoz kapcsolódó számos fontos funkciót, mint például új képek létrehozása, meglévő képek módosítása, meglévő képek megnyitása és olvasása, ritka adatokkal való munka, meglévő képek sokszorosítása, Általános képadatok másolása, gömb rajzolása, interpoláció támogatása és még sok más.

A könyvtár nagyon felhasználóbarát, és elkerüli a felesleges bonyodalmakat, így a fejlesztők az algoritmus lényegére koncentrálhatnak projektjeik fejlesztése során. A könyvtár nagyszerűsége az, hogy dimenziófüggetlen, és lehetővé teszi a felhasználók számára, hogy kódjukat oly módon fejezzék ki, hogy az alkalmazható sokdimenziós adatokra. A könyvtár működése nem korlátozódik a képekre, csak vannak példák RNS-szekvenciákra is.

Previous Next

Az ImgLib2 használatának megkezdése

Az ImgLib2 telepítésének legegyszerűbb és ajánlott módja a GitHubon keresztül.

Telepítse az ImgLib2-t a GitHubon keresztül

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

Új képek létrehozása Java segítségével

A nyílt forráskódú ImgLib2 Java-könyvtár támogatja egy új kép létrehozását a semmiből, mindössze néhány soros Java kóddal. Az ImgLib2 könyvtár használatával különféle típusú képeket hozhat létre, például egyszerű képeket, 3D-s képeket, ImgFactory-t stb. A meglévő képek képeit is módosíthatja néhány sornyi kóddal.

Új képek létrehozása Java API-n keresztül


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

Képmásolás Java API-n keresztül

Az ImgLib2 könyvtár tartalmaz egy funkcionalitást a képmásoláshoz Java parancsok használatával. Könnyedén készíthet másolatot a meglévő képről. A feladat elvégzéséhez kurzorokat használhat. Használhatja a másolási módszert is, amely egy általános módszer, és a nagyszerű dolog az, hogy bármilyen típusú típuson működik.

Képmásolat a Java API-n keresztül


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

Képek megtekintése Részben Java-n keresztül

Az ingyenes ImgLib2 könyvtár lehetővé teszi a szoftverfejlesztők számára, hogy néhány soros Java kódon keresztül csak a kép egyes részeit jelenítsék meg az alkalmazásaikban. A nézetek nagyon hatékonyak, és felhasználhatók a képek kiválasztott részeinek megjelenítésére, elforgatott nézet megjelenítésére és néhány egyéb dologra. A nézetek lehetnek RandomAccessible (Véletlenszerű), Interval (intervallum) és ezért iterálhatóvá tehetők.

Ritka adatkezelés

Az ingyenes ImgLib2 könyvtár lehetővé teszi a szoftverfejlesztők számára, hogy ritka adatokkal dolgozzanak Java kód használatával. A könyvtár két interpolációs sémát biztosított a ritka adatok megjelenítésére. A felhasználók a tér minden helyére kiszámolhatnak egy értéket a legközelebbi minta értékének vagy a mintavételi helyhez legközelebbi k legközelebbi szomszédjának interpolált, távolsággal súlyozott értékének visszaadásával.

Dolgozzon ritka adatokkal a Java alkalmazásokon belül


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