Login  Register

Calculate local stdDev, using a sliding box

Posted by Steve Wolf on Feb 09, 2016; 4:43pm
URL: http://imagej.273.s1.nabble.com/Calculate-local-stdDev-using-a-sliding-box-tp5015587.html

Attempting to calculate local stdDev, using a sliding box, on a 4096x4096 image.  I’m using the following Python script, but it runs extremely slow, any suggestions on speeding it up?


from ij import IJ
from ij import ImagePlus  
from ij.process import FloatProcessor  
from array import zeros  
from ij.process import ImageStatistics as IS  

imp = IJ.getImage()
ip = imp.getProcessor()

options = IS.MEAN | IS.MEDIAN | IS.MIN_MAX | IS.STD_DEV
stats = IS.getStatistics(ip, options, imp.getCalibration())
boxW = 409
boxH = 409
imageW = 4096
imageH = 4096
i = 0

nwidth = 4096
nheight = 4096
pixels = zeros('f', nwidth * nheight)

for x in xrange(0,imageW,1):
                for y in xrange (0,imageH,1):
            imp.setRoi( y, x, boxW, boxH)
#            rimp = imp.getRoi
            stats = IS.getStatistics(ip, options, imp.getCalibration())
#            print x, ",", y, ",", stats.stdDev
            pixels[i] = stats.stdDev
            i += 1

#generate image of local stdDev
fp = FloatProcessor(nwidth, nheight, pixels, None)  
imp = ImagePlus("Local StdDev", fp)  
imp.show()  

--
ImageJ mailing list: http://imagej.nih.gov/ij/list.html