!ls import matplotlib.pyplot as plt import matplotlib.image as mpimg %matplotlib inline import numpy as np img = mpimg.imread('IMG_4489.JPG') img plt.imshow(img[700:2000,3200:4200,0]) plt.colorbar() print len(img), len(img[0]), len(img[0][0]) plt.plot(img[1800,3200:4200,0]) def _line(x,*p): a,b,c,d = p return a*np.exp(-(x-b)**2/(2*c**2))+d def _mline(x,*p): a,b,c,d,e,f,g = p return a*np.exp(-(x-b)**2/(2*c**2))+d+e*np.exp(-(x-f)**2/(2*g**2)) line = img[1800,3200:4200,0] from scipy.optimize import curve_fit x = np.arange(len(line)) p0 = [35,550,150,5] coeff, var_matrix = curve_fit(_line,x,line,p0=p0) p0 = [30,525,40,0,35,590,40] coeff, var_matrix = curve_fit(_mline,x,line,p0=p0) print coeff yfit = [_line(xx,*tuple(coeff)) for xx in x] plt.hold() plt.plot(x,line,'*',yfit,'-') multi_yfit = [_mline(xx,*tuple(coeff)) for xx in x] #plt.hold() plt.plot(x,line,'*',yfit,'-',multi_yfit,'x') #plt.plot(line) #plt.plot(yfit) #plt.plot(multi_yfit) plt.plot(img[1350,3200:4200,0]) plt.imshow(img[1100:1600,3400:3900,0]) plt.colorbar() def _2Dline(x,y,*p): a,b,c,d,e = p return a*np.exp(-((x-b)**2+(y-c)**2)/(2*d**2))+e data = img[1100:1600,3400:3900,0] p0 = [500,250,250,100,0] coeff, var_matrix = curve_fit(_2Dline,x,data,p0=p0)