实验二、图像的几何变换 (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理解和掌握图像的平移、垂直镜像变换、水平镜像变换、缩放和旋转的原理和应用;二、实验原理1 初始坐标为(x , y )的点经过平移(0x ,0y ),坐标变为('x ,'y ),两点之间的关系为:⎩⎨⎧+=+=00''y y y x x x ,以矩阵形式表示为: ⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡11 0 0y 1 0 0 11''00y x x y x 2 图像的镜像变换是以图象垂直中轴线或水平中轴线交换图像的变换,分为垂直镜像变换和水平镜像变换,两者的矩阵形式分别为:⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤-=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡11 0 00 1 0 0 0 11''y x y x ⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡11 0 00 1- 0 0 0 11''y x y x 3 图像缩小和放大变换矩阵相同:⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡11 0 00 0 0 0 1''y x y x S S y x 当1 ,1≤≤y x S S 时,图像缩小;1 ,1≥≥y x S S 时,图像放大。
MA TLAB 图像处理工具箱支持四种基本图像类型: 索引图像、灰度图像、二进制图像和RGB 图像。
MA TLAB 直接从图像文件中读取的图像为RGB 图像。
它存储在三维数组中。
这个三维数组有三个面,依次对应于红(Red)、绿(Green)、蓝(Blue)三种颜色,而面中的数据则分别是这三种颜色 的强度值,面中的元素对应于图像中的像素点。
设所得矩阵为X 三维矩阵(256,256,3) ,X(:,:,1)代表红颜色的2维矩阵 X(:,:,2)代表绿颜色的2维矩阵,X(:,:,3)代表兰颜色的2维矩阵。
实验二
实验二、图像几何变换一、实验目的1结合实例学习如何在视频显示程序中增加图像处理算法;2理解和掌握图像的平移、垂直镜像变换、水平镜像变换、缩放和旋转的原理和应用;二、实验原理1 初始坐标为(x , y )的点经过平移(0x ,0y ),坐标变为('x ,'y ),两点之间的关系为:⎩⎨⎧+=+=00''y y y x x x ,以矩阵形式表示为:⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡110 0y 1 0 0 11''00y x x y x 2 图像的镜像变换是以图象垂直中轴线或水平中轴线交换图像的变换,分为垂直镜像变换和水平镜像变换,两者的矩阵形式分别为:⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤-=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡11 0 00 1 0 0 0 11''y x y x ⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡11 0 00 1- 0 0 0 11''y x y x 3 图像缩小和放大变换矩阵相同:⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡11 0 00 0 0 0 1''y x y x S S y x 当1 ,1≤≤y x S S 时,图像缩小;1 ,1≥≥y x S S 时,图像放大。
4 图像旋转定义为以图像中某一点为原点以逆时针或顺时针方向旋转一定角度。
其变换矩阵为:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡11 0 00 cos sin 0 sin cos 1''y x y x θθθθ 该变换矩阵是绕坐标轴原点进行的,如果是绕一个指定点(b a ,)旋转,则现要将坐标系平移到该点,进行旋转,然后再平移回到新的坐标原点。
三、实验步骤1 启动MA TLAB 程序,对图像文件分别进行平移、垂直镜像变换、水平镜像变换、缩放和旋转操作,与实验箱运行结果进行比对;2 记录和整理实验报告四、实验仪器1计算机;2 MA TLAB程序;3 SEED-DTK_CPM642实验箱4记录用的笔、纸。
实验-图像几何变换
图像的几何变换一、实验目的1、掌握图像几何变换的基本原理2、掌握如何利用Matlab相应函数对图像进行几何变换(图像缩小、放大、旋转等)3、学会自己编写简单几何变换的程序二、实验内容1、对所选图像进行缩小操作2、对所选图像进行放大操作3、对所选图像进行旋转操作三、实验过程源程序及图像:p1=imread('moon.tif ');info=imfinfo('moon.tif');W=info.Width;H=info.Height;%显示原始图像figure(1);imshow(p1);%使用imresize()函数将原始图像缩小为原图形的0.5倍p2=imresize(p1,0.5);figure(2);imshow(p2);%不使用imresize()函数将原始图像缩小为原图形的0.5倍c=2;i=1:W./c;j=1:H./c;I=floor(c*i); J=floor(c*j);p3(j,i)=p1(J,I);figure(3);imshow(p3);%使用imresize()函数将原始图像放大为原图形的2倍p4=imresize(p1,2);figure(4);imshow(p4);%将原始图形旋转30度显示p6=imrotate(p1,30);figure(6);imshow(p6);%对旋转的图形进行插值计算p8=imrotate(p1,30,'bilinear');figure(8);imshow(p8);注:与图六中未标明插值结果相同,即Matlab中使用的函数会自动对变换后的图像进行插值计算。
10、图像的几何变换——平移、镜像、缩放、旋转、仿射变换
10、图像的⼏何变换——平移、镜像、缩放、旋转、仿射变换1.⼏何变换的基本概念 图像⼏何变换⼜称为图像空间变换,它将⼀副图像中的坐标位置映射到另⼀幅图像中的新坐标位置。
我们学习⼏何变换就是确定这种空间映射关系,以及映射过程中的变化参数。
图像的⼏何变换改变了像素的空间位置,建⽴⼀种原图像像素与变换后图像像素之间的映射关系,通过这种映射关系能够实现下⾯两种计算:原图像任意像素计算该像素在变换后图像的坐标位置变换后图像的任意像素在原图像的坐标位置对于第⼀种计算,只要给出原图像上的任意像素坐标,都能通过对应的映射关系获得到该像素在变换后图像的坐标位置。
将这种输⼊图像坐标映射到输出的过程称为“向前映射”。
反过来,知道任意变换后图像上的像素坐标,计算其在原图像的像素坐标,将输出图像映射到输⼊的过程称为“向后映射”。
但是,在使⽤向前映射处理⼏何变换时却有⼀些不⾜,通常会产⽣两个问题:映射不完全,映射重叠映射不完全输⼊图像的像素总数⼩于输出图像,这样输出图像中的⼀些像素找不到在原图像中的映射。
上图只有(0,0),(0,2),(2,0),(2,2)四个坐标根据映射关系在原图像中找到了相对应的像素,其余的12个坐标没有有效值。
映射重叠根据映射关系,输⼊图像的多个像素映射到输出图像的同⼀个像素上。
上图左上⾓的四个像素(0,0),(0,1),(1,0),(1,1)都会映射到输出图像的(0,0)上,那么(0,0)究竟取那个像素值呢?要解决上述两个问题可以使⽤“向后映射”,使⽤输出图像的坐标反过来推算改坐标对应于原图像中的坐标位置。
这样,输出图像的每个像素都可以通过映射关系在原图像找到唯⼀对应的像素,⽽不会出现映射不完全和映射重叠。
所以,⼀般使⽤向后映射来处理图像的⼏何变换。
从上⾯也可以看出,向前映射之所以会出现问题,主要是由于图像像素的总数发⽣了变化,也就是图像的⼤⼩改变了。
在⼀些图像⼤⼩不会发⽣变化的变换中,向前映射还是很有效的。
图像几何变换实验报告
图像几何变换实验报告图像几何变换实验报告引言:图像几何变换是计算机视觉领域的重要研究方向之一。
通过对图像进行旋转、缩放、平移等变换操作,可以改变图像的形状、大小和位置,从而实现图像处理和分析的目的。
本实验旨在通过编程实现常见的图像几何变换算法,并对其效果进行评估和分析。
一、图像旋转变换图像旋转变换是指将图像按照一定的角度进行旋转操作。
在实验中,我们使用了旋转矩阵来实现图像的旋转。
通过调整旋转角度,我们可以观察到图像在不同旋转角度下的变化。
实验结果显示,当旋转角度较小时,图像的形状基本保持不变,但会出现一定程度的畸变。
随着旋转角度的增加,图像的形状逐渐发生变化,出现明显的扭曲和形变现象。
二、图像缩放变换图像缩放变换是指改变图像的尺寸大小。
在实验中,我们通过调整缩放系数来实现图像的缩放操作。
实验结果表明,当缩放系数小于1时,图像会变小,细节信息会丢失;而当缩放系数大于1时,图像会变大,但可能会出现像素过度拉伸的情况。
因此,在进行图像缩放时,需要根据实际需求选择合适的缩放系数,以保证图像的质量和清晰度。
三、图像平移变换图像平移变换是指将图像沿着水平或垂直方向进行移动操作。
在实验中,我们通过调整平移距离来实现图像的平移。
实验结果显示,当平移距离较小时,图像的位置变化不明显;而当平移距离较大时,图像的位置会发生明显的偏移。
因此,在进行图像平移时,需要根据实际需求选择合适的平移距离,以确保图像的位置调整符合预期。
四、图像仿射变换图像仿射变换是指通过线性变换和平移变换来改变图像的形状、大小和位置。
在实验中,我们通过调整仿射变换矩阵的参数来实现图像的仿射变换。
实验结果表明,仿射变换可以实现图像的旋转、缩放和平移等多种操作,且变换后的图像形状基本保持不变。
然而,当仿射变换矩阵的参数设置不当时,可能会导致图像的形变和失真现象。
五、图像透视变换图像透视变换是指通过透视投影将图像从一个平面映射到另一个平面。
在实验中,我们通过调整透视变换矩阵的参数来实现图像的透视变换。
数字图像处理实验二 图像几何变换
计算机科学与工程学院实验(二)实验名称图像几何变换软件环境Windows Visual Studio 2017硬件环境PC实验目的掌握图像的几何变换方法,编程实现图像几何变换。
实验内容(应包括实验题目、实验要求、实验任务等)一、设计新的几何变换方法,分析其几何变换原理。
二、编程实现图像的几何变换。
要求:编程实现图像的几何变换功能。
任务:(1)在左视图中打开一幅bmp位图,包括256色或真彩色位图(2)制作五个【图像的XXX变换】菜单,将消息映射到右视图中,在右视图中进行图像的几何变换功能。
实验过程与实验结果一、设计新的几何变换方法,分析其几何变换原理。
图像配准什么是图像配准?所谓图像配准就是将同一场景的两幅或多幅图像进行对准。
如航空照片的配准,以及在很多人脸自动分析系统中的人脸归一化,即要使各张照片中的人脸具有近似的大小,尽量处于相同的位置。
一般来说,我们以基准图像为参照,并通过一些基准点(fiducial points)找到适当的空间变换关系s和r,对输入图像进行相应的几何变换,从而实现它与基准图像在这些基准点位置上的对齐。
图1:常见的几种配准变换类型//错误提示MessageBox.Show(ex.Message, "错误提示", MessageBoxButtons.OK, Message BoxIcon.Stop);}}}效果图:图2-1 平移变换前图2-2 平移变换后{int width = objBitmap.Width;int height = objBitmap.Height;Bitmap bitmap = new Bitmap(width, height);for (int x = 0; x < width; x++){for (int y = 0; y < height; y++){bitmap.SetPixel(x, y, objBitmap.GetPixel(x, height-1-y));}}curBitmap = new Bitmap(bitmap);bitmap.Dispose();this.pictureBox_new.Image = curBitmap;}catch (Exception ex){//错误提示MessageBox.Show(ex.Message, "错误提示", MessageBoxButtons.OK, MessageBox Icon.Stop);}}效果图:图3-1 水平镜像后图3-2 垂直镜像后3.缩放变换实现步骤:1.获取原图像的Bitmap对象objBitmap,以及其大小参量;2.获取缩放比例系数(X,Y);3.构造一个新Bitmap对象bitmap,宽高为宽*X+1,高*Y+1;4.迭代实现对objBitmap每一个像素点(Pixel)到bitmap的赋值操作:将每个像素点的坐标设置为原坐标/比例系数,如横坐标/X,纵坐标/Y;5.使用bitmap构造全局变量curBitmap,销毁bitmap对象,使用curBitmap初始化右侧显示框。
图像的几何变换
第21页,此课件共47页哦
c
1 k1
, c2
1 k2
2、图像比例缩放
在图像的放大操作中,需要对尺寸放大后所多出来的空格 填入适当的像素值,这是信息的估计问题,所以较图像的 缩小要难一些。
当fx=fy=2时,图像被按全比例放大2倍, 放大后图像中 的(0,0)像素对应于原图中的(0,0)像素;(0,1)像素对应 于原图中的(0,0.5)像素,该像素不存在,可以近似为(0, 0)也可以近似 (0,1); (0,2)像素对应于原图像中的(0,1)像 素;(1,0)像素对应于原图中的(0.5,0),它的像素值近似于 (0, 0)或(1,0)像素; (2,0)像素对应于原图中的(1,0)像 素,依此类推。其实这是将原图像每行中的像素重复取值 一遍,然后每行重复一次。
1 0 x
T
0 1 y
第9页,此课件共47页哦
1.1齐次坐标
为了运算方便,通常将2×3阶矩阵扩充为3×3
阶矩阵,以拓宽功能。
P(x,y)按照3X3的变换矩阵T平移结果为:
1 PTP0 0 0
0 1 0
x
y
1
x0 x0x x
y0y0 yy
1 1 1
第10页,此课件共47页哦
2. 还需要一个用于灰度插值的算法,这是因为, 在一般情况下,输入图像的位置坐标(x,y)为整数, 而输出图像的位置坐标为非整数,反过来也是如此。
第5页,此课件共47页哦
1、几何变换基础
几何变换常用于摄象机的几何校正过程,这对于利用图 像进行几何测量的工作是十分重要的。
如:仿射变换(Affine Transformation),它属于射影几何 变换,多用于图像配准(Image Registration)作为比较或匹 配的预处理过程;
- 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实现图像的平移、比例缩放和旋转变换,感觉还是很有成就感的。