Go to the documentation of this file.
30 #ifndef GDALPANSHARPEN_H_INCLUDED
31 #define GDALPANSHARPEN_H_INCLUDED
121 int nXOff,
int nYOff,
int nXSize,
122 int nYSize,
void *pDataBuf,
135 #include <sys/time.h>
146 const void *pPanBuffer;
147 const void *pUpsampledSpectralBuffer;
182 } GDALPansharpenResampleJob;
192 std::vector<int> anInputBands{};
193 std::vector<GDALDataset *> aVDS{};
194 std::vector<GDALRasterBand *> aMSBands{};
196 int bPositiveWeights = TRUE;
198 int nKernelRadius = 0;
199 std::array<double, 6> m_adfPanToMSGT = {{0.0, 1.0, 0, 0.0, 0.0, 1.0}};
201 static void PansharpenJobThreadFunc(
void *pUserData);
202 static void PansharpenResampleJobThreadFunc(
void *pUserData);
204 template <
class WorkDataType,
class OutDataType>
205 void WeightedBroveyWithNoData(
const WorkDataType *pPanBuffer,
206 const WorkDataType *pUpsampledSpectralBuffer,
207 OutDataType *pDataBuf,
size_t nValues,
209 WorkDataType nMaxValue)
const;
210 template <
class WorkDataType,
class OutDataType,
int bHasBitDepth>
211 void WeightedBrovey3(
const WorkDataType *pPanBuffer,
212 const WorkDataType *pUpsampledSpectralBuffer,
213 OutDataType *pDataBuf,
size_t nValues,
214 size_t nBandValues, WorkDataType nMaxValue)
const;
217 template <
class WorkDataType,
class OutDataType>
218 void WeightedBrovey(
const WorkDataType *pPanBuffer,
219 const WorkDataType *pUpsampledSpectralBuffer,
220 OutDataType *pDataBuf,
size_t nValues,
221 size_t nBandValues, WorkDataType nMaxValue)
const;
222 template <
class WorkDataType>
223 CPLErr WeightedBrovey(
const WorkDataType *pPanBuffer,
224 const WorkDataType *pUpsampledSpectralBuffer,
226 size_t nValues,
size_t nBandValues,
227 WorkDataType nMaxValue)
const;
230 template <
class WorkDataType>
231 CPLErr WeightedBrovey(
const WorkDataType *pPanBuffer,
232 const WorkDataType *pUpsampledSpectralBuffer,
234 size_t nValues,
size_t nBandValues)
const;
236 void WeightedBroveyPositiveWeights(
const T *pPanBuffer,
237 const T *pUpsampledSpectralBuffer,
238 T *pDataBuf,
size_t nValues,
239 size_t nBandValues, T nMaxValue)
const;
241 template <
class T,
int NINPUT,
int NOUTPUT>
242 size_t WeightedBroveyPositiveWeightsInternal(
243 const T *pPanBuffer,
const T *pUpsampledSpectralBuffer, T *pDataBuf,
244 size_t nValues,
size_t nBandValues, T nMaxValue)
const;
248 void WeightedBroveyGByteOrUInt16(
const T *pPanBuffer,
249 const T *pUpsampledSpectralBuffer,
250 T *pDataBuf,
size_t nValues,
251 size_t nBandValues, T nMaxValue)
const;
256 const void *pUpsampledSpectralBuffer,
void *pDataBuf,
257 size_t nValues,
size_t nBandValues,
GDALPansharpenAlg
Pansharpening algorithms.
Definition: gdalpansharpen.h:47
int nOutPansharpenedBands
Definition: gdalpansharpen.h:89
GDALPansharpenOperationH GDALCreatePansharpenOperation(const GDALPansharpenOptions *)
Instantiate a pansharpening operation.
Definition: gdalpansharpen.cpp:1825
int nThreads
Number of threads or -1 to mean ALL_CPUS.
Definition: gdalpansharpen.h:106
GDALPansharpenAlg ePansharpenAlg
Definition: gdalpansharpen.h:58
GDALPansharpenOptions * GDALCreatePansharpenOptions(void)
Create pansharpening options.
Definition: gdalpansharpen.cpp:69
GDALDataType
Definition: gdal.h:63
Pansharpening options.
Definition: gdalpansharpen.h:55
CPLErr Initialize(const GDALPansharpenOptions *psOptions)
Initialize the pansharpening operation.
Definition: gdalpansharpen.cpp:191
A set of associated raster bands, usually from one file.
Definition: gdal_priv.h:348
int * panOutPansharpenedBands
Definition: gdalpansharpen.h:93
double * padfWeights
Definition: gdalpansharpen.h:72
GDALRasterBandH hPanchroBand
Definition: gdalpansharpen.h:75
#define CPL_C_START
Macro to start a block of C symbols.
Definition: cpl_port.h:306
GDALRasterBandH * pahInputSpectralBands
Array of nInputSpectralBands input spectral bands.
Definition: gdalpansharpen.h:86
void GDALDestroyPansharpenOptions(GDALPansharpenOptions *)
Destroy pansharpening options.
Definition: gdalpansharpen.cpp:90
double dfNoData
NoData value of the panchromatic and spectral bands (only taken into account if bHasNoData = TRUE).
Definition: gdalpansharpen.h:101
#define CPL_C_END
Macro to end a block of C symbols.
Definition: cpl_port.h:310
GDALPansharpenOptions * GDALClonePansharpenOptions(const GDALPansharpenOptions *psOptions)
Clone pansharpening options.
Definition: gdalpansharpen.cpp:115
@ GDAL_PSH_WEIGHTED_BROVEY
Definition: gdalpansharpen.h:50
GIntBig GSpacing
Type to express pixel, line or band spacing.
Definition: gdal.h:315
~GDALPansharpenOperation()
Pansharpening operation destructor.
Definition: gdalpansharpen.cpp:172
int nInputSpectralBands
Definition: gdalpansharpen.h:78
GDALRIOResampleAlg eResampleAlg
Definition: gdalpansharpen.h:62
Pool of worker threads.
Definition: cpl_worker_thread_pool.h:78
int nBitDepth
Definition: gdalpansharpen.h:66
GDALPansharpenOperation()
Pansharpening operation constructor.
void GDALDestroyPansharpenOperation(GDALPansharpenOperationH)
Destroy a pansharpening operation.
Definition: gdalpansharpen.cpp:1845
int nWeightCount
Definition: gdalpansharpen.h:69
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:1171
Pansharpening operation class.
Definition: gdalpansharpen.h:187
CPLErr
Error category.
Definition: cpl_error.h:52
int bHasNoData
Definition: gdalpansharpen.h:96
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:1879
GDALRIOResampleAlg
RasterIO() resampling method.
Definition: gdal.h:142
void * GDALPansharpenOperationH
Definition: gdalpansharpen.h:115
GDALPansharpenOptions * GetOptions()
Return options.
Definition: gdalpansharpen.cpp:1804
void * GDALRasterBandH
Opaque type used for the C bindings of the C++ GDALRasterBand class.
Definition: gdal.h:294
#define CPL_DISALLOW_COPY_ASSIGN(ClassName)
Helper to remove the copy and assignment constructors so that the compiler will not generate the defa...
Definition: cpl_port.h:1042
unsigned int GUInt32
Unsigned int32 type.
Definition: cpl_port.h:188