图像处理中的双线性插值算法的原理
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/15 02:13:46
? [Ά,N5cllRR֨|8U+̢/L rfl[VN!A/WJ}[{?IFm} u] DR+ݱ1׀a图像处理中的双线性插值算法的原理
图像处理中的双线性插值算法的原理图像处理中的双线性插值算法的原理
何东健的《数字图像处理》光盘第六章有前两种的程序
完整程序已发你邮箱
核心代码如下:
for(y = 0; y < nNewHeight; y++)
{
//指向新图像第y行
//注意此处宽度和高度是新图像的宽度和高度
pNewTemp = pNewBits;
pNewTemp += (nNewHeight - 1 - y) * nNewWidthBytes;
//针对图像每列进行操作
for(x = 0; x < nNewWidth; x++)
{
//计算该像素在源图像中的坐标
int y0 = (long) (y / fYZoomRatio + 0.5);
int x0 = (long) (x / fXZoomRatio + 0.5);
//判断是否在源图范围内
if( (x0 >= 0) && (x0 < nOldWidth) &&
(y0 >= 0) && (y0 < nOldHeight))
{
//用双线性插值
if(bBilinear)
{
unsigned char *pTemp = Interpolation (nOldWidth, nOldHeight,
(float)x0, (float)y0,
nOldWidthBytes, nMovedBits, pOldBits);
//复制像素
memcpy(pNewTemp, pTemp, nMovedBits);
delete [] pTemp ;
}
else
//最近邻插值
{
//指向源图像第y0行,第x0个像素
//注意此处宽度和高度应该互换
pOldTemp = pOldBits;
pOldTemp += (nOldHeight - 1 - y0) * nOldWidthBytes;
pOldTemp += x0 * nMovedBits;
//复制像素
memcpy(pNewTemp, pOldTemp, nMovedBits);
}
}
pNewTemp += nMovedBits;
}
}