In [32]:
from astropy.io import fits
import numpy as np
import matplotlib.pyplot as plt
import glob
from PIL import Image
%matplotlib inline
In [3]:
drzs = sorted(glob.glob('*v2_drz.fits'))
print drzs
In [5]:
rim, gim, bim = drzs[2], drzs[1], drzs[0]
In [90]:
r = fits.getdata(rim)
g = fits.getdata(gim)
b = fits.getdata(bim)
In [88]:
def scl(data,lo=None,hi=None):
if lo: print lo
else: print 'No params provided, percent scaling'
In [95]:
def pctscale(data,lo=0.1,hi=99.5):
lv, hv = np.nanpercentile(data, [lo,hi])
print 'Getting nanmask'
nanmask = np.isnan(data)
print 'fraction of pixels as nan:', np.mean(nanmask.astype('float'))
# plt.imshow(nanmask.astype('float'))
# plt.show()
print 'Low val at {}%% level is {}'.format(lo,lv)
print 'High val at {}%% level is {}'.format(hi,hv)
data[nanmask] = lv
data[data<lv] = lv
data[data>hv] = hv
return data
In [82]:
def bitrange(data):
lo = np.amin(data)
hi = np.amax(data)
data = (((data-lo)/(hi-lo))*254.999).astype('uint8')
return data
In [97]:
def asinh(data):
lo = np.amin(data)
hi = np.amax(data)
data = ((data-lo)/(hi-lo))
data = np.arcsinh(10.0*data)/3.0
return data
In [105]:
r = fits.getdata(rim)
g = fits.getdata(gim)
b = fits.getdata(bim)
lo = 0.03
hi = 98.0
rscl = asinh(pctscale(r,lo,hi))
# plt.imshow(rscl,cmap='Blues')
# plt.show()
r8bit = bitrange(rscl)
# plt.imshow(r8bit, cmap='Blues')
# plt.show()
print 'Done'
gscl = asinh(pctscale(g,lo,hi))
g8bit = bitrange(gscl)
print 'Done'
bscl = asinh(pctscale(b,lo,hi))
b8bit = bitrange(bscl)
print 'Done'
img = Image.fromarray(np.dstack((r8bit,g8bit,b8bit)))
print 'Making image'
img.save('final_asinh_{}_{}.jpg'.format(lo,hi))
print 'Image made'
In [85]:
In [50]:
# pctscale(g)
print g[4685,7011]
In [ ]: