def compare1d_psd_acovf():
    """Compare 1d ACovF in physical coordinates to 1d PSD in physical coordinates, for two similar but different images."""
    im = TestImage(shift=True, nx=1000, ny=1000)
    scale = 100
    im.addSin(scale=scale)
    im.hanningFilter()
    im.zeroPad()
    im.calcAll(min_npix=1, min_dr=1)
    im.showImage()
    pylab.grid()
    pylab.savefig('compare1d_image1.%s' %(figformat), format='%s' %(figformat))
    im.showPsd2d()
    pylab.savefig('compare1d_psd2d1.%s' %(figformat), format='%s' %(figformat))
    im.showPsd1d()
    pylab.savefig('compare1d_psd1.%s' %(figformat), format='%s' %(figformat))
    im.showAcovf1d()
    pylab.savefig('compare1d_acovf1.%s' %(figformat), format='%s' %(figformat))
    im = TestImage(shift=True, nx=1000, ny=1000)
    im.addSin(scale=scale*2)
    im.hanningFilter()
    im.zeroPad()
    im.calcAll(min_npix=1, min_dr=1)
    im.showImage()
    pylab.grid()
    pylab.savefig('compare1d_image2.%s' %(figformat), format='%s' %(figformat))
    im.showPsd2d()
    pylab.savefig('compare1d_psd2d2.%s' %(figformat), format='%s' %(figformat))
    im.showPsd1d()
    pylab.savefig('compare1d_psd2.%s' %(figformat), format='%s' %(figformat))
    im.showAcovf1d()
    pylab.savefig('compare1d_acovf2.%s' %(figformat), format='%s' %(figformat))
    pylab.close()
    return
Beispiel #2
0
# Start here to invert from 2d PSD (useI = False then, and uses phase info - get perfect reconstruction)
im.invertPsd2d(usePhasespec=False)
#im.invertPsd2d(useI=True)

# Start here to invert from FFT (useI = False, and will get perfect reconstruction). 
im.invertFft(useI=True)

# Use im2 to recalculate 1d PSD/ACovF starting from the reconstructed image, without altering the original. 
im2 = PImagePlots()
im2.setImage(im.imageI.real, copy=True)
im2.calcAll(min_dr=1.0, min_npix=2)
im2.plotMore()

# Now start plotting things, in comparison. 
clims = im.showImage()
#print clims
im2.showImage(clims=clims)
im2.showImage()
im.showFft(clims=clims)
im2.showFft(clims=clims)
im.showPsd2d()
im2.showPsd2d()
im.showPhases()
im2.showPhases()
im.showAcovf2d()
im2.showAcovf2d(imag=False)
im.showPsd1d(comparison=im2)
im.showAcovf1d(comparison=im2)
im.showSf(linear=True, comparison=im2)
def inversion():
    """Generate some example images & invert them to reconstruct the original image."""
    im = TestImage(shift=True, nx=1000, ny=1000)
    #im.addEllipseGrid(gridX=200, gridY=100, semiX=50, semiY=25, value=1)
    im.addLines(width=20, spacing=200, value=1, angle=45)
    im.addSin(scale=300)
    im.hanningFilter()
    im.zeroPad()
    #cmap = pylab.cm.gray_r
    cmap = None
    clims = im.showImage(cmap=cmap)
    pylab.savefig('invert_image.%s' %(figformat), format='%s' %(figformat))
    im.calcAll(min_npix=1, min_dr=1)
    # Invert from ACovF and show perfect reconstruction.
    im.invertAcovf2d()
    im.invertPsd2d(useI=True)
    im.invertFft(useI=True)
    im.showImageI(clims=clims, cmap=cmap)
    pylab.savefig('invert_acovf2d_good.%s' %(figformat), format='%s' %(figformat))
    # Invert from ACovF 2d without phases
    im.invertAcovf2d(usePhasespec=False, seed=42)
    im.invertPsd2d(useI=True)
    im.invertFft(useI=True)    
    im.showImageI(clims=clims, cmap=cmap)
    pylab.savefig('invert_acovf2d_nophases.%s' %(figformat), format='%s' %(figformat))
    # Invert from ACovF 1d with phases
    im.invertAcovf1d(phasespec=im.phasespec)
    im.invertAcovf2d(useI=True)
    im.invertPsd2d(useI=True)
    im.invertFft(useI=True)
    im.showImageI(clims=clims, cmap=cmap)
    pylab.savefig('invert_acovf1d_phases.%s' %(figformat), format='%s' %(figformat))
    # Invert from ACovF 1d without phases
    im.invertAcovf1d(seed=42)
    im.invertAcovf2d(useI=True)
    im.invertPsd2d(useI=True)
    im.invertFft(useI=True)
    im.showImageI(clims=clims, cmap=cmap)
    pylab.savefig('invert_acovf1d_nophases.%s' %(figformat), format='%s' %(figformat))
    # Recalculate 1-d PSD and ACovF from this last reconstructed image (ACovF1d no phases)
    im2 = PImagePlots()
    im2.setImage(im.imageI)
    im2.calcAll(min_npix=1, min_dr=1)
    legendlabels=['Reconstructed', 'Original']
    im2.showPsd1d(comparison=im, legendlabels=legendlabels)
    pylab.savefig('invert_recalc_ACovF_Psd1d.%s' %(figformat), format='%s' %(figformat))
    im2.showAcovf1d(comparison=im, legendlabels=legendlabels)
    pylab.savefig('invert_recalc_ACovF_Acovf1d.%s' %(figformat), format='%s' %(figformat))
    # Invert from PSD and show perfect reconstruction.                          
    im.invertPsd2d()
    im.invertFft(useI=True)
    im.showImageI(clims=clims, cmap=cmap)
    pylab.savefig('invert_psd2d_good.%s' %(figformat), format='%s' %(figformat))
    # Invert from PSD 2d without phases
    im.invertPsd2d(usePhasespec=False, seed=42)
    im.invertFft(useI=True)
    im.showImageI(clims=clims, cmap=cmap)
    pylab.savefig('invert_psd2d_nophases.%s' %(figformat), format='%s' %(figformat))
    # Invert from PSD 1d with phases                                   
    im.invertPsd1d(phasespec=im.phasespec)
    im.invertPsd2d(useI=True)
    im.invertFft(useI=True)
    im.showImageI(clims=clims, cmap=cmap)
    pylab.savefig('invert_psd1d_phases.%s' %(figformat), format='%s' %(figformat))
    # Invert from PSD 1d without phases                                             
    im.invertPsd1d(seed=42)
    im.invertPsd2d(useI=True)
    im.invertFft(useI=True)
    im.showImageI(clims=clims, cmap=cmap)
    pylab.savefig('invert_psd1d_nophases.%s' %(figformat), format='%s' %(figformat))
    # Recalculate 1-d PSD and ACovF from this last reconstructed image (PSD1d no phases)
    im2 = PImagePlots()
    im2.setImage(im.imageI)
    im2.calcAll(min_npix=1, min_dr=1)
    im2.showPsd1d(comparison=im, legendlabels=legendlabels)
    pylab.savefig('invert_recalc_PSD_Psd1d.%s' %(figformat), format='%s' %(figformat))
    im2.showAcovf1d(comparison=im, legendlabels=legendlabels)
    pylab.savefig('invert_recalc_PSD_Acovf1d.%s' %(figformat), format='%s' %(figformat))
    pylab.close()
    return