第六章数字图像的放大缩小及旋转LOGO6.1缩放数字图像的实现方法表6.11122224056776633表6.21111222211112222222244002222440055667777556677776666333366663333LOGO6.1缩放数字图像的实现方法放大2倍后,图像边长增加了2倍,图像面积则增加4倍,由于图像面积可以用图像像素总数表示,所以,图像像素总数应该是原图像的4倍。因此,原图像中每一个像素被复制成4个像素放到新的放大图像中,就是图像放大2倍的方法LOGO6.1缩放数字图像的实现方法image[i][j]—>newimage[i*y][j*y](6-1)newimage[i][j]=image[i/y][j/y](6-2)LOGO6.1缩放数字图像的实现方法图6.2式(6-1)导致错误的缩放结果LOGO6.2缩放和旋转的编程实训设新点邻近的四个点像素值分别为为pa,pb,pc,pd,y=(int)floor(i*h/(double)h1);x=(int)floor(j*w/(double)w1);则:pa=image[y][x];pb=image[y][x+1];pc=image[y+1][x];pd=image[y+1][x+1];LOGOdoublecx(与右邻点的x坐标之差)doublecy(与下邻点的y坐标之差)cx=1-j*w%w1/(double)w1;cy=1-i*h%h1/(double)h1;则由插值公式得目标图像的像素值为:image[i][j]=(int)(cx*cy*pa+cy*(1-cx)*pb+(1-cy)*cx*pc+(1-cx)*(1-cy)*pd+0.5)3.整数优化(减少浮点运算)LOGO习题六可以将数字图像缩小后保存,使用时再放大吗?为什么?为什么不能使用式(6-1)进行直接计算新图像?而要使用式(6-2)?为什么图像旋转270º、180º、90º要特殊处理?而不是和其他度数一样处理?6.2.1和6.2.2两种双线性插值的编程方法有细小的区别,体会这种细小的区别,并理解实际编程时可以根据需要调整程序算法。