[gdal-dev] Feature request: gauss and other interpolations in gdalwarp
Even Rouault
even.rouault at mines-paris.org
Tue Apr 9 14:50:34 PDT 2013
Le mardi 09 avril 2013 20:34:40, Even Rouault a écrit :
> Le mardi 09 avril 2013 19:06:28, Etienne Tourigny a écrit :
> > I have committed new warping methods average and mode to trunk, this will
> > be part of gdal-1.10
>
> Hi Etienne,
>
> It would be good if you could extend the autotest suite to add tests for
> those new warping methods. For that, you can likely take inspiration from
> the first tests of autotest/warp/warp.py. "Reference" images based on
> utmsmall.tif reference image is a bit big, but you can likely start from a
> smaller source image like byte.tif instead that will produce reference
> images of reasonable size to be put in svn.
>
> Regarding nAlgo == 2 (mode with foating point data), the allocations of
> pafVals and panSums have the potential to fail if warping is done on a
> large image whose floating point values are rarely identical. So I think
> that VSIRealloc shoud be used instead with a test on the result to fail
> properly. I'm also a bit doubtfull about the practical usefulness of this
> case on real data. There might also be a performance issue due to the loop
> "//Check array for existing entry" that is at the most inner level of the
> algorithm.
I stand corrected on the above comment about big memory consumption. The size
of the array is limited to the number of source pixels needed to compute a
target pixel, so unless you do extreme subsampling, that should be OK.
I've just noticed however that pafVals and panSums aren't free'd, so there's a
memory leak currently. And the CPLRealloc() are a bit weird as currently coded
:
int nMaxNumPx = 0;
float* pafVals = NULL;
int* panSums = NULL;
if (nNumPx > nMaxNumPx)
{
pafVals = (float*) CPLRealloc(pafVals, nNumPx *
sizeof(float));
panSums = (int*) CPLRealloc(panSums, nNumPx *
sizeof(int));
nMaxNumPx = nNumPx;
}
The test is always true, so CPLMalloc() would be clearer. But I think there
was a will to move nMaxNumPx, pafVals, panSums before the top loops. So that
should likely be done.
More information about the gdal-dev
mailing list