Nyílt forráskódú Java Library képfeldolgozáshoz
Egy általános célú, többdimenziós képfeldolgozó API, amely új képeket hoz létre, módosítja a meglévő képeket, ritka adatokkal dolgozik, és megkettőzi a meglévő képeket az ingyenes Java API segítségével.
A nyílt forráskódú ImgLib2 könyvtár lehetővé teszi a szoftverfejlesztők számára, hogy képeket hozzanak létre és kezeljenek Java-alkalmazásaikon belül. A könyvtár interfész-vezérelt kialakítást kínál, amely lehetővé teszi a felhasználók számára, hogy saját alkalmazásaikon belül könnyedén használhassanak numerikus és nem numerikus adattípusokat.
Az ImgLib2 egy általános célú, többdimenziós képfeldolgozó könyvtár, amely támogatja a képfeldolgozáshoz kapcsolódó számos fontos funkciót, mint például új képek létrehozása, meglévő képek módosítása, meglévő képek megnyitása és olvasása, ritka adatokkal való munka, meglévő képek sokszorosítása, Általános képadatok másolása, gömb rajzolása, interpoláció támogatása és még sok más.
A könyvtár nagyon felhasználóbarát, és elkerüli a felesleges bonyodalmakat, így a fejlesztők az algoritmus lényegére koncentrálhatnak projektjeik fejlesztése során. A könyvtár nagyszerűsége az, hogy dimenziófüggetlen, és lehetővé teszi a felhasználók számára, hogy kódjukat oly módon fejezzék ki, hogy az alkalmazható sokdimenziós adatokra. A könyvtár működése nem korlátozódik a képekre, csak vannak példák RNS-szekvenciákra is.
Az ImgLib2 használatának megkezdése
Az ImgLib2 telepítésének legegyszerűbb és ajánlott módja a GitHubon keresztül.
Telepítse az ImgLib2-t a GitHubon keresztül
go get -u github.com/imglib/imglib2.git
Új képek létrehozása Java segítségével
A nyílt forráskódú ImgLib2 Java-könyvtár támogatja egy új kép létrehozását a semmiből, mindössze néhány soros Java kóddal. Az ImgLib2 könyvtár használatával különféle típusú képeket hozhat létre, például egyszerű képeket, 3D-s képeket, ImgFactory-t stb. A meglévő képek képeit is módosíthatja néhány sornyi kóddal.
Új képek létrehozása Java API-n keresztül
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 );
}
Képmásolás Java API-n keresztül
Az ImgLib2 könyvtár tartalmaz egy funkcionalitást a képmásoláshoz Java parancsok használatával. Könnyedén készíthet másolatot a meglévő képről. A feladat elvégzéséhez kurzorokat használhat. Használhatja a másolási módszert is, amely egy általános módszer, és a nagyszerű dolog az, hogy bármilyen típusú típuson működik.
Képmásolat a Java API-n keresztül
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;
}
Képek megtekintése Részben Java-n keresztül
Az ingyenes ImgLib2 könyvtár lehetővé teszi a szoftverfejlesztők számára, hogy néhány soros Java kódon keresztül csak a kép egyes részeit jelenítsék meg az alkalmazásaikban. A nézetek nagyon hatékonyak, és felhasználhatók a képek kiválasztott részeinek megjelenítésére, elforgatott nézet megjelenítésére és néhány egyéb dologra. A nézetek lehetnek RandomAccessible (Véletlenszerű), Interval (intervallum) és ezért iterálhatóvá tehetők.
Ritka adatkezelés
Az ingyenes ImgLib2 könyvtár lehetővé teszi a szoftverfejlesztők számára, hogy ritka adatokkal dolgozzanak Java kód használatával. A könyvtár két interpolációs sémát biztosított a ritka adatok megjelenítésére. A felhasználók a tér minden helyére kiszámolhatnak egy értéket a legközelebbi minta értékének vagy a mintavételi helyhez legközelebbi k legközelebbi szomszédjának interpolált, távolsággal súlyozott értékének visszaadásával.
Dolgozzon ritka adatokkal a Java alkalmazásokon belül
// 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 );
}