matlab 图像平滑的算法_计算机视觉学习笔记5 图像缩放与插值法

常见的插值方法有四种:最近邻插值法,双线性插值法,双三次插值法,LANCZOS插值法。主要应用场景为:几何变换,透视变换,计算新像素位置等。

一般来讲,图像进行缩放时,原始像素间的相对位置会发生改变,产生几何畸变。比如放大1.6倍,原像素就会向新像素进行映射,此时则会产生小数位的像素,然而像素是不能处理小数位的,所以需要通过插值法计算出新的整数位置的像素值。

常见插值方法介绍

  • 最近邻插值法

顾名思义,就是把距离最近的点的像素值赋予变换后的像素点,简单并且速度快,最常见的默认算法。

  • 双线性插值法

和最近邻不同的是,双线性插值法不仅考虑了最近的点,还将远处的点考虑进去了,分别背对两个方向进行一次线性插值,通过权值计算新像素点的像素值。通常用于信号处理和图像处理方面。

  • 双三次插值法

双三次插值法也叫双立方插值法,比双线性插值法更复杂,会计算矩形网络周围最近的16个采样点,是一个三次多项式。虽然速度慢,但是图像平滑,具有抗锯齿功能。

  • LANCZOS插值法

LANCZOS插值法是一种基于能量场的插值算法,会在新像素周围进行重采样,计算权值,并且通过低通滤波器进行样本之间的平滑。

MATLAB中插值法使用

MATLAB使用imresize进行图像尺寸变换,提供了三种插值方法:最近邻: nearest,双线性:bilinear,双三次:bicubic。

imresize调用格式:B = imresize(A,[numrows numcols],method);代码如下:

clear all;clc;img = imread('football.jpg'); %读入图像img1 = imresize(img, [160, 128]); % 设定为指定尺寸,第一个表示高,第二个表示宽,和相片尺寸正好相反。% 最近临插值img2 = imresize(img, 1.6, 'nearest');% 双线性插值img3 = imresize(img, 1.6, 'bilinear');% 双立方插值img4 = imresize(img, 1.6, 'bicubic');imshow(img);fihguresubplot(1,2,1); imshow(img1);subplot(1,2,2); imshow(img2);figure;subplot(1,2,1); imshow(img3);subplot(1,2,2); imshow(img4);
3e061723444882aae4ffd5425de2591d.png

原图像

f7b040ebca3df4ec0a41797b73ad2ab7.png

尺寸变换 和 最近临插值

a4cbd96658c83ee31deff4a173b8105e.png

双线性插值 和 双三次插值

c++中插值法使用

c++中提供了四种插值方法,使用resize进行尺寸变换,具体实现如下:

