1. Produk
  2.   Imej
  3.   Java
  4.   ImgLib2
 
  

Perpustakaan Java Sumber Terbuka untuk Pemprosesan Imej

API Pemprosesan Imej Berbilang Dimensi untuk tujuan umum yang mencipta imej baharu, mengubah suai imej sedia ada, berfungsi dengan data yang jarang, menduplikasi imej sedia ada menggunakan API Java Percuma.

Pustaka ImgLib2 sumber terbuka memberi pembangun perisian keupayaan untuk mencipta dan memanipulasi imej di dalam apl Java mereka. Perpustakaan ini menawarkan reka bentuk dipacu antara muka yang membolehkan pengguna menggunakan jenis data berangka dan bukan angka dengan mudah di dalam aplikasi mereka sendiri.

ImgLib2 ialah perpustakaan pemprosesan imej berbilang dimensi yang bertujuan umum yang menyediakan sokongan untuk beberapa ciri penting yang berkaitan dengan pemprosesan imej, seperti mencipta imej baharu, mengubah suai imej sedia ada, Membuka dan membaca imej sedia ada, bekerja dengan data jarang, menduplikasi imej sedia ada, Generik penyalinan data imej, Melukis sfera, sokongan Interpolasi dan banyak lagi.

Perpustakaan ini sangat mesra pengguna dan mengelakkan kerumitan yang tidak perlu oleh itu pembangun boleh menumpukan pada intipati algoritma semasa membangunkan projek mereka. Perkara yang menarik tentang perpustakaan ialah ia bebas dimensi dan membolehkan pengguna menyatakan kod mereka dengan cara yang boleh digunakan pada data berbilang dimensi. Kerja perpustakaan tidak terhad kepada imej sahaja, terdapat contoh yang berfungsi pada jujukan RNA juga.

Previous Next

Bermula dengan ImgLib2

Cara termudah dan disyorkan untuk memasang ImgLib2 ialah melalui GitHub.

Pasang ImgLib2 melalui GitHub

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

Mencipta Imej Baharu melalui Java

Pustaka Java sumber terbuka ImgLib2 telah menyertakan sokongan untuk mencipta imej baharu dari awal dengan hanya beberapa baris kod Java. Menggunakan perpustakaan ImgLib2, anda boleh mencipta pelbagai jenis imej seperti imej ringkas, imej 3D, ImgFactory & banyak lagi. Anda juga boleh mengubah suai imej imej sedia ada dengan hanya beberapa baris kod.

Cipta Imej Baharu melalui 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 );
        }

Penduaan Imej melalui API Java

Pustaka ImgLib2 telah menyertakan fungsi untuk penduaan imej menggunakan arahan Java. Anda boleh membuat salinan imej sedia ada dengan mudah. Anda boleh menggunakan Kursor untuk mencapai tugas ini. Anda juga boleh menggunakan kaedah salin yang merupakan kaedah generik dan perkara yang menarik ialah ia akan berfungsi pada sebarang jenis Jenis.

Imej Pendua melalui API Java


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

Lihat Imej Sebahagiannya melalui Java

Pustaka ImgLib2 percuma membolehkan pembangun perisian memaparkan hanya beberapa bahagian imej di dalam apl mereka melalui beberapa baris kod Java. Paparan sangat berkuasa dan anda boleh menggunakannya untuk memaparkan bahagian imej yang dipilih, memaparkan paparan diputar dan beberapa perkara lain. Paparan boleh RandomAccessible, Interval, dan oleh itu boleh dibuat Iterable.

Pengurusan Data Jarang

Pustaka ImgLib2 percuma memberikan pembangun perisian keupayaan untuk bekerja dengan data yang jarang menggunakan kod Java. Perpustakaan telah menyediakan dua skema interpolasi untuk memaparkan data yang jarang. Pengguna boleh mengira nilai untuk setiap lokasi dalam ruang dengan mengembalikan sama ada nilai sampel terdekat atau nilai interpolasi berwajaran jarak k jiran terdekat ke lokasi sampel.

Bekerja dengan Data Jarang di dalam Apl 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 );
	}
 Melayu