IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 14773


Ignore:
Timestamp:
Sep 7, 2007, 10:19:05 AM (19 years ago)
Author:
magnier
Message:

fixed small errors in the value of nX,Yskip; added GetRuff, GetFine APIs

Location:
branches/eam_branch_20070830/psLib/src/imageops
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branch_20070830/psLib/src/imageops/psImageBinning.c

    r12699 r14773  
    88 *  @author Eugene Magnier, IfA
    99 *
    10  *  @version $Revision: 1.2 $ $Name: not supported by cvs2svn $
    11  *  @date $Date: 2007-03-31 02:59:41 $
     10 *  @version $Revision: 1.2.8.1 $ $Name: not supported by cvs2svn $
     11 *  @date $Date: 2007-09-07 20:19:02 $
    1212 *
    1313 *  Copyright 2007 Institute for Astronomy, University of Hawaii
     
    4444    assert (binning->nYbin > 0);
    4545
     46    // force nXruff*nXbin > nXfine
    4647    binning->nXruff = binning->nXfine / binning->nXbin;
    4748    if (binning->nXfine % binning->nXbin) binning->nXruff ++;
    4849
     50    // force nYruff*nYbin > nYfine
    4951    binning->nYruff = binning->nYfine / binning->nYbin;
    5052    if (binning->nYfine % binning->nYbin) binning->nYruff ++;
     
    5658        break;
    5759      case PS_IMAGE_BINNING_CENTER:
    58         binning->nXoff = ((binning->nXruff * binning->nXbin) % binning->nXfine) / 2;
    59         binning->nYoff = ((binning->nYruff * binning->nYbin) % binning->nYfine) / 2;
     60        binning->nXoff = (binning->nXruff * binning->nXbin - binning->nXfine) / 2;
     61        binning->nYoff = (binning->nYruff * binning->nYbin - binning->nYfine) / 2;
    6062        break;
    6163      case PS_IMAGE_BINNING_RIGHT:
    62         binning->nXoff = ((binning->nXruff * binning->nXbin) % binning->nXfine);
    63         binning->nYoff = ((binning->nYruff * binning->nYbin) % binning->nYfine);
     64        binning->nXoff = (binning->nXruff * binning->nXbin - binning->nXfine);
     65        binning->nYoff = (binning->nYruff * binning->nYbin - binning->nYfine);
    6466        break;
    6567      default:
     
    7880void psImageBinningSetSkip(psImageBinning *binning, psImage *image) {
    7981
    80     binning->nXskip = image->col0 - binning->nXoff;
    81     binning->nYskip = image->row0 - binning->nYoff;
     82    if (image != NULL) {
     83        binning->nXskip = image->col0 - binning->nXoff;
     84        binning->nYskip = image->row0 - binning->nYoff;
     85    } else {
     86        binning->nXskip = 0 - binning->nXoff;
     87        binning->nYskip = 0 - binning->nYoff;
     88    }
    8289    return;
    8390}
     
    9097    assert (binning->nYruff > 0);
    9198
     99    // force nXruff*nXbin > nXfine
    92100    binning->nXbin = binning->nXfine / binning->nXruff;
    93101    if (binning->nXfine % binning->nXruff) binning->nXbin ++;
    94102
     103    // force nYruff*nYbin > nYfine
    95104    binning->nYbin = binning->nYfine / binning->nYruff;
    96105    if (binning->nYfine % binning->nYruff) binning->nYbin ++;
     
    102111        break;
    103112      case PS_IMAGE_BINNING_CENTER:
    104         binning->nXoff = (binning->nXfine % binning->nXbin) / 2;
    105         binning->nYoff = (binning->nYfine % binning->nYbin) / 2;
     113        binning->nXoff = (binning->nXruff * binning->nXbin - binning->nXfine) / 2;
     114        binning->nYoff = (binning->nYruff * binning->nYbin - binning->nYfine) / 2;
    106115        break;
    107116      case PS_IMAGE_BINNING_RIGHT:
    108         binning->nXoff = (binning->nXfine % binning->nXbin);
    109         binning->nYoff = (binning->nYfine % binning->nYbin);
     117        binning->nXoff = (binning->nXruff * binning->nXbin - binning->nXfine);
     118        binning->nYoff = (binning->nYruff * binning->nYbin - binning->nYfine);
    110119        break;
    111120      default:
     
    137146}
    138147
    139 /*** pmFPACopy.c:binRegion had the following logic ***/
    140 # if (0)
    141     // Want to include the lower bound: 1 binned by 4 --> 0; 3 binned by 4 --> 0; 4 binned by 4 --> 1
    142     region->x0 = (int)(region->x0 / xBin);
    143     region->y0 = (int)(region->y0 / yBin);
    144     // Want to exclude the upper bound: 4 binned by 4 --> 1; 5 binned by 4 --> 2; 7 binned by 4 --> 2
    145     region->x1 = (int)((region->x1 + xBin - 1) / xBin);
    146     region->y1 = (int)((region->y1 + yBin - 1) / yBin);
    147 # endif
    148148
    149 /*
    150  * dvoMakeCorrUnbin ** OK
    151  * psphotImageMedian ** OK?
    152  * psphotMagnitudes ** OK
    153  * pmFPACopy ** OK
    154  * pmConceptsUpdate ** OK
    155  * pmFPAMosaic ** OK (needs more use of psImageBinning functions)
    156  * psImageUnbin
    157  * psImageRebin
    158  * ppImageRebinReadout
    159  */
     149// convert the fine coordinate to the ruff coordinate
     150float psImageBinningGetRuffX (psImageBinning *binning, float xFine) {
     151    float xRuff = (xFine - binning->nXskip)/binning->nXbin;
     152    return xRuff;
     153}
     154float psImageBinningGetRuffY (psImageBinning *binning, float yFine) {
     155    float yRuff = (yFine - binning->nYskip)/binning->nYbin;
     156    return yRuff;
     157}
    160158
     159// convert the ruff coordinate to the fine coordinate
     160float psImageBinningGetFineX (psImageBinning *binning, float xRuff) {
     161    float xFine = xRuff * binning->nXbin + binning->nXskip;
     162    return xFine;
     163}
     164float psImageBinningGetFineY (psImageBinning *binning, float yRuff) {
     165    float yFine = yRuff * binning->nYbin + binning->nYskip;
     166    return yFine;
     167}
  • branches/eam_branch_20070830/psLib/src/imageops/psImageBinning.h

    r14452 r14773  
    88 *  @author Eugene Magnier, IfA
    99 *
    10  *  @version $Revision: 1.2 $ $Name: not supported by cvs2svn $
    11  *  @date $Date: 2007-08-09 01:40:07 $
     10 *  @version $Revision: 1.2.2.1 $ $Name: not supported by cvs2svn $
     11 *  @date $Date: 2007-09-07 20:19:05 $
    1212 *
    1313 *  Copyright 2007 Institute for Astronomy, University of Hawaii
     
    5151psRegion psImageBinningSetRuffRegion (psImageBinning *binning, psRegion fineRegion);
    5252
     53float psImageBinningGetRuffX (psImageBinning *binning, float xFine);
     54float psImageBinningGetRuffY (psImageBinning *binning, float yFine);
     55float psImageBinningGetFineX (psImageBinning *binning, float xRuff);
     56float psImageBinningGetFineY (psImageBinning *binning, float yRuff);
     57
    5358/// @}
    5459#endif // #ifndef PS_IMAGE_GEOM_MANIP_H
Note: See TracChangeset for help on using the changeset viewer.