实验4 图像几何变换—哈哈镜制作
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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形以及内凹和外凹等功能。