实验4 图像几何变换—哈哈镜制作

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验4 图像几何变换—哈哈镜制作

一. 实验目的

熟悉图像的基本格式和数据结构。掌握图像几何变换的原理。 二.实验原理

1. 图像平移

将图像中所有的点都按照指定的平移量水平、垂直移动。设(x 0, y 0)是原图像上的一点,图像水平平移量为t x ,垂直平移量为t y ,则平移后点(x 0, y 0)的坐标变为(x 1, y 1)。

(x 0, y 0)与(x 1, y 1)之间的关系为:

101

0x

y x x t y y t =+⎧⎨

=+⎩ (1)

以矩阵的形式表示为:

1010100110011x y x t x y t y ⎛⎫⎛⎫⎛⎫ ⎪ ⎪⎪= ⎪

⎪⎪ ⎪ ⎪⎪⎝⎭⎝⎭⎝⎭

(2)

它的逆变换:

0101100110011x y x t x y t y -⎛⎫⎛⎫⎛⎫ ⎪ ⎪⎪=- ⎪

⎪⎪ ⎪ ⎪⎪⎝⎭⎝⎭⎝⎭

(3)

平移后的图像中每个像素的颜色是由原图像中的对应点颜色确定的。图像平移处理流程如图1所示。

2. 图像旋转

通常是以图像的中心为圆心旋转,按顺时针方向旋转,如图2所示。 旋转前:

00

cos sin x r b

y r b =⎧⎨

=⎩ (4)

旋转a 角度后:

()()100100cos cos cos sin sin sin sin sin cos cos sin sin cos x r b a r b a r b a x cona y a y r b a r b a r b a x a y a

=-=+=+=-=-=+ (5)

以矩阵的形式表示为:

图2 旋转示意图

1010cos sin 0sin cos 010011x a a x y a a y ⎛⎫⎛⎫⎛⎫ ⎪ ⎪⎪=- ⎪ ⎪⎪ ⎪ ⎪⎪⎝⎭⎝⎭⎝⎭

(6)

(6)式中,坐标系是以图像的中心为原点,向右为x 轴正方向,向上为y 轴正方向。它和以图像左上角为原点,向右为x 轴正方向,向下为y 轴正方向的坐标系之间的转换关系如图3所示。

图3 两种坐标系间的转换关系图

设图像的宽度为w ,高度为h ,容易得到:

100.5010.510011x w x y h y I I ⎛⎫⎛⎫⎛⎫ ⎪ ⎪⎪=- ⎪ ⎪⎪ ⎪ ⎪⎪⎝⎭⎝⎭⎝⎭

ⅡⅡ (7)

逆变换为:

100.5010.510011x w x y h y I I -⎛⎫⎛⎫⎛⎫ ⎪ ⎪⎪=- ⎪ ⎪⎪ ⎪ ⎪⎪⎝⎭⎝⎭⎝⎭

ⅡⅡ (8)

有了以上公式,可以把变换分成三步:

第一步,将坐标系Ⅰ变成Ⅱ; 第二步,将该点顺时针旋转a 角度; 第三步,将坐标系Ⅱ变回Ⅰ。

x Ⅱ

y Ⅰ

这样,我们就得到了变换矩阵,它是上面三个矩阵的级联。那么对于新图像中的每一点,就可以根据对应原图中的点,得到它的灰度。如果超出原图范围,则填成白色。要注意的是,由于有浮点运算,计算出来点的坐标可能不是整数,采用取整处理或插值来处理。

3. 图像缩放

假设x 轴放大因子为c , y 轴放大因子为d ,缩放的变换矩阵为:

010110

001010011x c x y d y ⎛⎫⎛⎫⎛⎫

⎪⎪= ⎪ ⎪⎪ ⎪ ⎪⎪⎝⎭⎝⎭⎝⎭

(9)

三.实验步骤

哈哈镜的制作程序实现伪代码如下:

四.实验仪器

1.计算机;

2.VC++程序;

3.移动式存储器(软盘、U盘等)。

4.记录用的笔、纸。

五.实验报告内容

1.叙述实验过程;

先建立一个原本图像大小两倍的图像。然后2倍图像每个像素点根据原图像最邻近点取其灰度值。

缩小同理

2.提交实验的原始图像和结果图像。

六.思考题

1.如果新图中有一点(x1, y1),按照公式错误!未找到引用源。得到的(x0, y0)不在原图

中该怎么办?

那就取最靠近(x,y)的边界点。

2.编程实现基于零阶和一阶灰度插值法的图像放大技术,比较两种灰度内插方法的效

果。

零阶方便快捷,但是精确度不高

一阶略麻烦、处理时间略长,单精度略高。

3.编程实现图像放大、缩小、三角形、梯形、S形以及内凹和外凹等功能。

相关文档
最新文档