Estimation of the windows size

From Sutton 2009,10.1.3

from skimage import io
import numpy as np
import matplotlib.pyplot as plt
import xarray_function.image as xfi
import xarray as xr
%matplotlib widget

Load the image

adr='/data/Manips/Columnar_Ice/CI23/DIC_Analysis/tiff_images/001.tiff'
#adr='/home/chauvet/Téléchargements/3-Essai-001.tiff'
im=io.imread(adr)
im=np.mean(im,axis=-1)
ss=im.shape
ms=np.min(ss)
im=xr.DataArray(im[0:ms,0:ms],dims=('y','x'))
im.coords['x']=np.linspace(0,ms-1,ms)
im.coords['y']=np.linspace(0,ms-1,ms)
plt.figure(figsize=(10,10))
im.plot()
plt.axis('equal')
(-0.5, 4415.5, -0.5, 4415.5)

Compute autocorrelation

ds_auto=xfi.auto_correlation(im,pad=2,dic=True)

Autocorelation function

plt.figure(figsize=(10,10))
ds_auto.AutoCorrelation.plot()
plt.axis('equal')
(-0.5, 8831.5, -0.5, 8831.5)

Width at half height

plt.figure()
ds_auto.lmax.plot()
[<matplotlib.lines.Line2D at 0x7f15b1bb0f70>]
plt.figure()
ds_auto.P90.plot()
plt.plot([0,4000],[ds_auto.Cinf,ds_auto.Cinf])
[<matplotlib.lines.Line2D at 0x7f15b1b699d0>]

Sutton 2009,fig. 10.2, p.234 recommend to have a correlation minimum window correlation for DIC around \(3*FS<w_{dic}<6*FS\) where FS is \(2*lmax\). Therefore for our image it will correspond to :

print('Minimum DIC windows between: ['+str(int(2*3*ds_auto.lmax.mean()))+','+str(int(2*6*ds_auto.lmax.mean()))+']'+ ' pixels')
Minimum DIC windows between: [30,61] pixels