1. منتجات
  2.   صورة
  3.   Java
  4.   ImgLib2
 
  

مكتبة جافا مفتوحة المصدر لمعالجة الصور

واجهة برمجة تطبيقات معالجة الصور متعددة الأبعاد للأغراض العامة والتي تنشئ صورًا جديدة وتعديل الصور الحالية والعمل مع البيانات المتفرقة وتكرار الصورة الحالية باستخدام Free Java API.

توفر مكتبة ImgLib2 مفتوحة المصدر لمطوري البرامج القدرة على إنشاء الصور ومعالجتها داخل تطبيقات Java الخاصة بهم. تقدم المكتبة تصميمًا يعتمد على الواجهة يمكّن المستخدمين من استخدام أنواع البيانات الرقمية وغير الرقمية بسهولة داخل تطبيقاتهم الخاصة.

ImgLib2 عبارة عن مكتبة معالجة صور متعددة الأبعاد للأغراض العامة توفر دعمًا للعديد من الميزات المهمة المتعلقة بمعالجة الصور ، مثل إنشاء صور جديدة وتعديل الصور الموجودة وفتح وقراءة الصور الموجودة والعمل مع البيانات المتفرقة وتكرار الصور الموجودة والعامة نسخ بيانات الصورة ورسم الكرة ودعم الاستيفاء وغير ذلك الكثير.

المكتبة سهلة الاستخدام للغاية وتتجنب التعقيدات غير الضرورية وبالتالي يمكن للمطورين التركيز على جوهر الخوارزمية أثناء تطوير مشاريعهم. إن الشيء العظيم في المكتبة هو أنها مستقلة عن البعد وتسمح للمستخدمين بالتعبير عن الكود الخاص بهم بطريقة يمكن تطبيقها على البيانات متعددة الأبعاد. لا يقتصر عمل المكتبة على الصور فقط ، فهناك أمثلة تعمل على تسلسل الحمض النووي الريبي أيضًا.

Previous Next

الشروع في استخدام ImgLib2

الطريقة الأسهل والموصى بها لتثبيت ImgLib2 هي عبر GitHub.

قم بتثبيت ImgLib2 عبر GitHub

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

إنشاء صور جديدة عبر جافا

تضمنت مكتبة 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 وبالتالي يمكن جعلها قابلة للتكرار.

إدارة البيانات المتفرقة

تمنح مكتبة ImgLib2 المجانية مطوري البرامج القدرة على العمل مع البيانات المتفرقة باستخدام كود Java. قدمت المكتبة نظامي استيفاء لعرض البيانات المتفرقة. يمكن للمستخدمين حساب قيمة لكل موقع في الفضاء من خلال إرجاع إما قيمة أقرب عينة أو قيمة محرفة ومرجحة للمسافة لأقرب جيران k إلى الموقع الذي تم أخذ العينة فيه.

العمل مع البيانات المتفرقة داخل تطبيقات جافا


        // 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 );
	}
 عربي