Beispiel #1
0
    def directInvokeAlgorithm(self,vals):
        print('oooo invoking: nonLinearRegistration', (vals));	
        target = self.inputs['target'];
        reference = self.inputs['reference'];
        transform = self.inputs['initial'];
        linearmode = bis_baseutils.getLinearModeCode(vals['linearmode']);

        initial=transform;
        if (linearmode>=0):
            try:
                mat=libbis.runLinearRegistrationWASM(reference, target, transform, {
                    'intscale' : vals['intscale'],
                    'numbins' : vals['numbins'],
                    'levels' : vals['levels'],
                    'smoothing' : vals['extrasmoothing'],
                    'optimization' : bis_baseutils.getOptimizationCode(vals['optimization']),
                    'stepsize' : vals['stepsize'],
                    'metric' : bis_baseutils.getMetricCode(vals['metric']),
	            'steps' : vals['steps'],
                    'iterations' : vals['iterations'],
                    'normalize' : self.parseBoolean(vals['norm']),
                    'debug' : self.parseBoolean(vals['debug']),
                    'mode' : linearmode,
                    'resolution' : vals['resolution'],
                    'return_vector' : False}, self.parseBoolean(vals['debug']));

                initial=bis_objects.bisLinearTransformation();
                initial.create(mat);
            except:
                print('Failed to invoke linear registration algorithm.');
                return False;

        try:
            self.outputs['output']=libbis.runNonLinearRegistrationWASM(reference, target, initial, {
		    'cps' : vals['cps'],
                    'lambda' : vals['lambda'],
                    'intscale' : vals['intscale'],
                    'numbins' : vals['numbins'],
                    'levels' : vals['levels'],
                    'smoothing' : vals['extrasmoothing'],
                    'optimization' : bis_baseutils.getOptimizationCode(vals['optimization']),
                    'stepsize' : vals['stepsize'],
                    'debug' : self.parseBoolean(vals['debug']),
                    'normalize' : self.parseBoolean(vals['norm']),
                    'metric' : bis_baseutils.getMetricCode(vals['metric']),
	            'steps' : vals['steps'],
                    'iterations' : vals['iterations'],
                    'resolution' : vals['resolution']}, self.parseBoolean(vals['debug']));
            
            if (self.parseBoolean(vals['doreslice'])==True):
                self.outputs['resliced']=bis_baseutils.resliceRegistrationOutput(libbis,reference,
                                                                                 target,self.outputs['output']);
        except:
            print('---- Failed to invoke nonlinear registration algorithm.');
            return False

        return True
Beispiel #2
0
    def directInvokeAlgorithm(self, vals):
        print('oooo invoking: approximateField', (vals))
        inputImg = self.inputs['input']

        try:
            self.outputs['output'] = libbis.approximateDisplacementFieldWASM2(
                inputImg, {
                    "spacing": (vals['spacing']),
                    "steps": (vals['steps']),
                    "stepsize": (vals['stepsize']),
                    "lambda": (vals['lambda']),
                    "iterations": (vals['iterations']),
                    "tolerance": (vals['tolerance']),
                    'optimization':
                    bis_baseutils.getOptimizationCode(vals['optimization']),
                    "windowsize": (vals['windowsize']),
                    "levels": (vals['levels']),
                    "resolution": (vals['resolution']),
                    "inverse":
                    self.parseBoolean(vals['inverse']),
                }, self.parseBoolean(vals['debug']))
        except:
            print(
                '---- Failed to invoke algorithm nonlinear component of module'
            )
            return False

        return True
    def directInvokeAlgorithm(self, vals):

        print('oooo invoking: linearRegistration', (vals))
        target = self.inputs['target']
        reference = self.inputs['reference']
        transform = self.inputs['initial']

        if (reference.hasSameOrientation(target, 'Reference Image',
                                         'Target Image', True) == False):
            return False

        try:
            out = libbis.runLinearRegistrationWASM(
                reference, target, transform, {
                    'intscale':
                    vals['intscale'],
                    'numbins':
                    vals['numbins'],
                    'levels':
                    vals['levels'],
                    'smoothing':
                    vals['imagesmoothing'],
                    'optimization':
                    bis_baseutils.getOptimizationCode(vals['optimization']),
                    'stepsize':
                    vals['stepsize'],
                    'metric':
                    bis_baseutils.getMetricCode(vals['metric']),
                    'steps':
                    vals['steps'],
                    'normalize':
                    self.parseBoolean(vals['norm']),
                    'debug':
                    self.parseBoolean(vals['debug']),
                    'iterations':
                    vals['iterations'],
                    'mode':
                    bis_baseutils.getLinearModeCode(vals['mode']),
                    'resolution':
                    vals['resolution'],
                    'return_vector':
                    False
                }, self.parseBoolean(vals['debug']))

            self.outputs['output'] = bis_objects.bisLinearTransformation()
            self.outputs['output'].create(out)

            if (self.parseBoolean(vals['doreslice']) == True):
                self.outputs[
                    'resliced'] = bis_baseutils.resliceRegistrationOutput(
                        libbis, reference, target, self.outputs['output'])
        except:
            e = sys.exc_info()[0]
            print('---- Failed to invoke algorithm', e)
            return False

        return True