双线性插值简介及C++代码实现

您所在的位置:网站首页 二维内插法 双线性插值简介及C++代码实现

双线性插值简介及C++代码实现

2024-07-01 00:05| 来源: 网络整理| 查看: 265

双线性插值 简介代码实现总结

简介

双线性插值是指现在某个方向进行两次线性插值,之后在另外一个方向对插值的结果再进行一次线性插值。以下图为例,已知 Q 11 Q_{11} Q11​, Q 12 Q_{12} Q12​, Q 21 Q_{21} Q21​, Q 22 Q_{22} Q22​四个点的坐标和像素值、 P P P点的坐标,求 P P P点的像素值。双线性插值的做法是首先在 x x x方向上做两次线性插值获得 R 1 R_{1} R1​点和 R 2 R_{2} R2​点的像素值,之后在 y y y方向上做一次线性插值获得 P P P点的像素值。

双线性插值示意图

代码实现

在实际处理的过程中,依次遍历目标 M a t Mat Mat所有像素点 ( x , y ) (x,y) (x,y),找到像素点 ( x , y ) (x,y) (x,y)在原 M a t Mat Mat上的对应点 ( s x , s y ) (s_{x},s_{y}) (sx​,sy​)。由于 s x s_{x} sx​、 s y s_{y} sy​的值可能不是整数,所以取最接近的四个点进行双线性插值。话不多说,直接来看c++代码。

Mat sxxcz1(Mat img, int h, int w) { Mat img2(h, w, CV_8UC3, Scalar::all(0)); float ori_h = img.rows; float ori_w = img.cols; float rate_h = ori_h / h; float rate_w = ori_w / w; for (int i = 0; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3