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.