include include include include include # RSDPUNIX -- Convert CDBS/FOC background files to RSDP format images # # D. Giaretta, 01-Aug-1987 Original SPP version # Phil Hodge, 10-Jul-1991 get sampoff,lineoff instead of sampbeg,linebeg procedure rsdpunix() char input[SZ_FNAME] char output[SZ_FNAME] real threshold real fillval char template[SZ_FNAME] pointer in, imgl2r() pointer out, impl2r() pointer temppt real clgetr() pointer immap() int i, npix, nlines, line pointer i_l, o_l real rtemp, datamin, datamax char temp[SZ_FNAME] int imgeti(), nowhite(), junk begin call clgstr("input", input, SZ_FNAME) junk = nowhite(input, input, SZ_FNAME) in = immap( input, READ_ONLY, NULL) call clgstr("output", output, SZ_FNAME) junk = nowhite(output, output, SZ_FNAME) threshold = clgetr("threshold") fillval = clgetr("fillval") call clgstr( "template", template, SZ_FNAME) temppt = immap( template, READ_ONLY, 0) out = immap( output, NEW_COPY, temppt) IM_LEN(out, 1) = IM_LEN(in, 1) IM_LEN(out, 2) = IM_LEN(in, 2) IM_PIXTYPE(out) = IM_PIXTYPE(in) npix = IM_LEN(out,1) nlines = IM_LEN(out, 2) datamin = INDEFR datamax = 0 for ( line =1; line <= nlines; line=line+1) { i_l = imgl2r(in, line) o_l = impl2r(out, line) for (i=1; i<=npix; i=i+1) { rtemp = Memr[ i_l+i-1] if ( abs(rtemp) < EPSILON || abs(rtemp) > threshold ) rtemp = fillval else { rtemp = 1.0/rtemp if ( rtemp > datamax ) datamax = rtemp if ( rtemp < datamin ) datamin = rtemp } Memr[o_l+i-1] = rtemp } } # label the output image call imgstr( in, "OPTCRLY", temp, SZ_FNAME) call imastr( out, "OPTCRLY", temp) call imgstr( in, "CAMMODE", temp, SZ_FNAME) call imastr( out, "CAMMODE", temp) call imaddi( out, "OPTELT1", imgeti( in, "OPTELT1") ) call imaddi( out, "OPTELT2", imgeti( in, "OPTELT2") ) call imaddi( out, "OPTELT3", imgeti( in, "OPTELT3") ) call imaddi( out, "OPTELT4", imgeti( in, "OPTELT4") ) call imaddi( out, "SAMPBEG", imgeti( in, "SAMPOFF") + 1) call imaddi( out, "LINEBEG", imgeti( in, "LINEOFF") + 1) call imastr( out, "INSTRUME", "FOC") call imastr( out, "FILETYPE", "UNIFORM DE") call add_headname( out, output, datamin, datamax) call imunmap( in) call imunmap(out) call imunmap(temppt) end