Changeset 26747 for branches/eam_branches/psModules.stack.20100120/src/imcombine/pmSubtractionKernels.c
- Timestamp:
- Jan 31, 2010, 5:00:42 PM (16 years ago)
- Location:
- branches/eam_branches/psModules.stack.20100120
- Files:
-
- 2 edited
-
. (modified) (1 prop)
-
src/imcombine/pmSubtractionKernels.c (modified) (28 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/psModules.stack.20100120
- Property svn:mergeinfo changed
/branches/eam_branches/20091201/psModules (added) merged: 26686-26687,26693,26702-26703,26731-26735,26737,26739,26741-26743
- Property svn:mergeinfo changed
-
branches/eam_branches/psModules.stack.20100120/src/imcombine/pmSubtractionKernels.c
r26657 r26747 276 276 pmSubtractionKernels *p_pmSubtractionKernelsRawISIS(int size, int spatialOrder, 277 277 const psVector *fwhmsIN, const psVector *ordersIN, 278 float penalty, p mSubtractionMode mode)278 float penalty, psRegion bounds, pmSubtractionMode mode) 279 279 { 280 280 PS_ASSERT_VECTOR_NON_NULL(fwhmsIN, NULL); … … 306 306 307 307 pmSubtractionKernels *kernels = pmSubtractionKernelsAlloc(num, PM_SUBTRACTION_KERNEL_ISIS, size, 308 spatialOrder, penalty, mode); // The kernels308 spatialOrder, penalty, bounds, mode); // Kernels 309 309 psStringAppend(&kernels->description, "ISIS(%d,%s,%d,%.2e)", size, params, spatialOrder, penalty); 310 310 … … 332 332 pmSubtractionKernels *pmSubtractionKernelsISIS_RADIAL(int size, int spatialOrder, 333 333 const psVector *fwhmsIN, const psVector *ordersIN, 334 float penalty, p mSubtractionMode mode)334 float penalty, psRegion bounds, pmSubtractionMode mode) 335 335 { 336 336 PS_ASSERT_VECTOR_NON_NULL(fwhmsIN, NULL); … … 362 362 } 363 363 364 pmSubtractionKernels *kernels = pmSubtractionKernelsAlloc(num, PM_SUBTRACTION_KERNEL_ISIS_RADIAL, size, spatialOrder, penalty, mode); // The kernels 364 pmSubtractionKernels *kernels = pmSubtractionKernelsAlloc(num, PM_SUBTRACTION_KERNEL_ISIS_RADIAL, size, 365 spatialOrder, penalty, bounds, mode); // Kernels 365 366 psStringAppend(&kernels->description, "ISIS_RADIAL(%d,%s,%d,%.2e)", size, params, spatialOrder, penalty); 366 367 … … 389 390 pmSubtractionKernels *pmSubtractionKernelsHERM(int size, int spatialOrder, 390 391 const psVector *fwhmsIN, const psVector *ordersIN, 391 float penalty, p mSubtractionMode mode)392 float penalty, psRegion bounds, pmSubtractionMode mode) 392 393 { 393 394 PS_ASSERT_VECTOR_NON_NULL(fwhmsIN, NULL); … … 418 419 } 419 420 420 pmSubtractionKernels *kernels = pmSubtractionKernelsAlloc(num, PM_SUBTRACTION_KERNEL_HERM, size, spatialOrder, penalty, mode); // The kernels 421 pmSubtractionKernels *kernels = pmSubtractionKernelsAlloc(num, PM_SUBTRACTION_KERNEL_HERM, size, 422 spatialOrder, penalty, bounds, mode); // Kernels 421 423 psStringAppend(&kernels->description, "HERM(%d,%s,%d,%.2e)", size, params, spatialOrder, penalty); 422 424 423 psLogMsg("psModules.imcombine", PS_LOG_INFO, "HERM kernel: %s,%d --> %d elements", params, spatialOrder, num); 425 psLogMsg("psModules.imcombine", PS_LOG_INFO, "HERM kernel: %s,%d --> %d elements", 426 params, spatialOrder, num); 424 427 psFree(params); 425 428 … … 440 443 441 444 pmSubtractionKernels *pmSubtractionKernelsDECONV_HERM(int size, int spatialOrder, 442 const psVector *fwhmsIN, const psVector *ordersIN,443 float penalty, pmSubtractionMode mode)445 const psVector *fwhmsIN, const psVector *ordersIN, 446 float penalty, psRegion bounds, pmSubtractionMode mode) 444 447 { 445 448 PS_ASSERT_VECTOR_NON_NULL(fwhmsIN, NULL); … … 470 473 } 471 474 472 pmSubtractionKernels *kernels = pmSubtractionKernelsAlloc(num, PM_SUBTRACTION_KERNEL_DECONV_HERM, size, spatialOrder, penalty, mode); // The kernels 475 pmSubtractionKernels *kernels = pmSubtractionKernelsAlloc(num, PM_SUBTRACTION_KERNEL_DECONV_HERM, size, 476 spatialOrder, penalty, bounds, mode); // Kernels 473 477 psStringAppend(&kernels->description, "DECONV_HERM(%d,%s,%d,%.2e)", size, params, spatialOrder, penalty); 474 478 … … 545 549 546 550 pmSubtractionKernels *pmSubtractionKernelsAlloc(int numBasisFunctions, pmSubtractionKernelsType type, 547 int size, int spatialOrder, float penalty, 551 int size, int spatialOrder, float penalty, psRegion bounds, 548 552 pmSubtractionMode mode) 549 553 { … … 559 563 kernels->uStop = NULL; 560 564 kernels->vStop = NULL; 565 kernels->xMin = bounds.x0; 566 kernels->xMax = bounds.x1; 567 kernels->yMin = bounds.y0; 568 kernels->yMax = bounds.y1; 561 569 kernels->preCalc = psArrayAlloc(numBasisFunctions); 562 570 kernels->penalty = penalty; … … 567 575 kernels->bgOrder = 0; 568 576 kernels->mode = mode; 569 kernels->numCols = 0;570 kernels->numRows = 0;571 577 kernels->solution1 = NULL; 572 578 kernels->solution2 = NULL; … … 641 647 } 642 648 643 pmSubtractionKernels *pmSubtractionKernelsPOIS(int size, int spatialOrder, float penalty, 649 pmSubtractionKernels *pmSubtractionKernelsPOIS(int size, int spatialOrder, float penalty, psRegion bounds, 644 650 pmSubtractionMode mode) 645 651 { … … 650 656 651 657 pmSubtractionKernels *kernels = pmSubtractionKernelsAlloc(0, PM_SUBTRACTION_KERNEL_POIS, size, 652 spatialOrder, penalty, mode); // The kernels658 spatialOrder, penalty, bounds, mode); // Kernels 653 659 psStringAppend(&kernels->description, "POIS(%d,%d,%.2e)", size, spatialOrder, penalty); 654 660 psLogMsg("psModules.imcombine", PS_LOG_INFO, "POIS kernel: %d,%d --> %d elements", … … 665 671 pmSubtractionKernels *pmSubtractionKernelsISIS(int size, int spatialOrder, 666 672 const psVector *fwhms, const psVector *orders, 667 float penalty, p mSubtractionMode mode)673 float penalty, psRegion bounds, pmSubtractionMode mode) 668 674 { 669 675 pmSubtractionKernels *kernels = p_pmSubtractionKernelsRawISIS(size, spatialOrder, fwhms, orders, 670 penalty, mode); // Kernels676 penalty, bounds, mode); // Kernels 671 677 if (!kernels) { 672 678 return NULL; … … 677 683 678 684 pmSubtractionKernels *pmSubtractionKernelsSPAM(int size, int spatialOrder, int inner, int binning, 679 float penalty, p mSubtractionMode mode)685 float penalty, psRegion bounds, pmSubtractionMode mode) 680 686 { 681 687 PS_ASSERT_INT_POSITIVE(size, NULL); … … 698 704 699 705 pmSubtractionKernels *kernels = pmSubtractionKernelsAlloc(num, PM_SUBTRACTION_KERNEL_SPAM, size, 700 spatialOrder, penalty, mode); // The kernels706 spatialOrder, penalty, bounds, mode); // Kernels 701 707 kernels->inner = inner; 702 708 psStringAppend(&kernels->description, "SPAM(%d,%d,%d,%d,%.2e)", size, inner, binning, spatialOrder, … … 769 775 770 776 pmSubtractionKernels *pmSubtractionKernelsFRIES(int size, int spatialOrder, int inner, float penalty, 771 p mSubtractionMode mode)777 psRegion bounds, pmSubtractionMode mode) 772 778 { 773 779 PS_ASSERT_INT_POSITIVE(size, NULL); … … 796 802 797 803 pmSubtractionKernels *kernels = pmSubtractionKernelsAlloc(num, PM_SUBTRACTION_KERNEL_FRIES, size, 798 spatialOrder, penalty, mode); // The kernels804 spatialOrder, penalty, bounds, mode); // Kernels 799 805 kernels->inner = inner; 800 806 psStringAppend(&kernels->description, "FRIES(%d,%d,%d,%.2e)", size, inner, spatialOrder, penalty); … … 865 871 pmSubtractionKernels *pmSubtractionKernelsGUNK(int size, int spatialOrder, const psVector *fwhms, 866 872 const psVector *orders, int inner, float penalty, 867 p mSubtractionMode mode)873 psRegion bounds, pmSubtractionMode mode) 868 874 { 869 875 PS_ASSERT_INT_POSITIVE(size, NULL); … … 878 884 879 885 pmSubtractionKernels *kernels = p_pmSubtractionKernelsRawISIS(size, spatialOrder, fwhms, orders, 880 penalty, mode); // Kernels886 penalty, bounds, mode); // Kernels 881 887 kernels->type = PM_SUBTRACTION_KERNEL_GUNK; 882 888 psStringPrepend(&kernels->description, "GUNK="); … … 894 900 // RINGS --- just what it says 895 901 pmSubtractionKernels *pmSubtractionKernelsRINGS(int size, int spatialOrder, int inner, int ringsOrder, 896 float penalty, p mSubtractionMode mode)902 float penalty, psRegion bounds, pmSubtractionMode mode) 897 903 { 898 904 PS_ASSERT_INT_POSITIVE(size, NULL); … … 925 931 926 932 pmSubtractionKernels *kernels = pmSubtractionKernelsAlloc(num, PM_SUBTRACTION_KERNEL_RINGS, size, 927 spatialOrder, penalty, mode); // The kernels933 spatialOrder, penalty, bounds, mode); // Kernels 928 934 kernels->inner = inner; 929 935 psStringAppend(&kernels->description, "RINGS(%d,%d,%d,%d,%.2e)", size, inner, ringsOrder, spatialOrder, … … 1047 1053 pmSubtractionKernels *pmSubtractionKernelsGenerate(pmSubtractionKernelsType type, int size, int spatialOrder, 1048 1054 const psVector *fwhms, const psVector *orders, int inner, 1049 int binning, int ringsOrder, float penalty, 1055 int binning, int ringsOrder, float penalty, psRegion bounds, 1050 1056 pmSubtractionMode mode) 1051 1057 { 1052 1058 switch (type) { 1053 1059 case PM_SUBTRACTION_KERNEL_POIS: 1054 return pmSubtractionKernelsPOIS(size, spatialOrder, penalty, mode);1060 return pmSubtractionKernelsPOIS(size, spatialOrder, penalty, bounds, mode); 1055 1061 case PM_SUBTRACTION_KERNEL_ISIS: 1056 return pmSubtractionKernelsISIS(size, spatialOrder, fwhms, orders, penalty, mode);1062 return pmSubtractionKernelsISIS(size, spatialOrder, fwhms, orders, penalty, bounds, mode); 1057 1063 case PM_SUBTRACTION_KERNEL_ISIS_RADIAL: 1058 return pmSubtractionKernelsISIS_RADIAL(size, spatialOrder, fwhms, orders, penalty, mode);1064 return pmSubtractionKernelsISIS_RADIAL(size, spatialOrder, fwhms, orders, penalty, bounds, mode); 1059 1065 case PM_SUBTRACTION_KERNEL_HERM: 1060 return pmSubtractionKernelsHERM(size, spatialOrder, fwhms, orders, penalty, mode);1066 return pmSubtractionKernelsHERM(size, spatialOrder, fwhms, orders, penalty, bounds, mode); 1061 1067 case PM_SUBTRACTION_KERNEL_DECONV_HERM: 1062 return pmSubtractionKernelsDECONV_HERM(size, spatialOrder, fwhms, orders, penalty, mode);1068 return pmSubtractionKernelsDECONV_HERM(size, spatialOrder, fwhms, orders, penalty, bounds, mode); 1063 1069 case PM_SUBTRACTION_KERNEL_SPAM: 1064 return pmSubtractionKernelsSPAM(size, spatialOrder, inner, binning, penalty, mode);1070 return pmSubtractionKernelsSPAM(size, spatialOrder, inner, binning, penalty, bounds, mode); 1065 1071 case PM_SUBTRACTION_KERNEL_FRIES: 1066 return pmSubtractionKernelsFRIES(size, spatialOrder, inner, penalty, mode);1072 return pmSubtractionKernelsFRIES(size, spatialOrder, inner, penalty, bounds, mode); 1067 1073 case PM_SUBTRACTION_KERNEL_GUNK: 1068 return pmSubtractionKernelsGUNK(size, spatialOrder, fwhms, orders, inner, penalty, mode);1074 return pmSubtractionKernelsGUNK(size, spatialOrder, fwhms, orders, inner, penalty, bounds, mode); 1069 1075 case PM_SUBTRACTION_KERNEL_RINGS: 1070 return pmSubtractionKernelsRINGS(size, spatialOrder, inner, ringsOrder, penalty, mode);1076 return pmSubtractionKernelsRINGS(size, spatialOrder, inner, ringsOrder, penalty, bounds, mode); 1071 1077 default: 1072 1078 psError(PS_ERR_BAD_PARAMETER_VALUE, true, "Unknown kernel type: %x", type); … … 1104 1110 1105 1111 pmSubtractionKernels *pmSubtractionKernelsFromDescription(const char *description, int bgOrder, 1106 p mSubtractionMode mode)1112 psRegion bounds, pmSubtractionMode mode) 1107 1113 { 1108 1114 PS_ASSERT_STRING_NON_EMPTY(description, NULL); … … 1129 1135 1130 1136 type = pmSubtractionKernelsTypeFromString (description); 1131 char *ptr = strchr(description, '(') ;1137 char *ptr = strchr(description, '(') + 1; 1132 1138 psAssert (ptr, "description is missing kernel parameters"); 1133 1139 … … 1157 1163 PARSE_STRING_NUMBER(spatialOrder, ptr, ',', parseStringInt); 1158 1164 penalty = parseStringFloat(ptr); 1159 1160 return pmSubtractionKernelsGenerate(type, size, spatialOrder, fwhms, orders, inner, binning, ringsOrder, penalty, mode); 1161 1165 break; 1162 1166 case PM_SUBTRACTION_KERNEL_RINGS: 1163 1167 PARSE_STRING_NUMBER(size, ptr, ',', parseStringInt); … … 1166 1170 PARSE_STRING_NUMBER(spatialOrder, ptr, ',', parseStringInt); 1167 1171 PARSE_STRING_NUMBER(penalty, ptr, ')', parseStringInt); 1168 return pmSubtractionKernelsGenerate(type, size, spatialOrder, fwhms, orders, inner, binning, ringsOrder, penalty, mode);1172 break; 1169 1173 default: 1170 1174 psAbort("Deciphering kernels other than ISIS, HERM, DECONV_HERM or RINGS is not currently supported."); 1171 1175 } 1172 return NULL; 1176 1177 return pmSubtractionKernelsGenerate(type, size, spatialOrder, fwhms, orders, inner, binning, 1178 ringsOrder, penalty, bounds, mode); 1173 1179 } 1174 1180 … … 1246 1252 out->bgOrder = in->bgOrder; 1247 1253 out->mode = in->mode; 1248 out->numCols = in->numCols; 1249 out->numRows = in->numRows; 1254 out->xMin = in->xMin; 1255 out->xMax = in->xMax; 1256 out->yMin = in->yMin; 1257 out->yMax = in->yMax; 1250 1258 out->solution1 = in->solution1 ? psVectorCopy(NULL, in->solution1, PS_TYPE_F64) : NULL; 1251 1259 out->solution2 = in->solution2 ? psVectorCopy(NULL, in->solution2, PS_TYPE_F64) : NULL;
Note:
See TracChangeset
for help on using the changeset viewer.
