Java библиотека с отворен код за обработка на изображения

API за многоизмерна обработка на изображения с общо предназначение, който създава нови изображения, модифицира съществуващи изображения,  работи с оскъдни данни,  дублира съществуващо изображение  с помощта на безплатен Java API.

Библиотеката ImgLib2 с отворен код дава възможност на разработчиците на софтуер да създават и манипулират изображения в своите Java приложения. Библиотеката предлага управляван от интерфейс дизайн, който позволява на потребителите да използват цифрови и нечислови типове данни с лекота в собствените си приложения.

ImgLib2 е многоизмерна библиотека за обработка на изображения с общо предназначение, която осигурява поддръжка за няколко важни функции, свързани с обработката на изображения, като създаване на нови изображения, модифициране на съществуващи изображения, отваряне и четене на съществуващи изображения, работа с оскъдни данни, дублиране на съществуващи изображения, общи копиране на данни за изображения, рисуване на сфера, поддръжка на интерполация и много други.

Библиотеката е много лесна за употреба и избягва ненужните усложнения, така че разработчиците могат да се концентрират върху същността на алгоритъма, докато разработват своите проекти. Страхотното в библиотеката е, че тя е независима от измеренията и позволява на потребителите да изразят кода си по начин, който може да бъде приложен към многоизмерни данни. Работата на библиотеката не се ограничава само до изображения, има и примери, работещи върху РНК последователности.

Previous Next

Първи стъпки с ImgLib2

Най-лесният и препоръчителен начин за инсталиране на ImgLib2 е чрез GitHub.

Инсталирайте ImgLib2 чрез GitHub

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

Създаване на нови изображения чрез Java

Java библиотеката с отворен код ImgLib2 включва поддръжка за създаване на ново изображение от нулата само с няколко реда Java код. С помощта на библиотеката ImgLib2 можете да създавате различни типове изображения като прости изображения, 3D изображения, ImgFactory и други. Можете също така да променяте изображения на съществуващите изображения само с няколко реда код.

Създавайте нови изображения чрез 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 );
        }

Дублиране на изображения чрез Java API

Библиотеката ImgLib2 включва функционалност за дублиране на изображения с помощта на Java команди. Можете лесно да направите копие на съществуващото изображение. Можете да използвате курсори, за да постигнете тази задача. Можете също така да използвате метода на копиране, който е общ метод и страхотното е, че ще работи на всякакъв тип.

Дублиране на изображение чрез 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;
	}

Преглед на изображения частично чрез Java

Безплатната библиотека ImgLib2 позволява на разработчиците на софтуер да показват само някои части от изображението в своите приложения чрез няколко реда Java код. Изгледите са много мощни и можете да ги използвате за показване на избрани части от изображенията, показване на завъртян изглед и няколко други неща. Изгледите могат да бъдат RandomAccessible, Interval и следователно могат да бъдат направени Iterable.

Управление на редки данни

Безплатната библиотека ImgLib2 дава възможност на разработчиците на софтуер да работят с редки данни, използвайки Java код. Библиотеката е предоставила две интерполационни схеми за показване на редки данни. Потребителите могат да изчислят стойност за всяко местоположение в пространството, като върнат или стойността на най-близката извадка, или интерполирана, претеглена спрямо разстоянието стойност на k най-близките съседи на избраното местоположение.

Работете с редки данни в Java приложения


        // 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 );
	}
 Български