import tifffile as tf
# import cv2
import numpy as np
import matplotlib.pyplot as plt


recompute=True
# img_arr = cv2.imread('DG10-1500-P01_XJ_RGG.tif', cv2.IMREAD_UNCHANGED)
img_arr = tf.imread('DG10-1500-P01_XJ_RGG.tif')

# img_arr[:,:,1] = img_arr[:,:,0]*0
# img_arr[:,:,2] = img_arr[:,:,0]*0
# print(img_arr)

new_arr = (img_arr[:,:,1])#+img_arr[:,:,1]+img_arr[:,:,2])/3
cropped_arr = new_arr[100:1100,300:1300]
# print(cropped_arr.shape)

# draw red circle

radius_lower = 2*17
radius_upper = 2*17+10 

for x in range(700,900):
	for y in range(500,700):
		radius = np.sqrt((x-800)**2 + (y-600)**2)
		if radius >= radius_lower and radius <=radius_upper:
			img_arr[y,x,0] = 255
			img_arr[y,x,1] = 0
			img_arr[y,x,2] = 0

plt.clf()
plt.imshow(img_arr)
plt.colorbar()
plt.show()


plt.clf()
plt.imshow(new_arr,cmap='Greys_r')
plt.colorbar()
plt.show()

# # 17 pixels is 1um
scale_array = new_arr[1135,1416:1588]
# print(scale_array.size)
# print(scale_array)
# # FFT showed nothing so far
k_array = np.abs(np.fft.fft2(cropped_arr))
# filtered_array = np.abs(np.fft.ifft2(k_array))
# print(new_arr)

plt.clf()
plt.imshow(np.log(k_array),cmap='Greys_r')
plt.colorbar()
plt.show()

if recompute:
	corr_arr_x = []
	corr_arr_y = []

	for i in range(1000):
		dimension=1
		arr_1_x = new_arr[:,0:1000-i]
		arr_2_x = new_arr[:,i:1000]

		corr_arr_x.append(np.mean((1000-i)*np.sum(arr_1_x*arr_2_x,axis=dimension)/(np.sum(arr_1_x,axis=dimension)*np.sum(arr_2_x,axis=dimension))))
		# corr_arr.append(np.sum(arr_1*arr_2)/(np.sum(arr_1)*np.sum(arr_2)))

		dimension=0
		arr_1_y = new_arr[0:1000-i,:]
		arr_2_y = new_arr[i:1000,:]

		corr_arr_y.append(np.mean((1000-i)*np.sum(arr_1_y*arr_2_y,axis=dimension)/(np.sum(arr_1_y,axis=dimension)*np.sum(arr_2_y,axis=dimension))))
		# corr_a

	pixel_vector = np.arange(0,1000,1)
	corr_arr_x = np.vstack((pixel_vector,np.asarray(corr_arr_x)))
	corr_arr_y = np.vstack((pixel_vector,np.asarray(corr_arr_y)))

	np.savetxt("correlation_x.dat",corr_arr_x.T,header="#pixel displacement, normalised correlation")
	np.savetxt("correlation_y.dat",corr_arr_y.T,header="#pixel displacement, normalised correlation")

else:
	corr_arr_x =np.genfromtxt("correlation_x.dat",skip_header=1).T
	corr_arr_y =np.genfromtxt("correlation_y.dat",skip_header=1).T


plt.clf()
plt.plot(corr_arr_x[0]/17,corr_arr_x[1],"b.",label="x-displacement")
plt.plot(corr_arr_y[0]/17,corr_arr_y[1],"r.",label="y-displacement")
plt.legend()
# plt.xlim(0,30)
plt.xlabel("displacement (um)")
plt.show()
# print(corr_arr)