双线性插值法计算题,双线性插值计算题
插值的原理(最近邻、双线性、双三次)常用的插值方法有最近邻插值、双现象插值、双三次插值,主要用于放大或缩小图像。
减少图像(称为减少像素采样(或减少像素采样)或减少像素采样)的主要目的是:1 .使图像适合显示区域的大小;2.生成相应图像的缩略图。
放大图像(“上采样”或“插值”)的主要目的是放大原始图像,以便在更高分辨率的显示设备上显示。
一、最邻近插值法
最近插值是指选择最近的像素作为其像素值。这是最简单的插值方法,不需要计算。在计算出像素的cxdjqm个像素中,最接近计算出的像素的相邻像素的灰度值被给予计算出的像素。设i u,jv(I,j为正整数,u,v为大于零小于1的小数,下同)为计算出的像素坐标,像素的灰度值f) i u,jv如下图所示。
当(i u,j v)在A区域,即u0.5和v0.5时,给出其左上角像素的灰度值被获得的像素。类似地,在区域B的情况下,给出右上角像素的灰度值,在区域C的情况下,给出左下角像素的灰度值,在区域D的情况下,给出右下角像素的灰度值。
特点:最近邻计算较少,但插值生成的图像灰度不连续,灰度变化可能出现明显锯齿。
代码块:
import cv2 importnumpyasnpdeffunction(img):height,width,channels=img . shapeemptyimage=NP . zeros()800,800 NP . uint 8)sh=800/heightsw=800/widthforiinrange(800):forjinrange(800):x=int)I/sh)y=int)j y)Returnemptyimageimg=cv2 . im read(lenna . png))(function)img)print)忧虑的蜜蜂。
已知双线性插值X-Y平面中四个像素的坐标(x0,y0)、(x1,y0)、(x0,y1)、(x1)、(x1,y1)和四点配置区间中一个像素的图像。
2.1单一线性插值
因为很难进入,我们必须先了解顺序线性插值的原理:
众所周知,数据(x0,y0)和(x1,y1)计算的是直线上区间[x0,x1]中某个位置X的Y值。如下图所示。
总之,线性插值就是用x和x0,x1之间的距离作为y0,y1的权重。双线性插值本质上是指两个方向的线性插值。
2.2双线性插值
数学上,双线性插值是二元插值函数的线性插值扩展,其核心思想是分别在两个方向上进行线性插值。如下图所示。
假设你想得到未知函数F在p=(x,y)点的值,假设未知函数F在q11=(x1,y1),q11=(x1,y1),q22=(x2,y2)这四个点的值就是最常见情况下一个像素的像素值。分别在X和Y方向执行两次非线性插值,以获得:
因为图像的双线性插值只使用了四个相邻的点,所以上面公式的分母是1。
特点:1。选择源图像和目标图像的原点(0,0)的左上角。根据插值公式计算目标图像各点的像素时,假设5) 5的图像需要缩减为3) 3,那么源图像和目标图像的像素的对应关系。
也就是说,如果选择了源图像和目标图像的原点(0,0的左上角或右下角),那么最右边和最底部的像素实际上并不参与计算,目标图像的每个像素点计算出的灰度值也可能相对于源图像向左偏移。为了解决这个问题,源图像和目标图像的几何中心必须对齐。
双线性插值法用于计算dst的每个像素的像素值。需要将dst像素的坐标对应到src图像的坐标,使用双线性插值法计算src对应坐标的像素值。它们之间的坐标对应关系如下。
srcx=dstx*(srcwidth/dstwidth),
srcy=dsty*(srcheight/dstheight))).
考虑到源图像和目标图像的几何中心的定位,如果src图像保持不变并且仅移动dst图像,则移动距离必须是1/2*(src_size-dst_size
宽度/dst宽度)0.5 *(src宽度/dst宽度-1)
srcY=dstY *(src高度/dst高度)0.5 *(src高度/dst高度-1)
证明过程如下:
2、双线性插值运算过程存在着大量的浮点数运算,相对而言是一个较为耗时的过程,直接进行计算的话,由于计算的srcX和srcY都是浮点数,后续会进行大量的乘法,而图像数据量又大,速度不会理想,解决思路是:浮点运算整数运算"左右移按位运算"。
3、没有灰度不连续的缺点,图像看起来更光滑。
代码块:
将numpy作为npimport cv2 python导入实现双线性插值 def bilinear_interpolation(img,out_dim): src_h,src_w,channel=img.shape dst_h,dst_w=out_dim[1],out_dim[0] print (src_h,src_w=,src_h,src _ w=,dst_h,dst_w=,dst_h,dst_w=如果src_h==dst float(src _ h)/dst _ h求夏令时图像x和y的原点x和y坐标#使用几何中心对称#如果使用直接方式,src _ x=dst _ x * scale _ x src _ x=(dst _ x 0.5)* scale _ x-0.5 src _ y=(dst _ y 0.5)* scale _ y-0.5 #查找将用于计算插值的点的坐标src _ x0=int(NP。floor(src _ x))src _ x1=min(src _ x0 1,src _ w-1)src _ y0=int(NP。楼层(src src_h - 1) #计算插值temp 0=(src_x1-src _ x)* img[src _ y0,src_x0,i] (src_x - src_x0) * img[src_y0,src_x1,I]temp 1=(src _ x1-src _ x)* img[src _ y1,src_x0,i] (src_x - src_x0) * img[src_y1,src _ x1
双三次插值又称立方卷积插值。三次卷积插值是一种更加复杂的插值方式。该算法利用待采样点周围16个点的灰度值作三次插值,不仅考虑到四个直接相邻点的灰度影响,而且考虑到各邻点间灰度值变化率的影响。三次运算可以得到更接近高分辨率图像的放大效果,但也导致了运算量的急剧增加。
数学原理如下:
特点:双三次曲线插值方法计算量最大,但后的图像效果最好。这种算法是一很常见的算法,普遍用在图像编辑软件、打印机驱动和数码相机上。
代码块参考资料:https://blog.csdn.net/u013185349/article/details/84841202?utm_term=python最邻近插值UTM _ medium=分销。PC _ agg页面_搜索_结果。none-task-blog-2 allsobaiduweb ~ default-2-84841202 SPM=3001.4430
参考资料:
最邻近插值法:
https://blog.csdn.net/qq_25015749/article/details/106288238
双线性插值法:
https://博客。csdn。net/weixin _ 36670529/article/details/103125041
https://www.cnblogs.com/yssongest/p/5303151.html
双三次插值法:
https://blog.csdn.net/nandina179/article/details/85330552
https://blog.csdn.net/qq_29058565/article/details/52769497
https://blog.csdn.net/u013185349/article/details/84841202?utm_term=python最邻近插值UTM _ medium=分销。PC _ agg页面_搜索_结果。none-task-blog-2 allsobaiduweb ~ default-2-84841202 SPM=3001.4430
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。