前言
最近在学习LBP,其中的圆形LBP特征由于计算的值可能不是整数,即计算出来的点不在图像上,我们要使用计算出来的点的插值点。目的的插值方法有很多,Opencv使用的是双线性插值,今天就来介绍一下双线性插值。
概述
先给大家一个形象的例子:如下图所示,假设Q11 Q12 Q22 Q21为图像上已知灰度值的整数点,而我们要计算的P点并不在整数点上,这时候就要利用双线性插值,即对R1 R2两个点进行插值,计算出P的灰度值。
流程及个人理解
双线性插值,又称为双线性内插。在数学上,双线性插值是有两个变量的插值函数的线性插值扩展,其核心思想是在两个方向分别进行一次线性插值。首先我们进行在X轴方向的插值。
设Q11(x1,y1),Q12(x1,y2),Q21(x2,y1),Q22(x2,y2),P(x,y)
其实这个公式很好理解,他就是按照与周围两个最近的整数点相近程度(距离)分配整数点的像素值到插值点处,当时学习的时候我觉得甚至和初中学习的相似三角形有点像,都是按比例分配。
进行完X轴方向的插值后,再进行Y轴方向的插值,同理:
所以我们要求的P点的灰度值为:
这样,就使用了插值的方式计算出非整数点的灰度值。
最后附上源码: