IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Nov 19, 2008, 3:28:01 PM (17 years ago)
Author:
eugene
Message:

import visualizations from cnb_branch_20081011

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psastro/src/psastroRemoveClumps.c

    r17109 r20805  
    1111    float Ymax = obj->FP->y;
    1212    for (int i = 0; i < input->n; i++) {
    13         obj = (pmAstromObj *)input->data[i];
    14         if (!isfinite(obj->FP->x)) continue;
    15         if (!isfinite(obj->FP->y)) continue;
    16         Xmin = PS_MIN (Xmin, obj->FP->x);
    17         Xmax = PS_MAX (Xmax, obj->FP->x);
    18         Ymin = PS_MIN (Ymin, obj->FP->y);
    19         Ymax = PS_MAX (Ymax, obj->FP->y);
     13        obj = (pmAstromObj *)input->data[i];
     14        if (!isfinite(obj->FP->x)) continue;
     15        if (!isfinite(obj->FP->y)) continue;
     16        Xmin = PS_MIN (Xmin, obj->FP->x);
     17        Xmax = PS_MAX (Xmax, obj->FP->x);
     18        Ymin = PS_MIN (Ymin, obj->FP->y);
     19        Ymax = PS_MAX (Ymax, obj->FP->y);
    2020    }
    2121
     
    2727    // accumulate 2D histogram in image
    2828    for (int i = 0; i < input->n; i++) {
    29         obj = (pmAstromObj *)input->data[i];
    30         if (!isfinite(obj->FP->x)) continue;
    31         if (!isfinite(obj->FP->y)) continue;
    32         int Xi = PS_MIN (PS_MAX((obj->FP->x - Xmin) / scale + 5, 0), count->numCols);
    33         int Yi = PS_MIN (PS_MAX((obj->FP->y - Ymin) / scale + 5, 0), count->numRows);
    34         count->data.U32[Yi][Xi] ++;
     29        obj = (pmAstromObj *)input->data[i];
     30        if (!isfinite(obj->FP->x)) continue;
     31        if (!isfinite(obj->FP->y)) continue;
     32        int Xi = PS_MIN (PS_MAX((obj->FP->x - Xmin) / scale + 5, 0), count->numCols);
     33        int Yi = PS_MIN (PS_MAX((obj->FP->y - Ymin) / scale + 5, 0), count->numRows);
     34        count->data.U32[Yi][Xi] ++;
    3535    }
    3636
     
    3838    psStats *stats = psStatsAlloc (PS_STAT_MAX | PS_STAT_MAX | PS_STAT_SAMPLE_MEDIAN | PS_STAT_SAMPLE_STDEV);
    3939    if (!psImageStats(stats, count, NULL, 0)) {
    40         psError(PS_ERR_UNKNOWN, false, "Unable to get image statistics.\n");
    41         psFree(stats);
    42         psFree(count);
    43         return NULL;
     40        psError(PS_ERR_UNKNOWN, false, "Unable to get image statistics.\n");
     41        psFree(stats);
     42        psFree(count);
     43        return NULL;
    4444    }
    4545
    4646    if (stats->max < 1) {
    47         psError(PS_ERR_UNKNOWN, false, "no valid sources in image\n");
    48         psFree(stats);
    49         psFree(count);
    50         return NULL;
     47        psError(PS_ERR_UNKNOWN, false, "no valid sources in image\n");
     48        psFree(stats);
     49        psFree(count);
     50        return NULL;
    5151    }
    5252
     
    5555    psTrace ("psastro", 4, "skipping stars in cells with more than %f stars\n", limit);
    5656
     57    psastroVisualPlotRemoveClumps (input, count, scale, limit);
     58
    5759    // find and exclude objects in bad pixels
    5860    psArray *output = psArrayAllocEmpty (input->n);
    5961    for (int i = 0; i < input->n; i++) {
    60         obj = (pmAstromObj *)input->data[i];
    61         if (!isfinite(obj->FP->x)) continue;
    62         if (!isfinite(obj->FP->y)) continue;
    63         int Xi = PS_MIN (PS_MAX((obj->FP->x - Xmin) / scale + 5, 0), count->numCols);
    64         int Yi = PS_MIN (PS_MAX((obj->FP->y - Ymin) / scale + 5, 0), count->numRows);
    65         if (count->data.U32[Yi][Xi] > limit) continue;
    66         psArrayAdd (output, 16, obj);
     62        obj = (pmAstromObj *)input->data[i];
     63        if (!isfinite(obj->FP->x)) continue;
     64        if (!isfinite(obj->FP->y)) continue;
     65        int Xi = PS_MIN (PS_MAX((obj->FP->x - Xmin) / scale + 5, 0), count->numCols);
     66        int Yi = PS_MIN (PS_MAX((obj->FP->y - Ymin) / scale + 5, 0), count->numRows);
     67        if (count->data.U32[Yi][Xi] > limit) continue;
     68        psArrayAdd (output, 16, obj);
    6769    }
    6870
     
    7779for (int iy = 0; iy < count->numRows; iy++) {
    7880    for (int ix = 0; ix < count->numCols; ix++) {
    79         if (count->data.U32[iy][ix] > limit) {
    80             psPlane *pixel = psPlaneAlloc();
    81             pixel->x = ix;
    82             pixel->y = iy;
    83             psArrayAdd (badpix, 16, pixel);
    84             psFree (pixel);
    85         }
     81        if (count->data.U32[iy][ix] > limit) {
     82            psPlane *pixel = psPlaneAlloc();
     83            pixel->x = ix;
     84            pixel->y = iy;
     85            psArrayAdd (badpix, 16, pixel);
     86            psFree (pixel);
     87        }
    8688    }
    8789}
Note: See TracChangeset for help on using the changeset viewer.