1. Məhsullar
  2.   Şəkil
  3.   Java
  4.   ImgLib2
 
  

Şəkil Emalı üçün Açıq Mənbəli Java Kitabxanası

Pulsuz Java API-dən istifadə edərək, yeni şəkillər yaradan, mövcud şəkilləri dəyişdirən, seyrək verilənlərlə işləyən,  mövcud təsviri təkrarlayan Ümumi təyinatlı, Çoxölçülü Şəkil Emalı API.

Açıq mənbə ImgLib2 kitabxanası proqram tərtibatçılarına Java proqramlarında şəkillər yaratmaq və manipulyasiya etmək imkanı verir. Kitabxana istifadəçilərə öz proqramlarında asanlıqla rəqəmli və qeyri-rəqəmli məlumat növlərindən istifadə etməyə imkan verən interfeysə əsaslanan dizayn təklif edir.

ImgLib2, yeni şəkillər yaratmaq, mövcud şəkilləri dəyişdirmək, mövcud şəkilləri açmaq və oxumaq, seyrək məlumatlarla işləmək, mövcud şəkilləri çoxaltmaq, Ümumi təsvirlər yaratmaq kimi təsvirin emalı ilə bağlı bir sıra vacib funksiyaları dəstəkləyən ümumi təyinatlı, çoxölçülü təsvir emalı kitabxanasıdır. şəkil məlumatlarının surətinin çıxarılması, sferanın çəkilməsi, interpolyasiya dəstəyi və s.

Kitabxana çox istifadəçi dostudur və lazımsız mürəkkəbliklərdən qaçır, beləliklə tərtibatçılar öz layihələrini hazırlayarkən alqoritmin mahiyyətinə diqqət yetirə bilərlər. Kitabxananın ən gözəl cəhəti odur ki, o, ölçüdən müstəqildir və istifadəçilərə kodlarını çoxölçülü məlumatlara tətbiq oluna biləcək şəkildə ifadə etməyə imkan verir. Kitabxananın işləməsi yalnız şəkillərlə məhdudlaşmır, RNT ardıcıllığı üzərində işləyən nümunələr də var.

Previous Next

ImgLib2 ilə işə başlamaq

ImgLib2-ni quraşdırmağın ən asan və tövsiyə olunan yolu GitHub vasitəsilədir.

GitHub vasitəsilə ImgLib2-ni quraşdırın

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

Java vasitəsilə yeni şəkillərin yaradılması

ImgLib2 açıq mənbəli Java kitabxanasına sadəcə bir neçə sətir Java kodu ilə sıfırdan yeni şəkil yaratmaq dəstəyi daxildir. ImgLib2 kitabxanasından istifadə edərək sadə şəkillər, 3D şəkillər, ImgFactory və s. kimi müxtəlif növ şəkillər yarada bilərsiniz. Siz həmçinin mövcud şəkillərin şəkillərini yalnız bir neçə sətir kodla dəyişdirə bilərsiniz.

Java API vasitəsilə yeni şəkillər yaradın


        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 vasitəsilə şəkillərin təkrarlanması

ImgLib2 kitabxanasına Java əmrlərindən istifadə edərək şəkillərin təkrarlanması üçün funksionallıq daxildir. Mövcud şəklin surətini asanlıqla yarada bilərsiniz. Bu tapşırığı yerinə yetirmək üçün Kursorlardan istifadə edə bilərsiniz. Siz həmçinin ümumi metod olan surət çıxarma metodundan istifadə edə bilərsiniz və ən yaxşısı odur ki, o, istənilən növdə işləyəcək.

Java API vasitəsilə Şəkili Dublikat edin


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

Şəkillərə qismən Java vasitəsilə baxın

Pulsuz ImgLib2 kitabxanası proqram tərtibatçılarına bir neçə sətir Java kodu vasitəsilə öz proqramlarında təsvirin yalnız bəzi hissələrini göstərməyə imkan verir. Görünüşlər çox güclüdür və siz onlardan şəkillərin seçilmiş hissələrini göstərmək, fırlanan görünüşü göstərmək və bir neçə başqa şey üçün istifadə edə bilərsiniz. Baxışlar Random Accessible, Interval ola bilər və buna görə də Iterable edilə bilər.

Seyrək Məlumat İdarəetmə

Pulsuz ImgLib2 kitabxanası proqram tərtibatçılarına Java kodundan istifadə edərək seyrək verilənlərlə işləmək imkanı verir. Kitabxana seyrək məlumatları göstərmək üçün iki interpolyasiya sxemi təqdim etmişdir. İstifadəçilər ya ən yaxın nümunənin dəyərini, ya da k ən yaxın qonşuların interpolyasiya edilmiş, məsafə ölçülmüş dəyərini nümunə götürülmüş yerə qaytarmaqla kosmosdakı hər yer üçün dəyəri hesablaya bilərlər.

Java Tətbiqlərində Seyrək Məlumatlarla işləyin


        // 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 );
	}
 Azəri