读书人

双线插值算法求指导,该怎么处理

发布时间: 2012-04-21 14:34:44 作者: rapoo

双线插值算法,求指导
双线插值算法就是根据四个像素点,加权平均,求出一个点的像素。我在网上下载了一个程序,但是看的不是很明白。求高手指导……

double rateH = ( double ) srcH / desH; //高度的放大比例



double rateW = ( double ) srcW / desW; //宽度的放大比例

//假如是把300万像素放大成500万像素,那么rateH=rateW=3/5


int desBufSize = ( ( desW * bitCount + 31 ) / 32 ) * 4 * desH; //????


int desLineSize = ( ( desW * bitCount + 31 ) / 32 ) * 4; //????



BYTE *desBuf = new BYTE[ desBufSize ];



double rateH = ( double ) srcH / desH;



double rateW = ( double ) srcW / desW




//双线型内插值算法
for ( i = 0; i < desH; i++ )
{

int tH = ( int ) ( rateH * i ); //比例乘以坐标,这是什么?

int tH1 = min( tH + 1, srcH - 1 );
float u = ( float ) ( rateH * i - tH );



for ( j = 0; j < desW; j++ )

{

int tW = ( int ) ( rateW * j );

int tW1 = min( tW + 1, srcW - 1 );

float v = ( float ) ( rateW * j - tW );



//f(i+u,j+v) = (1-u)(1-v)f(i,j) + (1-u)vf(i,j+1) + u(1-v)f(i+1,j) + uvf(i+1,j+1)


for ( int k = 0; k < 3; k++ )

{

desBuf[ i * desLineSize + j * bitCount / 8 + k ] =

( 1 - u ) * ( 1 - v ) * srcBuf[ tH * lineSize + tW * bitCount / 8 + k ] +

( 1 - u ) * v * srcBuf[ tH1 * lineSize + tW * bitCount / 8 + k ] +

u * ( 1 - v ) * srcBuf[ tH * lineSize + tW1 * bitCount / 8 + k ] +

u * v * srcBuf[ tH1 * lineSize + tW1 * bitCount / 8 + k ];

}

}

}


求指导,


[解决办法]
http://zh.wikipedia.org/zh/%E5%8F%8C%E7%BA%BF%E6%80%A7%E6%8F%92%E5%80%BC

读书人网 >C语言

热点推荐