Бібліотека Java з відкритим кодом для обробки зображень

Універсальний багатовимірний API обробки зображень, який створює нові зображення, змінює існуючі зображення,  працює з розрідженими даними,  дублює існуючі зображення  за допомогою Free 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 і, отже, їх можна зробити повторюваними.

Керування розрідженими даними

Безкоштовна бібліотека 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 );
	}
 Українська