Пример #1
0
def segment(fname, bg, datamem, datapath, block=128, nsigma=3.):
    """ Does a segmentation of a single file/frame """
    imo = fabio.open(os.path.join(datapath, fname))  # data
    #    print(fname)
    oname = os.path.split(os.path.splitext(fname)[0])[-1]
    # subtract dark and promote to float32 (without overflow on uint16 I hope)
    cImageD11.uint16_to_float_darksub(datamem.ravel(), bg.ravel(),
                                      imo.data.ravel())
    # check offset and noise
    avg, sig = cImageD11.array_mean_var_cut(datamem, cut=nsigma)
    # remove the frelon lines
    datamem.shape = imo.data.shape[0] * (imo.data.shape[1] // block), block
    cImageD11.frelon_lines(datamem, avg + sig * nsigma)
    datamem.shape = imo.data.shape
    # overwrites datamem (should copy before if you want it
    avg, sig = cImageD11.array_mean_var_cut(datamem, cut=nsigma)
    threshold = avg + sig * nsigma
    # select the pixels to keep:
    rawmask = datamem > threshold
    cleanmask = rawmask.astype(np.int8)
    cImageD11.clean_mask(rawmask.astype(np.int8), cleanmask)
    # save some metadata:
    header = {"filename": fname}
    for k in ("SRCUR", "time_of_day"):
        if k in imo.header:
            header[k] = imo.header[k]
    spar = sparseframe.from_data_mask(cleanmask, datamem, header)
    return spar
Пример #2
0
def binary_clean( mask ):
    """
    Remove the one pixel stuff
    """
    ret = np.zeros(mask.shape, np.int8)
    cImageD11.clean_mask( mask.astype( np.int8 ), ret )
    return ret
Пример #3
0
def segment(fname, bg):
    """ Does a segmentation of a single file/frame """
    imb = fabio.open(fname).data - bg
    imc = fix_frelon_lines(imb, block=128)
    s = sigma_cut(imc)
    m = imc > s
    cleanmask = m.astype(np.int8)
    cImageD11.clean_mask(m.astype(np.int8), cleanmask)
    spar = to_scipy_csr(imc, cleanmask)
    return spar
def segment(fname, bg):
    """ Does a segmentation of a single file/frame """
    imo = fabio.open(fname)
    imb = imo.data.astype(np.float32) - bg
    #print (type(imb))
    imc = fix_frelon_lines(imb, block=128)
    s = sigma_cut(imc)
    m = imc > s
    cleanmask = m.astype(np.int8)
    cImageD11.clean_mask(m.astype(np.int8), cleanmask)
    spar = to_coo(imc, cleanmask, fname)
    spar.sigma_cut = s
    spar.con_labels()
    spar.max_labels()
    print(fname, spar.nmlabel)
    return spar
Пример #5
0
def binary_clean(mask, out=None):
    """
    Remove the one pixel stuff
    """
    if out is None:
        out = np.zeros(mask.shape, np.int8)
    npx = cImageD11.clean_mask(mask.astype(np.int8), out)
    return npx, out
Пример #6
0
 def test1(self):
     testmask = np.zeros(self.src.shape, np.int8)
     npx = cImageD11.clean_mask(self.src.astype(np.int8), testmask)
     if 0:
         print('npx=', npx)
         print(self.src)
         print(self.src.view(dtype=np.int8))
         print(testmask)
         print(testmask.sum())
     self.assertTrue(self.target.sum() == npx)
     self.assertTrue((testmask == self.target).all())
Пример #7
0
 def filt(self, input):
     cln = np.empty(input.shape, 'b')
     npx = cImageD11.clean_mask(input, cln)
     return cln
Пример #8
0

import numpy as np
from ImageD11 import cImageD11


m = np.zeros((10,10),np.int8)
mm = m.copy()
m[5,5:7]=1
m[2,2]=1
cImageD11.clean_mask(m, mm)
print(mm)