0165208864c351879af2d5847ca84f11.png

前言

最近在学习LBP,其中的圆形LBP特征由于计算的值可能不是整数,即计算出来的点不在图像上,我们要使用计算出来的点的插值点。目的的插值方法有很多,Opencv使用的是双线性插值,今天就来介绍一下双线性插值。

概述

先给大家一个形象的例子:如下图所示,假设Q11 Q12 Q22 Q21为图像上已知灰度值的整数点,而我们要计算的P点并不在整数点上,这时候就要利用双线性插值,即对R1 R2两个点进行插值,计算出P的灰度值。

eb9e28818eea857f9f0ccc27b91cf203.png

流程及个人理解

双线性插值,又称为双线性内插。在数学上,双线性插值是有两个变量的插值函数的线性插值扩展,其核心思想是在两个方向分别进行一次线性插值。首先我们进行在X轴方向的插值。

设Q11(x1,y1),Q12(x1,y2),Q21(x2,y1),Q22(x2,y2),P(x,y)

d30db068ac89a58a6b6b1c43b53b8485.png

其实这个公式很好理解,他就是按照与周围两个最近的整数点相近程度(距离)分配整数点的像素值到插值点处,当时学习的时候我觉得甚至和初中学习的相似三角形有点像,都是按比例分配。

进行完X轴方向的插值后,再进行Y轴方向的插值,同理:

938355cf114da12e6e39af74ae316090.png

所以我们要求的P点的灰度值为:

bc9d9b240c1327e3cf7f63b4e6f93b7a.png

这样,就使用了插值的方式计算出非整数点的灰度值。

最后附上源码:

804aea28bb94419cdf0696547539cdf8.png

dffb9b02ea915ac5c44befa02146e6c5.png

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