I guess this is more of an algorithm question than a CUDA-specific question, but I am wondering why there is a noticeable smoothing effect for any of the filters in the bicubicTexture SDK example using scaling of 1:1 (other than ‘nearest neighor’). I would think this is an error, since in a unity scaling case, one is trying to access an exact pixel in the source image (no interpolation necessary). There should be no difference difference between ‘nearest neighbor’ and ‘bilinear’ modes, for instance, in a unity scaling case–the ‘nearest neighbor’ and the ‘bilinearly interpolated’ pixel requested are the same exact pixel. Could someone shed some light on this? As a note, scaling can be set to unity and translation can be set to 0 by pressing ‘r’ in the SDK application.
Short answer - there are many different possible cubic filtering functions, not all of which actually pass through the original values. The function used in the SDK sample does blur a bit.
If you want something more accurate, I recommend this: