实验二、图像的几何变换 (2) 袁子鹏 网络11-2班 3110757219
图像几何变换(旋转和缩放)

图像几何变换的重要性
图像几何变换可以帮助我们更好地理 解和分析图像内容,例如在人脸识别 、目标检测和跟踪、遥感图像处理等 领域。
通过变换可以纠正图像的畸变,提高 图像的清晰度和可读性,从而改善图 像的质量。
图像几何变换的应用场景
医学影像处理
在医学领域,通过对医学影像进行几何变换,可以更好地 观察和分析病变部位,提高诊断的准确性和可靠性。
图像旋转
图像旋转的基本概念
图像旋转是指将图像围绕一个点 进行旋转的操作。这个点被称为
旋转中心或原点。
旋转角度是旋转的度数,通常以 度(°)为单位。
旋转可以是顺时针或逆时针方向, 取决于旋转角度的正负值。
图像旋转的算法实现
图像旋转可以通过多种算法实现,其 中最常用的是矩阵变换和插值算法。
插值算法通过在旋转过程中对像素进 行插值,以获得更平滑的旋转效果。 常用的插值算法包括最近邻插值、双 线性插值和双三次插值等。
矩阵变换算法通过将图像表示为一个 矩阵,并应用旋转矩阵来计算旋转后 的像素坐标。
图像旋转的优缺点
优点
图像旋转可以用于纠正倾斜的图像、 增强图像的视觉效果、实现特定的艺 术效果等。
缺点
图像旋转可能会改变图像的比例,导 致图像失真或变形。此外,对于大尺 寸的图像,旋转操作可能需要较长时 间和较大的计算资源。
双线性插值和双三次插值等。
重采样算法
重采样算法通过重新计算每个像 素的灰度值来实现图像缩放。这 种方法通常比插值算法更精确,
但计算量较大。
多项式拟合算法
多项式拟合算法通过拟合原始图 像中的像素点,然后根据多项式 函数来计算新的像素值。这种方 法适用于对图像进行复杂变换的
情况。
图像缩放的优缺点
数字图像处理——实验二--图像的几何变换

数字图像处理实验二实验二图像的几何变换一.实验目的及要求掌握图像几何变换的基本原理,熟练掌握数字图像的缩放、旋转、平移、镜像和转置的基本原理及其MATLAB编程实现方法。
二、实验设备1.计算机;2.MATLAB6.5;三、实验内容及结果(一)研究以下程序,分析程序功能;输入执行各命令行,认真观察命令执行的结果。
熟悉程序中所使用函数的调用方法,改变有关参数,观察试验结果。
1. 图像缩放分析:imresize 函数功能:用于对图像做缩放处理J1 = imresize(I, Scale, 'nearest') 即将图像I,采用最近邻插值算法,放大(缩小)Scale倍。
J2 = imresize(I, Scale, 'bilinear') 即将图像I,采用双线性插值算法,放大(缩小)Scale倍。
通过改变Scale的大小,可以观察到生成的图像大小随之改变,且放大倍数越大,图像变得越模糊。
在放大相同倍数的情况下,可以观察到采用双线性插值算法的图像更为清晰。
2. 图像旋转分析:imrotate 函数功能:用于对图像做旋转处理J1 = imrotate(I, Theta, 'nearest') 即将图像I,采用最近邻插值算法,绕图像的中心点旋转Theta度,正数表示逆时针旋转,负数表示顺时针旋转,旋转后的图像超出的部分填充0(黑色)。
J2 = imrotate(I, Theta, 'bilinear','crop') 功能同上,不同的是采用了双线性插值算法,'crop'表示通过对旋转后的图像进行裁剪,保持旋转后输出图像的尺寸和输入图像的尺寸一样。
通过改变Theta的大小,可以观察到生成的图像旋转角度随之改变,同时,采用双线性插值算法的图像更为清晰。
3.图像水平镜象分析:flipdim(X,dim),其中X表示一个矩阵,dim指定翻转方式,dim为1,表示按行翻转,2表示按列翻转。
图像变换实验报告

