Beispiel #1
0
    def ott_rflat_ima(self, deshape=0):
        npix = Interferometer.N_PIXEL
        pscale = OttParameters.pscale
        rmap = self.smap.copy()
        roffset = (self._ott.referenceMirrorSlider.getPositionInM()-self._ott.parabolaSlider.getPositionInM())*pscale
        rflat_radius = OttParameters.rflat_radius
        if abs(roffset)-rflat_radius*pscale < npix[1]/2:
            rmask = np.ones([npix[0], npix[1]])
            rmask = geo.draw_mask(self.mask*0, npix[0]/2, npix[1]/2+roffset, rflat_radius*pscale-1)
            if deshape == 1:
                #rima = read_refflat_deformation(1.)
                #rmap[npix[0]/2-rflat_radius*pscale-1, npix[1]/2-rflat_radius*pscale-1] = rima
                pass

            #idr   = where(rmask[ott.idx])
            ww = np.dot(self.zmat, self.zmx_refflatpos2z())
            for i in range(0, 5):
                rmap[self.parmask == True] = rmap[self.parmask == True] + ww[:, i]*(self._ott.referenceMirror.getPositionInM())[i]
                #rmap[ott.idx[idr]] += ww[i,idr]* ott.refflat[i]

            rmap = rmap*rmask
            #cm = edge_erode(erode=2, rmask)
            #idc = where((cm+rmask) eq 1)

        return rmap, rmask
Beispiel #2
0
    def ott_view(self, show=None):
        #pixscale = 200. #pix/m
        #parod = 1.44
        #rmod = 0.6
        m4 = self.m4pupil.copy()
        pixscale = OttParameters.PIXEL_SCALE
        parxy = [self._ott.parabolaSlider.getPositionInM()*pixscale, 0]
        refmxy = [self._ott.referenceMirrorSlider.getPositionInM()*pixscale, 0]
        ang = (-30-self._ott.angleRotator.getPosition())*np.pi/180
        rmat = np.array([[np.cos(ang), np.sin(ang)], [-np.sin(ang), np.cos(ang)]])
        parxy = rmat.dot(parxy)
        refmxy = rmat.dot(refmxy)
        ss = np.array(np.shape(m4))
        m4c = (ss-1)/2
        parcircle = geo.draw_mask(m4*0, parxy[0]+m4c[0], parxy[1]+m4c[1], OttParameters.parab_radius*pixscale)
        refmcircle = geo.draw_mask(m4*0, refmxy[0]+m4c[0], refmxy[1]+m4c[1], OttParameters.rflat_radius*pixscale)
        ottimg = m4+parcircle+refmcircle
        if show is not None:
            plt.imshow(ottimg)

        return ottimg
Beispiel #3
0
    def ott_parab_ima(self):
        npix = Interferometer.N_PIXEL
        smap = (self.smap).copy()
        ww = np.dot(self.zmat, self.zmx_parpos2z()) 

        for i in range(0, 5):
            smap[self.parmask == True] = smap[self.parmask == True] + ww[:, i]*(self._ott.parabola.getPositionInM())[i]

        mask = geo.draw_mask(self.mask, npix[0]/2, npix[1]/2,
                             OttParameters.fold_radius*OttParameters.pscale)
        smap = smap * mask
        return smap
Beispiel #4
0
    def iff_images(self, zonal_modal):
        a = np.zeros((21, 21))
        b = geo.draw_mask(a, 10, 10, 10)

        segmask1 = np.ma.make_mask(self.segmask1)

        if zonal_modal == 0:
            s1 = segmask1.copy()
            s1 = s1.astype(float)
            b[segmask1 == True] = self.ifmat[3, :]
            return b
        elif zonal_modal == 1:
            comm = np.dot(self.ifmat.T, self.vmat[:, 3])
            s1 = segmask1.copy()
            s1 = s1.astype(float)
            s1[segmask1 == True] = comm
            return s1
Beispiel #5
0
 def testGeometry(self):
     img = np.random.rand(500, 500)
     masked_ima = geo.draw_mask(img, 250, 250, 50)
     geo.qpupil(masked_ima)
     geo.rotate(img, 30)
Beispiel #6
0
    def ott_smap(self, offset=None, quant=None, show=0):
        npix = Interferometer.N_PIXEL
        pmap = self.ott_parab_ima()
        m4map, m4smask = self.ott_m4_ima()
        mmask = m4smask * self.mask
        smap = (pmap + m4map) * mmask
        if offset is not None:
            smap = smap+offset

        #fullmask  = maskm
        roffset = (self._ott.referenceMirrorSlider.getPositionInM()-
                   self._ott.parabolaSlider.getPositionInM()) * OttParameters.pscale
        draw_ref = (abs(roffset)-OttParameters.rflat_radius*OttParameters.pscale < npix[1]/2)
        if draw_ref == 1:
            rmap, rmask = self.ott_rflat_ima()
            #smap[ott.idx[idr]] = rmap[ott.idx[idr]]+pmap[ott.idx[idr]]
            #smap[idc] = 0
            #fullmask = maskm+maskr
            #fullmask[np.where(fullmask)] = 1
            #fullmask[idc] = 0

        rmap = (rmap + pmap)*rmask
        romask = geo.draw_mask(self.mask*0, npix[0]/2, npix[1]/2+roffset,
                               OttParameters.rflat_radius*OttParameters.pscale -
                               OttParameters.rflat_cell*OttParameters.pscale)
        romask = romask+rmask
        irmask = -rmask+1

        smap1 = smap*irmask+rmap
        smap1 = smap1 + self.offset  #this is to be verified
        smask = rmap + mmask
        smask[smask != 0] = 1
        smask[romask == 1] = 0
        smap1 = smap1*smask
        if quant == 1:
            print('add quantization')
           #ToDo smap = add_quantization(smap, bad=fullmask, quant=ott.interf.quantization):

        #mask = fullmask
        #cir = qpupil(fullmask, xx=xx, yy=yy,nocircle=1)
        """
        ToDo
        if keyword_set(show) then begin
          smap1 = smap

          out = where(fullmask eq 0)
          smap1[out] = max(smap1[where(fullmask)])
          wset, 0
          image_show, /As,  smap1;, titl='WF (?) map'
          wset, 1
          gg = ott_geometry(/sh)
          wset, 3
          display_data,  mirror.gpos[*], mirror.coord, spot_mag=2, /no_n,/Sh, back=max(mirror.gpos);image_Show, /As, /sh, mirror.m4ima
          if keyword_set(fringes) then begin
            wset, 2
            loadct, 0,/silent
            interf = pwrap(smap, lambda=ott.interf.lambda, optfact=1, bad=mask, detector_mask=detmask)*fullmask

            out = where(fullmask eq 0)

            interf[0:ott.interf.npix[0]/5,4.5*ott.interf.npix[1]/5:ott.interf.npix[1]-1]=-1
            interf[4*ott.interf.npix[0]/5:ott.interf.npix[0]-1,4.5*ott.interf.npix[1]/5:ott.interf.npix[1]-1]=1

            image_show, /As, interf, min_v=-1, max_v=1
            loadct, 3,/silent
          endif
      endif
    """
        if show != 0:
            plt.clf()
            plt.subplot(131)
            plt.imshow(self.ott_view())
            plt.subplot(132)
            plt.imshow(smap1, cmap='hot')
            plt.colorbar()
            plt.subplot(133)
            plt.imshow(self.pwrap(smap1, smask), cmap='gray')
        return smap1, smask