ספריית 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. אתה יכול בקלות ליצור עותק של התמונה הקיימת. אתה יכול להשתמש ב-Cursors כדי להשיג משימה זו. אתה יכול גם להשתמש בשיטת העתקה שהיא שיטה גנרית והדבר הגדול הוא שהיא תעבוד על כל סוג של סוג.

שכפל תמונה באמצעות 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. תצוגות הן חזקות מאוד ואתה יכול להשתמש בהן כדי להציג חלקים נבחרים מהתמונות, להציג תצוגה מסובבת ועוד כמה דברים. תצוגות יכולות להיות אקראי נגישות, מרווח, ולכן ניתן להפוך אותן ל-Iterable.

ניהול נתונים דל

ספריית ImgLib2 החינמית מעניקה למפתחי תוכנה את היכולת לעבוד עם נתונים דלילים באמצעות קוד Java. הספרייה סיפקה שתי סכימות אינטרפולציה להצגת נתונים דלילים. משתמשים יכולים לחשב ערך עבור כל מיקום במרחב על ידי החזרת הערך של הדגימה הקרובה ביותר או ערך אינטרפולציה, משוקלל מרחק של k השכנים הקרובים ביותר למיקום הנדגם.

עבודה עם נתונים דלילים בתוך Java Apps


        // 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 );
	}
 עִברִית