图像变换实验报告实验三图像变换⼀、实验⽬的1、结合实例学习⼏种常见的图像变换,并通过实验体会图像变换的效果;2、理解和掌握图像旋转、缩放、离散傅⾥叶变换和离散余弦变换的原理和应⽤,掌握利⽤MATLAB编程实现图像变换的⽅法。
⼆、实验内容1、图像的⼏何变换,主要实现图像的缩放与旋转,要求变换中⽤最近邻插值算法实现,或⽤双线性变换法实现并⽐较;2、图像的正交变换,主要实现离散傅⾥叶变换(DFT)与离散余弦变换(DCT)。
三、实验要求1、独⽴完成;2、编写MATLAB程序,并对程序中所调⽤函数的功能进⾏必要的说明(可⽤“help 函数名”进⾏查询);3、调试运⾏后保存实验结果(注意保存的⽂件格式);4、完成实验报告。
四、实验原理(⼀)图像的⼏何运算(变换)1、⽐例缩放⽐例缩放是指将给定的图像在x轴⽅向按⽐例缩放fx倍,在y轴⽅向按⽐例缩放fy倍,从⽽获得⼀副新的图像。
在MATLAB中,进⾏图像⽐例缩放的函数是imresize,它的常见调⽤⽅法如下:B=imresize(A,scale)B=imresize(A,[mrows ncols])B=imresize(A,scale,method)其中,A是要进⾏缩放的图像矩阵,scale是进⾏缩放的倍数,如果scale⼩于1,则进⾏缩⼩操作,如果scale⼤于1,则进⾏放⼤操作。
[mrows ncols]⽤于指定缩放后图像的⾏数和列数,method ⽤于指定的图像插值⽅法,有nearest、bilinear、bicubic 等算法。
2、图像旋转⼀般的旋转是以图像的中⼼为原点,将图像上的所有像素都旋转⼀个相同的⾓度。
在MATLAB中,进⾏图像旋转的函数是imrotate,它的常见调⽤⽅法如下:B=imrotate(A,angle)B=imrotate(A,angle,method)B=imrotate(A,angle,method,bbox)其中,A是要旋转的图像,angle是旋转的⾓度;method是插值⽅法,可以为nearest、bilinear、bicublic等;bbox是指旋转后的显⽰⽅式,有两种选择,⼀种是crop,旋转后的图像效果跟原图像⼀样⼤⼩,⼀种是loose,旋转后的图像包含原图。
图像的几何变换

x' x x
y'
y
y
即:g(x,y)=f(x’, y’)
图像的平移:例如
x 1, y 2
下移1行, 右移2列
123 1
2
3
x=[1,2,3] ; y=[1,2,3] x’=[2,3,4] ; y’=[3,4,5]
12 1 2 3 4
345
•注意:平移后的景物与原图像相同,但“画布 〞一定是扩大了。否那么就会丧失信息。
y=[1/1.2,2/1.2,3/1.2,4/1.2]==[0.83,1.67,2.5,3.33]=[j1,j2,j3,j3],放大后 的图对应原图的1,2,3,3列
所以,新图3行3列,对应于原图2行3列 新图3行4列,对应于原图2行3列
图像放大:思考问题
如果放大倍数太大,按照前面的方法处理会出现 马赛克效应。
例如,原图第1列(从0开始计数)数据应该对应新图哪一列数据?
1=(Y+0.5)* (3/8)-0.5
Y=3.5
cvFloor(3.5)=3
返回不大于参数的最大整数值
例如,原图第1行(从0开始计数)数据应该对应新图哪一行数据?
1=(X+0.5)* (3/4)-0.5
Y=1.5
cvFloor(1.5)=1
设原图像大小为M*N, 缩小为k1M*k2N, 〔k1<1,k2<1〕。算法步骤如下: 1〕设原图为F(i,j), i=1,2,…,M, j=1,2,…,N.
压缩后图像是G(x,y), x=1,2,…,k1M, y=1,2,…,k2N. 2〕G(x,y)=F(c1*x,c2*y), c1=1/k1 c2=1/k2
x '' x ' x
图像变换实验报告

在 MATLAB 中,进行图像旋转的函数是 imrotate,它的常见 调用方法如下:
B=imrotate(A,angle)
B= imrotate(A,angle,method)
B= imrotate(A,angle,method,bbox)
通过离散余弦变换可以看到图像的重要可是信息都集中在 DCT 变换的左上角一小部分系数中,其余大部分接近零,将幅值 小于 10 的 DCT 系数置为零后进行反 DCT 得到的压缩的图像,比 较变换前后的图像,可以发现视觉效果相差很小,压缩的效果比 较理想。 (三)选做实验:频域滤波
因为 Butterworth 低通滤波器在带通和带阻之间有平滑的过 渡带,高频信号没有完全滤除,在抑噪效果良好的同时,图像变 得更加模糊了。
其中,A 是要进行缩放的图像矩阵,scale 是进行缩放的倍数, 如果 scale 小于 1,则进行缩小操作,如果 scale 大于 1,则进 行放大操作。[mrows ncols]用于指定缩放后图像的行数和列数, method 用于指定的图像插值方法,有 nearest、bilinear、bicubic 等算法。 2、图像旋转
cos
2������
2������
������ = 0������ = 0
其中,f(x,y)是二维空间向量元素,F(u,v)是变换系数矩阵之元 素。
在 MATLAB 中,提供两种进行图像处理的 DCT 变换函数: B=dct2(A)
B=dct2(A,[m,n]) B=dct2(A,[m n]) 其中,A 是输入的图像,B 是返回的 DCT 的变换系数,m、n 分别 是返回的 DCT 变换系数 B 的行数和列数。
5.1 图像变换(二)

