def obsolete_test_center_zoom_even(imsize,outsize,cx,cy,upsample_factor,doplot=False): if imsize != outsize and np.abs(imsize-outsize)==1: return "Yarrr, something's awry!" pixspace = np.mean(np.diff(np.linspace(-5,5,imsize))) image = gaussian(imsize) image_shifted = gaussian(imsize,cx*pixspace,cy*pixspace) zoom_pixspace = np.mean(np.diff(np.linspace(-5/float(upsample_factor),5/float(upsample_factor),imsize))) image_shifted_zoomed = zoomed_gaussian(imsize,outsize,cx*zoom_pixspace, cy*zoom_pixspace,upsample_factor) image_zoomed = zoomed_gaussian(imsize,outsize, 0, 0, upsample_factor) #image_shifted_zoomed = zoomed_gaussian(outsize,pixspace/2,pixspace/2,upsample_factor) middle = np.unravel_index(image.argmax(),image.shape) ismax = np.unravel_index(image_shifted.argmax(),image.shape) assert (ismax[0]-middle[0]) == cy assert (ismax[1]-middle[1]) == cx dmax = np.unravel_index(image_shifted_zoomed.argmax(),image.shape) x,y,zoom = upsample.center_zoom_image(image_shifted, upsample_factor=upsample_factor, output_size=outsize, nthreads=4, xshift=cx, yshift=cy, return_axes=True) zmax = np.unravel_index(zoom.argmax(),zoom.shape) #print 'image position of max:',dmax,' zoom position of max:',zmax #print 'x,y max: ',x[zmax],y[zmax] clf() vshape = image.shape[0]*upsample_factor,image.shape[1]*upsample_factor s1,s2 = outsize,outsize roff = -int(np.round(float(vshape[0] - upsample_factor - s1)/2)) - (upsample_factor%2==0) coff = -int(np.round(float(vshape[1] - upsample_factor - s2)/2)) - (upsample_factor%2==0) if doplot: if imsize * upsample_factor < 512: fx,fy,fullzoom = upsample.center_zoom_image(image, xshift=cx, yshift=cy, upsample_factor=upsample_factor, nthreads=4, return_axes=True) else: fullzoom = None if image.shape == zoom.shape: plotthings(image,image_shifted,image_zoomed,zoom,cx,cy,upsample_factor,imsize,outsize,x,y,fullzoom=fullzoom) else: plotthings(image,image_shifted,image_zoomed[:image.shape[0],:image.shape[1]],zoom[:image.shape[0],:image.shape[1]], cx,cy,upsample_factor,imsize,outsize,x[:image.shape[0],:image.shape[1]],y[:image.shape[0],:image.shape[1]],fullzoom=fullzoom) print " ".join(["%6.2f" % q for q in (upsample_factor,imsize,outsize,cx,cy,x[zmax],y[zmax],zmax[1],zmax[0],dmax[1],dmax[0],x[zmax]-dmax[1],y[zmax]-dmax[0], cx/float(upsample_factor),cy/float(upsample_factor),((zoom-image_zoomed)**2).sum(), ismax[0]-middle[0],ismax[1]-middle[1])]) zmax = np.where(np.abs(zoom-zoom.max()) < 1e-8) #assert np.round(np.mean(y[zmax])) == floor(image.shape[0]/2.+cy) #assert np.round(np.mean(x[zmax])) == floor(image.shape[1]/2.+cx) #assert (x[zmax]) == dmax[1] #assert (y[zmax]) == dmax[0] #if upsample_factor == 1 and image.shape==zoom.shape: # assert dmax[0] == zmax[0] # assert dmax[1] == zmax[1] assert ((zoom-image_zoomed)**2).sum() < 0.001
def obsolete_test_center_zoom_simple3(imsize,upsample_factor,doplot=False): image = gaussian(imsize) x,y,zoom = upsample.center_zoom_image(image, upsample_factor=upsample_factor, output_size=image.shape, nthreads=4, return_axes=True) if imsize * upsample_factor < 512: fx,fy,fullzoom = upsample.center_zoom_image(image, upsample_factor=upsample_factor, nthreads=4, return_axes=True) else: fullzoom = None if doplot: plotthings(image,image,image,zoom,0,0,upsample_factor,imsize,imsize,x,y,fullzoom=fullzoom) # in order for zooming to work, need to at least nyquist-sample peak # (I think) if imsize > 10: assert ((image-zoom)**2).sum() < 0.001