0.5w0.5k 逆变换为: 0.50.5k1 (2.7) 有了上面的公式,我们可以把变换分成三步: 1将坐标系o变成o: 2将该点顺时针旋转a角; 3将坐标系o变回o’,这样,我们就得到了变换矩阵,是上面三个矩阵的级联。 K, 3 1=[y 05H05} Sina 0.5w cosa+0.5h sina+0.5wnew-05we sina-0 5hy cosa+0.5h (28) 要注意的是,因为新图变大,所以上面公式中出现了wo,hos,we,hew,它们分别表示 原图(od)和新图(new)的宽、高。我们从图28中容易看出:wnew=max(x4-x|kx-x2) new=max(ly4-y1l, ly3-y2)) (2.8)的逆变换为 cosa Sin a [oy。1]=[z1乃1 10 sina cosa 0‖l0 -05w-05-址 5w0.5 coSa - Sin a 0.5wnew cos a-0. hnew, sin a+0. Swo 0. wnew sin a-0.5hmewC0sa+0.how 1) (2.9) 这样,对于新图中的每一点,我们就可以根据公式(29)求出对应原图中的点,得到它的灰度。 如果超出原图范围,则填成白色。要注意的是,由于有浮点运算,计算出来点的坐标可能不 是整数,采用取整处理,即找最接近的点,这样会带来一些误差(图象可能会出现锯齿)。更 精确的方法是采用插值,将在图象缩放时介绍 源程序如下: # define pl3.1415926535(2.6) 逆变换为: (2.7) 有了上面的公式,我们可以把变换分成三步: 1.将坐标系 o’变成 o; 2.将该点顺时针旋转 a 角; 3.将坐标系 o 变回 o’,这样,我们就得到了变换矩阵,是上面三个矩阵的级联。 (2.8) 要注意的是,因为新图变大,所以上面公式中出现了 wold,hold,wnew,hnew,它们分别表示 原图(old)和新图(new)的宽、高。我们从图 2.8 中容易看出:wnew=max(|x4-x1|,|x3-x2|) ; hnew=max(|y4-y1|,|y3-y2|)。 (2.8)的逆变换为 (2.9) 这样,对于新图中的每一点,我们就可以根据公式(2.9)求出对应原图中的点,得到它的灰度。 如果超出原图范围,则填成白色。要注意的是,由于有浮点运算,计算出来点的坐标可能不 是整数,采用取整处理,即找最接近的点,这样会带来一些误差(图象可能会出现锯齿)。更 精确的方法是采用插值,将在图象缩放时介绍。 源程序如下: #define PI 3.1415926535