30 #ifndef GDALPANSHARPEN_H_INCLUDED
31 #define GDALPANSHARPEN_H_INCLUDED
122 int nXOff,
int nYOff,
123 int nXSize,
int nYSize,
136 #include <sys/time.h>
147 const void* pPanBuffer;
148 const void* pUpsampledSpectralBuffer;
183 } GDALPansharpenResampleJob;
191 std::vector<int> anInputBands;
192 std::vector<GDALDataset*> aVDS;
193 std::vector<GDALRasterBand*> aMSBands;
194 int bPositiveWeights;
198 static void PansharpenJobThreadFunc(
void* pUserData);
199 static void PansharpenResampleJobThreadFunc(
void* pUserData);
201 template<
class WorkDataType,
class OutDataType>
void WeightedBroveyWithNoData(
202 const WorkDataType* pPanBuffer,
203 const WorkDataType* pUpsampledSpectralBuffer,
204 OutDataType* pDataBuf,
207 WorkDataType nMaxValue)
const;
208 template<
class WorkDataType,
class OutDataType,
int bHasBitDepth>
void WeightedBrovey3(
209 const WorkDataType* pPanBuffer,
210 const WorkDataType* pUpsampledSpectralBuffer,
211 OutDataType* pDataBuf,
214 WorkDataType nMaxValue)
const;
217 template<
class WorkDataType,
class OutDataType>
void WeightedBrovey(
218 const WorkDataType* pPanBuffer,
219 const WorkDataType* pUpsampledSpectralBuffer,
220 OutDataType* pDataBuf,
223 WorkDataType nMaxValue)
const;
224 template<
class WorkDataType>
CPLErr WeightedBrovey(
225 const WorkDataType* pPanBuffer,
226 const WorkDataType* pUpsampledSpectralBuffer,
231 WorkDataType nMaxValue)
const;
234 template<
class WorkDataType>
CPLErr WeightedBrovey(
235 const WorkDataType* pPanBuffer,
236 const WorkDataType* pUpsampledSpectralBuffer,
240 int nBandValues)
const;
241 void WeightedBroveyPositiveWeights(
243 const GUInt16* pUpsampledSpectralBuffer,
249 template<
int NINPUT,
int NOUTPUT>
int WeightedBroveyPositiveWeightsInternal(
251 const GUInt16* pUpsampledSpectralBuffer,
258 const void* pPanBuffer,
259 const void* pUpsampledSpectralBuffer,
270 int nXSize,
int nYSize,
GDALDataType
Definition: gdal.h:57
Definition: gdalpansharpen.h:50
double dfMSShiftY
Shift in pixels of multispectral bands w.r.t panchromatic band, in Y direction.
Definition: gdalpansharpen.h:107
GDALPansharpenOptions * GDALCreatePansharpenOptions(void)
Create pansharpening options.
Definition: gdalpansharpen.cpp:67
GDALPansharpenAlg ePansharpenAlg
Definition: gdalpansharpen.h:58
#define CPL_C_START
Macro to start a block of C symbols.
Definition: cpl_port.h:352
unsigned int GUInt32
Unsigned int32 type.
Definition: cpl_port.h:199
GDALRIOResampleAlg
RasterIO() resampling method.
Definition: gdal.h:114
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:244
double dfMSShiftX
Shift in pixels of multispectral bands w.r.t panchromatic band, in X direction.
Definition: gdalpansharpen.h:104
Pansharpening operation class.
Definition: gdalpansharpen.h:188
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:1767
int nWeightCount
Definition: gdalpansharpen.h:67
void * GDALPansharpenOperationH
Definition: gdalpansharpen.h:117
GDALPansharpenOptions * GDALClonePansharpenOptions(const GDALPansharpenOptions *psOptions)
Clone pansharpening options.
Definition: gdalpansharpen.cpp:112
int nThreads
Number of threads or -1 to mean ALL_CPUS.
Definition: gdalpansharpen.h:101
GIntBig GSpacing
Type to express pixel, line or band spacing.
Definition: gdal.h:259
int nBitDepth
Definition: gdalpansharpen.h:64
CPLErr Initialize(const GDALPansharpenOptions *psOptions)
Initialize the pansharpening operation.
Definition: gdalpansharpen.cpp:197
Public (C callable) GDAL entry points.
int nInputSpectralBands
Definition: gdalpansharpen.h:76
void GDALDestroyPansharpenOperation(GDALPansharpenOperationH)
Destroy a pansharpening operation.
Definition: gdalpansharpen.cpp:1733
~GDALPansharpenOperation()
Pansharpening operation destructor.
Definition: gdalpansharpen.cpp:178
int * panOutPansharpenedBands
Definition: gdalpansharpen.h:90
double * padfWeights
Definition: gdalpansharpen.h:70
Pansharpening options.
Definition: gdalpansharpen.h:55
unsigned short GUInt16
Unsigned int16 type.
Definition: cpl_port.h:205
void GDALDestroyPansharpenOptions(GDALPansharpenOptions *)
Destroy pansharpening options.
Definition: gdalpansharpen.cpp:88
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:1009
GDALPansharpenOperation()
Pansharpening operation constructor.
Definition: gdalpansharpen.cpp:164
Class to manage a pool of worker threads.
Pool of worker threads.
Definition: cpl_worker_thread_pool.h:75
A set of associated raster bands, usually from one file.
Definition: gdal_priv.h:322
#define CPL_C_END
Macro to end a block of C symbols.
Definition: cpl_port.h:354
GDALPansharpenOperationH GDALCreatePansharpenOperation(const GDALPansharpenOptions *)
Instantiate a pansharpening operation.
Definition: gdalpansharpen.cpp:1712
GDALRasterBandH hPanchroBand
Definition: gdalpansharpen.h:73
GDALRIOResampleAlg eResampleAlg
Definition: gdalpansharpen.h:61
CPLErr
Error category.
Definition: cpl_error.h:52
GDALPansharpenOptions * GetOptions()
Return options.
Definition: gdalpansharpen.cpp:1692
int nOutPansharpenedBands
Definition: gdalpansharpen.h:87