Correct polyphase filters.

This commit is contained in:
castano
2007-12-02 10:31:37 +00:00
parent 4d51088d96
commit 3359090581
6 changed files with 474 additions and 328 deletions

View File

@ -325,15 +325,15 @@ static FloatImage * createMipmap(const FloatImage * floatImage, const InputOptio
}
else if (inputOptions.mipmapFilter == MipmapFilter_Triangle)
{
Kernel1 kernel(4);
kernel.initFilter(Filter::Triangle);
result = floatImage->downSample(kernel, (FloatImage::WrapMode)inputOptions.wrapMode);
TriangleFilter filter;
result = floatImage->downSample(filter, (FloatImage::WrapMode)inputOptions.wrapMode);
}
else /*if (inputOptions.mipmapFilter == MipmapFilter_Kaiser)*/
{
Kernel1 kernel(inputOptions.kaiserWidth);
kernel.initKaiser(inputOptions.kaiserAlpha, inputOptions.kaiserStretch);
result = floatImage->downSample(kernel, (FloatImage::WrapMode)inputOptions.wrapMode);
nvDebugCheck(inputOptions.mipmapFilter == MipmapFilter_Kaiser);
KaiserFilter filter(inputOptions.kaiserWidth);
filter.setParameters(inputOptions.kaiserAlpha, inputOptions.kaiserStretch);
result = floatImage->downSample(filter, (FloatImage::WrapMode)inputOptions.wrapMode);
}
// Normalize mipmap.

View File

@ -68,7 +68,7 @@ static bool loadImage(nv::Image & image, const char * fileName)
int main(int argc, char *argv[])
{
MyAssertHandler assertHandler;
//MyAssertHandler assertHandler;
MyMessageHandler messageHandler;
float scale = 0.5f;
@ -122,7 +122,8 @@ int main(int argc, char *argv[])
// k.initKaiser(4, scale, 20);
// nv::AutoPtr<nv::FloatImage> fresult(fimage.downSample(k, image.width() * scale, image.height() * scale, nv::FloatImage::WrapMode_Clamp));
nv::AutoPtr<nv::FloatImage> fresult(fimage.downSample(image.width() * scale, image.height() * scale, nv::FloatImage::WrapMode_Mirror));
nv::BoxFilter filter;
nv::AutoPtr<nv::FloatImage> fresult(fimage.downSample(filter, image.width() * scale, image.height() * scale, nv::FloatImage::WrapMode_Mirror));
nv::AutoPtr<nv::Image> result(fresult->createImageGammaCorrect(1.0));