Java-bibliotek med öppen källkod för bildbehandling
Ett multidimensionellt bildbearbetnings-API för allmänna ändamål som skapar nya bilder, modifierar befintliga bilder, arbetar med sparsam data, duplicerar befintlig bild med hjälp av Free Java API.
ImgLib2-biblioteket med öppen källkod ger mjukvaruutvecklare möjlighet att skapa och manipulera bilder i sina Java-appar. Biblioteket erbjuder en gränssnittsdriven design som gör det möjligt för användare att använda numeriska och icke-numeriska datatyper med lätthet i sina egna applikationer.
ImgLib2 är ett allmänt ändamål, flerdimensionellt bildbehandlingsbibliotek som ger stöd för flera viktiga funktioner relaterade till bildbehandling, som att skapa nya bilder, ändra befintliga bilder, öppna och läsa befintliga bilder, arbeta med sparsam data, duplicera befintliga bilder, Generic kopiering av bilddata, rita en sfär, interpolationsstöd och många fler.
Biblioteket är mycket användarvänligt och undviker onödig komplexitet, vilket gör att utvecklare kan koncentrera sig på algoritmens väsen medan de utvecklar sina projekt. Det fina med biblioteket är att det är dimensionsoberoende och tillåter användare att uttrycka sin kod på ett sätt som kan appliceras på mångdimensionell data. Biblioteket fungerar inte är begränsat till bilder bara det finns exempel som arbetar med RNA-sekvenser också.
Komma igång med ImgLib2
Det enklaste och rekommenderade sättet att installera ImgLib2 är via GitHub.
Installera ImgLib2 via GitHub
go get -u github.com/imglib/imglib2.git
Skapa nya bilder via Java
Java-biblioteket med öppen källkod ImgLib2 har inkluderat stöd för att skapa en ny bild från början med bara ett par rader Java-kod. Med hjälp av ImgLib2-biblioteket kan du skapa olika typer av bilder som enkla bilder, 3D-bilder, ImgFactory och mer. Du kan också ändra bilder av befintliga bilder med bara ett par rader kod.
Skapa nya bilder via 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 );
}
Bildduplicering via Java API
ImgLib2-biblioteket har inkluderat funktionalitet för bildduplicering med Java-kommandon. Du kan enkelt göra en kopia av den befintliga bilden. Du kan använda Cursorer för att utföra denna uppgift. Du kan också använda kopieringsmetoden som är en generisk metod och det fina är att den fungerar på alla typer av typ.
Duplicera bild via 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;
}
Visa bilder Delvis via Java
Det kostnadsfria ImgLib2-biblioteket gör det möjligt för mjukvaruutvecklare att visa endast vissa delar av bilden i sina appar via ett par rader Java-kod. Vyer är mycket kraftfulla och du kan använda dem för att visa utvalda delar av bilderna, visa en roterad vy och några andra saker. Visningar kan vara RandomAccessible, Interval och kan därför göras Iterable.
Spare Data Management
Det kostnadsfria ImgLib2-biblioteket ger mjukvaruutvecklare möjlighet att arbeta med gles data med hjälp av Java-kod. Biblioteket har tillhandahållit två interpolationsscheman för att visa glesa data. Användare kan beräkna ett värde för varje plats i rymden genom att returnera antingen värdet för det närmaste samplet eller ett interpolerat, avståndsviktat värde för k närmaste grannar till den samplade platsen.
Arbeta med Sparse Data inuti 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 );
}