hanslovsky

test imglyb

Mar 14th, 2017
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.94 KB | None | 0 0
  1. #!/usr/bin/env python
  2.  
  3. # config needs to be set-up before "import jnius" is run
  4. import jnius_config
  5. jnius_config.add_options('-Xmx40g')
  6.  
  7. classpath = [
  8.     # "/home/hanslovskyp/workspace/bdv-python/bigdataviewer-vistools/target/bigdataviewer-vistools-1.0.0-beta-5-SNAPSHOT-jar-with-dependencies.jar",
  9.     "/home/hanslovskyp/workspace/bdv-python/imglib2-python-fat-jar/target/imglib2-python-fat-jar-0.0.1-SNAPSHOT-jar-with-dependencies.jar",
  10.     "/home/hanslovskyp/workspace/bdv-python/pyjnius/build/pyjnius.jar"
  11. ]
  12. jnius_config.set_classpath(*classpath)
  13.  
  14. import ctypes
  15.  
  16. import jnius
  17. from jnius import autoclass, PythonJavaClass, java_method, cast
  18.  
  19. import numpy as np
  20.  
  21. import random
  22.  
  23. import time
  24.  
  25. import vigra
  26.  
  27. classpath = "/home/hanslovskyp/workspace/bdv-python/bigdataviewer-vistools/target/bigdataviewer-vistools-1.0.0-beta-5-SNAPSHOT-jar-with-dependencies.jar"
  28.  
  29. # class RandomConverter (PyhtonJavaClass):
  30. #   def __init__( self, rng ):
  31. #       self.rng = rng
  32. #   def convert( self, a, b ):
  33. #       b.setInteger( rng.nextInt() )
  34.  
  35. class Renderer (PythonJavaClass):
  36.     __javainterfaces__ = ['net.imglib2.ui.OverlayRenderer']
  37.     def __init__( self ):
  38.         self.w = 1
  39.         self.h = 1
  40.  
  41.     @java_method('(Ljava/awt/Graphics;)V')
  42.     def drawOverlays( self, g ):
  43.         print("Drawing")
  44.         # Color = jpype.JPackage("java.awt").Color
  45.         # g.setColor( Color.white );
  46.         # g.drawLine( 0, 0, self.w, self.h );
  47.  
  48.     @java_method('(II)V')
  49.     def setCanvasSize( self, width, height ):
  50.         print ("Setting size")
  51.         self.w = width
  52.         self.h = height
  53.  
  54. class SetOneConverter(PythonJavaClass):
  55.     __javainterfaces__ = ['net.imglib2.converter.Converter']
  56.  
  57.    
  58.  
  59. class SetZero(PythonJavaClass):
  60.     __javainterfaces__ = ['java.util.function.IntUnaryOperator']
  61.  
  62.     @java_method('(I)I')
  63.     def applyAsInt(self, input):
  64.         return 0
  65.  
  66. class JIterator( PythonJavaClass ):
  67.     __javainterfaces__ = ['java/util/Iterator']
  68.    
  69.  
  70.  
  71.     @java_method('()Z')
  72.     def hasNext(self):
  73.         return True
  74.  
  75.     #@java_method('()LJava/lang/Object;')
  76.     @java_method('()V;')
  77.     def next(self):
  78.         return 1
  79.  
  80. ArrayImgs = autoclass('net.imglib2.img.array.ArrayImgs')
  81. UnsafeImgs = autoclass('net.imglib2.img.unsafe.UnsafeImgs')
  82. IntUnsafe = autoclass('net.imglib2.img.basictypelongaccess.unsafe.IntUnsafe')
  83. FloatUnsafe = autoclass('net.imglib2.img.basictypelongaccess.unsafe.FloatUnsafe')
  84. PythonFunctions = autoclass('net.imglib.python.PythonFunctions')
  85. def toArrayImg( source, tag ):
  86.     if tag == 'argb':
  87.         ct_pt = ctypes.cast( source.ctypes.data_as(ctypes.POINTER(ctypes.c_int)), ctypes.c_void_p ).value
  88.         return PythonFunctions.toARGB( ct_pt, *source.shape )
  89.     elif tag == 'float32':
  90.         ct_pt = ctypes.cast( source.ctypes.data_as(ctypes.POINTER(ctypes.c_float)), ctypes.c_void_p ).value
  91.         print ( 'ok?', source.dtype, source.shape )
  92.         return PythonFunctions.toFloat( ct_pt, *source.shape )
  93.     return None
  94.        
  95. if __name__ == "__main__":
  96.     autoclass('org.jnius.NativeInvocationHandler').DEBUG = True
  97.     Views = autoclass('net.imglib2.view.Views')
  98.     BdvFunctions = autoclass('bdv.util.BdvFunctions')
  99.     BdvOptions = autoclass('bdv.util.BdvOptions')
  100.     IntStream = autoclass('java.util.stream.IntStream')
  101.     Random = autoclass('java.util.Random')
  102.     Arrays = autoclass('java.util.Arrays')
  103.     DistanceTransform = autoclass('net.imglib2.algorithm.morphology.distance.DistanceTransform')
  104.     Runtime = autoclass('java.lang.Runtime')
  105.     print(jnius)
  106.     rng = Random( 100 )
  107.  
  108.     # seem to need that one
  109.     autoclass('org.jnius.NativeInvocationHandler')
  110.  
  111.     bfly = vigra.readImage('/home/hanslovskyp/Dropbox/misc/butterfly.jpg').astype(np.uint32)
  112.     bflyArgb = \
  113.     np.left_shift(bfly[...,0], np.zeros(bfly.shape[:-1],dtype=np.uint8) + 16) + \
  114.     np.left_shift(bfly[...,1], np.zeros(bfly.shape[:-1],dtype=np.uint8) + 8)  + \
  115.     np.left_shift(bfly[...,2], np.zeros(bfly.shape[:-1],dtype=np.uint8) + 0)
  116.     bflyImgLib = toArrayImg( bflyArgb, 'argb' )
  117.     print(bflyArgb.dtype)
  118.     print(bflyImgLib)
  119.     bdv = BdvFunctions.show(bflyImgLib, 'test', BdvOptions.options().is2D())
  120.     print(bdv)
  121.     print(bflyImgLib.numDimensions(), bflyImgLib.dimension(0), bflyImgLib.dimension(1))
  122.     avg = np.mean(bfly, axis=2).astype(np.float32)
  123.     avgScaled = (avg * 2 ** 16 / avg.max()).astype(np.float32)
  124.     avgImgLib = toArrayImg( avgScaled, 'float32' )
  125.  
  126.     # if ( bdv is None ):
  127.     #   bdv = BdvFunctions.show(avgImgLib, 'avg', BdvOptions.options().is2D())
  128.     # else:
  129.     BdvFunctions.show( avgImgLib, 'avg', BdvOptions.options().addTo( bdv ) )
  130.  
  131.     filtered = vigra.filters.gaussianGradientMagnitude(avg, 3.0)
  132.     filteredScaled = (filtered * 2 ** 16 / filtered.max()).astype(np.float32)
  133.     filteredImgLib = toArrayImg( filteredScaled, 'float32' )
  134.    
  135.     BdvFunctions.show( filteredImgLib, 'gradient', BdvOptions.options().addTo( bdv ) )
  136.  
  137.     distTarget = np.empty(filtered.shape, dtype=np.float32)
  138.     distTmp = np.empty(filtered.shape, dtype=np.float32)
  139.     dt = filtered.copy()
  140.     print ( "dt mean before: ", dt.mean())
  141.     dtImgLib = toArrayImg( dt, 'float32' )
  142.     PythonFunctions.distanceTransform( dtImgLib, 0.00001 )
  143.     print ( "dt mean after: ", dt.mean())
  144.     dtScaled = (dt * 2 ** 16 / dt.max()).astype(np.float32)
  145.     dtScaledImgLib = toArrayImg( dtScaled, 'float32' )
  146.    
  147.     BdvFunctions.show( dtScaledImgLib, 'dt', BdvOptions.options().addTo( bdv ) )
  148.    
  149.  
  150.     # np_img = (np.random.rand(300, 400, 50) * (2**32)).astype(np.int32)
  151.     # ct_pt = ctypes.cast( np_img.ctypes.data_as(ctypes.POINTER(ctypes.c_int)), ctypes.c_void_p ).value
  152.     # # print( type(ct_pt), ct_pt, int(ct_pt), np_img.shape )
  153.  
  154.     # bdv = BdvFunctions.show(img, 'test', BdvOptions.options())
  155.  
  156.        
  157.     # rotated = Views.rotate(img, 1, 0)
  158.     # rot = BdvFunctions.show(rotated, 'rotated', BdvOptions.options().is2D())
  159.    
  160.  
  161.     # it = JIterator()
  162.     # print( it.hasNext(), it.next() )
  163.     r = Renderer()
  164.     # # r.drawOverlays(None)
  165.     # # r.setCanvasSize(1,2)
  166.  
  167.     sz = SetZero()
  168.     print (IntStream.range(0,3).toArray())
  169.     seq = IntStream.range(0,3).map( sz ).toArray()
  170.     print( seq )
  171.  
  172.  
  173.     # vp = bdv.getBdvHandle().getViewerPanel().getDisplay().addOverlayRenderer( r ) # crashes ?
  174.    
  175.     while True:
  176.         # print( it.next() )
  177.         time.sleep(0.1)
Advertisement
Add Comment
Please, Sign In to add comment