Wow Robb. Thank you very much. I am going to play with this to make a 
complete script then I will post it here :).

Thanks

On Wednesday, 23 May 2018 14:48:09 UTC-5, Robb Brown wrote:
>
> It's fairly easy to write an interpolation routine in Theano.
>
> Here are nearest neighbour (3d) and trilinear for example.  For your 2D 
> case you can just knock off a variable.  "image" is a tensor containing the 
> image data, points is a list of coordinates giving the points you'd like 
> the interpolated value of. I expect these will work, although be warned, I 
> haven't tested them since Theano 0.7 or 0.8.
>
>
> Nearest neighbour:
>
> x = T.clip(points[2],0,T.shape(image)[2]-2)
> y = T.clip(points[1],0,T.shape(image)[1]-2)
> z = T.clip(points[0],0,T.shape(image)[0]-2)
>
> nearestNeighbour = 
> image[T.cast(T.floor(z),'uint16'),T.cast(T.floor(y),'uint16'),T.cast(T.floor(x),'uint16')]
> nearestNeighbour.name = self.name + '-nearestNeighbourSampler'
>
>
>
> Trilinear:
>
> x = T.clip(points[2],0,T.shape(image)[2]-2)
> y = T.clip(points[1],0,T.shape(image)[1]-2)
> z = T.clip(points[0],0,T.shape(image)[0]-2)
>
> x0 = T.cast(T.floor(x),'uint16')
> y0 = T.cast(T.floor(y),'uint16')
> z0 = T.cast(T.floor(z),'uint16')
>
> x1 = x0+1
> y1 = y0+1
> z1 = z0+1
>
> xd = (x-x0)
> yd = (y-y0)
> zd = (z-z0)
>
> c00 = image[z0,y0,x0]*(1-xd) + image[z0,y0,x1]*xd
> c10 = image[z0,y1,x0]*(1-xd) + image[z0,y1,x1]*xd
> c01 = image[z1,y0,x0]*(1-xd) + image[z1,y0,x1]*xd
> c11 = image[z1,y1,x0]*(1-xd) + image[z1,y1,x1]*xd
>
> c0 = c00*(1-yd) + c10*yd
> c1 = c01*(1-yd) + c11*yd
>
> trilinear = c0*(1-zd) + c1*zd
>
>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"theano-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to theano-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to