y0 1]
[ x1 y1 1] [ x0 y0
N y0 1]
主要内容
2.1 基本知识
2.2 图像平移
2.3 图像镜像
2.4 图像转置
2.5 图像缩放 2.6 图像旋转
图像转置
1、图像转置的公式
图像转置即为行列互换,(x0,y0)是原图像上的点,转置后对应的新坐标点 为: x1=y0; y1=x0; 注意:图像尺寸有可能改变。
x1 x
y0 b
y1 y
2. 程序实现:
3. MATLAB中实现平移的函数
主要内容
2.1 基本知识
2.2 图像平移
2.3 图像镜像 2.4 图像转置 2.5 图像缩放 2.6 图像旋转
图像镜像
垂直镜像:图像的上半部分和下半部分以图像水平
中轴线为中心轴进行对换。
水平镜像:图像的左半部分和右半部分以图像竖直 中轴线为中心轴进行对换。
x0 x1 x a b y0 y L L 旋 转
y1=y0cos(a)-x0sin(a);
0 y1
2. 程序实现:
3、图像以图像中心为中心点的旋转公式
(x0,y0)是原图像上的点,L为(x0,y0)到原点的 距离。有:sin(b)=(x0-M/2)/L cos(b)=(y0-N/2)/L sin(a+b)=(x1-M/2)/L=sin(a)cos(b)+cos(a)sin(b) cos(a+b)=(y1-N/2)/L=cos(a)cos(b)-sin(a)sin(b) 旋转后对应的新坐标点为:
2.3 图像镜像
2.4 图像转置 2.5 图像缩放
2.6
图像旋转
图像旋转
第2章-图像几何变换

原始图
8-连接
m-连接
第2讲
第9页
像素间的连通
通路:由一系列依次连接的像素组成
从具有坐标(x, y)的像素p到具有坐标(s, t)的像素q的 一条通路由一系列具有坐标(x0, y0),(x1, y1),…,(xn, yn)的独 立像素组成。这里(x0, y0) = (x, y),(xn, yn) = (s, t),且(xi, yi) 与(xi-1, yi-1)邻接,其中1 ≤ i ≤ n,n为通路长度 ;
0 1
第2讲
第23页
2.3 形态变换
2.3.1 2.3.2 2.3.3 2.3.4
变换体系 一般仿射变换 特殊仿射变换 变换的层次
第2讲
第24页
2.3.1 变换体系
形态变换
将平面区域映射到平面区域 (1) 将一个组合区域映射为另一个组合区域 (2) 将单个区域映射为一个组合区域 (3) 将一个组合区域映射为单个区域
a22
t
y
p
y
1 0 0 1 1
A t q H A p 0T 1 p
一个平面上的仿射变换有6个自由度
第2讲
第28页
2.3.2 一般仿射变换
仿射变换
线性分量A可考虑成两个基本变换的组合:旋转和非各
向同性放缩 :
A R( )R()DR()
D
1
0
0
2
第2讲
第29页
2.3.2 一般仿射变换
第2讲
第13页
2.1.3 像素间的距离
距离量度函数,对p(0,0),q(4,3)两点
距离计算示例
DE = 5
D4 = 7
D8 = 4
第2讲
第14页
第四章--图像的几何变换

