您现在的位置:e-works > 智造书屋 > 书籍列表 > MATLAB数字图像处理实战 > 图像的空间变换

第二章 数字图像变换

第一节 图像的空间变换

    (3)图像旋转变换

    提到旋转,首先要解决“绕着什么转”的问题。通常的做法是,以图像的中心为圆心旋转,将图像上所有像素都旋转一个相同的角度。图像的旋转变换是图像的位置变换,但旋转后图像的大小一般会改变。和图像平移变换一样,在图像旋转变换中,可以把转出显示区域的图像截去,旋转后也可以扩大图像范围以显示所有的图像。

     图像旋转变换

     图像旋转变换

     图像旋转变换

    这样,对于新图像中的每一点,就可以根据式(2-8)求出对应点原图像中的点,并得到它的灰度。如果超出原图像范围,则填成白色。要注意的是,由于有浮点运算,计算出来的点坐标可能不是整数,需要采用取整处理,即找到最接近的点,这样会带来一些误差(图像可能会出现锯齿)。更精确的方法是采用插值,这将在2.1.2小节中进行介绍。

    例程2-4是将图像进行旋转的MATLAB源程序,其运行过程如图2-5a所示,其输入的原始图像如图2-5b所示,其运行结果如图2-5c所示。

    例程2-4

     图像旋转变换

     图像旋转变换

    在MATLAB中,图像的旋转也可以通过直接调用imrotate函数来实现,其调用格式为:

    B = imrotate(A,angle)

    上述函数以图像中心点为基准,以角度 angle 逆时针方向旋转。指定 angle 为负值,可实现图像顺时针旋转。

    例程2-5是调用imrotate函数进行图像放缩的MATLAB程序,其运行结果如图2-6所示。

 图2-5  对图像进行旋转

图2-5  对图像进行旋转

    a) 例程2-4的运行情况 b) 输入的原始图像  c) 例程2-4的运行结果及其旋转后的图像

    例程2-5

     图像旋转变换

图2-6  例程2-5的运行结果

图2-6  例程2-5的运行结果