<p>When Sean and I wrote <a href="https://github.com/nothings/stb/blob/master/stb_image_resize.h">stb_image_resize</a> we chose Mitchell for downsizing. Mitchell is similar to Cubic, you can read about the cubic class of sampling filters in <a href="http://www.cs.utexas.edu/~fussell/courses/cs384g-fall2013/lectures/mitchell/Mitchell.pdf">Mitchell Netravali 1988</a>. They are all pretty similar and will get you very similar results.</p>

<p>I can't find any written record between Sean and I of why we decided to go with Mitchell, but if memory serves we just resampled a bunch of images and used the algorithm that we thought looked best. I wouldn't say that there is one authoritative or best filter, you should use the one that looks best on your data.</p>

<p>Edit: Like joojaa says, a windowed sinc filter is also good, if not quite as cheap. You can find some implementations <a href="https://code.google.com/p/imageresampler/source/browse/trunk/resampler.cpp#266">here</a>.</p>

CC BY-SA 3.0
2015-08-06T15:38:39.483Z
There is a authoritatively best filter, its a infinitely wide sinc filter. Its just not possible to use it. untill that time lanczos windowed sinc is a good alternative to michell
joojaa
CC BY-SA 3.0
2015-08-06T19:48:01.210Z
For reference, there's also the [Nvidia image tools](https://code.google.com/p/nvidia-texture-tools/).
glampert
CC BY-SA 3.0
2015-08-06T20:14:41.767Z
If you are using a cubic-esque or lanczos filter, do those guys work equally well for scaling up as they do for scaling down?
Alan Wolfe
CC BY-SA 3.0
2015-08-07T17:13:17.077Z
I've not tried lanczos so I can't speak to that. We chose catmull-rom for upscaling, which is a cubic, and it worked well.
Jorge Rodriguez
CC BY-SA 3.0
2015-08-06T15:07:23.013Z
2015-08-06T18:02:02.100Z
2015-08-06T18:02:02.100Z
Jorge Rodriguez
<p>Bicubic sampling is pretty good for up sampling an image and making it larger,  but is it a good choice for down sampling as well? Are there better choices?</p>

CC BY-SA 3.0
2015-08-06T19:38:03.663Z
These two old articles from *The Inner Product* talk about filters for mipmap generation, which might be relevant to you: [Link1](http://number-none.com/product/Mipmapping,%20Part%201/index.html), [link2](http://number-none.com/product/Mipmapping,%20Part%202/index.html).
glampert
<texture>
Algorithms for down sampling an image?
Alan Wolfe
# Algorithms for down sampling an image?

(Asked by: username_0 on 2015-08-06)

Bicubic sampling is pretty good for up sampling an image and making it larger, but is it a good choice for down sampling as well? Are there better choices?

**Tags:** texture

> **Comments:**
> **username_1**: These two old articles from *The Inner Product* talk about filters for mipmap generation, which might be relevant to you: [Link1](http://number-none.com/product/Mipmapping,%20Part%201/index.html), [link2](http://number-none.com/product/Mipmapping,%20Part%202/index.html).  

---

## 1 answers

### Answer by username_2 on 2015-08-06. Score: 12 | Accepted answer

When Sean and I wrote [stb\_image\_resize](https://github.com/nothings/stb/blob/master/stb_image_resize.h) we chose Mitchell for downsizing. Mitchell is similar to Cubic, you can read about the cubic class of sampling filters in [Mitchell Netravali 1988](http://www.cs.utexas.edu/~fussell/courses/cs384g-fall2013/lectures/mitchell/Mitchell.pdf). They are all pretty similar and will get you very similar results.

I can't find any written record between Sean and I of why we decided to go with Mitchell, but if memory serves we just resampled a bunch of images and used the algorithm that we thought looked best. I wouldn't say that there is one authoritative or best filter, you should use the one that looks best on your data.

Edit: Like username_3 says, a windowed sinc filter is also good, if not quite as cheap. You can find some implementations [here](https://code.google.com/p/imageresampler/source/browse/trunk/resampler.cpp#266).

> **Comments:**
> **username_3**: There is a authoritatively best filter, its a infinitely wide sinc filter. Its just not possible to use it. untill that time lanczos windowed sinc is a good alternative to michell  
> **username_1**: For reference, there's also the [Nvidia image tools](https://code.google.com/p/nvidia-texture-tools/).  
> **username_0**: If you are using a cubic-esque or lanczos filter, do those guys work equally well for scaling up as they do for scaling down?  
> **username_2**: I've not tried lanczos so I can't speak to that. We chose catmull-rom for upscaling, which is a cubic, and it worked well.  

---

