def compute_for_channel(output_channel, input_channel): input_roi = numpy.array( (roi.start, roi.stop) ) input_roi[:,-1] = (input_channel, input_channel+1) input_req = self.Input(*input_roi) # If possible, use the result array itself as a scratch area if self.Input.meta.dtype == result.dtype: input_req.writeInto( result[...,output_channel:output_channel+1] ) input_data = input_req.wait() input_data = input_data.astype(numpy.float32, order='C', copy=False) input_data = input_data[...,0] # drop channel axis result[..., output_channel] = computeIntegralImage(input_data)
import matplotlib.pyplot as plt # load data gt = joblib.load("../../testData/gt.jlb") img = joblib.load("../../testData/img.jlb") # let's pretend we have 3 image stacks with different number of ROIs # with its corresponding gt and 2 feature channels img3 = img2 = img1 = img gt3 = gt2 = gt1 = gt model = Booster() imgFloat = np.float32(img) iiImage = computeIntegralImage( imgFloat ) # again, this is stupid, just presume the second channel is a different feature channel1 = iiImage channel2 = iiImage channels3 = channels2 = channels1 = [channel1,channel2] # anisotropy factor is the ratio between z voxel size and x/y voxel size. # if Isotropic -> 1.0 zAnisotropyFactor = 1.0; # this is typically a good value, but it depends on the voxel size of the data hessianSigma = 3.5 eigV1 = computeEigenVectorsOfHessianImage( img1, zAnisotropyFactor, hessianSigma ) eigV2 = computeEigenVectorsOfHessianImage( img2, zAnisotropyFactor, hessianSigma )