import numpy as np
import cv2

img = cv2.imread('star8x8.png',0)
img = np.asarray(img,np.float32)
c = img/255.0

fc = np.fft.fft2(c)

N = 8 
n = np.arange(0,N)
w = np.e**(1j*2*np.pi*n/N)
a = np.reshape(w,(1,N))
b = np.reshape(w,(N,1))

d = np.zeros((N,N,N,N),np.complex)
for i in range(N):
    for j in range(N):
        d[i,j] = (b**i).dot(a**j)

e = np.zeros((N,N,N,N),np.complex)
for i in range(N):
    for j in range(N):
        e[i,j] = fc[i,j] * d[i,j] / (N*N)

sum = np.zeros((N,N),np.float32)
for i in range(N):
    for j in range(N):
        sum += np.real(e[i,j])

oimg = np.asarray(sum*255,np.uint8)        
cv2.imwrite('sum.png', oimg)
