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)
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