Βιβλιοθήκη Java ανοιχτού κώδικα για επεξεργασία εικόνας

Ένα γενικής χρήσης, πολυδιάστατο API επεξεργασίας εικόνας που δημιουργεί νέες εικόνες, τροποποιεί υπάρχουσες εικόνες,  δουλεύει με αραιά δεδομένα,  αντιγράφει υπάρχουσα εικόνα χρησιμοποιώντας το Free Java API.

Η βιβλιοθήκη ανοιχτού κώδικα ImgLib2 δίνει στους προγραμματιστές λογισμικού τη δυνατότητα να δημιουργούν και να χειρίζονται εικόνες μέσα στις εφαρμογές Java τους. Η βιβλιοθήκη προσφέρει μια σχεδίαση που βασίζεται στη διεπαφή που επιτρέπει στους χρήστες να χρησιμοποιούν αριθμούς και μη αριθμούς τύπους δεδομένων με ευκολία μέσα στις δικές τους εφαρμογές.

Το ImgLib2 είναι μια πολυδιάστατη βιβλιοθήκη επεξεργασίας εικόνας γενικής χρήσης που παρέχει υποστήριξη για πολλά σημαντικά χαρακτηριστικά που σχετίζονται με την επεξεργασία εικόνας, όπως δημιουργία νέων εικόνων, τροποποίηση υπαρχουσών εικόνων, άνοιγμα και ανάγνωση υπαρχουσών εικόνων, εργασία με αραιά δεδομένα, αντιγραφή υπαρχουσών εικόνων, Γενική αντιγραφή δεδομένων εικόνας, Σχεδίαση σφαίρας, υποστήριξη παρεμβολής και πολλά άλλα.

Η βιβλιοθήκη είναι πολύ φιλική προς το χρήστη και αποφεύγει περιττές πολυπλοκότητες, επομένως οι προγραμματιστές μπορούν να επικεντρωθούν στην ουσία του αλγορίθμου κατά την ανάπτυξη των έργων τους. Το σπουδαίο με τη βιβλιοθήκη είναι ότι είναι ανεξάρτητη από τις διαστάσεις και επιτρέπει στους χρήστες να εκφράσουν τον κώδικά τους με τρόπο που να μπορεί να εφαρμοστεί σε δεδομένα πολλών διαστάσεων. Η λειτουργία της βιβλιοθήκης δεν περιορίζεται σε εικόνες μόνο υπάρχουν παραδείγματα που εργάζονται και σε αλληλουχίες RNA.

Previous Next

Ξεκινώντας με το ImgLib2

Ο ευκολότερος και προτεινόμενος τρόπος εγκατάστασης του ImgLib2 είναι μέσω του GitHub.

Εγκαταστήστε το ImgLib2 μέσω GitHub

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

Δημιουργία νέων εικόνων μέσω Java

Η βιβλιοθήκη Java ανοιχτού κώδικα ImgLib2 περιλαμβάνει υποστήριξη για τη δημιουργία μιας νέας εικόνας από την αρχή με μόνο μερικές γραμμές κώδικα Java. Χρησιμοποιώντας τη βιβλιοθήκη ImgLib2, μπορείτε να δημιουργήσετε διαφορετικούς τύπους εικόνων, όπως απλές εικόνες, τρισδιάστατες εικόνες, 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 πλησιέστερων γειτόνων στην τοποθεσία του δείγματος.

Συνεργασία με Sparse Δεδομένα μέσα σε 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 );
	}
 Ελληνικά