30 #ifndef GDALPANSHARPEN_H_INCLUDED 31 #define GDALPANSHARPEN_H_INCLUDED 120 int nXOff,
int nYOff,
121 int nXSize,
int nYSize,
134 #include <sys/time.h> 144 const void* pPanBuffer;
145 const void* pUpsampledSpectralBuffer;
187 std::vector<int> anInputBands;
188 std::vector<GDALDataset*> aVDS;
189 std::vector<GDALRasterBand*> aMSBands;
190 int bPositiveWeights;
194 static void PansharpenJobThreadFunc(
void* pUserData);
195 static void PansharpenResampleJobThreadFunc(
void* pUserData);
197 template<
class WorkDataType,
class OutDataType>
void WeightedBroveyWithNoData(
198 const WorkDataType* pPanBuffer,
199 const WorkDataType* pUpsampledSpectralBuffer,
200 OutDataType* pDataBuf,
203 WorkDataType nMaxValue)
const;
204 template<
class WorkDataType,
class OutDataType,
int bHasBitDepth>
void WeightedBrovey3(
205 const WorkDataType* pPanBuffer,
206 const WorkDataType* pUpsampledSpectralBuffer,
207 OutDataType* pDataBuf,
210 WorkDataType nMaxValue)
const;
211 template<
class WorkDataType,
class OutDataType>
void WeightedBrovey(
212 const WorkDataType* pPanBuffer,
213 const WorkDataType* pUpsampledSpectralBuffer,
214 OutDataType* pDataBuf,
217 WorkDataType nMaxValue)
const;
218 template<
class WorkDataType> CPLErr WeightedBrovey(
219 const WorkDataType* pPanBuffer,
220 const WorkDataType* pUpsampledSpectralBuffer,
225 WorkDataType nMaxValue)
const;
226 template<
class WorkDataType> CPLErr WeightedBrovey(
227 const WorkDataType* pPanBuffer,
228 const WorkDataType* pUpsampledSpectralBuffer,
232 int nBandValues)
const;
233 void WeightedBroveyPositiveWeights(
234 const GUInt16* pPanBuffer,
235 const GUInt16* pUpsampledSpectralBuffer,
239 GUInt16 nMaxValue)
const;
241 template<
int NINPUT,
int NOUTPUT>
int WeightedBroveyPositiveWeightsInternal(
242 const GUInt16* pPanBuffer,
243 const GUInt16* pUpsampledSpectralBuffer,
247 GUInt16 nMaxValue)
const;
250 const void* pPanBuffer,
251 const void* pUpsampledSpectralBuffer,
255 GUInt32 nMaxValue)
const;
262 int nXSize,
int nYSize,
GDALDataType
Definition: gdal.h:57
Definition: gdalpansharpen.h:50
GDALPansharpenOptions * GDALCreatePansharpenOptions(void)
Create pansharpening options.
Definition: gdalpansharpen.cpp:56
GDALPansharpenAlg ePansharpenAlg
Definition: gdalpansharpen.h:58
GDALRIOResampleAlg
RasterIO() resampling method.
Definition: gdal.h:113
double dfNoData
NoData value of the panchromatic and spectral bands (only taken into account if bHasNoData = TRUE)...
Definition: gdalpansharpen.h:97
int bHasNoData
Definition: gdalpansharpen.h:93
void * GDALRasterBandH
Opaque type used for the C bindings of the C++ GDALRasterBand class.
Definition: gdal.h:233
Pansharpening operation class.
Definition: gdalpansharpen.h:184
GDALPansharpenAlg
Pansharpening algorithms.
Definition: gdalpansharpen.h:47
CPLErr GDALPansharpenProcessRegion(GDALPansharpenOperationH hOperation, int nXOff, int nYOff, int nXSize, int nYSize, void *pDataBuf, GDALDataType eBufDataType)
Executes a pansharpening operation on a rectangular region of the resulting dataset.
Definition: gdalpansharpen.cpp:1621
int nWeightCount
Definition: gdalpansharpen.h:67
void * GDALPansharpenOperationH
Definition: gdalpansharpen.h:115
GDALPansharpenOptions * GDALClonePansharpenOptions(const GDALPansharpenOptions *psOptions)
Clone pansharpening options.
Definition: gdalpansharpen.cpp:101
int nThreads
Number of threads or -1 to mean ALL_CPUS.
Definition: gdalpansharpen.h:101
Definition: gdalpansharpen.h:139
GIntBig GSpacing
Type to express pixel, line or band spacing.
Definition: gdal.h:248
int nBitDepth
Definition: gdalpansharpen.h:64
CPLErr Initialize(const GDALPansharpenOptions *psOptions)
Initialize the pansharpening operation.
Definition: gdalpansharpen.cpp:185
Public (C callable) GDAL entry points.
int nInputSpectralBands
Definition: gdalpansharpen.h:76
void GDALDestroyPansharpenOperation(GDALPansharpenOperationH)
Destroy a pansharpening operation.
Definition: gdalpansharpen.cpp:1587
~GDALPansharpenOperation()
Pansharpening operation destructor.
Definition: gdalpansharpen.cpp:167
int * panOutPansharpenedBands
Definition: gdalpansharpen.h:90
double * padfWeights
Definition: gdalpansharpen.h:70
Pansharpening options.
Definition: gdalpansharpen.h:55
void GDALDestroyPansharpenOptions(GDALPansharpenOptions *)
Destroy pansharpening options.
Definition: gdalpansharpen.cpp:77
GDALRasterBandH * pahInputSpectralBands
Array of nInputSpectralBands input spectral bands.
Definition: gdalpansharpen.h:84
CPLErr ProcessRegion(int nXOff, int nYOff, int nXSize, int nYSize, void *pDataBuf, GDALDataType eBufDataType)
Executes a pansharpening operation on a rectangular region of the resulting dataset.
Definition: gdalpansharpen.cpp:943
Definition: gdalpansharpen.h:158
GDALPansharpenOperation()
Pansharpening operation constructor.
Definition: gdalpansharpen.cpp:152
Class to manage a pool of worker threads.
Definition: cpl_worker_thread_pool.h:72
A set of associated raster bands, usually from one file.
Definition: gdal_priv.h:296
GDALPansharpenOperationH GDALCreatePansharpenOperation(const GDALPansharpenOptions *)
Instantiate a pansharpening operation.
Definition: gdalpansharpen.cpp:1566
GDALRasterBandH hPanchroBand
Definition: gdalpansharpen.h:73
GDALRIOResampleAlg eResampleAlg
Definition: gdalpansharpen.h:61
int nOutPansharpenedBands
Definition: gdalpansharpen.h:87