【图像处理】双线性插值

来源:互联网 发布:数据接口开发 编辑:程序博客网 时间:2024/04/30 13:15


基本原理

双线性插值能够缩小图片放大时所产生的锯齿,主要原理是对所求像素点临近的四个点像素值进行加权叠加,权值可通过与对应点的距离得出。

如下图所示,D为所求的点的位置,坐标为(X’,Y’),已知相邻四个点的像素值S(X,Y),S(X,Y+1), S(X+1,Y+1),S(X+1,Y)及对应距离dx,dy,求对应点D(X’,Y’)。

Q(X1’,Y’)= S(X,Y) * (1-dy) + S(X,Y+1) * dyQ(X2’,Y’)= S(X+1,Y) * (1-dy) + S(X+1,Y+1) * dyD(X’,Y’)= (1-dx) * Q(X1’,Y’) + dx * Q(X2’,Y’)即D(X’,Y’)= S(X,Y)*(1-dy)*(1-dx)+S(X,Y+1)*dy*(1-dx)+S(X+1,Y)*(1-dy)*dx +S(X+1,Y+1)*dy*dx



代码实现

double dx,dy;double xDst;double yDst;x1 = (int)xDst;x2 = x1+1;y1 = (int)yDst;y2 = y1+1;dx = xDst -x1;dy = yDst -y1;*pDataRoi++=((int)(*(region1+x1+y1*wr)*(1-dx)*(1-dy))+(int)(*(region1+x1+y2*wr)*(1-dx)*dy)+(int)(*(region1+x2+y1*wr)*dx*(1-dy))+(int)(*(region1+x2+y2*wr)*dx*dy));


1 0