文章目录
- 基本原理
- 代码
引用自:《数字图像处理》
基本原理
引用自:https://baike.baidu.com/item/%E5%8F%8C%E4%B8%89%E6%AC%A1%E6%8F%92%E5%80%BC/11055947?fr=aladdin
双三次插值考虑的是周围16个像素的像素值,其权重因子的计算比较复杂。常用BiCubic插值原理。
BiCubic插值原理简介:
双三次插值又称立方卷积插值。三次卷积插值是一种更加复杂的插值方式。该算法利用待采样点周围16个点的灰度值作三次插值,不仅考虑到4 个直接相邻点的灰度影响,而且考虑到各邻点间灰度值变化率的影响。三次运算可以得到更接近高分辨率图像的放大效果,但也导致了运算量的急剧增加。这种算法需要选取插值基函数来拟合数据,其最常用的插值基函数如图1所示,本次实验采用如图所示函数作为基函数。
引用自:图像放大并进行BiCubic插值 Matlab/C++代码
不想去造轮子,太蛋疼了,???,,直接调用opencv的函数吧
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | # -*- coding: utf-8 -*- """ @File : 双三次内插法.py @Time : 2020/6/29 16:55 @Author : Dontla @Email : [email protected] @Software: PyCharm """ import cv2 as cv def BCI(img, resolution): return cv.resize(img, (resolution[1], resolution[0]), interpolation=cv.INTER_CUBIC) img = cv.imread('cat.jpg') # print(img.shape) # (600, 800, 3) resolution = 300, 400 img_ = BCI(img, resolution) cv.imshow('win1', img) cv.imshow('win2', img_) cv.waitKey(0) |
调用opencv也太快了吧!!!几乎瞬间完成了。。。。这给热爱造轮子的我又是一个沉重的打击(。_。)
参考文章1:双三次插值算法(bicubic interpolation)与图形学和计算方法的关系
参考文章2:python3实现bicubic(双三次插值)重建四倍放大图像
参考文章3:opencv库实现图像最近邻、双线性、双三次插值
参考文章4“:图像插值算法总结