数字图像处理笔记(4)

图像的几何变换


前言

  • 本篇博客整理了数字图像处理课程中课件第6章的知识笔记。
  • 相关材料见:DIP-Notes

知识网络图

2

其他重点参考

变换矩阵

几何变换的3×3矩阵的一般形式为:

2

3×3阶的矩阵T可以分成四个子矩阵。其中,1

这个2×2阶子矩阵可使图像实现变换中心在坐标原点的恒等、比例、反射(或镜像)、错切和旋转变换。

[l m]这一行矩阵可以使图像实现平移变换。

[p q]T 这一列矩阵可以使图像实现透视变换,但当p=0, q=0时它无透视作用。

[s]这一元素可以使图像实现全比例变换。

如:

  • 比例缩放变换

    1

  • 平移变换

    1

  • 镜像变换

  • 旋转变换

    1

灰度级插值的处理

在一般情况下,原始(输入)图像的位置坐标(x, y)为整数,而变换后(输出)图像的位置坐标为非整数,即产生“空穴”,反过来也是如此。

因此,一般地,在进行图像的几何变换时,除了要进行其本身的几何变换外,还要进行灰度级插值的处理。

  • 像素移交法(向前映射法)

  • 像素填充法(向后映射法):一个输出像素由四个输入像素的灰度级插值决定。

    • 最近邻域插值法:直接赋值为它最相近的像素值
    • 双线性插值算法

    1

各几何变换出现的问题

  • 比例缩放

    缩放后的图像中的像素在原图像中找不到对应的像素点。

    解决方法

    • 最邻近插值法:最基本、最简单,但效果不佳,采用这种方法放大的图像有很严重的马赛克,而缩小后的图像会出现严重的失真。
    • 双线性内插值算法
  • 平移

    平移后的图像上的每一点都可以在原图像中找到对应的点。例如,对于新图像中的(0,0)像素,代入上面的方程组,可以求出对应原图像中的像素(-Δx,-Δy)。如果Δx或Δy大于0,则点(-Δx,-Δy)不在原图像中。对于不在原图像中的点,可以直接将它的像素值统一设置为0或者255(对于灰度图就是黑色或白色)。同样,若有像素点不在原图像中,也就说明原图像中有点被移出显示区域。如果不想丢失被移出的部分图像,可以将新生成的图像宽度增大|Δx|,高度增大|Δy|

  • 旋转

    进行图像旋转时需要注意如下两点:

    (1) 图像旋转之前,为了避免信息的丢失,一定要平移坐标,具体的做法有两种:变换前平移图像,或平移坐标轴。

    (2) 图像旋转之后,会出现许多的空洞点,对这些空洞点必须进行填充处理,否则画面效果不好。一般也称这种操作为插值处理。

    最简单的方法是行插值方法或列插值方法:

      ① 找出当前行的最小和最大的非白点的坐标,记作(i,k1)、(i,k2)。

      ② 在(k1,k2)范围内进行插值,插值的方法是:空点的像素值等于前一点的像素值。

      ③ 同样的操作重复到所有行。经过如上的插值处理之后,图像效果就变得自然了,列插值方法与此类同。

透视变换

  • 把世界坐标系中的三维物体或对象转变为二维图形表示的过程称为投影变换。

    根据视点(投影中心)与投影平面之间距离的不同,投影可分为平行投影透视投影,透视投影即透视变换。

    平行投影的视点(投影中心)与投影平面之间的距离为无穷大,而对透视投影(变换),这个距离是有限的。

    这个距离决定着透视投影的特性——透视缩小效应,即三维物体或对象透视投影的大小与形体到视点(投影中心)的距离成反比

  • 灭点

    灭点可以看做是无限远处的一点在投影面上的投影。透视投影的灭点可以有无限多个,不同方向的平行线在投影面上就能形成不同的灭点,坐标轴方向的平行线在投影面上形成的灭点又称为主灭点

    因为有x、y和z三个坐标轴,所以主灭点最多有三个。透视投影按主灭点的个数进行分类,即按照投影面与坐标轴的夹角进行分类,可分为一点透视、两点透视和三点透视。


重点习题与解答

附件:数字图像处理:部分课后习题参考答案.doc.

第6章

注:下列习题中的计算题均为重点。

  1. 试说明为什么2×2阶矩阵不能直接实现2D图像的平移变换。

  2. 在图像比例缩放变换中,如果放大倍数太大,按照前面的方法处理会出现马赛克效应。这个问题有没有办法解决或者有所改善?如果有,请给出方案。

  3. 请写出图像旋转之后,插值处理中的列插值方法。

  4. 设有边长为1厘米的4×4方块图像f(x, y)为:

    1

    现要将它逆时针旋转45°,请写出变换过程,并编写程序实现这个变换。

  5. 设f(221,396)=18,f(221,397)=45,f(222,396) =52,f(222,397)=36,试分别用最邻近插值法和双线性插值法计算f(221.3,396.7)的值。

  6. 若将任意一幅图像绕点P(x,y)=(100,260)逆时针旋转60°,求它的几何变换公式。

  7. 写出符合如下要求的几何变换公式:

    (1) 沿过点P(x,y)=(60,120),与x轴夹角为30°(逆时针)的直线上的点按130%的比例放大图像;

    (2) 沿过原点(0,0),与y轴夹角为30°(逆时针)的直线上的点按60%的比例缩小图像。

参考答案

  1. 对于2D图像几何变换,由于变换中心在坐标原点的恒等、比例缩放和旋转等变换,都可以用2x2矩阵表示和实现,但一个2x2变换矩阵却不能实现2D图像的平移以及绕任意点的比例缩放、旋转等变换。

    因此,为了能够用统一的矩阵线性变换的形式表示和实现这些常见的图像几何变换,就需要引入齐次坐标。

  2. 应使用线性插值算法。

  3. 图像旋转之后,会出现许多的空洞点。对这些空洞点必须进行填充处理,否则画面效果不好。一般也称这种操作为插值处理。最简单的方法是行插值方法或列插值方法:

    列插值算法如下:

    ① 找出当前列的最小和最大的非白点的坐标,记作(k1,j)、(k2,j)。

    ② 在(k1,k2)范围内进行插值,插值的方法是:空点的像素值等于上一点的像素值。

    ③ 同样的操作重复到所有列。经如上的插值处理之后,图像效果就变得自然了

  4. 计算题,见附件

  5. 计算题,见附件

  6. 计算题,见附件

  7. 计算题,此题有一定争议,其中的一种解答参考下图:

    1