Introduc)on ¡to ¡ImgLib2 ¡ Stephan ¡Preibisch, ¡Tobias ¡Pietzsch, ¡Stephan ¡Saalfeld ¡ ¡ Albert ¡Einstein ¡College ¡of ¡Medicine, ¡New ¡York ¡ MPI-‑CBG, ¡Dresden, ¡Germany ¡ HHMI ¡Janelia ¡Farm ¡Research ¡Campus, ¡Virginia ¡
Special ¡thanks ¡to ¡… ¡ • ImageJ2 ¡crew ¡ • Tobias ¡Pietzsch ¡(MPI-‑CBG) ¡ – Johannes ¡Schindelin ¡ • Stephan ¡Saalfeld ¡(MPI-‑CBG) ¡ – Cur)s ¡Rueden ¡ ¡ – Barry ¡DeZonia ¡ • Pavel ¡Tomancak ¡(MPI-‑CBG) ¡ – Kevin ¡Eliceiri ¡ • Gene ¡Myers ¡(MPI-‑CBG) ¡ • Albert ¡Cardona ¡ • KNIME ¡guys ¡ • Rob ¡Singer ¡ ¡ – Chris)an ¡Dietz ¡ (Einstein ¡College ¡& ¡Janelia ¡Farm) ¡ – Mar)n ¡Horn ¡
ImgLib2 ¡paper ¡is ¡finally ¡out ¡… ¡
Why ¡using ¡ImgLib2? ¡ • Generic ¡programming ¡– ¡Write ¡it ¡once! ¡ • Directly ¡applicable ¡to ¡very ¡large ¡datasets, ¡ different ¡dimensionality ¡or ¡pixel ¡type ¡ • ImgLib2 ¡does ¡not ¡force ¡you ¡to ¡implement ¡type ¡ independent ¡or ¡n-‑dimensional ¡– ¡it ¡is ¡s)ll ¡ applicable ¡to ¡very ¡large ¡datasets ¡ • More ¡algorithm-‑like ¡programming ¡ • Fewer ¡simple ¡programming ¡mistakes ¡ • Easier ¡exchange ¡of ¡code ¡ • Smaller ¡source ¡code ¡
ImagePlus ¡
Img ¡ ¡ +cursor(): ¡Cursor<T> ¡ +localizingCursor(): ¡Cursor<T> ¡ +randomAccess(): ¡RandomAccess<T> ¡ +firstElement(): ¡T ¡ +factory(): ¡ImgFactory<T> ¡ ¡ ¡ ¡ ImagePlus ¡ ¡ ¡
T:RealType ¡ Cursor ¡ ¡ +hasNext() ¡ +fwd() ¡ +get(): ¡T ¡ +next(): ¡T ¡ T:RealType ¡ Img ¡ ¡ +cursor(): ¡Cursor<T> ¡ +localizingCursor(): ¡Cursor<T> ¡ +randomAccess(): ¡RandomAccess<T> ¡ +firstElement(): ¡T ¡ +factory(): ¡ImgFactory<T> ¡ ¡ ¡ ¡ ImagePlus ¡ ¡ ¡
T:RealType ¡ T:RealType ¡ RealType ¡ Cursor ¡ FloatType ¡ ¡ ¡ ¡ +hasNext() ¡ +getRealFloat(): ¡float ¡ +get(): ¡float ¡ +fwd() ¡ +getRealDouble(): ¡double ¡ +set(value: ¡float) ¡ +get(): ¡T ¡ +setReal(value: ¡float) ¡ +copy(): ¡FloatType ¡ +next(): ¡T ¡ +setReal(value: ¡double) ¡ +copy(): ¡T ¡ T:RealType ¡ Img ¡ ¡ +cursor(): ¡Cursor<T> ¡ +localizingCursor(): ¡Cursor<T> ¡ +randomAccess(): ¡RandomAccess<T> ¡ +firstElement(): ¡T ¡ +factory(): ¡ImgFactory<T> ¡ ¡ ¡ ¡ ImagePlus ¡ ¡ ¡
T:RealType ¡ T:RealType ¡ RealType ¡ Cursor ¡ FloatType ¡ ¡ ¡ ¡ +hasNext() ¡ +getRealFloat(): ¡float ¡ +get(): ¡float ¡ +fwd() ¡ +getRealDouble(): ¡double ¡ +set(value: ¡float) ¡ +get(): ¡T ¡ +setReal(value: ¡float) ¡ +copy(): ¡FloatType ¡ +next(): ¡T ¡ +setReal(value: ¡double) ¡ +copy(): ¡T ¡ T:RealType ¡ T:RealType ¡ (Localizing)Cursor ¡ Img ¡ ¡ ¡ +cursor(): ¡Cursor<T> ¡ +hasNext() ¡ +localizingCursor(): ¡Cursor<T> ¡ +fwd() ¡ +randomAccess(): ¡RandomAccess<T> ¡ +get(): ¡T ¡ +firstElement(): ¡T ¡ +next(): ¡T ¡ +factory(): ¡ImgFactory<T> ¡ +localize(posiJon:int[]) ¡ ¡ +localize(posiJon:long[]) ¡ ¡ +getIntPosiJon(d:int): ¡int ¡ ¡ +getLongPosiJon(d:int): ¡long ¡ ImagePlus ¡ ¡ ¡
T:RealType ¡ T:RealType ¡ RealType ¡ Cursor ¡ FloatType ¡ ¡ ¡ ¡ +hasNext() ¡ +getRealFloat(): ¡float ¡ +get(): ¡float ¡ +fwd() ¡ +getRealDouble(): ¡double ¡ +set(value: ¡float) ¡ +get(): ¡T ¡ +setReal(value: ¡float) ¡ +copy(): ¡FloatType ¡ +next(): ¡T ¡ +setReal(value: ¡double) ¡ +copy(): ¡T ¡ T:RealType ¡ T:RealType ¡ (Localizing)Cursor ¡ Img ¡ ¡ ¡ +cursor(): ¡Cursor<T> ¡ +hasNext() ¡ +localizingCursor(): ¡Cursor<T> ¡ +fwd() ¡ +randomAccess(): ¡RandomAccess<T> ¡ +get(): ¡T ¡ +firstElement(): ¡T ¡ +next(): ¡T ¡ +factory(): ¡ImgFactory<T> ¡ +localize(posiJon:int[]) ¡ ¡ +localize(posiJon:long[]) ¡ ¡ +getIntPosiJon(d:int): ¡int ¡ ¡ +getLongPosiJon(d:int): ¡long ¡ ImagePlus ¡ ¡ ¡ T:RealType ¡ RandomAccess ¡ ¡ +get(): ¡T ¡ +fwd(d:int) ¡ +bck(d:int) ¡ +setPosiJon(posiJon:int[]) ¡ +setPosiJon(posiJon:long[]) ¡ +setPosiJon(pos:int, ¡d:int) ¡ +setPosiJon(pos:long, ¡d:int) ¡
T:RealType ¡ T:RealType ¡ RealType ¡ Cursor ¡ FloatType ¡ ¡ ¡ ¡ +hasNext() ¡ +getRealFloat(): ¡float ¡ +get(): ¡float ¡ +fwd() ¡ +getRealDouble(): ¡double ¡ +set(value: ¡float) ¡ +get(): ¡T ¡ +setReal(value: ¡float) ¡ +copy(): ¡FloatType ¡ +next(): ¡T ¡ +setReal(value: ¡double) ¡ +copy(): ¡T ¡ T:RealType ¡ T:RealType ¡ (Localizing)Cursor ¡ Img ¡ ¡ ¡ +cursor(): ¡Cursor<T> ¡ +hasNext() ¡ +localizingCursor(): ¡Cursor<T> ¡ +fwd() ¡ +randomAccess(): ¡RandomAccess<T> ¡ +get(): ¡T ¡ +firstElement(): ¡T ¡ +next(): ¡T ¡ +factory(): ¡ImgFactory<T> ¡ +localize(posiJon:int[]) ¡ ¡ +localize(posiJon:long[]) ¡ ¡ +getIntPosiJon(d:int): ¡int ¡ ¡ +getLongPosiJon(d:int): ¡long ¡ ImagePlus ¡ ¡ ¡ T:RealType ¡ RandomAccess ¡ ¡ +get(): ¡T ¡ +fwd(d:int) ¡ T:RealType ¡ +bck(d:int) ¡ ImgFactory ¡ +setPosiJon(posiJon:int[]) ¡ ¡ +setPosiJon(posiJon:long[]) ¡ +create(dim:long[], ¡type:T): ¡Img<T> ¡ +setPosiJon(pos:int, ¡d:int) ¡ +create(dim:int[], ¡type:T): ¡Img<T> ¡ +setPosiJon(pos:long, ¡d:int) ¡ +create(dim:Dimensions, ¡type:T): ¡Img<T> ¡
T:RealType ¡ T:RealType ¡ RealType ¡ Cursor ¡ FloatType ¡ ¡ ¡ ¡ +hasNext() ¡ +getRealFloat(): ¡float ¡ +get(): ¡float ¡ +fwd() ¡ +getRealDouble(): ¡double ¡ +set(value: ¡float) ¡ +get(): ¡T ¡ +setReal(value: ¡float) ¡ +copy(): ¡FloatType ¡ +next(): ¡T ¡ +setReal(value: ¡double) ¡ +copy(): ¡T ¡ T:RealType ¡ T:RealType ¡ (Localizing)Cursor ¡ Img ¡ ¡ ¡ T:RealType ¡ +cursor(): ¡Cursor<T> ¡ +hasNext() ¡ OutOfBoundsStrategy ¡ +localizingCursor(): ¡Cursor<T> ¡ +fwd() ¡ +randomAccess(): ¡RandomAccess<T> ¡ +get(): ¡T ¡ +firstElement(): ¡T ¡ +next(): ¡T ¡ +factory(): ¡ImgFactory<T> ¡ +localize(posiJon:int[]) ¡ ¡ +localize(posiJon:long[]) ¡ ¡ +getIntPosiJon(d:int): ¡int ¡ ¡ +getLongPosiJon(d:int): ¡long ¡ ImagePlus ¡ ¡ ¡ T:RealType ¡ RandomAccess ¡ ¡ +get(): ¡T ¡ +fwd(d:int) ¡ T:RealType ¡ +bck(d:int) ¡ ImgFactory ¡ +setPosiJon(posiJon:int[]) ¡ ¡ +setPosiJon(posiJon:long[]) ¡ +create(dim:long[], ¡type:T): ¡Img<T> ¡ +setPosiJon(pos:int, ¡d:int) ¡ +create(dim:int[], ¡type:T): ¡Img<T> ¡ +setPosiJon(pos:long, ¡d:int) ¡ +create(dim:Dimensions, ¡type:T): ¡Img<T> ¡
T:RealType ¡ T:RealType ¡ RealType ¡ Cursor ¡ FloatType ¡ ¡ ¡ ¡ +hasNext() ¡ +getRealFloat(): ¡float ¡ +get(): ¡float ¡ +fwd() ¡ +getRealDouble(): ¡double ¡ +set(value: ¡float) ¡ +get(): ¡T ¡ +setReal(value: ¡float) ¡ +copy(): ¡FloatType ¡ +next(): ¡T ¡ +setReal(value: ¡double) ¡ +copy(): ¡T ¡ T:RealType ¡ T:RealType ¡ (Localizing)Cursor ¡ Img ¡ ¡ ¡ T:RealType ¡ +cursor(): ¡Cursor<T> ¡ +hasNext() ¡ OutOfBoundsStrategy ¡ +localizingCursor(): ¡Cursor<T> ¡ +fwd() ¡ +randomAccess(): ¡RandomAccess<T> ¡ +get(): ¡T ¡ +firstElement(): ¡T ¡ +next(): ¡T ¡ +factory(): ¡ImgFactory<T> ¡ +localize(posiJon:int[]) ¡ ¡ +localize(posiJon:long[]) ¡ T:RealType ¡ ¡ +getIntPosiJon(d:int): ¡int ¡ RealRandomAccess ¡ ¡ +getLongPosiJon(d:int): ¡long ¡ ImagePlus ¡ ¡ +get(): ¡T ¡ ¡ +setPosiJon(posiJon:float[]) ¡ ¡ +setPosiJon(posiJon:double[]) ¡ +setPosiJon(pos:int, ¡d:float) ¡ T:RealType ¡ +setPosiJon(pos:long, ¡d:double) ¡ RandomAccess ¡ ¡ +get(): ¡T ¡ +fwd(d:int) ¡ T:RealType ¡ +bck(d:int) ¡ ImgFactory ¡ +setPosiJon(posiJon:int[]) ¡ ¡ +setPosiJon(posiJon:long[]) ¡ +create(dim:long[], ¡type:T): ¡Img<T> ¡ +setPosiJon(pos:int, ¡d:int) ¡ +create(dim:int[], ¡type:T): ¡Img<T> ¡ +setPosiJon(pos:long, ¡d:int) ¡ +create(dim:Dimensions, ¡type:T): ¡Img<T> ¡
Hands ¡on ¡Programming ¡ ① ¡Threshold ¡on ¡an ¡image ¡ ② ¡Center ¡of ¡mass ¡of ¡an ¡image ¡ ③ ¡Gradient ¡of ¡an ¡image ¡ ④ ¡Rigid ¡transforma)on ¡of ¡an ¡image ¡
Recommend
More recommend