function imagelevels, img,level=level,plevel=plevel,smoothpix=smoothpix

mn=float(min(img,max=mx))
if n_elements(smoothpix) gt 0 then smt=smoothpix(0) else smt=2

if smt gt 1 then begin
 img1=median(img,2)
 img1=smooth(img1,smt)
end else img1=img

if n_elements(level) gt 0 then clev=level else begin
 if n_elements(plevel) gt 0 then clev=plevel else clev=[10.,30.,50.,70.,90.]
 if mn*mx lt 0 then  begin
  clev=[-clev,0.,clev]/100. 
  mx=max([abs(mx),abs(mn)])
  mn=0.
 endif else clev=clev/100.
 clev=clev*(mx-mn)+mn
end

clev=clev(sort(clev))
clev=clev(uniq(clev))

img2=img & img2(*,*)=0.
for i=0,n_elements(clev)-1 do img2=img2+(img1 gt clev(i))

return,img2
end