IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 43038


Ignore:
Timestamp:
May 28, 2026, 9:38:40 PM (7 weeks ago)
Author:
eugene
Message:

add code to mask bad cells based on their overscan values compared with a reference table

Location:
trunk
Files:
3 added
18 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippconfig/recipes/filerules-mef.mdc

    r42844 r43038  
    7272PPIMAGE.PATTERN.DEAD.CELLS INPUT @DETDB        FPA        PATTERN.DEAD.CELLS
    7373PPIMAGE.NEWNONLIN       INPUT    @DETDB        CHIP       NEWNONLIN
     74PPIMAGE.VALID.OVERSCAN  INPUT    @DETDB        FPA        VALID.OVERSCAN
    7475
    7576## Files used by ppMerge
  • trunk/ippconfig/recipes/filerules-simple.mdc

    r42844 r43038  
    3232PPIMAGE.LINEARITY         INPUT    @DETDB        CHIP       LINEARITY
    3333PPIMAGE.NEWNONLIN         INPUT    @DETDB        CHIP       NEWNONLIN
     34PPIMAGE.VALID.OVERSCAN    INPUT    @DETDB        FPA        VALID.OVERSCAN
    3435
    3536FPCAMERA.OUTPUT          STR FPCAMERA.OUT.CMF
  • trunk/ippconfig/recipes/filerules-split.mdc

    r42844 r43038  
    5656PPIMAGE.PATTERN.ROW.AMP   INPUT    @DETDB        FPA        PATTERN.ROW.AMP
    5757PPIMAGE.PATTERN.DEAD.CELLS INPUT   @DETDB        FPA        PATTERN.DEAD.CELLS
     58PPIMAGE.VALID.OVERSCAN     INPUT   @DETDB        FPA        VALID.OVERSCAN
    5859
    5960## Files used by psvideophot
  • trunk/ippconfig/recipes/ppImage.config

    r43022 r43038  
    1919MASK.BURNTOOL      BOOL    FALSE           # Mask potential burntool trails
    2020MASK.AUXMASK       BOOL    FALSE           # augment mask with auxillary mask
     21MASK.BAD.OVERSCAN  BOOL    FALSE           # augment mask with auxillary mask
    2122AUX.VIDEO.MASK     STR     NULL            # name of aditional masking for video cells
    2223APPLY.BURNTOOL     BOOL    FALSE           # apply burntool coorection
  • trunk/ppImage/src/Makefile.am

    r42382 r43038  
    3333        ppImageMosaicBackground.c \
    3434        ppImageMaskStats.c \
     35        ppImageMaskBadOverscan.c \
    3536        ppImagePhotom.c \
    3637        ppImageAstrom.c \
  • trunk/ppImage/src/ppImage.h

    r42890 r43038  
    3636    bool doNonLin;                      // Non-linearity correction
    3737    bool doNewNonLin;                   // Non-linearity correction
     38    bool doMaskBadOverscan;             // Mask cells/readouts with out-of-range overscan
    3839    bool doOverscan;                    // Overscan subtraction
    3940    bool doNoiseMap;                    // Bias subtraction
     
    180181bool ppImageDetrendBias(pmReadout *inputReadout, pmReadout *bias, pmReadout *dark, ppImageOptions *options);
    181182
     183bool ppImageMaskBadOverscan(pmReadout *input, pmConfig  *config);
     184
    182185bool ppImageDetrendNewNonLinear(pmReadout *input, pmFPAview *linearity, pmConfig *config);
    183186
  • trunk/ppImage/src/ppImageArguments.c

    r42382 r43038  
    2626    fprintf(stderr, "\t-linearity/-linearlist: linearity correction file.\n");
    2727    fprintf(stderr, "\t-newnonlin/-newnonlinlist: non-linearity correction file (v 2023.01).\n");
     28    fprintf(stderr, "\t-valid-overscan/-valid-overscan-list: overscan valid range file.\n");
    2829    fprintf(stderr, "\n");
    2930    exit (2);
     
    118119    pmConfigFileSetsMD (config->arguments, &argc, argv, "LINEARITY", "-linearity", "-linearlist");
    119120    pmConfigFileSetsMD (config->arguments, &argc, argv, "NEWNONLIN", "-newnonlin", "-newnonlinlist");
     121    pmConfigFileSetsMD (config->arguments, &argc, argv, "VALID.OVERSCAN", "-valid-overscan", "-valid-overscan-list");
    120122    pmConfigFileSetsMD (config->arguments, &argc, argv, "PATTERN.ROW.AMP", "-pattern-row-amplitude", "-not-defined");
    121123    pmConfigFileSetsMD (config->arguments, &argc, argv, "PATTERN.DEAD.CELLS", "-pattern-dead-cells", "-not-defined");
  • trunk/ppImage/src/ppImageDetrendFree.c

    r42340 r43038  
    1515    "PPIMAGE.LINEARITY",
    1616    "PPIMAGE.NEWNONLIN",
     17    "PPIMAGE.VALID.OVERSCAN",
    1718    NULL
    1819};
  • trunk/ppImage/src/ppImageDetrendReadout.c

    r42964 r43038  
    167167    }
    168168
     169    // Mask bad cells based on the overscan values
     170    if (options->doMaskBadOverscan) {
     171      if (!ppImageMaskBadOverscan(input, config)) {
     172        psError(PS_ERR_UNKNOWN, false, "Unable to mask readout based on overscan");
     173        psFree(detview);
     174        return(false);
     175      }
     176    }
     177
    169178    // measure the overscan-subtracted readoutBackground here (or subtract the overscan value?)
    170179    // XXX this is the measurements and should be independent of the pattern masking
  • trunk/ppImage/src/ppImageDetrendRecord.c

    r42340 r43038  
    7575    detrendRecord(options->doFringe,   detrend, config, view, "PPIMAGE.FRINGE",   "DETREND.FRINGE",   "Fringe filename");
    7676
    77     detrendRecord(options->doNonLin,    detrend, config, view, "PPIMAGE.LINEARITY","DETREND.NONLIN",   "Non-linearity table filename");
    78     detrendRecord(options->doNewNonLin, detrend, config, view, "PPIMAGE.NEWNONLIN","DETREND.NEWNONLIN","Non-linearity table filename (v2023)");
     77    detrendRecord(options->doNonLin,          detrend, config, view, "PPIMAGE.LINEARITY",      "DETREND.NONLIN",         "Non-linearity table filename");
     78    detrendRecord(options->doNewNonLin,       detrend, config, view, "PPIMAGE.NEWNONLIN",      "DETREND.NEWNONLIN",      "Non-linearity table filename (v2023)");
     79    detrendRecord(options->doMaskBadOverscan, detrend, config, view, "PPIMAGE.VALID.OVERSCAN", "DETREND.VALID.OVERSCAN", "Valid Overscan table filename");
    7980
    8081    detrendRecord(options->doDark & options->useVideoDark, detrend, config, view, "PPIMAGE.VIDEODARK", "DETREND.VIDEODARK", "VideoDark filename");
  • trunk/ppImage/src/ppImageOptions.c

    r42890 r43038  
    2929    options->doNonLin        = false;   // Non-linearity correction
    3030    options->doNewNonLin     = false;   // New Non-linearity correction (v2023)
     31    options->doMaskBadOverscan = false; // Mask cells / readouts if overscan is out of bounds
    3132    options->doOverscan      = false;   // Overscan subtraction
    3233    options->doNoiseMap      = false;   // Apply Read Noise Map
     
    182183    }
    183184
     185    // Mask cells/readouts with out-of-range overscan
     186    // nominal overscan ranges are loaded from a file defined in the detrend system or on the command-line
     187    if (psMetadataLookupBool(NULL, recipe, "MASK.BAD.OVERSCAN")) {
     188        options->doMaskBadOverscan = true;
     189    }
     190
    184191    // XXX PAP: The overscan stuff needs to be updated following the reworked API
    185192
  • trunk/ppImage/src/ppImageParseCamera.c

    r42382 r43038  
    117117        if (!ppImageDefineFile(config, input->fpa, "PPIMAGE.NEWNONLIN", "NEWNONLIN",
    118118                               PM_FPA_FILE_NEWNONLIN, PM_DETREND_TYPE_NEWNONLIN)) {
     119            psError(PS_ERR_IO, false, "Can't find a new non-linearity correction source");
     120            psFree(options);
     121            return NULL;
     122        }
     123    }
     124    if (options->doMaskBadOverscan) {
     125        // if the file has been specified on the command-line (-valid-overscan file), then the file
     126        // is identified by the VALID.OVERSCAN entry in config->arguments.  otherwise, load from the
     127        // detrend system as type VALID.OVERSCAN
     128        if (!ppImageDefineFile(config, input->fpa, "PPIMAGE.VALID.OVERSCAN", "VALID.OVERSCAN",
     129                               PM_FPA_FILE_VALID_OVERSCAN, PM_DETREND_TYPE_VALID_OVERSCAN)) {
    119130            psError(PS_ERR_IO, false, "Can't find a new non-linearity correction source");
    120131            psFree(options);
  • trunk/psModules/src/camera/pmFPAfile.c

    r42379 r43038  
    542542    if (!strcasecmp(type, "NEWNONLIN"))  {
    543543      return PM_FPA_FILE_NEWNONLIN;
     544    }
     545    if (!strcasecmp(type, "VALID.OVERSCAN"))  {
     546      return PM_FPA_FILE_VALID_OVERSCAN;
    544547    }
    545548    if (!strcasecmp(type, "ASTROM"))     {
  • trunk/psModules/src/camera/pmFPAfile.h

    r42379 r43038  
    5656    PM_FPA_FILE_LINEARITY,
    5757    PM_FPA_FILE_NEWNONLIN,
     58    PM_FPA_FILE_VALID_OVERSCAN,
    5859    PM_FPA_FILE_EXPNUM,
    5960} pmFPAfileType;
  • trunk/psModules/src/camera/pmFPAfileIO.c

    r42379 r43038  
    286286      case PM_FPA_FILE_LINEARITY:
    287287      case PM_FPA_FILE_NEWNONLIN:
     288      case PM_FPA_FILE_VALID_OVERSCAN:
    288289        break;
    289290      default:
     
    653654      case PM_FPA_FILE_LINEARITY:
    654655      case PM_FPA_FILE_NEWNONLIN:
     656      case PM_FPA_FILE_VALID_OVERSCAN:
    655657      case PM_FPA_FILE_EXPNUM:
    656658        psTrace ("psModules.camera", 5, "closing %s (%s) (%d:%d:%d)\n", file->filename, file->name, view->chip, view->cell, view->readout);
     
    739741      case PM_FPA_FILE_LINEARITY:
    740742      case PM_FPA_FILE_NEWNONLIN:
     743      case PM_FPA_FILE_VALID_OVERSCAN:
    741744        psTrace ("psModules.camera", 5, "nothing to free for %s (%s)\n", file->filename, file->name);
    742745        return true;
     
    900903      case PM_FPA_FILE_LINEARITY:
    901904      case PM_FPA_FILE_NEWNONLIN:
     905      case PM_FPA_FILE_VALID_OVERSCAN:
    902906      case PM_FPA_FILE_EXPNUM:
    903907        psTrace ("psModules.camera", 5, "opening %s (%s) (%d:%d:%d)\n",
  • trunk/psModules/src/detrend/Makefile.am

    r42338 r43038  
    1111        pmNonLinear.c \
    1212        pmNewNonLinear.c \
     13        pmMaskBadOverscan.c \
    1314        pmBias.c \
    1415        pmOverscan.c \
     
    3233        pmNonLinear.h \
    3334        pmNewNonLinear.h \
     35        pmMaskBadOverscan.h \
    3436        pmBias.h \
    3537        pmOverscan.h \
  • trunk/psModules/src/detrend/pmDetrendDB.h

    r42379 r43038  
    4444    PM_DETREND_TYPE_PATTERN_ROW_AMP,
    4545    PM_DETREND_TYPE_PATTERN_DEAD_CELLS,
     46    PM_DETREND_TYPE_VALID_OVERSCAN,
    4647} pmDetrendType;
    4748
  • trunk/psModules/src/psmodules.h

    r42338 r43038  
    7575#include <pmFringeStats.h>
    7676#include <pmMaskBadPixels.h>
     77#include <pmMaskBadOverscan.h>
    7778#include <pmMaskStats.h>
    7879#include <pmNonLinear.h>
Note: See TracChangeset for help on using the changeset viewer.