Transform generators

We can generate ants/itk transforms with ANTsPy generator classes. These can also be chained together. Parameters are generated from user-set gaussian distributions (mean and standard deviation). First, we show 2D.

``````

In [1]:

import ants

``````
``````

In [5]:

rRotGenerator = ants.contrib.RandomRotate2D( ( 0, 40 ), reference=img )
rShearGenerator=ants.contrib.RandomShear2D( (0,50), reference=img )
tx1 = rRotGenerator.transform()
tx2 = rShearGenerator.transform()
rSrR = ants.compose_ants_transforms([tx1, tx2])
ants.plot( rSrR.apply_to_image( img ) )

``````
``````

``````

We can call the generator(s) again to get a new transforms.

``````

In [6]:

tx1 = rRotGenerator.transform()
tx2 = rShearGenerator.transform()
rSrR = ants.compose_ants_transforms([tx2, tx1]) # switch order
ants.plot( rSrR.apply_to_image( img ) )

``````
``````

``````

The code for 3D is nearly identical.

``````

In [7]:

import ants
rRotGenerator = ants.contrib.RandomRotate3D( ( 0, 40 ), reference=img )
rShearGenerator=ants.contrib.RandomShear3D( (0,50), reference=img )
tx1 = rRotGenerator.transform()
tx2 = rShearGenerator.transform()
rSrR = ants.compose_ants_transforms([tx1, tx2])
ants.plot( rSrR.apply_to_image( img ), nslices = 24, ncol=8 )

``````
``````

``````
``````

In [10]:

# transform both x and y
seg = ants.threshold_image( img, 'Otsu', 3 )
imgaug = rRotGenerator.transform( img, seg )
ants.plot( imgaug[0], imgaug[1], alpha=0 )

``````
``````

``````
``````

In [ ]:

``````