; RAISE_MISSING_BLOCKS ; RAISE_MISSING_BLOCKS sets the values of missing pixel blocks in an EIT ; image to a fixed value or a block from elsehwere in the image (e.g. a dark ; corner). ; D.M. fecit, 1996 January 19. ; Modified, Zarro (SAC/GSC), 4-Jun-98 - added NO_COPY keyword ; function raise_missing_blocks, image, replacement_value = replacement_value, $ fill_block = fill_block, surround = surround, n_block =n_block,no_copy=no_copy ; if keyword_set(no_copy) then a = temporary(image) else a=image ; if keyword_set(replacement_value) then begin replace = 1 & fill = 0 & adjacent = 0 endif else if keyword_set(fill_block) then begin replace = 0 & fill = 1 & adjacent = 0 endif else if keyword_set(surround) then begin replace = 0 & fill = 0 & adjacent = 1 endif else begin print, 'RAISE_MISSING_BLOCKS-E-NOKEY, you must supply a keyword.' return,a end ; x0 = indgen(36)*32 & y0 = x0 sz_a = size(a) & nx = sz_a(1) & ny = sz_a(2) n_bl_x = nx/32 & n_bl_y = ny/32 ; if replace then begin replacement_block = intarr(32, 32) + replacement_value surround = 0 endif else if fill then begin replacement_block = fill_block & surround = 0 end ; n_block = 0 for j = 0, n_bl_y - 1 do begin for i = 0, n_bl_x - 1 do begin if total(a(x0(i):x0(i) + 31, y0(j):y0(j) + 31)) eq 0 then begin if surround then begin background = 0.0 & n_blocks_in_sum = 0 lower_x = max([0, i - 1]) & upper_x = min([i + 1, n_bl_x - 1]) lower_y = max([0, j - 1]) & upper_y = min([j + 1, n_bl_y - 1]) for iy = lower_y, upper_y do begin for ix = lower_x, upper_x do begin nearby_block = total(a(32*ix:32*ix + 31, 32*iy:32*iy + 31)) if nearby_block gt 0 then begin background = background + nearby_block n_blocks_in_sum = n_blocks_in_sum + 1 end end end background = fix(background/(n_blocks_in_sum*1024.)) replacement_block = intarr(32, 32) + background end a(x0(i), y0(j)) = replacement_block n_block = n_block + 1 end end end ; return, a & end
Last revised: - Wed May 9 21:45:06 2007- F. Auchère