REGRESS and sky background [message #71662] |
Mon, 05 July 2010 17:06 |
Gray
Messages: 253 Registered: February 2010
|
Senior Member |
|
|
Hi all,
I'm baffled with how one of my programs is acting, and would love some
insight, if there is any to be had.
The routine is designed to fit the sky background image (in my case, a
128x128 subdivision of a larger astronomical image) to a plane (Ax+By
+C) using REGRESS. My subdivisions are small enough that I think a
plane is a pretty good approximation; the idea is to do a 3.5-sigma
mean clip to remove sources, then regress the sky pixels to a plane
and subtract the plane, and iterate until the fitted plane reaches 0.
The problem is that it seems the slope of the background increases
with increasing iterations, which it theoretically should not do.
Here's my general algorithm; I actually use a different mean clipping
routine, but astrolib's MEANCLIP gives the same (unwanted) results.
Take a look and tell me what you think. Thanks!
--Gray
FUNCTION find_skybg, image, sigma
img = image
s = size(img,/dim)
lx = rebin(indgen(s[0]),s[0],s[1]) ;x and y coordinates
ly = rebin(indgen(1,s[1]),s[0],s[1]) ;to construct bg plane
abc = fltarr(3)
iter = 0
repeat begin
meanclip, img, m, subs=clips, clipsig=3.5 ;don't care about mean,
just clips
xy = array_indices(s,clips,/dim)
ab = reform(regress(xy,img[clips],const=c))
sigma = stddev(img[clips])
abc += [ab,c]
bg = ab[0]*lx+ab[1]*ly+c
img -= bg
iter++
endrep until (iter ge 10 or total([ab,c]/abc le 0.02) eq 3)
background = abc[0]*lx+abc[1]*ly+abc[2]
return, background
endfor
|
|
|