from net.imglib2.img.display.imagej import ImageJFunctions as IL
from net.imglib2.img.array import ArrayImgs
from net.imglib2.roi.geom import GeomMasks
from net.imglib2.roi import Regions
from net.imglib2.view import Views
from net.imglib2.type.logic import BitType
from collections import deque
from itertools import imap
from org.scijava.plugins.scripting.clojure import ClojureScriptEngine
from jarray import array
from time import time


# A binary image
img = ArrayImgs.bits([512, 512, 5])

center = img.dimension(0) / 2, img.dimension(1) / 2


def looping(img, center):
  for z in xrange(img.dimension(2)):
    radius = img.dimension(0) * 0.5 / (z + 1)
    circle = GeomMasks.openSphere(center, radius)
    # Works, explicit iteration of every pixel
    for t in Regions.sample(circle, Views.hyperSlice(img, 2, z)):
      t.setOne()

def dequeing(img, center):
  for z in xrange(img.dimension(2)):
    radius = img.dimension(0) * 0.5 / (z + 1)
    circle = GeomMasks.openSphere(center, radius)
Exemple #2
0
from net.imglib2.roi.geom import GeomMasks
from net.imglib2.roi import Masks, Regions
from collections import deque
from itertools import imap, izip
from ij import ImagePlus
from ij.io import TiffDecoder
from ij.plugin import FileInfoVirtualStack
from net.imglib2.util.Util import getTypeFromInterval

# A binary image whose pixel values can only take as value either zero or one
# and which is stored in a bit-packed way in a long array:
# each of the 64-bits of a single long in the long[] is a pixel,
# which gives us efficient storage
# (otherwise, the smallest possible would be byte[] with each 1-bit pixel
# being stored using an 8-bit byte, wasting 7 bytes of storage per pixel)
img = ArrayImgs.bits([512, 512, 5])
bitDepth = 1

pixel_array = img.update(None).getCurrentStorageArray()
img_size = reduce(operator.mul, Intervals.dimensionsAsLongArray(img))
array_size = len(pixel_array)
print array_size, "<", img_size
print "Proportion:", array_size / float(
    img_size), "AKA", img_size / array_size, "x"

# Add some data to it
center = img.dimension(0) / 2, img.dimension(1) / 2
for z in xrange(img.dimension(2)):
    radius = img.dimension(0) * 0.5 / (z + 1)
    circle = GeomMasks.openSphere(center, radius)
    # Works, explicit iteration of every pixel