IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 2911 for trunk/psLib/src/image


Ignore:
Timestamp:
Jan 5, 2005, 11:16:15 AM (22 years ago)
Author:
desonia
Message:

adjusted psKernelGenerate to better match Tonry's code. Also made
mis-match sizes of input vectors an error.

Location:
trunk/psLib/src/image
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/psLib/src/image/psImageConvolve.c

    r2411 r2911  
    55 *  @author Robert DeSonia, MHPCC
    66 *
    7  *  @version $Revision: 1.10 $ $Name: not supported by cvs2svn $
    8  *  @date $Date: 2004-11-24 00:05:54 $
     7 *  @version $Revision: 1.11 $ $Name: not supported by cvs2svn $
     8 *  @date $Date: 2005-01-05 21:16:14 $
    99 *
    10  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     10 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
    1111 */
    1212
     
    130130    }
    131131
    132     // determine the usable length of the shift vector
     132    // sizes match?
    133133    length = xShifts->n;
    134134    if (length != yShifts->n ||
    135135            length != tShifts->n) {
    136         psLogMsg(__func__,PS_LOG_WARN,"Shift vectors found to be different sizes.");
    137         if (yShifts->n < length) {
    138             length = yShifts->n;
    139         }
    140         if (tShifts->n < length) {
    141             length = tShifts->n;
    142         }
     136        psError(PS_ERR_BAD_PARAMETER_SIZE, true,
     137                "Shift vectors can not be of different sizes.");
     138        return NULL;
     139    }
     140
     141    // if no shifts, the kernel is just a 1 at 0,0
     142    if (length < 1) {
     143        result = psKernelAlloc(0,0,0,0);
     144        result->kernel[0][0] = 1;
     145        return result;
    143146    }
    144147
     
    148151        ps##TYPE *xShiftData = xShifts->data.TYPE; \
    149152        ps##TYPE *yShiftData = yShifts->data.TYPE; \
    150         lastX =  xShiftData[length-1]; \
    151         lastY =  yShiftData[length-1]; \
     153        lastX = xShiftData[length-1]; \
     154        lastY = yShiftData[length-1]; \
     155        lastT = tShiftData[length-1]; \
    152156        \
    153157        for (int lcv = 0; lcv < length; lcv++) { \
     
    167171        } \
    168172        \
    169         normalizeTime = 1.0 / (psKernelType)(lastT - tShiftData[0]); \
     173        normalizeTime = 1.0 / (psKernelType)(tShiftData[length-1]); \
    170174        result = psKernelAlloc(xMin,xMax,yMin,yMax); \
    171175        kernel = result->kernel; \
    172176        \
    173         lastT = 0; \
     177        psS32 prevT = 0; \
    174178        for (int i = 0; i < length; i++) { \
    175             t = tShiftData[i] - lastT; \
     179            t = tShiftData[i] - prevT; \
    176180            x = lastX - xShiftData[i]; \
    177181            y = lastY - yShiftData[i]; \
    178182            \
    179             kernel[y][x] += (psKernelType)t * normalizeTime; \
    180             lastT = t; \
     183            kernel[y][x] += (psKernelType)t / (psKernelType)lastT; \
     184            prevT = tShiftData[i]; \
    181185        } \
    182186        break; \
     
    206210                yMax = y; \
    207211            } \
    208             x += xShiftData[lcv]; \
    209             y += yShiftData[lcv]; \
     212            x -= xShiftData[lcv]; \
     213            y -= yShiftData[lcv]; \
    210214            \
    211215        } \
     
    218222        for (psS32 i = length-1; i >= 0; i--) { \
    219223            kernel[y][x] += (psKernelType)(tShiftData[i]) * normalizeTime; \
    220             x += xShiftData[i]; \
    221             y += yShiftData[i]; \
     224            x -= xShiftData[i]; \
     225            y -= yShiftData[i]; \
    222226            \
    223227        } \
  • trunk/psLib/src/image/psImageIO.c

    r2273 r2911  
    77 *  @author Robert DeSonia, MHPCC
    88 *
    9  *  @version $Revision: 1.15 $ $Name: not supported by cvs2svn $
    10  *  @date $Date: 2004-11-04 01:05:00 $
     9 *  @version $Revision: 1.16 $ $Name: not supported by cvs2svn $
     10 *  @date $Date: 2005-01-05 21:16:14 $
    1111 *
    1212 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    3333{
    3434    fitsfile *fptr = NULL;      /* Pointer to the FITS file */
    35     psS32 status = 0;             /* CFITSIO file vars */
     35    psS32 status = 0;           /* CFITSIO file vars */
    3636    psS32 nAxis = 0;
    3737    psS32 anynull = 0;
    38     psS32 bitPix = 0;             /* Pixel type */
     38    psS32 bitPix = 0;           /* Pixel type */
    3939    long nAxes[3];
    4040    long firstPixel[3];         /* lower-left corner of image subset */
     
    160160        fitsDatatype = TBYTE;
    161161        break;
    162         /*    case SBYTE_IMG:                  Not a requirement
    163                 datatype = PS_TYPE_S8;
    164                 fitsDatatype = TSBYTE;
    165                 break;     */
    166         /*    case USHORT_IMG:                 Not a requirement
    167                 datatype = PS_TYPE_U16;
    168                 fitsDatatype = TUSHORT;
    169                 break;     */
     162    case SBYTE_IMG:
     163        datatype = PS_TYPE_S8;
     164        fitsDatatype = TSBYTE;
     165        break;
     166    case USHORT_IMG:
     167        datatype = PS_TYPE_U16;
     168        fitsDatatype = TUSHORT;
     169        break;
    170170    case SHORT_IMG:
    171171        datatype = PS_TYPE_S16;
    172172        fitsDatatype = TSHORT;
    173173        break;
    174         /*    case ULONG_IMG:                  Not a requirement
    175                 datatype = PS_TYPE_U32;
    176                 fitsDatatype = TUINT;
    177                 break;    */
     174    case ULONG_IMG:
     175        datatype = PS_TYPE_U32;
     176        fitsDatatype = TUINT;
     177        break;
    178178    case LONG_IMG:
    179179        datatype = PS_TYPE_S32;
    180180        fitsDatatype = TINT;
    181181        break;
    182         /*    case LONGLONG_IMG:               Not a requirement
    183                 datatype = PS_TYPE_S64;
    184                 fitsDatatype = TLONGLONG;
    185                 break;    */
     182    case LONGLONG_IMG:
     183        datatype = PS_TYPE_S64;
     184        fitsDatatype = TLONGLONG;
     185        break;
    186186    case FLOAT_IMG:
    187187        datatype = PS_TYPE_F32;
     
    256256        datatype = TBYTE;
    257257        break;
    258         /*    case PS_TYPE_S8:            Not a requirement
    259                 bitPix = BYTE_IMG;
    260                 bzero = INT8_MIN;
    261                 datatype = TSBYTE;
    262                 break;      */
    263         /*    case PS_TYPE_U16:           Not a requirement
    264                 bitPix = SHORT_IMG;
    265                 bzero = -1.0f * INT16_MIN;
    266                 datatype = TUSHORT;
    267                 break;      */
     258    case PS_TYPE_S8:
     259        bitPix = BYTE_IMG;
     260        bzero = INT8_MIN;
     261        datatype = TSBYTE;
     262        break;
     263    case PS_TYPE_U16:
     264        bitPix = SHORT_IMG;
     265        bzero = -1.0f * INT16_MIN;
     266        datatype = TUSHORT;
     267        break;
    268268    case PS_TYPE_S16:
    269269        bitPix = SHORT_IMG;
    270270        datatype = TSHORT;
    271271        break;
    272         /*    case PS_TYPE_U32:           Not a requirement
    273                 bitPix = LONG_IMG;
    274                 bzero = -1.0f * INT32_MIN;
    275                 datatype = TUINT;
    276                 break;      */
     272    case PS_TYPE_U32:
     273        bitPix = LONG_IMG;
     274        bzero = -1.0f * INT32_MIN;
     275        datatype = TUINT;
     276        break;
    277277    case PS_TYPE_S32:
    278278        bitPix = LONG_IMG;
     
    344344        }
    345345
    346     } else {                               // file
    347         // does
    348         // not
    349         // exist
     346    } else {
     347        // file does not exist
    350348
    351349        (void)fits_create_file(&fptr, filename, &status);
Note: See TracChangeset for help on using the changeset viewer.