Option Explicit Dim Iters Dim FWHM Dim StdDev Dim nKern Dim i Dim ie Const mxErosionKF = 9 Const mxUserKF = 10 Const mxGaussianBlur = 11 Dim mxapp ' the MaximDL application object Dim ImageNum '''''''''''' 'Const imagename = "C:\d\sxv\05-06-26\m16HaRGB.tif" 'Dim imagename 'imagename=inputbox("Image name: ") Iters=CInt(inputbox("How many iterations? ")) FWHM=CDbl(inputbox("FWHM? ")) StdDev=CDbl(inputbox("Standard Deviation of Background: ")) '''''''''''''' 'nKern = int((fwhm-2.184)/0.21) nKern = int(fwhm*fwhm/1.8548) Dim image Dim numerator Dim denominator Dim result Dim image_high_vals Dim image_low_vals Dim background Set mxapp = CreateObject("Maxim.Application") Call CreateIE() ie.Document.WriteLn "" + WScript.Scriptname + "" Set image = mxapp.CurrentDocument ie.Document.WriteLn "Processing " & image.DisplayName &"...


" ie.Document.Write "Create image duplicate 'Background'..." Set background = image.Duplicate background.DisplayName = "Background" ie.Document.WriteLn " Blur background..." background.KernelFilter mxErosionKF, 7 ' 7x7 erosion background.KernelFilter mxGaussianBlur, 3 ' Gaussian blur 3 pixel radius background.AddConstant(5*StdDev) ie.Document.WriteLn "done.
" ie.Document.Write "Create image duplicate 'Image high_vals'..." Set image_high_vals = image.Duplicate image_high_vals.DisplayName = "Image high_vals" image_high_vals.Subtract(background) ie.Document.WriteLn "done.
" ie.Document.Write "Create image duplicate 'Image low_vals'..." Set image_low_vals = image_high_vals.Duplicate image_low_vals.DisplayName = "Image low_vals" image_low_vals.Add(background) image_low_vals.Subtract(image) ie.Document.WriteLn "done.
" ie.Document.Write "Create result image 'Deconvolved " + image.DisplayName + "'..." Set result = image_high_vals.Duplicate result.DisplayName = "Deconvolved " + image.DisplayName image.DoNotClose = TRUE result.DoNotClose = TRUE ie.Document.WriteLn "done.
" for ImageNum=1 to Iters ie.Document.Write "Iteration " + CStr(ImageNum) + " of " + CStr(Iters) + "..." Set numerator = image_high_vals.Duplicate Set denominator = result.Duplicate numerator.DisplayName = "Numerator" denominator.DisplayName = "Denominator" for i=1 to nKern denominator.KernelFilter mxUserKF, 12 next numerator.Divide(denominator) for i=1 to nKern numerator.KernelFilter mxUserKF, 12 next result.Multiply(numerator) numerator.Close denominator.Close ie.Document.WriteLn "done.
" next ie.Document.Write "Finalise the result..." result.Add(background) result.Subtract(image_low_vals) image_low_vals.Close image_high_vals.Close background.Close ie.Document.WriteLn "done.
" Dim flag flag = result.SetFITSKey("HISTORY", "Richardson-Lucy/Vanderbei. Iters="+CStr(Iters)+", FWHM="+CStr(fwhm)+", nKern="+CStr(nKern)+", StdDev="+CStr(StdDev)) ie.Document.WriteLn "
Script finished - you can close this window now!" Sub CreateIE() Set ie = WScript.CreateObject("InternetExplorer.Application") Do while ie.Busy ' wait for page to load Loop ie.navigate "About:Blank" ie.height=370 ie.width=500 ie.menubar=0 ie.toolbar=0 ie.statusbar=0 ie.addressbar=0 ie.silent=1 ie.visible=1 End Sub