dirDEC = '/data/vlt/89_Julia/all/deconv/' dirEDG = '/data/vlt/89_Julia/all/edges/' spawn, 'ls '+dirDEC+'*fits',list nbIm = n_elements(list) doMerge = 0 if keyword_set(doMerge) then goto, j2Merge edgeList = intarr(nbIm) profNameArr = strarr(nbIm) iExpo = replicate({open:{iso:'',jd:0.d}, mid:{iso:'',jd:0.d}, close:{iso:'',jd:0.d}, DIT:0., NDIT:0, delay:0., texp:0.}, nbIm ) for k=0, nbIm-1 do begin ;--- name split=strSplit(list[k],'/',/Extract, count=nbF ) nameIm = split[-1] nameED = strMid(nameIm,0, strlen(nameIm)-5)+'-edges.fits' nameCL = strMid(nameIm,0, strlen(nameIm)-5)+'-clean.fits' ;-read image image = readfits( dirDEC+nameIm, hImage, /Silent ) dims = size(image) ;-detect edge edges = edgesDetection( image, sigmaLoG=1, binning=1, header=hImage ) dimE=size(edges) if dimE[0] eq 2 then begin ;-roi on asteroide ast = polyfillv( edges[0,*], edges[1,*], dims[1],dims[2] ) ;-find background med+std dummy = image*0 dummy[ast]=1 iBkgd = where(dummy eq 0, nbBack) bkgd = image[iBkgd] valid = where(bkgd ge 0.1) bkgd=bkgd[valid] window, 0 cgHistoPlot, bkgd, mininput=0, maxinput=200, $ loc=xArr, histdata=histo gauss = mpFitPeak( xArr, Histo, pGauss ) cgPlot, /OverPlot, xArr, gauss, color='blue' print, pGauss noisy = randomn(1, nbBack)*pGauss[2] + pGauss[1] wdelete, 0 ; cghistoplot, noisy, loc=xArr, histdata=histo ; gauss = mpFitPeak( xArr, Histo, pGauss ) ; cgPlot, /OverPlot, xArr, gauss, color='blue' ; print, pGauss ;-replace bkgd by gaussian noise image[iBkgd]=noisy ;-write cleaned image sxaddpar, hImage, 'HISTORY' , 'Background replaced by gaussian noise' writefits, dirEDG+nameCL, image, hImage ;;-write edge writefits, dirEDG+nameED, edges, hImage edgeList[k] = 1 profNameArr[k] = nameED ;-keep info on epoch ditINFO = getCameraDIT(hImage) iExpo[k].open.iso = ditINFO.start iExpo[k].open.jd = date_conv( ditINFO.start, 'JULIAN' ) iExpo[k].DIT = ditINFO.DIT iExpo[k].NDIT = ditINFO.NDIT iExpo[k].delay = ditINFO.delay iExpo[k].tExp = ditINFO.DIT*ditINFO.NDIT dT = '+'+strtrim(string(iExpo[k].tExp + iExpo[k].delay*(iExpo[k].NDIT-1),format='(F11.6)'),2)+'s' iExpo[k].close.jd = epRead( iExpo[k].open.ISO+dT, /JD ) iExpo[k].close.iso = date_conv( iExpo[k].close.jd,'FITS' ) iExpo[k].mid.jd = (iExpo[k].open.jd+iExpo[k].close.jd)/2. iExpo[k].mid.iso = date_conv( iExpo[k].mid.jd,'FITS' ) endif ; stop endfor j2Merge: ;-compute average edge sel=where( edgeList eq 1, nbEdges ) edge = edgesMerging( dirEDG+profNameArr[sel], sampling=100 ) edgesDisplay, edge, dump=dirEDG+'edges.eps' ;-Find serie mid-observing time tTot = iExpo[*].close.jd - iExpo[*].open.jd midTimeJD = weighted_mean( iExpo[*].mid.jd, tTot ) midTimeISO= date_conv( midTimeJD[0], 'FITS' ) ;-save edge in koala format ssoINFO = voSsoDNet_resolver( 89, dump='/tmp/ssod_binarim.dat' ) ssoINFO = ssoINFO[0] ssoINFO = updateStructure(ssoINFO, {scale:0.0036, obs:'309',label:'',epoch:midTimeISO}) ssoINFO.id='89' ssoINFO.type='aster' ssoINFO.name='Julia' help, ssoINFO, /stru koalaWriteAO, dirEDG+'edge.dat', edge.prof, ssoINFO ; ; cgPlot, edge.prof.t, edge.prof.r ; cgPlot, edge.prof.t, edge.prof.r+edge.prof.s, linestyle=2, /OverPlot ; cgPlot, edge.prof.t, edge.prof.r-edge.prof.s, linestyle=2, /OverPlot ; end