#include#includeusing namespace cv;using namespace std;int main(int argc, char** argv) { Mat img = imread("data/images/football.jpg"); int h = img.rows; int w = img.cols; // 最近临插值只考虑最近的点 Mat img1 = Mat::zeros(img.size(), img.type()); resize(img, img1, Size(w * 1.6, h * 1.6), INTER_NEAREST); imshow("最近临插值
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MATLAB语言常用算法程序集 书中4-17章代码,都是一些常用的程序 第4章: 函数名 功能 Language 求已知数据点的拉格朗日多项式 Atken 求已知数据点的艾特肯多项式 Newton 求已知数据点的均差形式的牛顿多项式 Newtonforward 求已知数据点的前向牛顿差分多项式 Newtonback 求已知数据点的后向牛顿差分多项式 Gauss 求已知数据点的高斯多项式 Hermite 求已知数据点的埃尔米特多项式 SubHermite 求已知数据点的分段三次埃尔米特多项式及其点处的 SecSample 求已知数据点的二次样条多项式及其点处的 ThrSample1 求已知数据点的第一类三次样条多项式及其点处的 ThrSample2 求已知数据点的第二类三次样条多项式及其点处的 ThrSample3 求已知数据点的第三类三次样条多项式及其点处的 BSample 求已知数据点的第一类B样条的 DCS 用倒差商算法求已知数据点的有理分式形式的分式 Neville 用Neville算法求已知数据点的有理分式形式的分式 FCZ 用倒差商算法求已知数据点的有理分式形式的分式 DL 用双线性求已知点的 DTL 用二元三点拉格朗日求已知点的 DH 用分片双三次埃尔米特点的z坐标 第5章: 函数逼近 Chebyshev 用切比雪夫多项式逼近已知函数 Legendre 用勒让德多项式逼近已知函数 Pade 用帕德形式的有理分式逼近已知函数 lmz 用列梅兹算法确定函数的最佳一致逼近多项式 ZJPF 求已知函数的最佳平方逼近多项式 FZZ 用傅立叶级数逼近已知的连续周期函数 DFF 离散周期数据点的傅立叶逼近 SmartBJ 用自适应分段线性逼近已知函数 SmartBJ 用自适应样条逼近(第一类)已知函数 multifit 离散试验数据点的多项式曲线拟合 LZXEC 离散试验数据点的线性最小二乘拟合 ZJZXEC 离散试验数据点的正交多项式最小二乘拟合 第6章: 矩阵特征计算 Chapoly 通过求矩阵特征多项式的根来求其特征 pmethod 幂求矩阵的主特征及主特征向量 rpmethod 瑞利商加速幂求对称矩阵的主特征及主特征向量 spmethod 收求矩阵全部特征 ipmethod 收求矩阵全部特征 dimethod 位移逆幂求矩阵离某个常数最近的特征及其对应的特征向量 qrtz QR基本算法求矩阵全部特征 hessqrtz 海森伯格QR算法求矩阵全部特征 rqrtz 瑞利商位移QR算法求矩阵全部特征 第7章: 数微分 MidPoint 中点公式求取导数 ThreePoint 三点求函数的导数 FivePoint 五点求函数的导数 DiffBSample 三次样条求函数的导数 SmartDF 自适应求函数的导数 CISimpson 辛普森数微分求函数的导数 Richason 理查森外推算法求函数的导数 ThreePoint2 三点求函数的二阶导数 FourPoint2 四点求函数的二阶导数 FivePoint2 五点求函数的二阶导数 Diff2BSample 三次样条求函数的二阶导数 第8章: 数积分 CombineTraprl 复合梯形公式求积分 IntSimpson 用辛普森系列公式求积分 NewtonCotes 用牛顿-科茨系列公式求积分 IntGauss 用高斯公式求积分 IntGaussLada 用高斯拉道公式求积分 IntGaussLobato 用高斯—洛巴托公式求积分 IntSample 用三次样条求积分 IntPWC 用抛物求积分 IntGaussLager 用高斯-拉盖尔公式求积分 IntGaussHermite 用高斯-埃尔米特公式求积分 IntQBXF1 求第一类切比雪夫积分 IntQBXF2 求第二类切比雪夫积分 DblTraprl 用梯形公式求重积分 DblSimpson 用辛普森公式求重积分 IntDBGauss 用高斯公式求重积分 第9章: 方程求根 BenvliMAX 贝努利求按模最大实根 BenvliMIN 贝努利求按模最小实根 HalfInterval 用二分求方程的一个根 hj 用黄金分割求方程的一个根 StablePoint 用不动点迭代求方程的一个根 AtkenStablePoint 用艾肯特加速的不动点迭代求方程的一个根 StevenStablePoint 用史蒂芬森加速的不动点迭代求方程的一个根 Secant 用一般弦截求方程的一个根 SinleSecant 用单点弦截求方程的一个根 DblSecant 用双点弦截求方程的一个根 PallSecant 用平行弦截求方程的一个根 ModifSecant 用改进弦截求方程的一个根 StevenSecant 用史蒂芬森求方程的一个根 PYZ 用劈因子求方程的一个二次因子 Parabola 用抛物线求方程的一个根 QBS 用钱伯斯求方程的一个根 NewtonRoot 用牛顿求方程的一个根 SimpleNewton 用简化牛顿求方程的一个根 NewtonDown 用牛顿下山求方程的一个根 YSNewton 逐次压牛顿求多项式的全部实根 Union1 用联合1求方程的一个根 TwoStep 用两步迭代求方程的一个根 Montecarlo 用蒙特卡洛求方程的一个根 MultiRoot 求存在重根的方程的一个重根 第10章: 非线性方程组求解 mulStablePoint 用不动点迭代求非线性方程组的一个根 mulNewton 用牛顿求非线性方程组的一个根 mulDiscNewton 用离散牛顿求非线性方程组的一个根 mulMix 用牛顿-雅可比迭代求非线性方程组的一个根 mulNewtonSOR 用牛顿-SOR迭代求非线性方程组的一个根 mulDNewton 用牛顿下山求非线性方程组的一个根 mulGXF1 用两点割线的第一种形式求非线性方程组的一个根 mulGXF2 用两点割线的第二种形式求非线性方程组的一个根 mulVNewton 用拟牛顿求非线性方程组的一组解 mulRank1 用对称秩1算法求非线性方程组的一个根 mulDFP 用D-F-P算法求非线性方程组的一组解 mulBFS 用B-F-S算法求非线性方程组的一个根 mulNumYT 用数延拓求非线性方程组的一组解 DiffParam1 用参数微分中的欧拉求非线性方程组的一组解 DiffParam2 用参数微分中的中点积分求非线性方程组的一组解 mulFastDown 用最速下降求非线性方程组的一组解 mulGSND 用高斯牛顿求非线性方程组的一组解 mulConj 用共轭梯度求非线性方程组的一组解 mulDamp 用阻尼最小二乘求非线性方程组的一组解 第11章: 解线性方程组的直接 SolveUpTriangle 求上三角系数矩阵的线性方程组Ax=b的解 GaussXQByOrder 高斯顺序消去求线性方程组Ax=b的解 GaussXQLineMain 高斯按列主元消去求线性方程组Ax=b的解 GaussXQAllMain 高斯全主元消去求线性方程组Ax=b的解 GaussJordanXQ 高斯-若当消去求线性方程组Ax=b的解 Crout 克劳特分解求线性方程组Ax=b的解 Doolittle 多利特勒分解求线性方程组Ax=b的解 SymPos1 LL分解求线性方程组Ax=b的解 SymPos2 LDL分解求线性方程组Ax=b的解 SymPos3 改进的LDL分解求线性方程组Ax=b的解 followup 追赶求线性方程组Ax=b的解 InvAddSide 加边求逆求线性方程组Ax=b的解 Yesf 叶尔索夫求逆求线性方程组Ax=b的解 qrxq QR分解求线性方程组Ax=b的解 第12章: 解线性方程组的迭代 rs 里查森迭代求线性方程组Ax=b的解 crs 里查森参数迭代求线性方程组Ax=b的解 grs 里查森迭代求线性方程组Ax=b的解 jacobi 雅可比迭代求线性方程组Ax=b的解 gauseidel 高斯-赛德尔迭代求线性方程组Ax=b的解 SOR 超松弛迭代求线性方程组Ax=b的解 SSOR 对称逐次超松弛迭代求线性方程组Ax=b的解 JOR 雅可比超松弛迭代求线性方程组Ax=b的解 twostep 两步迭代求线性方程组Ax=b的解 fastdown 最速下降求线性方程组Ax=b的解 conjgrad 共轭梯度求线性方程组Ax=b的解 preconjgrad 预处理共轭梯度求线性方程组Ax=b的解 BJ 块雅克比迭代求线性方程组Ax=b的解 BGS 块高斯-赛德尔迭代求线性方程组Ax=b的解 BSOR 块逐次超松弛迭代求线性方程组Ax=b的解 第13章: 随机数生成 PFQZ 用平方取中产生随机数列 MixMOD 用混合同余产生随机数列 MulMOD1 用乘同余1产生随机数列 MulMOD2 用乘同余2产生随机数列 PrimeMOD 用素数模同余产生随机数列 PowerDist 产生指数分布的随机数列 LaplaceDist 产生拉普拉斯分布的随机数列 RelayDist 产生瑞利分布的随机数列 CauthyDist 产生柯西分布的随机数列 AELDist 产生爱尔朗分布的随机数列 GaussDist 产生正态分布的随机数列 WBDist 产生韦伯西分布的随机数列 PoisonDist 产生泊松分布的随机数列 BenuliDist 产生贝努里分布的随机数列 BGDist 产生贝努里-高斯分布的随机数列 TwoDist 产生二项式分布的随机数列 第14章: 特殊函数计算 gamafun 用逼近计算伽玛函数的 lngama 用Lanczos算法计算伽玛函数的自然对数 Beta 用伽玛函数计算贝塔函数的 gamap 用逼近计算不完全伽玛函数的 betap 用逼近计算不完全贝塔函数的 bessel 用逼近计算伽玛函数的 bessel2 用逼近计算第二类整数阶贝塞尔函数 besselm 用逼近计算变型的第一类整数阶贝塞尔函数 besselm2 用逼近计算变型的第二类整数阶贝塞尔函数 ErrFunc 用高斯积分计算误差函数 SIx 用高斯积分计算正弦积分 CIx 用高斯积分计算余弦积分 EIx 用高斯积分计算指数积分 EIx2 用逼近计算指数积分 Ellipint1 用高斯积分计算第一类椭圆积分 Ellipint2 用高斯积分计算第二类椭圆积分 第15章: 常微分方程的初问题 DEEuler 用欧拉求一阶常微分方程的数解 DEimpEuler 用隐式欧拉求一阶常微分方程的数解 DEModifEuler 用改进欧拉求一阶常微分方程的数解 DELGKT2_mid 用中点求一阶常微分方程的数解 DELGKT2_suen 用休恩求一阶常微分方程的数解 DELGKT3_suen 用休恩三阶求一阶常微分方程的数解 DELGKT3_kuta 用库塔三阶求一阶常微分方程的数解 DELGKT4_lungkuta 用经典龙格-库塔求一阶常微分方程的数解 DELGKT4_jer 用基尔求一阶常微分方程的数解 DELGKT4_qt 用变形龙格-库塔求一阶常微分方程的数解 DELSBRK 用罗赛布诺克半隐式求一阶常微分方程的数解 DEMS 用默森单步求一阶常微分方程的数解 DEMiren 用米尔恩求一阶常微分方程的数解 DEYDS 用亚当斯求一阶常微分方程的数解 DEYCJZ_mid 用中点-梯形预测校正求一阶常微分方程的数解 DEYCJZ_adms 用阿达姆斯预测校正求一阶常微分方程的数解 DEYCJZ_adms2 用密伦预测校正求一阶常微分方程的数解 DEYCJZ_ yds 用亚当斯预测校正求一阶常微分方程的数解 DEYCJZ_ myds 用修正的亚当斯预测校正求一阶常微分方程的数解 DEYCJZ_hm 用汉明预测校正求一阶常微分方程的数解 DEWT 用外推求一阶常微分方程的数解 DEWT_glg 用格拉格外推求一阶常微分方程的数解 第16章: 偏微分方程的数 peEllip5 用五点差分格式解拉普拉斯方程 peEllip5m 用工字型差分格式解拉普拉斯方程 peHypbYF 用迎风格式解对流方程 peHypbLax 用拉克斯-弗里德里希斯格式解对流方程 peHypbLaxW 用拉克斯-温德洛夫格式解对流方程 peHypbBW 用比姆-沃明格式解对流方程 peHypbRich 用Richtmyer多步格式解对流方程 peHypbMLW 用拉克斯-温德洛夫多步格式解对流方程 peHypbMC 用MacCormack多步格式解对流方程 peHypb2LF 用拉克斯-弗里德里希斯格式解二维对流方程的初问题 peHypb2FL 用拉克斯-弗里德里希斯格式解二维对流方程的初问题 peParabExp 用显式格式解扩散方程的初问题 peParabTD 用跳点格式解扩散方程的初问题 peParabImp 用隐式格式解扩散方程的初边问题 peParabKN 用克拉克-尼科尔森格式解扩散方程的初边问题 peParabWegImp 用加权隐式格式解扩散方程的初边问题 peDKExp 用指数型格式解对流扩散方程的初问题 peDKSam 用萨马尔斯基格式解对流扩散方程的初问题 第17章: 数据统计和分析 MultiLineReg 用线性回归估计一个因变量与多个自变量之间的线性关系 PolyReg 用多项式回归估计一个因变量与一个自变量之间的多项式关系 CompPoly2Reg 用二次完全式回归估计一个因变量与两个自变量之间的关系 CollectAnaly 用最短距离算法的系统聚类对样本进行聚类 DistgshAnalysis 用Fisher两类判别对样本进行分类 MainAnalysis 对样本进行主成分分析

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值