图形图像处理-图像的几何变换Matlab实现

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

湖南商学院

课程设计

课程名称图形图像处理

题目图像的几何变换

系部数学与统计学院

专业信息与计算科学

班级信息与计算科学1301

学号

学生姓名

任课教师王勇

2016年月日

目录

第一章绪论

§1 非彩色图像在Matlab中的矩阵 (3)

§2 彩色图像在Matlab中的矩阵 (4)

第二章图像的镜像变换

§1 图像的水平方向镜像 (5)

§2 图像的垂直方向镜像 (8)

第三章图像的旋转变换

§1 图像的旋转变换 (10)

第四章图像的转置变换

§1 非彩色图像的转置变换 (13)

§3 彩色图像的转职变换 (13)

第五章图像的缩放变换

§1 双线性内插法简介 (15)

§2 图像的缩放 (16)

第六章图像的平移变换

§1 图像的平移变换 (19)

第一章 绪论

§1 非彩色图像在Matlab 中的矩阵

非彩色图像可以定义为一个二维函数(,)f x y ,其中x 和y 是Euclid 空间(平面)坐标,任意一个二元组(,)x y 处的值f 称为该点处的强度或者灰度。当x ,y 和灰度值f 是离散的数值时,我们称改图像为数字图像。

每一个非彩色图像在Matlab 中都是一个二维矩阵n m A ⨯,而我们知道变换是指集合自身到自身的映射,所以对非彩色图像的变换其实质就是对二维矩阵n m A ⨯进行变换得到另一个二维矩阵n m B ⨯的过程。例如图像1.1

图1.1

其在Matlab 中的表示:

>> A=imread('Fig3.24.jpg'); >> size(A)

ans = 298 252 %A 是一个298行252列的矩阵。

§2 彩色图像在Matlab 中的矩阵

不同于非彩色图像,每一个彩色图像在Maltab 中都是三维矩阵n m s A ⨯⨯。例如图像2.1

图2.1

>> A=imread('Koala.jpg'); >> size(A) ans =

768 1024 3

A 是一个三维矩阵,768行1024列3层,3层是RG

B 三色的数值。

示意图:

第二章 图像的镜像变换

§1图像的水平方向镜像

1.1 对于非彩色图像实现水平镜像操作,我们每次只需提取一列,使其与对称的列交换位置即可:

1122j i j i ni nj a a a a a a ⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥↔⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦

其中1j m i =-+

原图像经过变换后为:

1,1,11,12,2,12,1,,1,1 m m m m n m n m n a a a a a a A a a a ---⎡⎤⎢⎥⎢⎥=

⎢⎥⎢⎥⎢⎥⎣⎦

例1:对 132 152 210 99 172 10 23 110 5⎡⎤

⎢⎥

⎢⎥⎢⎥⎣⎦

进行水平方向镜像。

132 99 23 A ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦, 152 172, 110A A ⎡⎤⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦, 210 10, 5A A ⎡⎤⎡⎤⎢⎥⎢⎥=⎢⎥

⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦

210 152 132 10 172 99 5 110 23A ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦ 1.2 对于彩色图像的水平镜像类比二维的操作,我们每次按行选取一个面,将每

个面与其列对称的位置交换即可:

1,,32,,3,,31,,32,,3,,31,,22,,2,,21,,22,,2,,21,,12,,1,,11,,12,,1

,,1 j j n j i i n i j j n j i i n i i i n i j j n j a a a a a a a a a a a a a a a a a a ⎡⎤⎡⎤

⎢⎥⎢⎥

=⎢⎥⎢⎥⎢⎥⎢⎥

⎣⎦⎣⎦其中1j m i =-+

原图像经过变换后得:

1,2,3223231323311321313122221,2,2222

22112212121121

11112111,2,1221

21

,

,

n m m nm n m m nm n n m m nm n n a a a a a a a a a A a a a a a a a a a a a a a a a a a a ⎡⎤⎡⎤⎢⎥⎢

⎥=⎢⎥⎢⎥⎢⎥⎢⎥

⎣⎦⎣⎦11⎡⎤

⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦

1.3 Matlab 实现

Matlab 源程序

disp('Horizontal image by inversion;(水平镜像)'); str=input('请输入图片名称(例如:Koala.jpg ):\n','s'); imA=imread(str); originalA=size(imA); n=size(originalA); rowA=originalA(1); colA=originalA(2); if n(2)==3

imB=zeros(rowA,1,3); for i=1:colA

imB=[imA(:,i,:),imB]; end end

if n(2)==2

imB=zeros(rowA,1); for i=1:colA

imB=[imA(:,i),imB];

相关文档
最新文档