7 9 10 11 12 13 15 16 17 18 25 27 28 29 30 31 33 34 35 36
i=[1,6], j=[1,6]. x=[1,6*06]=[1,4], y=[1,6*0.75=[1,5]. x=[1/0.6,2/0.6,3/0.6,4/0.6]=[i2,i3,i5,i6], y=[1/0.75,2/0.75,3/0.75,4/0.75,5/0.75]=[j1,j3,j4,j5,j6].
素值的填充是不连续的。 因此可以采用插值填充的方法来解决。
4.1.3.3 图像旋转的后处理
最简单的方法是行插值(列插值)方法
1. 找出当前行的最小和最大的 非背景点的坐标,记作:
(i,k1)、(i,k2)。
4.1.3.3 图像旋转的后处理
2. 在(k1,k2)范围内进行插值, 插值的方法是:空点的像素 值等于前一点的像素值。
•注意:平移后的景物与原图像相同,但“画 布”一定是扩大了。否则就会丢失信息。
4.1.2 图像的镜像
镜像分为水平镜像和垂直镜像
水平镜像计算公式如下(图像大小为M*N):
x' y'
x
(水平镜#39; x
平移:
y
''
y '
N
1
N
1
y
123 1
2
3
-1 -2 -3 1
2
3
N 3
图像的旋转计算公式如下: x' x cos y sin y' x sin y cos
• 这个计算公式计算出的值为小数,而坐标值为正整数。 • 这个计算公式计算的结果值所在范围与原来的值所在 的范围不同。
• 因此需要前期处理:扩大画布,取整处理,平移处理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数字图像处理》实验指导书 信息科学与工程学院 袁子鹏 网络11-2班 3110757219
实验二、图像的几何变换
一、 实验目的
1掌握图像几何变换的原理;
2 利用MATLAB 实现图像的平移、比例缩放和旋转变换。
二、 实验原理
图像的几何变换包括:图像的空间平移、比例缩放、旋转、仿射变换和图像插值。
图像几何变换的实质:改变像素的空间位置,估算新空间位置上的像素值。
图像几何变换的一般表达式:[,][(,),(,)]u v X x y Y x y = ,其中,[,]u v 为变换后图像像素的笛卡尔坐标, [,]x y 为原始图像中像素的笛卡尔坐标。
这样就得到了原始图像与变换后图像的像素的对应关系。
平移变换:若图像像素点 (,)x y 平移到 00(,)x x y y ++,则变换函数为 0(,)u X x y x x ==+, 0(,)v Y x y y y ==+,写成矩阵表达式为:
00x u x y v y ⎡⎤⎡⎤⎡⎤=+⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦
其中,x 0和y 0分别为x 和y 的坐标平移量。
比例缩放:若图像坐标 (,)x y 缩放到( ,x y s s )倍,则变换函数为:
00x y s u x s v y ⎡⎤⎡⎤⎡⎤=⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦
⎣⎦ 其中, ,x y s s 分别为x 和y 坐标的缩放因子,其大于1表示放大,小于1表示缩小。
旋转变换:将输入图像绕笛卡尔坐标系的原点逆时针旋转θ角度,则变换后图像坐标为: cos sin sin cos u x v y θ-θ⎡⎤⎡⎤⎡⎤=⎢⎥⎢⎥⎢⎥θθ⎣⎦⎣⎦⎣⎦
三、 实验步骤
1打开Matlab ,程序组中“work ”文件夹中应有待处理的图像文件;
2编写函数,对图像进行平移变换,使图像平移横坐标偏移量x 和纵坐标偏移量y ; 3编写函数,对图像进行比例缩放,使图像缩放横坐标偏移量x 和纵坐标偏移量y ; 4 编写函数,对图像进行旋转变换,使图像旋转某个角度angle ;
5 利用上面的函数,对一幅图像完成以下几何变换:先对x 方向缩小0.5倍,y 方向缩小0.25倍,然后平移[20,20],最后旋转90度。
6记录和整理实验报告。
函数定义:
function J=translate(I, x, y) %平移量x 和y
图象变换 imtransform
g = imtransform(f,tform,interp)
f - 原始图象
tform - 变换矩阵,使用maketform构造
interp –插值方法(nearest,bilinear,bicubic)
平移坐标范围扩大:
J = imtransform(h,tform,'XData',[1 size(I,2)+x],'YData',[1 size(I,1)+y],'FillValues',255);
四、实验仪器
1计算机;
2 MA TLAB程序;
3移动式存储器(软盘、U盘等);
4记录用的笔、纸。
五、思考题
1 Matlab中如何对图像进行几何变换?
2编写函数,对图像进行平移变换,使图像平移横坐标偏移量x和纵坐标偏移量y;
实验结果:
3编写函数,对图像进行比例缩放,使图像缩放横坐标偏移量x和纵坐标偏移量y;
实验结果:
4 编写函数,对图像进行旋转变换,使图像旋转某个角度angle;
实验结果:
5 利用上面的函数,对一幅图像完成以下几何变换:先对x方向缩小0.5倍,y方向缩小0.25倍,然后平
移[20,20],最后旋转90度。
实验结果:
实验总结:这次实验感觉比上次难啊,一堆公式不知所云,让我了解到要学习好这门课程不仅仅要熟练的编程能力,也要一定的数学数学知识。
不过通过这次实验也知道了怎么利用MATLAB实现图像的平移、比例缩放和旋转变换,感觉还是很有成就感的。