📄 max_entropy.pro
字号:
;+; NAME:; MAX_ENTROPY;; PURPOSE:; Deconvolution of data by Maximum Entropy analysis, given the PSF; EXPLANATION:; Deconvolution of data by Maximum Entropy analysis, given the ; instrument point spread response function (spatially invariant psf).; Data can be an observed image or spectrum, result is always positive.; Default is convolutions using FFT (faster when image size = power of 2).;; CALLING SEQUENCE:; for i=1,Niter do begin; Max_Entropy, image_data, psf, image_deconv, multipliers, FT_PSF=psf_ft;; INPUTS:; data = observed image or spectrum, should be mostly positive,; with mean sky (background) near zero.; psf = Point Spread Function of instrument (response to point source,; must sum to unity).; deconv = result of previous call to Max_Entropy,; multipliers = the Lagrange multipliers of max.entropy theory; (on first call, set = 0, giving flat first result).;; OUTPUTS:; deconv = deconvolution result of one more iteration by Max_Entropy.; multipliers = the Lagrange multipliers saved for next iteration.;; OPTIONAL INPUT KEYWORDS:; FT_PSF = passes (out/in) the Fourier transform of the PSF,; so that it can be reused for the next time procedure is called,; /NO_FT overrides the use of FFT, using the IDL function convol() instead.; /LINEAR switches to Linear convergence mode, much slower than the; default Logarithmic convergence mode.; LOGMIN = minimum value constraint for taking Logarithms (default=1.e-9).; EXTERNAL CALLS:; function convolve( image, psf ) for convolutions using FFT or otherwise.; METHOD:; Iteration with PSF to maximize entropy of solution image with; constraint that the solution convolved with PSF fits data image.; Based on paper by Hollis, Dorband, Yusef-Zadeh, Ap.J. Feb.1992,; which refers to Agmon, Alhassid, Levine, J.Comp.Phys. 1979.;; A more elaborate image deconvolution program using maximum entropy is ; available at ; http://sohowww.nascom.nasa.gov/solarsoft/gen/idl/image/image_deconvolve.pro; HISTORY: ; written by Frank Varosi at NASA/GSFC, 1992.; Converted to IDL V5.0 W. Landsman September 1997;-pro max_entropy, data, psf, deconv, multipliers, FT_PSF=psf_ft, NO_FT=noft, $ LINEAR=Linear, LOGMIN=Logmin, RE_CONVOL_IMAGE=Re_conv if N_elements( multipliers ) LE 1 then begin multipliers = data multipliers[*] = 0 endif deconv = exp( convolve( multipliers, psf, FT_PSF=psf_ft, $ /CORREL, NO_FT=noft ) ) totd = total( data ) deconv = deconv * ( totd/total( deconv ) ) Re_conv = convolve( deconv, psf, FT_PSF=psf_ft, NO_FT=noft ) scale = total( Re_conv )/totd if keyword_set( Linear ) then begin multipliers = multipliers + (data * scale - Re_conv) endif else begin if N_elements( Logmin ) NE 1 then Logmin=1.e-9 multipliers = multipliers + $ aLog( ( ( data * scale )>Logmin ) / (Re_conv>Logmin) ) endelseend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -