主权项 |
1.一种用于图像放大处理过程中的快速双线性插值方法,其特征在于对于大小为m×n的原图像和大小为M×N的目标图像,定义原图像和目标图像都以左上角像素作为坐标原点,右方向为x正方向,向下方向为y正方向,原图像坐标系中点的坐标为(x,y),目标图像像素坐标为(x′,y′),定义两个数组,Pre_Row和Cur_Row,临时存储原图像A行方向上插值得到的数据,Cur_Row存储当前行插值得到的数据,Pre_Row存储前面一行插值得到的数据,然后采用以下步骤获得目标图像像素点的灰度值:1)准备在原图像的列方向x坐标方向和行方向y坐标方向上分别以步长stepx,stepy进行插值,stepx=(n-1)/(N-1);stepy=(m-1)/(M-1),用j表示原图像的行编号,j为0到M-1之间的正整数;2)在原图像的行方向上进行插值,得到在原图像坐标系中x=i′×stepx,y=j的点的灰度值A(i′×stepx,j),i′为0到N-1之间的正整数,为放大图像的列编号,将得到的插值结果存到数组Cur_Row中,即Cur_Row[i′]=A(i′×stepx,j);3)判断原图像的行数,如果是第0行,即j=0,继续下一步,如果j≠0,转到6);4)将数组Cur_Row中的值赋给目标图像的第0行,即令B(i′,0)=Cur_Row[i′],i′为0到N-1之间的正整数;5)将Cur_Row数组的值赋给Pre_Row数组,即:Pre_Row[i′]=Cur_Row[i′],i′为0到N-1之间的正整数,转到7);6)令原图像当前的行编号为j,以Pre_Row[i′],Cur_Row[i′]作为[0,1]区间的两个端点的像素值,即f(0)=Pre_Row[i′],f(1)=Cur_Row[i′],用整数移位运算和整数加减法进行线性插值,得到目标图像B在x′=i′,y′=k的像素灰度值<math><mrow><mi>B</mi><mrow><mo>(</mo><msup><mi>i</mi><mo>′</mo></msup><mo>,</mo><mi>k</mi><mo>)</mo></mrow><mo>=</mo><mover><mi>f</mi><mo>~</mo></mover><mrow><mo>(</mo><mi>k</mi><mo>×</mo><mi>stepy</mi><mo>-</mo><mi>j</mi><mo>+</mo><mn>1</mn><mo>)</mo></mrow><mo>,</mo></mrow></math>其中k×stepy-j+1为[0,1]区间的一个实数,用整数移位运算和整数加减法进行线性插值的具体步骤为:对于[0,1]区间的任何一个实数x,定义p为不大于x×8+0.5的最大整数,如果p为0,则<math><mrow><mover><mi>f</mi><mo>~</mo></mover><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><mi>f</mi><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow><mo>;</mo></mrow></math> 如果p为1,则<math><mrow><mover><mi>f</mi><mo>~</mo></mover><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><mi>f</mi><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow><mo>+</mo><mrow><mo>(</mo><mrow><mo>(</mo><mi>f</mi><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>-</mo><mi>f</mi><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow><mo>)</mo></mrow></mrow><mo>></mo><mo>></mo><mn>3</mn><mo>;</mo></mrow></math>如果p为2,则<math><mrow><mover><mi>f</mi><mo>~</mo></mover><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><mi>f</mi><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow><mo>+</mo><mrow><mo>(</mo><mrow><mo>(</mo><mi>f</mi><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>-</mo><mi>f</mi><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow><mo>)</mo></mrow></mrow><mo>></mo><mo>></mo><mn>2</mn><mo>;</mo></mrow></math>如果p为3,则<math><mrow><mover><mi>f</mi><mo>~</mo></mover><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><mrow><mo>(</mo><mrow><mo>(</mo><mi>f</mi><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow><mo>+</mo><mi>f</mi><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>)</mo></mrow><mo>></mo><mo>></mo><mn>1</mn><mo>)</mo><mo>-</mo><mrow><mo>(</mo><mrow><mo>(</mo><mi>f</mi><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>-</mo><mi>f</mi><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow><mtext></mtext><mo>)</mo></mrow><mo>></mo><mo>></mo><mn>3</mn><mo>)</mo></mrow><mo>;</mo></mrow><mtext></mtext></mrow></math>如果p为4,则<math><mrow><mover><mi>f</mi><mo>~</mo></mover><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><mrow><mo>(</mo><mi>f</mi><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow><mo>+</mo><mi>f</mi><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>)</mo></mrow><mo>></mo><mo>></mo><mn>1</mn><mo>;</mo></mrow></math>如果p为5,<math><mrow><mover><mi>f</mi><mo>~</mo></mover><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><mrow><mo>(</mo><mrow><mo>(</mo><mi>f</mi><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow><mo>+</mo><mi>f</mi><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>)</mo></mrow><mo>></mo><mo>></mo><mn>1</mn><mo>)</mo></mrow><mo>+</mo><mrow><mo>(</mo><mrow><mo>(</mo><mi>f</mi><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>-</mo><mi>f</mi><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow><mo>)</mo></mrow><mo>></mo><mo>></mo><mn>3</mn><mo>)</mo></mrow><mo>;</mo></mrow></math>如果p为6,<math><mrow><mover><mi>f</mi><mo>~</mo></mover><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><mi>f</mi><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>+</mo><mrow><mo>(</mo><mrow><mo>(</mo><mi>f</mi><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow><mo>-</mo><mi>f</mi><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>)</mo></mrow><mo>></mo><mo>></mo><mn>2</mn><mo>)</mo></mrow><mo>;</mo></mrow></math>如果p为7,<math><mrow><mover><mi>f</mi><mo>~</mo></mover><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><mi>f</mi><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>+</mo><mrow><mo>(</mo><mrow><mo>(</mo><mi>f</mi><mrow><mo>(</mo><mn>0</mn><mo>)</mo></mrow><mo>-</mo><mi>f</mi><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>)</mo></mrow><mo>></mo><mo>></mo><mn>3</mn></mrow><mo>;</mo></mrow></math> 如果p为8,<math><mrow><mover><mi>f</mi><mo>~</mo></mover><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow><mo>=</mo><mi>f</mi><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow><mo>;</mo></mrow></math>其中>>为右移位运算,转到5);7)判断下一图像的行数,如果j≤m-1,转到2),否则结束处理过程。 |