IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Nov 28, 2013, 4:10:42 AM (13 years ago)
Author:
eugene
Message:

extended 2d cached-convolution to 15 pix radius

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20130904/psLib/src/imageops/psImageConvolve2dCache.c

    r36307 r36319  
    2727
    2828// fixed set of radii and number of entries in circularly symmetric profile
    29 # define NRAD_MAX 44
    30 static float radii2[NRAD_MAX] = {  0.0,  1.0,  2.0,  4.0,  5.0,
    31                                    8.0,  9.0, 10.0, 13.0, 16.0,
    32                                    17.0, 18.0, 20.0, 25.0, 26.0,
    33                                    29.0, 32.0, 34.0, 36.0, 37.0,
    34                                    40.0, 41.0, 45.0, 49.0, 50.0,
    35                                    52.0, 53.0, 58.0, 61.0, 64.0,
    36                                    65.0, 68.0, 72.0, 73.0, 74.0,
    37                                    80.0, 81.0, 82.0, 85.0, 89.0,
    38                                    90.0, 97.0, 98.0, 100.0
     29# define NRAD_MAX 87
     30# define  RAD_MAX 15
     31static float radii2[NRAD_MAX] = {   0.0,   1.0,   2.0,   4.0,   5.0,
     32                                    8.0,   9.0,  10.0,  13.0,  16.0,
     33                                    17.0,  18.0,  20.0,  25.0,  26.0,
     34
     35                                    29.0,  32.0,  34.0,  36.0,  37.0,
     36                                    40.0,  41.0,  45.0,  49.0,  50.0,
     37                                    52.0,  53.0,  58.0,  61.0,  64.0,
     38
     39                                    65.0,  68.0,  72.0,  73.0,  74.0,
     40                                    80.0,  81.0,  82.0,  85.0,  89.0,
     41                                    90.0,  97.0,  98.0, 100.0, 101.0,
     42
     43                                    104.0, 106.0, 109.0, 113.0, 116.0,
     44                                    117.0, 121.0, 122.0, 125.0, 128.0,
     45                                    130.0, 136.0, 137.0, 144.0, 145.0,
     46
     47                                    146.0, 148.0, 149.0, 153.0, 157.0,
     48                                    160.0, 162.0, 164.0, 169.0, 170.0,
     49                                    173.0, 178.0, 180.0, 181.0, 185.0,
     50
     51                                    193.0, 194.0, 196.0, 197.0, 200.0,
     52                                    202.0, 205.0, 208.0, 212.0, 218.0,
     53                                    221.0, 225.0
    3954};
    4055
     
    4257                                     4,  4, 8,  8,  4,
    4358                                     8,  4, 8, 12,  8,
     59
    4460                                     8,  4, 8,  4,  8,
    4561                                     8,  8, 8,  4, 12,
    4662                                     8,  8, 8,  8,  4,
     63
    4764                                     16, 8, 4,  8,  8,
    48                                       8, 4, 8, 16,  8,
    49                                       8, 8, 4, 12
     65                                     8, 4, 8, 16,  8,
     66                                     8, 8, 4, 12, 8,
     67
     68                                     8, 8, 8, 8, 8,
     69                                     8, 4, 8, 16, 4,
     70                                     16, 8, 8, 8, 16,
     71
     72                                     8, 8, 8, 8, 8,
     73                                     8, 4, 8, 12, 16,
     74                                     8, 8, 8, 8, 16,
     75
     76                                     8, 8, 4, 8, 12,
     77                                     8, 16, 8, 8, 8,
     78                                     16, 12
    5079};
    5180
     
    85114psImageSmooth2dCacheData *psImageSmooth2dCacheAlloc (float Nsigma) {
    86115
     116    psAssert (isfinite(Nsigma) && (Nsigma > 0.5), "Nsigma is not valid");
     117
    87118    psImageSmooth2dCacheData *smdata = psAlloc(sizeof(psImageSmooth2dCacheData));
    88119    psMemSetDeallocator(smdata, (psFreeFunc) psImageSmooth2dCacheDataFree);
     
    100131    // check for NULL structure elements?
    101132    int Ns = (int)(smdata->Nsigma * sigma);
    102     Ns = PS_MAX (3, PS_MIN (Ns, 10));
     133    Ns = PS_MAX (3, PS_MIN (Ns, RAD_MAX));
    103134    smdata->Ns = Ns;
    104135
     
    108139    smdata->radflux = psAlloc(sizeof(float)*NRAD_MAX);
    109140
    110     float sum = 0.0;
     141    double sum = 0.0;
    111142    for (int i = 0; i < NRAD_MAX; i++) {
    112143        if (radii2[i] > Ns2) {
     
    130161    // check for NULL structure elements?
    131162    int Ns = (int)(smdata->Nsigma * sigma);
    132     Ns = PS_MAX (3, PS_MIN (Ns, 10));
     163    Ns = PS_MAX (3, PS_MIN (Ns, RAD_MAX));
    133164    smdata->Ns = Ns;
    134165
     
    275306            if (Ns <= 10) goto finish;
    276307
     308            ADD_RAND ( 44,  1, 10);  // r^2 = 101
     309            ADD_RAND ( 45,  2, 10);  // r^2 = 104
     310            ADD_RAND ( 46,  5,  9);  // r^2 = 106
     311            ADD_RAND ( 47,  3, 10);  // r^2 = 109
     312            ADD_RAND ( 48,  7,  8);  // r^2 = 113
     313            ADD_RAND ( 49,  4, 10);  // r^2 = 116
     314            ADD_RAND ( 50,  6,  9);  // r^2 = 117
     315            ADD_AXIS ( 51, 11)    ;  // r^2 = 121
     316            if (Ns <= 11) goto finish;
     317
     318            ADD_RAND ( 52,  1, 11);  // r^2 = 122
     319            ADD_RAND ( 53,  2, 11);  // r^2 = 125 *
     320            ADD_RAND ( 53,  5, 10);  // r^2 = 125 *
     321            ADD_DIAG ( 54,  8)    ;  // r^2 = 128
     322            ADD_RAND ( 55,  3, 11);  // r^2 = 130 *
     323            ADD_RAND ( 55,  7,  9);  // r^2 = 130 *
     324            ADD_RAND ( 56,  6, 10);  // r^2 = 136
     325            ADD_RAND ( 57,  4, 11);  // r^2 = 137
     326            ADD_AXIS ( 58, 12)    ;  // r^2 = 144
     327            if (Ns <= 12) goto finish;
     328
     329            ADD_RAND ( 59,  1, 12);  // r^2 = 145 *
     330            ADD_RAND ( 59,  8,  9);  // r^2 = 145 *
     331            ADD_RAND ( 60,  5, 11);  // r^2 = 146
     332            ADD_RAND ( 61,  2, 12);  // r^2 = 148
     333            ADD_RAND ( 62,  7, 10);  // r^2 = 149
     334            ADD_RAND ( 63,  3, 12);  // r^2 = 153
     335            ADD_RAND ( 64,  6, 11);  // r^2 = 157
     336            ADD_RAND ( 65,  4, 12);  // r^2 = 160
     337            ADD_DIAG ( 66,  9)    ;  // r^2 = 162
     338            ADD_RAND ( 67,  8, 10);  // r^2 = 164
     339            ADD_RAND ( 68,  5, 12);  // r^2 = 169 *
     340            ADD_AXIS ( 68, 13)    ;  // r^2 = 169 *
     341            if (Ns <= 13) goto finish;
     342
     343            ADD_RAND ( 69,  1, 13);  // r^2 = 170 *
     344            ADD_RAND ( 69,  7, 11);  // r^2 = 170 *
     345            ADD_RAND ( 70,  2, 13);  // r^2 = 173
     346            ADD_RAND ( 71,  3, 13);  // r^2 = 178
     347            ADD_RAND ( 72,  6, 12);  // r^2 = 180
     348            ADD_RAND ( 73,  9, 10);  // r^2 = 181
     349            ADD_RAND ( 74,  4, 13);  // r^2 = 185 *
     350            ADD_RAND ( 74,  8, 11);  // r^2 = 185 *
     351            ADD_RAND ( 75,  7, 12);  // r^2 = 193
     352            ADD_RAND ( 76,  5, 13);  // r^2 = 194
     353            ADD_AXIS ( 77, 14)    ;  // r^2 = 196
     354            if (Ns <= 14) goto finish;
     355
     356            ADD_RAND ( 78,  1, 14);  // r^2 = 197
     357            ADD_DIAG ( 79, 10)    ;  // r^2 = 200 *
     358            ADD_RAND ( 79,  2, 14);  // r^2 = 200 *
     359            ADD_RAND ( 80,  9, 11);  // r^2 = 202
     360            ADD_RAND ( 81,  3, 14);  // r^2 = 205 *
     361            ADD_RAND ( 81,  6, 13);  // r^2 = 205 *
     362            ADD_RAND ( 82,  8, 12);  // r^2 = 208
     363            ADD_RAND ( 83,  4, 14);  // r^2 = 212
     364            ADD_RAND ( 84,  7, 13);  // r^2 = 218
     365            ADD_RAND ( 85, 10, 11);  // r^2 = 221 *
     366            ADD_RAND ( 85,  5, 14);  // r^2 = 221 *
     367            ADD_RAND ( 86,  9, 12);  // r^2 = 225 *
     368            ADD_AXIS ( 86, 15);      // r^2 = 225 *
     369            if (Ns <= 15) goto finish;
     370
    277371        finish:
    278372            vo[iy][ix] = s;
     
    298392}
    299393
     394/*
     395101, 104, 106, 109, 113,
     396116, 117, 121, 122, 125,
     397128, 130, 136, 137, 144,
     398145, 146, 148, 149, 153,
     399157, 160, 162, 164, 169,
     400170, 173, 178, 180, 181,
     401185, 193, 194, 196, 197,
     402200, 202, 205, 208, 212,
     403218, 221, 225
     404*/
     405
Note: See TracChangeset for help on using the changeset viewer.