# Why bicubic interpolation uses a 4x4 pixels neighborhood?

Hello, I am just starting to learn about image interpolation. I already read some papers about it and I'm doing some tests applying the bicubic interpolation (INTER_CUBIC) using the resize function provided by the OpenCV library.

In 2 papers that I read, the authors wrote that the bicubic interpolation uses a neighborhood of 16x16 pixels, but in the OpenCV documentation, it says that the bicubic interpolation method uses a neighborhood of 4x4 pixels.

Can someone explain to me why it uses a 4x4 neighborhood? What is the main difference between using a 16x16 neighborhood and a 4x4 neighborhood?

Note: keep in mind that I'm a newbie.

edit retag close merge delete

Sort by ยป oldest newest most voted

I cannot answer why but i can explain difference :

bicubic interpolation is a function f with 16 parameters. To solve a such system with 16 unknown you need 16 data =4x4 neigborhood. It is smallest compact neighborhood.

Using this neigborhood you are sure f(j,i)=I(j,i) I image function (j,i ) pixel of coordinate column and row

Now you can take larger neighborhood but f(j,i)<>I(j,i)

An example with y=a x^2+ b x + c , 5 datas x=[-2 -1 0 1 2]

y=[-5 -1 3 2 3.5]

Do you prefer red or green curve ?

more

Thanks for the great explanation @LBerger.

The green curve seems to be smoother, am I right?

( 2017-02-07 08:59:16 -0600 )edit

Yes it is.

( 2017-02-07 10:21:25 -0600 )edit

Official site

GitHub

Wiki

Documentation