opencv的双立方插值

本文介绍了在OpenCV中使用resize函数时的INTER_CUBIC参数,即双立方插值算法。双立方插值用于图像缩放,通过计算目标像素点周围16个像素的加权平均值来确定新位置的像素值。影响因子w_ij由Bicubic函数计算,而a的选取会影响结果,如a=0.25可避免竖向痕迹。对于不同的缩放比例和a值,结果也会有所不同。
摘要由CSDN通过智能技术生成

写opencv的时候用到了resize函数,

看到一个参数INTER_CUBIC

cv::InterpolationFlags::INTER_CUBIC

这个参数就是表示使用双立方插值的方式对图像进行缩放。

然后就去查了一下双立方插值算法。

然后说一下双立方插值怎么计算的:

1、

先给出一张图像src(原图像),大小假设为(m,n)

输出图像定义为dst

输出图像的大小定义为Size size(M,N)

2、

输出图像的dst(i,j)的值怎么计算呢?

首先我们判断一下缩放后的dst(i,j)在原图src中位置在哪?

可以按照计算方式:

float row = i*m/M;
float col = j*n/N;

这里计算出来的位置为(row,col),也就是dst(i,j)在原图中的位置的值是src(row,col),也就是dst(i,j) = src(row,col);

2、

但是row,col都是浮点数,那怎么计算src(row,col)这个值呢?

好吧,这个图1很多地方都有了,这里借用一下。图中暂且可以把p点认为是点(row,col),那这里就是要计算p点的值,

p点的值怎么计算呢,这里是取p点周围的16个像素,类似于下图1,

然后p点的值(影响因子w_ij乘以a_ij,然后求和):

value = src(row,col) = \sum_{i=0}^{3}\sum_{j=0}^{3}a_i_j*w_i_j

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值