1. 图像放大的过程

如何看待一幅图像的放大?图像放大的本质是像素点的增加

1.确定新像素的位置

2x2的原图像:

java插值算法 斜率 插值算法原理_插值


放大1.5倍到3x3大小:

java插值算法 斜率 插值算法原理_图像处理_02


缩小到原图像大小:

java插值算法 斜率 插值算法原理_图像处理_03


确定像素值:

java插值算法 斜率 插值算法原理_插值_04


扩展到规定的大小:

java插值算法 斜率 插值算法原理_图像处理_05

如何确定新像素的值f(x,y)???
这里就要用到图像内插了

2. 经典插值算法

最近邻插值、线性插值、双线性插值

1.最近邻插值

java插值算法 斜率 插值算法原理_像素点_06


A ,B,C,D为新的像素点,新像素点的值由最近的原像素的值确定,如上图所示,A点离黑色像素最近,所以赋值为黑色,B点离红色像素最近,所以赋值为红色,C点和D点同

java插值算法 斜率 插值算法原理_java插值算法 斜率_07

2.双线性插值

双线性插值需要考虑4个原始像素的值,每个像素点距离新像素点的位置不同最后导致他们对新像素点的权重也不同,如下图,Q12,Q22,Q11,Q21均为原始像素点,P为新的像素点。

java插值算法 斜率 插值算法原理_像素点_08


如何确定P点的值?

1.确定R1和R2的值

java插值算法 斜率 插值算法原理_内插法_09


2.在y方向进行线性插值

java插值算法 斜率 插值算法原理_像素点_10


最后就能够得到双线性插值的结果

2.三次线性插值

利用点(x’,y’)的16个最近邻像素的灰度值,如图所示,设点(x’,y’)的16个最近邻像素为:A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,

java插值算法 斜率 插值算法原理_图像处理_11

则计算点(x’,y’)的插值公式为:

java插值算法 斜率 插值算法原理_图像处理_12


其中g(.)表示相应16个最近邻像素的灰度值。Wx为横坐标插值的加权值,Wy为纵坐标插值的加权值,分别计算如下:

1)如果g(.)的横坐标值与x’的差值dx<1(即B,C,F,G,J,K,N,O),则:

java插值算法 斜率 插值算法原理_像素点_13


2)如果g(.)的横坐标值与x’的差值dx>1(即A,D,E,H,I,L,M,P),则:

java插值算法 斜率 插值算法原理_图像处理_14