import numpy import pylab import convolve import dispims from numpy.fft import fft2 from numpy.fft import ifft2 from numpy.fft import fftshift from numpy.fft import ifftshift datadir = "/home/ro/research/data/cifar/cifar-10-batches-py" #load data #trainimages = numpy.concatenate([numpy.load(datadir+'/data_batch_'+str(i))['data'].reshape(-1, 3, 1024) for i in [1]],0) trainimages = numpy.concatenate([numpy.load(datadir+'/data_batch_'+str(i))['data'].astype("float").reshape(-1, 3, 1024) for i in [1,2,3,4,5]],0) trainlabels = numpy.concatenate([numpy.array(numpy.load(datadir+'/data_batch_'+str(i))['labels']).astype("int32") for i in [1,2,3,4,5]]) #turn images into gray-value using 0.299*R + 0.587*G + 0.114*B trainimages = (trainimages*numpy.array([[[0.299], [0.587], [0.144]]])).sum(1) f1 = pylab.figure() dispims.dispims(numpy.array([trainimages[trainlabels==i][0] for i in range(10)]).T, 32, 32, 2) #cat/automobila spectra: automobiles_train = trainimages[trainlabels==1] cats_train = trainimages[trainlabels==3] spectrum_automobile = fftshift(fft2(automobiles_train[0].reshape(32,32))) spectrum_cat = fftshift(fft2(cats_train[0].reshape(32,32))) f3 = pylab.figure() pylab.gray() pylab.subplot(2, 2, 1) pylab.imshow(numpy.log(numpy.abs(spectrum_automobile))) pylab.subplot(2, 2, 2) pylab.imshow(numpy.log(numpy.abs(spectrum_cat))) pylab.subplot(2, 2, 3) pylab.imshow(numpy.angle(spectrum_automobile)) pylab.subplot(2, 2, 4) pylab.imshow(numpy.angle(spectrum_cat)) f4 = pylab.figure() pylab.subplot(1, 2, 1) pylab.imshow(numpy.real(ifft2(ifftshift(numpy.abs(spectrum_cat)*pylab.exp(1j*numpy.angle(spectrum_automobile)))))) pylab.subplot(1, 2, 2) pylab.imshow(numpy.real(ifft2(ifftshift(numpy.abs(spectrum_automobile)*pylab.exp(1j*numpy.angle(spectrum_cat)))))) #average amplitude spectra: f5 = pylab.figure() pylab.gray() pylab.subplot(3,5,1) pylab.imshow(numpy.log(numpy.abs(fftshift(fft2(trainimages.mean(0).reshape(32,32)))))) for c in range(10): pylab.subplot(3,5,2+c) pylab.imshow(numpy.log(numpy.abs(fftshift(fft2(trainimages[trainlabels==c].mean(0).reshape(32,32))))))