1. Produkti
  2.   Attēls
  3.   Java
  4.   ImgLib2
 
  

Atvērtā pirmkoda Java bibliotēka attēlu apstrādei

Universāla daudzdimensiju attēlu apstrādes API, kas rada jaunus attēlus, pārveido esošos attēlus, strādā ar retiem datiem, dublē esošos attēlus, izmantojot bezmaksas Java API.

Atvērtā pirmkoda ImgLib2 bibliotēka sniedz programmatūras izstrādātājiem iespēju izveidot un manipulēt ar attēliem savās Java lietotnēs. Bibliotēka piedāvā interfeisu balstītu dizainu, kas lietotājiem ļauj ērti izmantot ciparu un neciparu datu tipus savās lietojumprogrammās.

ImgLib2 ir universāla, daudzdimensionāla attēlu apstrādes bibliotēka, kas nodrošina atbalstu vairākām svarīgām ar attēlu apstrādi saistītām funkcijām, piemēram, jaunu attēlu izveidei, esošo attēlu modificēšanai, esošo attēlu atvēršanai un lasīšanai, darbam ar retiem datiem, esošo attēlu dublēšanai, vispārējai. attēla datu kopēšana, sfēras zīmēšana, interpolācijas atbalsts un daudz kas cits.

Bibliotēka ir ļoti lietotājam draudzīga un novērš nevajadzīgas sarežģītības, tādējādi izstrādātāji var koncentrēties uz algoritma būtību, izstrādājot savus projektus. Lieliskā bibliotēkas priekšrocība ir tā, ka tā ir neatkarīga no dimensijām un ļauj lietotājiem izteikt savu kodu tādā veidā, ko var izmantot daudzdimensiju datiem. Bibliotēkas darbība neaprobežojas tikai ar attēliem, ir arī piemēri, kas strādā ar RNS sekvencēm.

Previous Next

Darba sākšana ar ImgLib2

Vienkāršākais un ieteicamākais veids, kā instalēt ImgLib2, ir caur GitHub.

Instalējiet ImgLib2, izmantojot GitHub

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

Jaunu attēlu izveide, izmantojot Java

Atvērtā koda Java bibliotēkā ImgLib2 ir iekļauts atbalsts jauna attēla izveidei no jauna, izmantojot tikai dažas Java koda rindiņas. Izmantojot ImgLib2 bibliotēku, varat izveidot dažāda veida attēlus, piemēram, vienkāršus attēlus, 3D attēlus, ImgFactory un daudz ko citu. Varat arī modificēt esošo attēlu attēlus, izmantojot tikai dažas koda rindiņas.

Izveidojiet jaunus attēlus, izmantojot 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 );
        }

Attēlu dublēšana, izmantojot Java API

ImgLib2 bibliotēkā ir iekļauta funkcionalitāte attēlu dublēšanai, izmantojot Java komandas. Jūs varat viegli izveidot esošā attēla kopiju. Lai veiktu šo uzdevumu, varat izmantot kursorus. Varat arī izmantot kopēšanas metodi, kas ir vispārēja metode, un lieliski ir tas, ka tā darbosies ar jebkura veida tipiem.

Dublējiet attēlu, izmantojot 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;
	}

Skatīt attēlus daļēji, izmantojot Java

Bezmaksas ImgLib2 bibliotēka ļauj programmatūras izstrādātājiem savās lietotnēs parādīt tikai dažas attēla daļas, izmantojot pāris Java koda rindiņas. Skati ir ļoti spēcīgi, un tos var izmantot, lai parādītu atlasītās attēlu daļas, parādītu pagrieztu skatu un dažas citas lietas. Skati var būt RandomAccessible, Interval, un tāpēc tos var padarīt Iterable.

Reti datu pārvaldība

Bezmaksas ImgLib2 bibliotēka sniedz programmatūras izstrādātājiem iespēju strādāt ar retiem datiem, izmantojot Java kodu. Bibliotēka ir nodrošinājusi divas interpolācijas shēmas retu datu attēlošanai. Lietotāji var aprēķināt vērtību katrai vietai kosmosā, atgriežot vai nu tuvākā parauga vērtību, vai interpolētu, attāluma svērto k tuvāko kaimiņu vērtību izlases vietai.

Strādājiet ar retajiem datiem Java lietotnēs


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