function sf_gaussb,data,original=original

ImSize = size(data)
WSize=ImSize(1)
YSize=ImSize(2)
If ImSize(0) eq 3 then D3Size=ImSize(3) else D3Size=1

data_out = fltarr(4,YSize,D3Size)

for ik = 0,D3Size-1 do begin
 im = data(*,*,ik)
 im1=fltarr(4,YSize)

 imr=float(im)
 back=total(im([0,1,2,WSize-3,WSize-2,WSize-1],*), 1)/6.
 for j=0,WSize-1 do imr(j,*)=(im(j,*)-back)>0

  hsum=replicate(0.,WSize+1, YSize)
  jleft=fltarr(YSize)
  jrigt=fltarr(YSize)
  jmid=fltarr(YSize)
  for j=0,WSize-1 do hsum(j+1,*)=hsum(j,*)+ imr(j, *)
  h1=reform(hsum(WSize, *))
  pos = where(h1 gt 0., count)
 if count lt 1 then goto, trivial
   niv=0.25*h1(pos)
   j=0
   for jj=0, WSize do  j=j+(hsum(jj,pos) le niv)
   jleft(pos)= (j-1.5+(niv-hsum(j-1,pos)) $
           /(hsum(j,pos)-hsum(j-1,pos)))
   niv=0.5*h1(pos)
   j=0
   for jj=0, WSize do  j=j+(hsum(jj,pos) le niv) 
   jmid(pos)= (j-1.5+(niv-hsum(j-1,pos)) $
           /(hsum(j,pos)-hsum(j-1,pos)))
   niv=0.75*h1(pos)
   j=0
   for jj=0, WSize do  j=j+(hsum(jj,pos) le niv)
   jrigt(pos)= (j-1.5+(niv-hsum(j-1,pos)) $
           /(hsum(j,pos)-hsum(j-1,pos)))
 trivial:

  neg = where(h1 le 0., count)
   if count gt 0 then begin
   jleft(neg)=WSize/2.-0.5
   jmid(neg)=WSize/2.
   jrigt(neg)=WSize+0.5
   endif
  high=reform(h1)
  my=jmid
  sig=(jrigt-jleft)/2.

  im1(0,*)=scmp_near2(back)
  im1(1,*)=scmp_near2(high*0.2690865/sig)
  im1(2,*)=scmp_near2(100.*my)
  im1(3,*)=scmp_near2(100.*sig)

  data_out(*,*,ik)=im1
endfor

if not keyword_set(original) then begin
   data_out(2,*,*)=temporary(data_out(2,*,*)) / 100.
   data_out(3,*,*)=temporary(data_out(3,*,*)) /0.6745 /100.
endif

return,data_out

end