Open Source Java Library สำหรับการประมวลผลภาพ

API การประมวลผลภาพหลายมิติเอนกประสงค์ที่สร้างภาพใหม่ แก้ไขภาพที่มีอยู่ ทำงานกับข้อมูลที่กระจัดกระจาย ทำซ้ำภาพที่มีอยู่โดยใช้ 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 คุณสามารถสร้างภาพประเภทต่างๆ เช่น ภาพธรรมดา ภาพ 3 มิติ 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 );
	}
 ไทย