Viewing contents of file '../idllib/astron/contrib/varosi/code/allpro/border_noise.pro'
;+
; NAME:
;	border_noise
;
; PURPOSE:
;	Determine standard deviation and mean of border pixels in CCD image.
;
; CALLING:
;	border_noise, image, bxu, byu, bsigma, bmean
;
; INPUTS:
;	image = 2-D matrix.
;	bxu = Left & Right column #'s for statistics: [[xL1,xR1],[xL2,xR2]].
;	byu = Bottom & Top row #'s for statistics: [[yB1,yT1],[yB2,yT2]].
;
;	Note: bxy & byu are defined by pro get_CCD_status.
;
; OUTPUTS:
;	bsigma = standard devation of border pixel values.
;	bmean = mean of border pixel values.
;
; EXTERNAL CALLS:
;	function stdev
; HISTORY:
;	Frank Varosi NASA/GSFC 1994.
;-

pro border_noise, image, bxu, byu, bsigma, bmean

	bsigma = 0
	bmean = 0
	sz = size( image )

	if (sz(0) NE 2) OR (N_elements( bxu ) LT 4) then  bxs=[0,0]  else begin
		if max( bxu ) GE sz(1) then return
		bxs = bxu(*,1)-bxu(*,0)
	 endelse

	if (sz(0) NE 2) OR (N_elements( byu ) LT 4) then  bys=[0,0]  else begin
		if max( byu ) GE sz(2) then return
		bys = byu(*,1)-byu(*,0)
	 endelse

	if min( bxs ) GT 0 then begin

		imb0 = image( bxu(0,0):bxu(0,1), * )
		imb1 = image( bxu(1,0):bxu(1,1), * )
		imbx = [ reform( imb0, N_elements(imb0) ), $
			 reform( imb1, N_elements(imb1) )  ]
	 endif else begin

		if (bxs(0) GT 0) then imbx = image( bxu(0,0):bxu(0,1), * )
		if (bxs(1) GT 0) then imbx = image( bxu(1,0):bxu(1,1), * )
		if N_elements( imbx ) GT 0 then $
				imbx = reform( imbx, N_elements(imbx) )
	  endelse

	if min( bys ) GT 0 then begin

		imb0 = image( * , byu(0,0):byu(0,1) )
		imb1 = image( * , byu(1,0):byu(1,1) )
		imby = [ reform( imb0, N_elements(imb0) ), $
			 reform( imb1, N_elements(imb1) )  ]
	 endif else begin

		if (bys(0) GT 0) then imby = image( *, byu(0,0):byu(0,1) )
		if (bys(1) GT 0) then imby = image( *, byu(1,0):byu(1,1) )
		if N_elements( imby ) GT 0 then $
				imby = reform( imby, N_elements(imby) )
	  endelse

	if (N_elements( imbx ) GT 0) AND (N_elements( imby ) GT 0) then begin

		bsigma = stdev( [ imbx, imby ], bmean )

	 endif else begin

		if N_elements( imbx ) GT 0 then bsigma = stdev( imbx, bmean )
		if N_elements( imby ) GT 0 then bsigma = stdev( imby, bmean )
	    endelse
end