Changeset 14773
- Timestamp:
- Sep 7, 2007, 10:19:05 AM (19 years ago)
- Location:
- branches/eam_branch_20070830/psLib/src/imageops
- Files:
-
- 2 edited
-
psImageBinning.c (modified) (7 diffs)
-
psImageBinning.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branch_20070830/psLib/src/imageops/psImageBinning.c
r12699 r14773 8 8 * @author Eugene Magnier, IfA 9 9 * 10 * @version $Revision: 1.2 $ $Name: not supported by cvs2svn $11 * @date $Date: 2007-0 3-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 $ 12 12 * 13 13 * Copyright 2007 Institute for Astronomy, University of Hawaii … … 44 44 assert (binning->nYbin > 0); 45 45 46 // force nXruff*nXbin > nXfine 46 47 binning->nXruff = binning->nXfine / binning->nXbin; 47 48 if (binning->nXfine % binning->nXbin) binning->nXruff ++; 48 49 50 // force nYruff*nYbin > nYfine 49 51 binning->nYruff = binning->nYfine / binning->nYbin; 50 52 if (binning->nYfine % binning->nYbin) binning->nYruff ++; … … 56 58 break; 57 59 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; 60 62 break; 61 63 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); 64 66 break; 65 67 default: … … 78 80 void psImageBinningSetSkip(psImageBinning *binning, psImage *image) { 79 81 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 } 82 89 return; 83 90 } … … 90 97 assert (binning->nYruff > 0); 91 98 99 // force nXruff*nXbin > nXfine 92 100 binning->nXbin = binning->nXfine / binning->nXruff; 93 101 if (binning->nXfine % binning->nXruff) binning->nXbin ++; 94 102 103 // force nYruff*nYbin > nYfine 95 104 binning->nYbin = binning->nYfine / binning->nYruff; 96 105 if (binning->nYfine % binning->nYruff) binning->nYbin ++; … … 102 111 break; 103 112 case PS_IMAGE_BINNING_CENTER: 104 binning->nXoff = (binning->nX fine % binning->nXbin) / 2;105 binning->nYoff = (binning->nY fine % binning->nYbin) / 2;113 binning->nXoff = (binning->nXruff * binning->nXbin - binning->nXfine) / 2; 114 binning->nYoff = (binning->nYruff * binning->nYbin - binning->nYfine) / 2; 106 115 break; 107 116 case PS_IMAGE_BINNING_RIGHT: 108 binning->nXoff = (binning->nX fine % binning->nXbin);109 binning->nYoff = (binning->nY fine % binning->nYbin);117 binning->nXoff = (binning->nXruff * binning->nXbin - binning->nXfine); 118 binning->nYoff = (binning->nYruff * binning->nYbin - binning->nYfine); 110 119 break; 111 120 default: … … 137 146 } 138 147 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 --> 1142 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 --> 2145 region->x1 = (int)((region->x1 + xBin - 1) / xBin);146 region->y1 = (int)((region->y1 + yBin - 1) / yBin);147 # endif148 148 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 150 float psImageBinningGetRuffX (psImageBinning *binning, float xFine) { 151 float xRuff = (xFine - binning->nXskip)/binning->nXbin; 152 return xRuff; 153 } 154 float psImageBinningGetRuffY (psImageBinning *binning, float yFine) { 155 float yRuff = (yFine - binning->nYskip)/binning->nYbin; 156 return yRuff; 157 } 160 158 159 // convert the ruff coordinate to the fine coordinate 160 float psImageBinningGetFineX (psImageBinning *binning, float xRuff) { 161 float xFine = xRuff * binning->nXbin + binning->nXskip; 162 return xFine; 163 } 164 float 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 8 8 * @author Eugene Magnier, IfA 9 9 * 10 * @version $Revision: 1.2 $ $Name: not supported by cvs2svn $11 * @date $Date: 2007-0 8-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 $ 12 12 * 13 13 * Copyright 2007 Institute for Astronomy, University of Hawaii … … 51 51 psRegion psImageBinningSetRuffRegion (psImageBinning *binning, psRegion fineRegion); 52 52 53 float psImageBinningGetRuffX (psImageBinning *binning, float xFine); 54 float psImageBinningGetRuffY (psImageBinning *binning, float yFine); 55 float psImageBinningGetFineX (psImageBinning *binning, float xRuff); 56 float psImageBinningGetFineY (psImageBinning *binning, float yRuff); 57 53 58 /// @} 54 59 #endif // #ifndef PS_IMAGE_GEOM_MANIP_H
Note:
See TracChangeset
for help on using the changeset viewer.
