文档库 最新最全的文档下载
当前位置:文档库 › 图像的几何变换的两种实现(旋转、平移、放大、缩小)

图像的几何变换的两种实现(旋转、平移、放大、缩小)

图像的几何变换的两种实现(旋转、平移、放大、缩小)
图像的几何变换的两种实现(旋转、平移、放大、缩小)

面向对象程序设计

学号:2

学生所在学院:信息工程学院

学生姓名:邵丽群

任课教师:熊邦书

教师所在学院:信息工程学院

2013级

实现图像的几何变换

电子信息工程

信息工程学院

摘要:几何变换是最常见的图像处理手段,通过对变形的图像进行几何校正,可以得出准确的图像。常用的几何变换功能包括图像的平移、图像的镜像变换、图像的转置、图像的缩放、图像的旋转等等。目前数字图像处理的应用越来越广泛,已经渗透到工业、航空航天、军事等各个领域,在国民经济中发挥越来越大的作用。作为数字图像处理的一个重要部分,本文接受的工作是如何Visual C++编程工具设计一个完整的应用程序,实现经典的图像几何变换功能。程序大概分为两大部分:读写BMP图像,和数字图像的几何变换。即首先用Visual C++创建一个单文档应用程序框架,在实现任意BMP图像的读写,打印,以及剪贴板操作的基础上,完成经典的图像几何变换功能。图像几何变换的Visual C++编程实现,为校内课题的实现提供了一个实例。

关键字:图像处理;几何变换(图像的平移、缩放、转置、旋转和镜像变换);BMP图像;Visual C++

一、引言

图像几何变换是指用数学建模的方法来描述图像位置、大小、形状等变化的方法。在实际场景拍摄到的一幅图像,如果画面过大或过小,都需要进行缩小或放大。如果拍摄时景物与摄像头不成相互平行关系的时候,会发生一些几何畸变,例如会把一个正方形拍摄成一个梯形等。这就需要进行一定的畸变校正。在进行目标物的匹配时,需要对图像进行旋转、平移等处理。在进行三维景物显示时,需要进行三维到二维平面的投影建模。因此,图像几何变换是图像处理及分析的基础。

图像几何变换是计算机图像处理领域中的一个重要组成部分,也是值得深讨的一个重要课题。在图像几何变换中主要包括图像的放缩、图像的旋转、图像的移动、图像的镜像、图像的块操作等内容,几何变换不改变图像的像素值,只改变像素所在的几何位置。从广义上说,图像是自然界景物的客观反映,是人类认识世界和人类本身的重要源泉。图像对我们并不陌生。我们生活在一个信息时代,科学研究和统计表明,人类从外界获得的信息约有75%来自视觉系统,也就是从图像中获得的。所以对数字图像的处理便显得尤为重要了。

本文主要深讨了图像的几何变换(主要包括图像的平移、转置、缩放、旋转、镜像等)理论,并在此基础上用Visual C++实现的过程。

1.3.2研究方法

方法一:

利用Windows 本身就提供了一个API函数SetWorldTransForm来实现图片旋转、位移及其他变形,这个函数是对一个设备上下文DC进行操作,通过坐标转换来实现各种功能的。

方法二:

通过图像进行平移、旋转、转置、镜像、缩放后重新计算各点新像素完成几何变换。自定义一个图像处理的Cdibapi类,把一般处理图像时要用到的函数实现封装在这个类中,该类用于实现DIB对象的绘制,DIB对象调色板的创建,DIB对象的读取与存储,图像线性变换,图像灰度拉伸等。然后把在视类中实现图像平移,图像镜像,图像转置,图像缩放及图像旋转的函数调用和实现。

二、正文

2.1灰度图

灰度图(Grayscale)是指只含亮度信息,不含色彩信息的图像。因此,要表示灰度图,就需要把亮度值进行量化。通常划分为0到255共256个级别,0最暗(全黑),255最亮(全白)。BMP格式的文件中并没有灰度图这个概念,但是可以很容易的用BMP文件来表示灰度图。方法是用256色的调色板,只不过这个调色板有点特殊,每一项的RGB值都是相同的。也就是说RGB值从(0,0,0),(1,1,1)一直到(255,255,255)。(0,0,0)是全黑色,(255,255,255)是全白色,中间的是灰色。

2.2调色板

调色板结构LOGPALETTE,该结构定义如下:

typedef struct tagLOGPALETTE

{

WORD palVersion; //调色板的板本号,应该指定该值为0x300;

WORD palNumEntries;//调色板中的表项数,对于灰度图像该值为256;

PALETEENTRY palPalEntry[1];//调色板中的颜色表项,由于该表项的数

目不一定,所以这里数组长度定义为1,灰

度图像对应的该数组的长度为256 }LOGPALETTE;

颜色表项结构PALETTEENTRY定义了调色板中的每一个颜色表项的颜色和使用方式,定义如下:

typedef struct tagPALETTEENTRY

{

BYTE peRed; //R分量值;

BYTE peGreen; //G分量值;

BYTE peBlue; //B分量值;

BYTE peFlags; // 该颜色被使用的方式,一般情况下设为"0";

}PALETTEENTRY;

Windows系统使用调色板管理器来管理与调色板有关的操作,通常活动窗

口的调色板即是当前系统调色板,所有的非活动窗口都必须按照此系统调色板

来显示自己的颜色,此时调色板管理器将自动的用系统调色板中的最近似颜色

来映射相应的显示颜色。如果窗口或应用程序按自己的调色板显示颜色,就必

须将自己的调色板载入到系统调色板中,

这种操作叫作实现调色板,实现调色板包括两个步骤:

1. 首先将调色板选择到设备上下文中,可以通过CDC::SelectPalette() 选入设备上下文

2. 然后在设备上下文中实现调色板,可以通过 CDC::RealizePalette()

实现设备调色板。

1.2.4BMP文件中DIB的结构

DIB是标准的Windows位图格式,BMP文件中包含了一个DIB。一个BMP文件大体上分成如下4个部分:

BITMAP

位图文件头

(只用于BMP文件)

BITMAPINFOHEADER

位图信息头

Palette

调色板

DIB Pirxels DIB图像数据bfType=”BM”

bfSize

bfReserved1

bfReserved2

bfOffBits

biSize

biWidth

biHeight

biPlanes

biBitCount

biCompression

biSizeImage biXPelsPerMeter biYPelsPerMeter

biClrUsed biClrImportant

单色DIB有2个表项

16色DIB有16个表项或更少256色DIB有256个表项或更少真彩色DIB没有调色板

每个表项长度为4字节(32位)

像素按照每行每列的顺序排列

每一行的字节数必须是4的整数

2.3图像的几何变换基础知识

图像的几何变换,通常包括图像的平移、图像的镜像变换、图像的转置、图像的缩放和图像的旋转等。

图2.1 程序基本框架图

2.3.1图像的平移

图像的平移是几何变换中最简单的变换之一。图像平移就是将图像中所有的点都按照指定的平移量水平、垂直移动。设(x0,y0)坐标将变为(x1,y1)。

显然(x0,y0)和(x1,y1)的关系如下:

{x1=x0+tx y1=y0+ty 用矩阵表示如下:

[x1y11]=[1 0 tx 0 1 ty 0 0 1][x0y01

] 对该矩阵求逆,可以得到逆变换:

[x0y01]=[1 0 ?tx 0 1 ?ty 0 0 1][x1

y11

]即{x0=x1?tx

y0=y1?ty

这样,平移后的图像上的每一点都可以在原图像中找到对应的点。例如, 对于新图中的(0,0)像素,代入上面的方程组,可以求出对应原图中的像素

程序开始

读写BMP 图像

程序结束

图像的平移

图像的镜像

图像的转置

图像的缩放

图像的旋转

(-tx,-ty)。如果tx或ty大于0,则(-tx,-ty)不在原图中。对于不在原图中的点,可以直接将它的像素值统一设置为0或则255(对于灰度图就是黑色或白色)。同样,若有点不在原图中,也就说明原图中有点被移出显示区域。如果不想丢失被移出的部分图像,可以将新生成的图像宽度扩大|tx|,高度扩大|ty|。

2.3.2图像的镜像

图像的镜像变换分为两种:一种是水平镜像,另外一种是垂直镜像。图像的水平镜像操作是将图像的左半部分和右半部分以图像垂直中轴线为中心镜像进行对换;图像的垂直镜像操作是将图像上半部分和下半部分以图像水平中轴线为中心镜像进行对换。

设图像高度为lHeight,宽度为lWidth,原图中(x0,y0)经过水平镜像后坐标将变为(lWidth-x0,y0),其矩阵表达式为:

[x1

y1

1

]=[

?1 0 lWidth

0 1 ty

0 0 1

][

x0

y0

1

]

逆运算表达式为:

[x0

y0

1

]=[

?1 0 lWidth

0 1 0

0 0 1

][

x1

y1

1

]即

同样,(x0,y0)经过垂直镜像后坐标将变为(x0,lHeight-y0),其矩阵表达式为:

[x1

y1

1

]=[

1 0 0

0 ?1 lHeight

0 0 1

][

x0

y0

1

]

逆运算矩阵表达式为:

[x0

y0

1

]=[

1 0 0

0 ?1 lHeight

0 0 1

][

x1

y1

1

]即{

x0=x1

y0=lHeight?y1

2.3.3图像的转置

图像的转置操作是将图像像素的x坐标和y坐标互换。该操作将改变图像的大小,图像的高度和宽度将互换。

转置表达式:

[x1

y1

1

]=[

1 0 tx

0 1 ty

0 0 1

][

x0

y0

1

]

它的逆矩阵表达式:

[x0

y0

1

]=[

1 0 tx

0 1 ty

0 0 1

][

x1

y1

1

]即{

x0=x1

y0=y1

2.3.4图像的缩放

上面的几种图像几何变换中都是1:1的变换,而图像的缩放操作将会改变图像的大小,产生的图像中的像素可能在原图中找不到相应的像素点,这样就必须进行近似处理。一般的方法是直接赋值为和它最相近的像素值,也可以通过一些插值算法来计算。下面的代码直接采用了前一种做法。

假设图像x轴方向缩放比率为fx,y轴方向缩放比率为fy,那么原图中点(x0,y0)对应与新图中的点(x1,y1)的转换矩阵为:

[x1

y1

1

]=[

fx 0 0

0 fy 0

0 0 1

][

x0

y0

1

]

其逆运算如下:

[x0

y0

1

]=[

1/fx 0 0

0 1/fy 0

0 0 1

][

x1

y1

1

]即{

x0=x1/fx

y0=y1/fy

例如,当fx=fy=0.5时,图像被缩放到一半大小,此时缩小后图像中的(0,0)像素对应于原图中的(0,0)像素;(0,1)像素对应于原图中的(0,2)像素;(1,0)像素对应于原图中的(2,0)像素,以此类推。在原图基础上,每行隔一个像素取一点,每隔一行进行操作。其实是将原图每行中的像素重复取值一遍,然后每行重复一次。

2.3.5图像的旋转

一般图像的旋转是以图像的中心为原点,旋转一定的角度。旋转后,图像的大小一般会改变。和图像平移一样,既可以把转出显示区域的图像截去,也可以扩大图像范围以显示所有的图像。

可以推导一下旋转运算的变换公式。如下图所示,点(x0,y0)经过旋转θ度后坐标变成(x1,y1)。

在旋转前:

{x0=γcos(θ) y0=γsin(θ)

转置后:

{

x1=γcos(α?θ)=γcos (α)cos (θ)+γsin (α)sin (θ)=x0cos (θ)+y0sin (θ)

y1=γsin(α?θ)=γsin(α)cos(θ)?γcos(α)sin(θ)=?x0sin(θ)+y0cos (θ)写

成矩阵表达式为:

[x1

y1

1

]=[

cos(θ) sin (θ) 0

?sin(θ)cos (θ) 0

0 0 1

][

x0

y0

1

]

其逆运算如下:

[x0

y0

1

]=[

cos(θ) ?sin (θ) 0

sin(θ)cos (θ) 0

0 0 1

][

x1

y1

1

]

有了上面的转换公式,就可以非常方便的编写出实现图像旋转的函数。首先应计算出公式中需要的几个参数:a,b,c,d和旋转后新图像的高、宽度。现在已知图像的原始宽度为lWidth,高度为lHeight,以图像中心为坐标系原点,则原

始图像四个角的坐标分别为

(?lWidth?1

2,lHeight?1

2

), (lWidth?1

2

,lHeight?1

2

), (lWidth?1

2

,?lHeight?1

2

)和

(?lWidth?1

2,?lHeight?1

2

),按照旋转公式,在旋转后的新图中,这四个点坐标

为:

(fDstX1,fDstY1)

=(?lWidth?1

2

cos(θ)+

lHeight?1

2

sin(θ),

lWidth?1

2

sin (θ)

+lHeight?1

2

cos (θ))

(fDstX2,fDstY2)

=(lWidth?1

2

cos(θ)+

lHeight?1

2

sin(θ),?

lWidth?1

2

sin (θ)

+lHeight?1

2

cos (θ))

(fDstX1,fDstY1)

=(lWidth?1

2

cos(θ)?

lHeight?1

2

sin(θ),?

lWidth?1

2

sin(θ)

?lHeight?1

2

cos (θ))

(fDstX1,fDstY1)

=(?lWidth?1

2

cos(θ)?

lHeight?1

2

sin(θ),

lWidth?1

2

sin(θ)

?lHeight?1

2

cos (θ))

则新图像的宽度lNewWidth和高度lNewHeight为:lNewWidth=max(|fDstX4?fDstX1|,|fDstX3?fDstX2|) lNewHeight=max(|fDstY4?fDstY1|,|fDstY3?fDstY2|)

令{f1=?ccos(θ)?dsin(θ)+a

f2=csin(θ)?dcos(θ)+b,其中a=

lWidth?1

2

, b=lHeight?1

2

, c=lNewWidth?1

2

, b=

lNewHeight?1

2

,则

{

x0=x1cos(θ)+y1sin(θ)+f1 y0=?x1sin(θ)+y1cos(θ)+f2

2.4 Visual C++简述

VisualC++是微软公司提供的基于C/C++的应用程序集成开发工具。VC拥有丰富的功能和大量的扩展库,使用它能有效的创建高性能的Windows应用程序和Web应用程序。VC的优越性主要表现在以下几个方面:开发分布式应用、开发的应用程序运行效率高、具有健壮性、能缩短软件升级周期。能够生成多线程应用,而多线程应用对于增加并发响应有实际意义。VC除了提供高效的C/C++编译器外,还提供了大量的可重用类和组件,包括著名的微软基础类库(MFC)和活动模板类库(ATL),因此它是软件开发人员不可多得的开发工具。将Visual C++应用于数字图像的几何变换,VC丰富的功能和大量的扩展库,类的重用特性以及它对函数库、DLL库的支持能使程序更好的模块化,并且通过向导程序大大简化了库资源的使用和应用程序的开发,正由于VC具有明显的优势,因而我选择了它来作为数字图像几何变换的开发工具。在本程序的开发过程中,VC的核心知识、消息映射机制、对话框控件编程等都得到了生动的体现和灵活的应用。

三、实验步骤及结果

3.1 通过API函数SetWorldTransForm实现图像几何变换

API函数SetWorldTransForm实现图像几何变换使用XFORM来控制DC 时,需要先设置绘图模式SetGraphicsMode为GM_ADVANCED,再用SetWorldTransform。

否则SetWorldTransform函数会失败。setWorldTransForm内部的算法其实相当于用线性代数里矩阵与一个向量相乘的办法来解决图形的变换,只要我们知道要乘上的变换方程是哪一个,就能进行各种变换(不止是旋转),这个函数是对一个设备上下文DC进行操作,通过坐标转换来实现各种功能的。

函数原型:int SetGraphicsMode(HDC hdc, int iMode);

参数:hdc:指向设备环境的句柄。

iMode:指定图形模式,该参数取值参看MSDN

函数原型:BOOL SetWorldTransform(HDC hdc, CONST XFORM *lpXform);

参数:hdc:指向设备环境的句柄。

lpxform:指向XFORM结构的指针,此结构含有转换数据。

返回值:如果函数调用成功,返回值为非零值,否则为零。

编程原理:

对于选定DC的任何坐标(x, y)将被SetWindowsForm设定的变换转换为坐标(x’, y’),两个坐标的对应关系是:

x’ = x * eM11 + y * eM12 + eDx;

y’ = x * eM12 + y * eM22 + eDy;

对于一个转换的操作,数学上的转换方式是:x2 = cos(q)*(x1-x0) – sin(q)*(y1-

y0) + x0;

y2 = sin(q)*(x1-x0) + cos(q)*(y1-y0) + y0;

于是,我们可以得到SetWorldTransForm的一组参数:

xform.eM11 = cos(q);

xform.eM12 = sin(q);

xform.eM21 = -sin(q);

xform.eM22 = cos(q);

xform.eDx = x0-cos(q)*x0+sin(q)*y0;

xform.eDy = y0-cos(q)*y0-sin(q)*x0;

实验步骤:一、先新建一个对话框的应用程序;

二、修改对话框的属性将其Caption属性改为“图片处理”,Border属性改为“Resizing”,为其添加一些控件并未其中的而一些控件关联变量且修改控件的属性如图:

三、为旋转、缩放、平移控件添加消息处理及绘制矩形和椭圆、旋转DC等代码

3.1.1图像旋转的代码及结果:

if ( m_iAngle != 0 )

{

fangle = (double)m_iAngle / 180. * 3.1415926;

xform.eM11 =(float)cos(fangle);

xform.eM12 = (float)sin(fangle);

xform.eM21 =(float)-sin(fangle);

xform.eM22 =(float)cos(fangle);

xform.eDx = (float)(centerPt.x - cos(fangle)*centerPt.x +

sin(fangle)*centerPt.y);

xform.eDy = (float)(centerPt.y - cos(fangle)*centerPt.y -

sin(fangle)*centerPt.x);

SetWorldTransform(hDc, &xform);

}

实验结果:

旋转前图像旋转23°的图像

旋转123°的图像旋转312°的图像

3.1.2图像缩放的代码及结果

试验代码:

if ( m_iSize != 1 )

{

fangle = (double)m_iAngle / 180. * 3.1415926;

xform.eM11 =m_iSize*(float)cos(fangle);

xform.eM12 = m_iSize*(float)sin(fangle);

xform.eM21 =m_iSize*(float)-sin(fangle);

xform.eM22 =m_iSize*(float)cos(fangle);

xform.eDx = (float)(centerPt.x - m_iSize*cos(fangle)*centerPt.x +

m_iSize*sin(fangle)*centerPt.y+m_iPanLeft);

xform.eDy = (float)(centerPt.y - m_iSize*cos(fangle)*centerPt.y -

m_iSize*sin(fangle)*centerPt.x+m_iPanRight);

SetWorldTransform(hDc, &xform);

}

实验结果:

缩放前的图像放大2.5倍的图像

缩小0.5倍的图像放大2.5倍且旋转50°的图像

3.1.3图像平移的代码及结果

实验代码:

if ( m_iPanLeft != 0||m_iPanRight!=0 )

{

fangle = (double)m_iAngle / 180. * 3.1415926;

xform.eM11 =(float)cos(fangle);

xform.eM12 = (float)sin(fangle);

xform.eM21 =(float)-sin(fangle);

xform.eM22 =(float)cos(fangle);

xform.eDx = (float)(centerPt.x - cos(fangle)*centerPt.x +

sin(fangle)*centerPt.y+m_iPanLeft);

xform.eDy = (float)(centerPt.y - cos(fangle)*centerPt.y -

sin(fangle)*centerPt.x+m_iPanRight);

SetWorldTransform(hDc, &xform);

}

实验结果:

平移前的图像横向平移56.5纵向平移45的图像

横向平移56纵向平移45且旋转45°横向平移-56纵向平移-45的图像放大2倍的图像

3.2通过像素来实现图像的几何变换

实验步骤:

先新建一个基类为CScrollView的单文档应用程序然后新添加一个图像处理的Cdibapi类,把一般处理图像时要用到的函数实现封装在这个类中,该类用于实现DIB对象的绘制,DIB对象调色板的创建,DIB对象的读取与存储,图像线性变换,图像灰度拉伸等。然后为菜单栏添加一些新的菜单最后在视图类为新添加的菜单项添加消息处理函数

3.2.1图像的平移

有了上面的理论基础,可以十分容易的用Visual C++来实现图像的平移。在这里,只介绍灰度图像的平移,因为灰度图像每个像素位数正好是8位,即1个字节,这样,可以不必考虑拼凑字节的问题。而且由于灰度图调色板的特殊性,处理时不必考虑调色板的问题。根据上面的公式可以得到图像的平移程序流程图:

程序开始

单击“文件”->“打开”打开一幅图像

单击“几何变换”->图像平移

获取水平平移量和垂直平移量

计算指向新DIB第i行,第j个像素的指针

计算该像素在原DIB中的坐标

判断坐标是否在原图范围内

图3.1图像平移程序流程图

平移实现代码:

void CImg_TransformView::OnGeomTran()

{

CImg_TransformDoc* pDoc = GetDocument();

LPSTR lpDIB; LPSTR lpDIBBits;

lpDIB = (LPSTR) ::GlobalLock((HGLOBAL) pDoc->GetHDIB());

if (::DIBNumColors(lpDIB) != 256)

{

MessageBox("目前只支持256色位图的平移!", "系统提示" ,

MB_ICONINFORMATION |MB_OK);

::GlobalUnlock((HGLOBAL) pDoc->GetHDIB());

return;

}

float XOffset; float YOffset;CTransDlg dlg;

dlg.m_Xoffset=10; dlg.m_Yoffset=10;

if(dlg.DoModal ()!=IDOK)

{return ;}

XOffset=dlg.m_Xoffset ;YOffset=dlg.m_Yoffset ;delete dlg;

lpDIBBits=::FindDIBBits(lpDIB);

if (TranslationDIB(lpDIBBits, ::DIBWidth(lpDIB), ::DIBHeight(lpDIB), XOffset, YOffset))

{

pDoc->SetModifiedFlag(TRUE);

pDoc->UpdateAllViews(NULL);

}

else

{MessageBox("分配内存失败!", "系统提示" , MB_ICONINFORMATION | MB_OK);} ::GlobalUnlock((HGLOBAL) pDoc->GetHDIB());

}

平移实现结果:

平移前的图像水平平移50垂直平移50的图像

3.2.2图像的镜像

图像的镜像变换分为两种:一种是水平镜像,另外一种是垂直镜像。图像的水平镜像操作是将图像的左半部分和右半部分以图像垂直中轴线为中心镜像进行对换;图像的垂直镜像操作是将图像上半部分和下半部分以图像水平中轴线为中心镜像进行对换。按照上面的变换公式,可以非常简单的实现图像的水平和垂直镜像操作。下图是镜像操作的程序流程图:

将倒数第i行,第j个像素复制到倒数第i行,倒数第j个像素

程序开始

单击“文件”->“打开”打开一幅图像

针对每行图像左半部分进行操作

计算指向倒数第i行,第j个像素的指

计算指向倒数第i行,倒数第j个像素的指

是否水平镜像

备份一个像素备份一行

针对上半图像进行操作

计算指向倒数第i行像素起点的指针

计算指向第i行像素起点的指针

将倒数第i行像素

镜像实现的代码:

void CImg_TransformView ::OnGeomMirv()

{

CImg_TransformDoc * pDoc = GetDocument(); LPSTR lpDIB; LPSTR lpDIBBits;

lpDIB = (LPSTR ) ::GlobalLock((HGLOBAL ) pDoc->GetHDIB()); if (::DIBNumColors(lpDIB) != 256)

{

MessageBox ("目前只支持256色位图的镜像!", "系统提示" , MB_ICONINFORMATION |

MB_OK );

::GlobalUnlock((HGLOBAL ) pDoc->GetHDIB()); return ;

}

int bDirection; CMirvDlg dlg; if (dlg.DoModal ()!=IDOK )

{return ;}

bDirection=dlg.m_bDirection ;delete dlg; lpDIBBits=::FindDIBBits(lpDIB);

if (MirrorDIB(lpDIBBits,::DIBWidth(lpDIB), ::DIBHeight(lpDIB),bDirection)) { pDoc->SetModifiedFlag(TRUE );

pDoc->UpdateAllViews(NULL );

} else

{MessageBox ("分配内存失败!", "系统提示" , MB_ICONINFORMATION | MB_OK );} ::GlobalUnlock((HGLOBAL ) pDoc->GetHDIB())

}

判断镜像是否成功

更新视图 设置脏标记

程序结束

提示用户

将倒数第i 行,倒数第j 个像素复制到倒数第i 行,第j 个像素

将第i 行像素复

制到倒数第i 行

镜像实验结果:

镜像前的图像 水平镜像的图像

垂直镜像的图像

3.3图像的转置

图像转置的实现和图像镜像变换相似,不同之处在于图像转置后DIB 的头 文件也要进行相应的改变,主要是将头文件中图像高度和宽度信息更新。因此传递给图像转置函数的参数是直接指向DIB 的指针,而不是直接指向DIB 像素的指针。根据公式可以得到如下所示的程序流程图:

程序开始

单击“文件”->“打开”打开一幅图像

单击“几何变换”->图像转置

针对每行图像每列进行操作

计算指向原DIB 第i 行,第j 个像素的指针

图3.3 图像转置的程序流程图

图像转置代码:

void CImg_TransformView ::OnGeomTrpo() { CImg_TransformDoc * pDoc = GetDocument(); LPSTR lpDIB; LPSTR lpDIBBits;

lpDIB = (LPSTR ) ::GlobalLock((HGLOBAL ) pDoc->GetHDIB()); if (::DIBNumColors(lpDIB) != 256)

{

MessageBox ("目前只支持256色位图的转置!", "系统提示" , MB_ICONINFORMATION |

MB_OK );

::GlobalUnlock((HGLOBAL ) pDoc->GetHDIB()); return ;

}

if (TransposeDIB(lpDIB)) { pDoc->SetModifiedFlag(TRUE ); pDoc->UpdateAllViews(NULL );

} else { MessageBox ("分配内存失败!", "系统提示" , MB_ICONINFORMATION | MB_OK ); }

}

计算指向转置DIB 第j 行,第i 个像素的指针

复制像素

复制转置后的图像

判断转置是否成功

更新视图 设置脏标记

程序结束

提示用户

互换DIB 中图像的高宽

八年级下册图形的平移与旋转教案

个性化教学辅导教案 学科:数学任课教师:黄老师授课时间:2014 年04 月13 日(星期日) 姓名梁治安年级八年级性别男总课时____第___课 教学 目标 知识点:平移的概念、性质、平移作图;旋转的概念、性质,简单的旋转作图。 难点重点重点:1、平移的概念、性质、平移作图;旋转的概念、性质,简单的旋转作图2、简单的图案设计。 难点:图案设计的方法;轴对称、平移、旋转三种变换的组合。 课堂教学过程课前 检查作业完成情况:优□良□中□差□建议__________________________________________ 过 程 平移的概念和性质 在平面内,将一个图形沿某个方向移动一定的距离,这样的图形运动称为平移。 平移不改变图形的形状和大小。 一个图形和它经过的平移所得到的图形中,对应点所连的线段平行,且相等,对应线段平行且相等,对应角相等。 旋转的概念和性质: 在平面内,将一个图形绕一个定点按某个方向转动一个角度,这样的图形运动称为旋转,这个定点称为旋转中心,转动的角称为旋转角。旋转不改变形状和大小。 一个图形和它经过旋转得到的图形中,对应点到旋转中心的距离相等,任意一组对应点与旋转中心的连线所成的角都等于旋转角,对应线段相等,对应角相等。 知识点一、平移的概念: 1.在平面内将一个图形沿______移动一定的距离,这样的图形运动称为平移,平移不改变图形的_______和__________. 知识点二、平移的性质 2、经过平移,_________,__________分别相等, 对应点所连的线段_____________. 【基础训练】

A ′ 1.以下现象:①电梯的升降运动;②飞机在地面沿直线滑行; ③风车的转动,④汽车轮胎的转动.其中属于平移的是( ) A .②③ B 、②④ C .①② D .①④ 2、如下左图,△ABC 经过平移到△DEF 的位置,则下列说法: ①AB ∥DE ,AD=CF=BE ; ②∠ACB=∠DEF ; ③平移的方向是点C 到点E 的方向; ④平移距离为线段BE 的长. 其中说法正确的有( ) A.个 B.2个 C.3个 D.4个 3、如下右图,在等边△ABC 中,D 、E 、F 分别是边BC 、AC 、AB 的中点,则△AFE 经过平移可以得到( ) A.△DEF B.△FBD C.△EDC D. △FBD 和△EDC 4.下列图形属于平移位置变换的是( ) . 5.下列图形中,是由(1)仅通过平移得到的是( ) 6.如图,△ABC 平移后得到△A ′B ′C ′,线段AB 与线段A ′B ′的位置关系是 . 7.在1题中,与线段AA ′平行且相等的线段有 . A . B . C . D .

图形的变换知识点

人教版五年级下册数学第一单元 图形的变换包括:、、。 其中只是改变原图形位置的变换是、。 一、图形的平移 1、平移不改变图形的和。 2、平移的三要素:原图形的位置、平移的方向、平移的距离。 平移的方向一般为:水平方向、垂直方向两种。 平移的距离:一般为几个单位长度(也即几个方格)。 3、平移是整个图形的移动,图形的每个关键点都需要按要求移动。 4、图形平移的步骤:(1)确定原图形位置、平移的方向、平移的距离。 (2)找出原图形的各关键点。 (3)根据题目要求将各个点依次平移。 (4)顺次连接平移后的各点,标明各点名称。 二、轴对称 1、一个图形沿着某一条直线折叠,如果直线的图形能够重合,就说这一个图形是轴对称图形。这条直线叫做图形的。 2、轴对称图形一定有对称轴,而且至少有条对称轴,常见的例如:、、、、、;有两条对称轴的常见图形有、;有三条对称轴的常见图形有;正方形有条对称轴;五角星和正五边形有条对称轴;正六变形有条对称轴。 三、轴对称图形的画法 1、轴对称图形的性质:(1)对称轴两边的图形一定完全相同 (2)对应点也关于对称轴对称 (3)对应点的连线垂直于对称轴 (4)对应点到对称轴的距离相等 2、轴对称图形的画法:(1)根据题意确定已知图形以及对称轴位置 (2)找出已知图形的关键点 (3)一次过每个点作垂直于对称轴的虚线(根据性质3) (4)在对称轴另一侧确定各对应点位置(根据性质4) (5)标明各点对应名称,顺次连接各对应点得到轴对称图形。 四、确定轴对称图形的对称轴 沿某条直线对折之后,两边的图形能够完全重叠,这条直线就是图形的对称轴。

六、图形旋转的特点 1、旋转前后图形形状和大小都不变。 2、每组对应点与旋转中心的连线所成角的度数都等于旋转角度。 3、各对应点之间的距离也相等。 七、图形旋转的三要素 1、旋转中心:可以在已知图形上也可以在已知图形外。 2、旋转方向:顺时针和逆时针。 3、旋转角度:常见的有45°、90°180°等。 八、旋转图形的画法 1、确定旋转中心、旋转方向、旋转角度 2、找去原图形的各关键点 3、依次将各关键点与旋转中心连接(用虚线) 4、将各连线按要求旋转一定角度后,确定各虚线的长度,标出对应点。 5、将个对应点连接并标出名称。

图像的几何变换的两种实现(旋转、平移、放大、缩小)

面向对象程序设计 学号:2 学生所在学院:信息工程学院 学生姓名:邵丽群 任课教师:熊邦书 教师所在学院:信息工程学院

2013级 实现图像的几何变换 电子信息工程 信息工程学院 摘要:几何变换是最常见的图像处理手段,通过对变形的图像进行几何校正,可以得出准确的图像。常用的几何变换功能包括图像的平移、图像的镜像变换、图像的转置、图像的缩放、图像的旋转等等。目前数字图像处理的应用越来越广泛,已经渗透到工业、航空航天、军事等各个领域,在国民经济中发挥越来越大的作用。作为数字图像处理的一个重要部分,本文接受的工作是如何Visual C++编程工具设计一个完整的应用程序,实现经典的图像几何变换功能。程序大概分为两大部分:读写BMP图像,和数字图像的几何变换。即首先用Visual C++创建一个单文档应用程序框架,在实现任意BMP图像的读写,打印,以及剪贴板操作的基础上,完成经典的图像几何变换功能。图像几何变换的Visual C++编程实现,为校内课题的实现提供了一个实例。 关键字:图像处理;几何变换(图像的平移、缩放、转置、旋转和镜像变换);BMP图像;Visual C++

一、引言 图像几何变换是指用数学建模的方法来描述图像位置、大小、形状等变化的方法。在实际场景拍摄到的一幅图像,如果画面过大或过小,都需要进行缩小或放大。如果拍摄时景物与摄像头不成相互平行关系的时候,会发生一些几何畸变,例如会把一个正方形拍摄成一个梯形等。这就需要进行一定的畸变校正。在进行目标物的匹配时,需要对图像进行旋转、平移等处理。在进行三维景物显示时,需要进行三维到二维平面的投影建模。因此,图像几何变换是图像处理及分析的基础。 图像几何变换是计算机图像处理领域中的一个重要组成部分,也是值得深讨的一个重要课题。在图像几何变换中主要包括图像的放缩、图像的旋转、图像的移动、图像的镜像、图像的块操作等内容,几何变换不改变图像的像素值,只改变像素所在的几何位置。从广义上说,图像是自然界景物的客观反映,是人类认识世界和人类本身的重要源泉。图像对我们并不陌生。我们生活在一个信息时代,科学研究和统计表明,人类从外界获得的信息约有75%来自视觉系统,也就是从图像中获得的。所以对数字图像的处理便显得尤为重要了。 本文主要深讨了图像的几何变换(主要包括图像的平移、转置、缩放、旋转、镜像等)理论,并在此基础上用Visual C++实现的过程。 1.3.2研究方法 方法一: 利用Windows 本身就提供了一个API函数SetWorldTransForm来实现图片旋转、位移及其他变形,这个函数是对一个设备上下文DC进行操作,通过坐标转换来实现各种功能的。 方法二: 通过图像进行平移、旋转、转置、镜像、缩放后重新计算各点新像素完成几何变换。自定义一个图像处理的Cdibapi类,把一般处理图像时要用到的函数实现封装在这个类中,该类用于实现DIB对象的绘制,DIB对象调色板的创建,DIB对象的读取与存储,图像线性变换,图像灰度拉伸等。然后把在视类中实现图像平移,图像镜像,图像转置,图像缩放及图像旋转的函数调用和实现。

图形的几何变换

《计算机图形学》上机实习报告(一)——基本图形的生成 一、实习目的和要求 1、目的 深入学习三种基本几何变换的原理和方法,以及错切、镜像变换同上的类同性, 同时,在掌握基本几何变换的基础上理解组合变换的实现机制,掌握几何变换 的共同特点; 通过程序的编写和运行,学习基本几何变换在程序上的实现方法,这就要求掌 握结构体、一维数组的基本性质和使用方法; 进一步锻炼使用WIN-TC的熟练程度。 2、要求 实现平移变换、比例变换、旋转变换三种基本几何变换; 实现镜像变换、错切变换; 二、运行环境 本次上机在WIN-TC 中进行。 三、直线的生成——用Bresenham算法实现 1、算法基本原理 图形的几何变换一般是指对图形的几何信息经过变换后产生新的图形,图形几何变换既可以看作是坐标系不动而图形变动,变动后的图形在坐标系中的坐标值发生变化;出可以看作图形不动而坐标系变动,变动后的图形在新坐标系下具有新的坐标值。这两种情况本质上都是一样的,都是图形由新的坐标值表示,因此是新产生的图形。图形几何变换包括比例变换、对称变换、错切变换、旋转变换、平移变换及其复合变换。图形上所有的点在几何变换前后的坐标关系一般用解析几何方法可以求得,但这些几何关系用矩阵方法表示,运算更为方便。 图形基本几何变换是指比例变换、对称变换、错切变换、旋转变换和平移变换等。变换通过矩阵运算均可以表示为表示几何图形的点阵的一维矩阵和表示变换的三维矩阵相乘的形式,即P’=P·T,具体如下: 平移变换

比例变换 旋转变换 对称变换 对称于x轴对称于y轴对称于原点 对称于y=x 对称于y=-x 错切变换 沿x轴方向关于y的错切 沿y轴方向关于x的错切 2、对程序中变量的说明 3、源程序 4、运行结果 5、个人总结

图形的平移与旋转教案

第三章图形的平移与旋转教案 3.1生活中的平移 教学目标: 知识目标:认识平移、理解平移的基本内涵;理解平移前后两个图形对应点连线平行且相等,对应线段平行且相等,对应角相等的性质。 能力目标:①通过探究式的学习,培养学生的归纳总结与猜想的数学能力,培养学生的逆向思维能力。通过知识的拓展,培养学生的分析问题与解决问题的能力;②让学生经历观察、分析、操作、欣赏以及抽象概括等过程;经历探索图形平移性质的过程,以及与他人合作交流的过程,进一步发展空间观念,增强审美意识。 情感目标:①在探究式的教学活动中,培养学生主动探索,勇于发现的科学精神;通过多种途径,培养学生细致、严谨、求实的学习习惯;渗透由特殊到一般,化未知为已知的辩证唯物主义思想;②引导学生观察生活中的图形运动变化现象,自己加以数学上的分析,进而形成正确的数学观,进一步丰富学生的数学活动经验和体验。有意识的培养学生积极的情感、态度,促进观察、分析、归纳、概括等一般能力及审美意识的发展;③通过自己动手设计图案,把所学知识加以实践应用,体会数学的实用价值。通过同学间的合作交流,培养学生的协作能力与学习的自主性。 教学重点:探究平移变换的基本要素,画简单图形的平移图。 教学难点:决定平移的两个主要因素。 教学过程设计: 一、引入并确定目标 展示与平移有关的图片,借助实物演示平移,用几何画板演示两个图形的平移。 学生分组讨论,如何将所看到的现象用简洁的语言叙述。 二、探究新知 分析平移定义,探讨“沿某一方向”的意义,其实质是沿直线运动。 学生讨论“沿某一方向”的意义。 展示图片,让学生讨论图中的运动各在那种情况下是平移,图中还有哪些图形可以通过平移得到。 学生分组讨论: (1)能否通过平移得到。 (2)能平移得到的其基本图形是什么?有哪些方法? 让学生列举生活中的平移实例,对理解有偏差的加以纠正。 展示静态图片,让学生观察图中具有特殊位置关系的线段,归纳猜想所能得到的结论;利用几何画板实验验证猜想。 小组同学讨论自己所能得到的结论。

小学六年级数学图形的变换试题及答案

2013年图形的变换 一.填空题(共1小题) 1.(1)由①图到②图是向_________平移_________格. (2)由①图到③图是向_________平移_________格. (3)把②图向左平移3格,画出平移后的图形. (4)把③图向上平移2格,画出平移后的图形. 二.解答题(共13小题) 2.(2008?南靖县)(1)0A为对称轴,画出图形另一半,成为图形1. (2)将画好的整个图形向右平移4格,再画出来. (3)将图形1绕O点顺时针旋转90°,并画出来. 3.(2007?惠山区)①画出下面三个图形中轴对称图形的对称轴. ②将梯形围绕A点逆时针旋转90°,画出旋转后的图形. ③将平行四边形先向右平移5格,再向下平移2格,画出平移后的图形.

4.(2009?兴国县模拟)(1)以0A为对称轴,画出图形另一半,成为图形A. (2)将画好的图形A向右平移4格,得到图形B. (3)将图形A绕O点顺时针旋转90°,得到图形C. 5.图形A向右平移5格得到图形B,图形B向下平移2格得到图形C,请在图中画出图形B和图形C. 6.图中,图形A是如何变换得到图形B? 7.请画出先向右平移8格,再向下平移2格后得到的图形.

8.按要求画一画. (1)在方格子中画出图①绕O点顺时针方向旋转90°后的图形.(2)画出将图②向右平移7格,再向上平移3格后的图形.(3)画出图③的另一半,使它成为轴对称图形. 9.按要求画图. (1)将图形A向上平移5格,再向右平移7格,得到图形B.(2)以横虚线为对称轴,画出和图形A对称的图形. (3)以竖虚线为对称轴,画出和图形C对称的图形. 10.先画出图形: (1)向下平移3小格后的图形 (2)再画出图形①绕顶点A逆时针旋转90度后的图形③.

图像的几何变换及其matlab实现

数字图像处理论文--图像的几何变换及其MATLAB实现 学院:理学院专业:信息与计算科学 班级:信计1012 姓名: 学号:任课老师: 集美大学理学院 二○一三年十一月二十八日

目录 摘要 (1) 一、何谓数字图像处理 (1) 二、数字图像几何变换简介 (1) 三、MATLAB图像处理工具介绍 (1) 四、图像几何变换的MATLAB实现 (2) 4.1图像几何变换的概述 (2) 4.2 图像的平移变换 (2) 4.3 图像的比例缩放 (4) 4.4 图像的镜像变换 (5) 4.5 图像的旋转变换 (7) 4.6 图像的剪取 (8) 五、图像几何变换的应用以及技术局限 (10) 参考文献 (10)

摘要:图像变换就是把图像从空间域转换到变换域(如频率域)的过程。图像变换可以使人们从另一角度来分析图像信号的特性,利用变换域中特有的性质,使图像处理过程更加简单、有效。图像变换是许多图像处理与分析技术的基础,而几何变换是图像变换中最基础也是应用最广泛的技术之一,本文基于MATLAB的图像处理工具,通过改变图像像素的空间位置或估算新空间位置上的像素值,从而实现图像的平移、缩放、旋转、镜像变换、图像插值等几何变换。 关键字:图像变换、几何变换、MATLAB 一、何谓数字图像处理 数字图像处理(Digital Image Processing),就是利用数字计算机或则其他数字硬件,对从图像信息转换而得到的电信号进行某些数学运算,以提高图像的实用性。例如从卫星图片中提取目标物的特征参数,三维立体断层图像的重建等。总的来说,数字图像处理包括点运算、几何处理、图像增强、图像复原、图像形态学处理、图像编码、图像重建、模式识别等。目前数字图像处理的应用越来越广泛,已经渗透到工业、医疗保健、航空航天、军事等各个领域,在国民经济中发挥越来越大的作用。 二、数字图像几何变换简介[3] 今天数字技术时代,我们身边接触到很多的数字图像,而对数字图像的处理往往会遇到需要对图像进行几何变换的一些问题。图像几何变换是图像显示技术中的一个重要组成部分。在图像几何变换中主要包括图像的缩放、旋转、移动、剪取等内容。无论照片、图画、书报、还是医学X光和卫星遥感图像等领域都会用到这些技术。通过图像的几何变换技术,可以显著提高图像处理效率和质量,为更进一步的图像处理奠定基础。 三、MATLAB图像处理工具介绍[1] MATLAB全称是Matrix Laboratory(矩阵实验室),一开始它是一种专门用于矩阵数值

计算机图形学-图形的几何变换

贵州大学实验报告 学院:计算机科学与技术专业:软件工程班级:软件132 姓名常伟学号1308060226 实验地点一教704 实验时间2016.5.9 指导教师李智实验成绩 实验项目名称试验四、图形的几何变换 实验目的1.掌握矢量运算。 2.熟练使用齐次坐标。 3.掌握采用齐次坐标进行几何变换。 实验要求1.理解几何图形变换的原理,编程实现图形的几何变换。 2.编程界面友好,实现变换的所有方式,包括平移、缩放、旋转、对称、错切以及基本变换基础上的组合变换。 3.几何变换使用矩阵进行运算。

实验原理 二维齐次坐标变换的矩阵的形式是 ? ? ? ? ? ? ? ? ? ? i h g f e d c b a 这个矩阵的每一个元素都是有特殊含义的。其中,? ? ? ? ? ? e d b a 可以对图形进行缩放、旋 转、对称和错切等变换;? ? ? ? ? ? f c 是对图形进行平移变换;[]h g是对图形作投影变换;[]i 则是对图形进行缩放变换。 下面给出几个基本变换的矩阵运算。 1.平移变换 ? ? ? ? ? ? ? ? ? ? = ? ? ? ? ? ? ? ? ? ? + + = ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? = ? ? ? ? ? ? ? ? ? ? ? ? 1 ) , ( 1 1 1 1 1 1 ' ' y x T y x y x t t t t t t y x y x y x y x 2.缩放变换 ? ? ? ? ? ? ? ? ? ? = ? ? ? ? ? ? ? ? ? ? ? ? = ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? = ? ? ? ? ? ? ? ? ? ? 1 ) , ( 1 1 1 1 ' ' y x s s S y s x s y x s s y x y x y x y x 3.旋转矩阵 ? ? ? ? ? ? ? ? ? ? = ? ? ? ? ? ? ? ? ? ? + - = ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?- = ? ? ? ? ? ? ? ? ? ? 1 ) ( 1 cos sin sin cos 1 1 cos sin sin cos 1 ' ' y x R y x y x y x y x θ θ θ θ θ θ θ θ θ 4.对称矩阵 ? ? ? ? ? ? ? ? ? ? + + = ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? = ? ? ? ? ? ? ? ? ? ? 1 1 1 1 ' ' ey dx by ax y x e d b a y x 对称变换其实只是a、b、d、e取0、1等特殊值产生的一些特殊效果。 5.错切变换 ? ? ? ? ? ? ? ? ? ? + + = ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? = ? ? ? ? ? ? ? ? ? ? 1 1 1 1 1 1 ' ' y dx by x y x d b y x

图形的平移与旋转练习题及答案全套

情景再现: 你对以上图片熟悉吗?请你回答以下几个问题: (1)汽车中的乘客在乘车过程中,身高、体重改变了吗?乘客所处的地理位置改变了吗? (2)传送带上的物品,比如带有图标的长方体纸箱,向前移动了20米,它上面的图标移动了多少米? (3)以上都是我们常见的平移问题,认真想一想,你还能举一些平移的例子吗? 1.如图1,面积为5平方厘米的梯形A ′B ′C ′D ′是梯形ABCD 经过平移得到的且 ∠ABC =90°.那么梯形ABCD 的面积为________,∠A ′B ′C =________. 图1 2.在下面的六幅图中,(2)(3)(4)(5)(6)中的图案_________可以通过平移图案(1) § 图形的平移与旋转

得到的 . 图2 3.请将图3中的“小鱼”向左平移5格. 图3 4.请欣赏下面的图形4,它是由若干个体积相等的正方体拼成的.你能用平移分析这个图形是如何形成的吗? 一、填空: 1、如下左图,△ABC 经过平移到△A ′B ′C ′的位置,则平移的方向是______,平移的距离是______,约厘米______. 2、如下中图,线段AB 是线段CD 经过平移得到的,则线段AC 与BC 的关系为( ) A.相交 B.平行 C.相等 D.平行且相等 § 图形的平移与旋转

3、如下右图,△ABC经过平移得到△DEF,请写出图中相等的线段______,互相平行的线段______,相等的角______.(在两个三角形的内角中找) 4、如下左图,四边形ABCD平移后得到四边形EFGH,则:①画出平移方向,平移距离是_______;(精确到0.1cm) ②HE=_________,∠A=_______,∠A=_______. ③DH=_________=_______A=_______. 5、如下右图,△ABC平移后得到了△DEF,(1)若∠A=28o,∠E=72o,BC=2,则∠1=____o,∠F=____o,EF=____o;(2)在图中A、B、C、D、E、F六点中,选取点_______和点_______,使连结两点的线段与AE平行. 6、如图,请画出△ABC向左平移4格后的△A 1B1C1,然后再画出△A1B1C1向上平移3格后的△A2B2C2,若把△A2B2C2看成是△ABC 经过一次平移而得到的,那么平移的方向是______,距离是____的长度. 二、选择题: 7、如下左图,△ABC经过平移到△DEF的位置,则下列说法: ①AB∥DE,AD=CF=BE;②∠ACB=∠DEF; ③平移的方向是点C到点E的方向; ④平移距离为线段BE的长. 其中说法正确的有() A.个个个个 8、如下右图,在等边△ABC中,D、E、F分别是边BC、AC、AB的中点,则△AFE经过平移可以得到() A.△DEF B.△FBD C.△EDC D.△FBD和△EDC 三、探究升级: 1、如图,△ABC上的点A平移到点A1,请画出平移后的图形△A1B1C1. 3、△ABC经过平移后得到△DEF,这时,我们可以说△ABC与△DEF是两个全等三角形,请你说出全等三角形的一些特征,并与同伴交流.

计算机图形学--图形几何变换实现

实验五 图形几何变换的实现 班级:信计二班 学号: :解川 分数: 一、实验目的 为了掌握理解二维、三维的数学知识、变换原理、变换种类、变换方法;进一步理解采用齐次坐标进行二维、三维变换的必要性;利用VC++语言实现二维、三维图形的基本变换与复合变换。 二、实验容 (1) 理解采用齐次坐标进行图形变换的必要性——变换的连续性,使复合变换 得以实现。 (2) 掌握二维、三维图形基本变换的原理及数学公式。 (3) 利用VC++语言实现二维、三维图形的基本变换、复合变换,在评不上显 示变换过程或变换结果。 三、实验步骤 (1) 预习教材关于二维、三维图形变换的原理与方法。 (2) 使用VC++语言实现某一种或几种基本变换。 (3) 调试、编译、运行程序。 四、原理分析 源程序分别实现了对二维图形进行的平移变换—基本变换;对三维图形进行的绕某一个坐标轴旋转变换以及相对于立方体中心的比例变换—复合变换。 三维几何变换: (1) 比例变换: []1111z y x =[]1z y x T 3D =[]1z y x ????? ?? ?? ???s n m l r j i h q f e d p c b q 局部比例变换: s T =? ? ??? ???? ???1000000000000j e a 其中a 、b 、j 分别为在x 、y 、z 方向的比例系数。

整体比例变换: s T =? ? ??? ???? ???s 000010000100001其中s 为在xyz 方向的等比例系数。S>1时,整体缩小;s<1时,整体放大。 (2) 旋转变换: 旋转变换的角度方向为(沿坐标轴的反方向看去,各轴按逆时针方向旋转) 绕z 轴旋转: RZ T =?? ??? ???? ???-100 010000cos sin 00sin cos θθθθ 绕x 轴旋转: RX T =??????? ?? ???-10 00 0cos sin 00sin cos 000 01 θθθθ 绕y 轴旋转: RY T =????? ???? ???-10 0cos 0sin 00100sin 0cos θθθθ 程序代码: /*三维图形(立方体)旋转变换、比例变换*/ #include #include #include #include #include #include #define ZOOM_IN 0.9 #define ZOOM_OUT 1.1

八年级下册图形的平移与旋转

八年级下册图形的平移与旋转

A B D E F 例1 如图,已知Rt △ABC 中,∠C=90°,BC=4,AC=4,现将△ABC 沿CB 方向平移到如图所示位置: (1)若平移距离为3,求 △ABC 与△/ //C B A 的重叠 部分的面积; (2)若平移位置为x (0≤ x ≤4),求△ABC 与△ ///C B A 的重叠部分的面积 解:(1)由题意得CC ′=3,BC=4,所以BC ′=1; 重叠部分是一个等腰直角三角形,所以其面积为:2 11121=?? (2)2 )4(21x y -= 【方法技巧】 平移要注意起点和终点,平移的方向和距离。 【变式演练】 1、如图,将周长为8的△ABC 沿BC 方向平移1个单位得到 △DEF ,则四边形ABFD 的周长为 2、由图中左侧三角形仅经过一次平移、旋转或

轴对称变换,不能得到的图形是( ) 考点二 平移和旋转的应用 例2 如图8,方格纸中的每个小方格都是边长为1个单位的正方形,Rt △ABC 的顶点均在格点上,建立平面直角坐标系后,点A 的坐标为(-4,1),点B 的坐标为(-1,1). (1)先将Rt △ABC 向右平移5个单位,再向下平移1个单位后得到Rt △A 1B 1C 1.试在图中画出图形Rt △A 1B 1C 1.,并写出A 1的坐标; (2)将Rt △A 1B 1C 1.,绕点A 1顺时针旋转90°后得到Rt △A 2B 2C 2,试在图中画出图形Rt △A 2B 2C 2,并计算Rt △A 1B 1C 1在上述旋转过程中C 1.所经过的路程. 分析:(1)根据平移的性质画 出经过两次平移后的图形 Rt △A 1B 1C 1.即可写出A 1的坐 标; (2)根据以点A 1为中(A (C (D ) (B ) 第2题图

《图形的平移与旋转》单元测试题

八年级第三章《图形的平移与旋转》单元测试题 班级 姓名 学号 成绩 一、选择题:(每小题4分,共32分) 1、将图 形按顺时针方向旋转900 后的图形是( ) A B C D 2、图案(A )-(D )中能够通过平移图案(1)得到的是( ) . (1) (A ) (B ) (C ) (D ) 3、如图可以看作正△OAB 绕点O 通过( )旋转所得到的 A 、3次 B 、4次 C 、5次 D 、6次 4、如右图,ΔABC 和ΔADE 均为正三角形,则图中 可看作是旋转关系的三角形是( ) A 、ΔABC 和ΔADE B 、ΔAB C 和ΔABD C 、ΔAB D 和ΔAC E D 、ΔACE 和ΔADE 5、如图,△ABC 和△DEF 中,一个三角形经过平移可得到另一 个三角形,则下列说法中不正确的是( ). A 、A B ∥FD ,AB =FD B 、∠ACB =∠FED C 、B D =C E D 、平移距离为线段CD 的长度 6、如图,将△ABC 绕点A 旋转后得到△ADE ,则旋转方式是( ). A 、顺时针旋转90° B 、逆时针旋转90° C 、顺时针旋转45° D 、逆时针旋转45° 7、如图,△ABC 是等边三角形,D 为BC 边上的点,∠BAD =15°, △ABD 经旋转后到达△ACE 的位置,那么旋转了( ).

A 、75° B 、60° C 、45° D 、15° 8、将一圆形纸片对折后再对折,得到图3,然后沿着图中的虚线剪开,得到两部分,其中一部分展开后的平面图形是( ) 二、填空题:(每小题4分,共24分) 11、平移不改变图形的 和 ,只改变图形的 。 12、经过旋转,对应点到旋转中心的距离___________. 13、图(1)绕着中心最小旋转 能与自身重合。 14、如图,四边形ABCD 平移到四边形A'B'C'D' 的位置,这时可把四边形A'B'C'D' 看作先将四边形ABCD 向右平移 格,再向下平移2格。 15、钟表的分针匀速旋转一周需要60分,它的旋转中心是 ___________,经过25分,分针旋转___________度。 16、如图,把大小相等的两个长方形拼成L 形图案, 则∠FCA = 度。 三、解答题:(17~20每小题5分,21~24每小题6分,共44分)https://www.wendangku.net/doc/182443097.html, 17、如图,经过平移,△ABC 的顶点A 移到了点D ,请作出平移后的三角形。 图3 A B C D 图(1)

图像几何变换

图像几何变换 一、实验目的 (1)学习几种常见的图像几何变换,并通过实验体会几何变换的效果; (2)掌握图像平移、剪切、缩放、旋转、镜像、错切等几何变换的算法原理及编 程实现 (3)掌握matlab编程环境中基本的图像处理函数 (4)掌握图像的复合变换 二、涉及知识点 (1)图像几何变换不改变图像像素的值,只改变像素所在的几何位置 (2)图像裁剪imcrop函数,语法格式为: B=imcrop(A);交互式用鼠标选取区域进行剪切 B=imcrop(A,[left top right bottom]);针对指定的区域[left top right bottom]进行剪切 (3)图像缩放imresize函数,语法格式为: B = imresize(A,m,method) 这里参数method用于指定插值的方法,可选用的值为'nearest'(最邻近法),'bilinear'(双线性插值),'bicubic'(双三次插值),默认为'nearest'。 B = imresize(A,m,method)返回原图A的m倍放大的图像(m小于1时效果是 缩小)。 (4)图像旋转imrotate函数,语法格式为: B = imrot ate(A,angle,’crop’),参数crop用于指定裁剪旋转后超出图像的部分。 三、实验内容 (1)将图像hehua.bmp裁剪成200X200大小,并保存 (2)制作动画,将一幅图像逐渐向左上角平移移出图像区域,空白的地方用白色 填充 (3)利用剪切图像函数制作动画 (4)将图像分别放大1.5倍和缩小0.8倍,插值方法使用最近邻域法和双线性插 值法,对比显示图像。 (5)将图像水平镜像,再顺时针旋转45度,显示旋转后的图像。 (6)将图像分别进行水平方向30度错切,垂直方向45度错切,分别显示结果 具体实现: 1.将图像hehua.bmp裁剪成200X200大小,并保存 I=imread('hehua.bmp'); n=size(I); figure; subplot(1,2,1); imshow(I); title('原图'); I=double(I);

计算机图形学 图形几何变换的实现

计算机图形学图形几何变换的实现

————————————————————————————————作者:————————————————————————————————日期:

实验五图形几何变换的实现 班级08信计2 学号89姓名徐阳分数 一、实验目的和要求: 1、掌握理解二维、三维变换的数学知识、变换原理、变换种类、变换方法;进一步理解采用齐次坐标进行二维、三维变换的必要性;利用Turboc实现二维、三维图形的基本变换和复合变换。 二、实验内容: 1、理解采用齐次坐标进行图形变换的必要性——变换的连续性,使复合变换得以实现。 2、掌握二维、三维图形基本变换(平移、缩放、对称、旋转、错切)的原理及数学公式。 3、利用Turboc实现二维、三维图形的基本变换、复合变换,在屏幕上显示变换过程或变换结果。 三、实验结果分析: 程序代码如下: /*二维图形(直线)平移变换*/ #include #include #include main() {int x0,y0,x1,y1,i,j; int a[3][3]; char key; for(i=0;i<3;i++) for(j=0;j<3;j++) a[i][j]=0; for(i=0;i<3;i++) a[i][i]=1; int graphdriver=DETECT; int graphmode=0; initgraph(&graphdriver,&graphmode," "); cleardevice(); x0=250;y0=120;x1=350;y1=220; line(x0,y0,x1,y1); for( ; ;) {outtextxy(100,400,"<-:left->:right^:up v:down Esc->exit"); key=getch();

图形的平移和旋转(经典)

D C F E C B A 第四讲 图形的平移与旋转 【基础知识精讲】 一、平移: 1.平移的定义——在平面内,把一个图形沿某一个方向移动一定的距离,这样的图形 运动叫图形的平移。 说明:(1)平移是图形的一种运动(变换) (2)平移的要素:①平移方向;②平移距离。 2.平移的性质: ①平移前后图形的大小、形状都不改变。即:平移前后的图形全等形。 ②平移前后对应点的连线段平行(或在同一直线上)且相等;对应线段平行(或在同一直线上)且相等;对应角相等。 二、旋转 1.旋转的定义——在平面内,把一个图形绕一个定点沿着某一个方向转动一个角度, 这样的图形运动叫图形的旋转。 说明:(1)旋转是图形的一种运动(变换) (2)旋转的要素: ①旋转中心 ②旋转方向 ③旋转角 2.旋转的性质 ①旋转前后图形的大小、形状都不改变。即:旋转前后的图形全等形。 ②图形上任意点都绕中心沿相同方向转动相同的角度(旋转角); ③对应点到旋转中心的距离相等。 【重难点高效突破】 例1.如图,经过平移△ABC 的边AB 移到了EF ,作出平移后的三角形. 例2.如图,△ABC 绕C 点旋转后,B 转到了D 处,作出旋转后的三角形。 例3.如图,在长32m 宽20m 的土地上要修筑同样宽的两条“之”字路,路宽2m ,则剩余耕地的面积为 . 例4、如图,E 为正方形ABCD 的边AB 上一点,AE=3,BE=1,P 为AC 上的动点,则PB+PE 的最小值是_________. 例5、如图,△ABC 是等腰直角三角形,AB=AC ,D 是斜边BC 的中点,E 、F 分别是AB 、AC 边上的点,且DE ⊥DF ,若BC=12,CF=5,则△DEF 的面积为______________。

《图形的平移与旋转》专题专练

《图形的平移与旋转》专题专练 专题一:确定图形变换后的坐标 把图形放在平面直角坐标系中,利用点的坐标,可进行图形的变换或确定图形的位置与形状,解答这类问题,是数与形结合的体现,有利于提高综合运用知识的能力.现以坐标系中的平移与旋转的图形变换为例加以说明.例1 如图1,在△AOB中,AO=AB.在直角坐标系中,点A的坐标是(2,2),点O的坐标是(0,0),将△AOB平移得到△A′O′B′,使得点A′在y轴上,点O′、B′在x轴上.则点B′的坐标是. 析解:因为△AOB是等腰三角形,容易得到B点坐标为(4,0),将△AOB 平移得到 △A′O′B′,使得点A′在y轴上,是将图形向左平移2个单位长度.根据平移特点,平移后对应线段相等,因此点B也向左平移2个单位长度,所以点B′的坐标为(2,0). 例2 已知平面直角坐标系上的三个点O(0,0),A(-1,1),B(-1,0),将△ABO绕点O按顺时针方向旋转135°,则点A,B的对应点坐标为A1(,),B1(,). 析解:建立如图2所示的直角坐标系,则OA=2,所以OA1=OA=2,所以点A1的坐标是(2,0).因为∠AOB=45°,所以△AOB是等腰直角三角 形,所以△A1OB1是等腰直角三角形,且OA1边上的高为 2 2 ,所以B1 22 22 ?? ? ? ?? ,. 练习一:1.如图3,若将△ABC绕点C顺时针旋转90°后得到△A′B′C′,则A点的对应点A′的坐标是(). (A)(-3,-2)(B)(2,2)(C)(3,0)(D)(2,1)

2.如图4,在直角坐标系中,右边的图案是由左边的图案经过平移以后得到的.左图案中左右眼睛的坐标分别是(-4,2)、(-2,2),右图案中左眼的坐标是(3,4),则右图案中右眼的坐标是. 3.在平面直角坐标系中,已知点P0的坐标为(1,0),将点P0绕着原点O 按逆时针方向旋转60°得点P1,延长OP1到点P2,使OP2=2OP1,再将点P2绕着原点O按逆时针方向旋转60°得点P3,则点P3的坐标是.4.如图5,方格纸中的每个小方格都是边长为1的正方形,我们把以格点间连线为边的三角形称为“格点三角形”,图中的△ABC就是格点三角形.在建立平面直角坐标系后,点B的坐标为(-1,-1). (1)把△ABC向左平移8格后得到△A1B1C1,画出△A1B1C1的图形,并写出点B1的坐标; (2)把△ABC绕点C按顺时针方向旋转90°后得到△A2B2C,画出△A2B2C 的图形,并写出点B2的坐标. 专题二:图形的变换分析 分析图形的变换一般选择合适的“基本图形”,然后由平移、旋转的定义考查这一基本图形变换到另一个基本图形的运动方式是平移还是旋转,以及运动的距

图形与几何变换.doc

图形与变换 一、考点综述 考点内容: (1)图形的轴对称 (2)图形的平移 (3)图形的旋转 (4)图形相似变换 考纲要求: 1理解轴对称及轴对称图形的联系和区别; 2掌握轴对称的性质;根据要求正确地作出轴对称图形。 3理解图形的平移性质; 4会按要求画出平移图形; 5会利用平移进行图案设计。 6理解图形旋转的有关性质; 7掌握基本中心对称图形; 8会运用轴对称、平移和旋转的组合进行图案设计 9掌握按耍求作出简单平面图形经相似变换后的图形。 考查方式及分值: 近年全国各地的中考数学试题出现了不少有关图形变换的试题.这些试题以新课程标准的内容和要求为依据,注重对数学知识的理解,技能的掌握综合应用能力的检测,积极推进素质教育和数学创新思维培养,中考中考查的内容丰富,形式多样,题型涉及选择题、填空题、作图题和解答题等,其中尤以选择题居多,填空题相对较少,所占分值在3"0分,在选择、填空、解答题中都有出现,图案的设计常在作图题中出现。 备考策略: 加强了对学生实验操作、读图作图、合情推理等能力的耍求,强化对图形变换的训练, 适当渗透空间观念,侧重数学思想方法以及运用几何知识解决实际问题能力。 二、例题精析 例1、如图1,在直线/上摆放有AABC和宜角梯形DEFG,且CD = 6 cm;在左ABC中:ZC = 90°, ZA=30°, AB = 4 cm;在直角梯形DEFG 中:EF//DG, ZDGF=90°, DG=6 cm, DE = 4cm, ZEDG = 60° 解答下列问题: o (1)旋转:将AABC绕点C顺时针方向旋转90°,请你在图中作出旋转后的对应图形 △ABC,并求出AB】的长度; (2)翻折:将沿过点Bi且与直线/垂直的直线翻折,得到翻折后的对应图形

计算机图形学图形的几何变换的实现算法

实验二 图形的几何变换的实现算法 班级 08信计 学号 59 姓名 分数 一、实验目的和要求: 1、掌握而为图形的基本几何变换,如平移,旋转,缩放,对称,错切变换;。 2、掌握OpenGL 中模型变换函数,实现简单的动画技术。 3、学习使用OpenGL 生成基本图形。 4、巩固所学理论知识,加深对二维变换的理解,加深理解利用变换矩阵可由简单图形得到复杂图形。加深对变换矩阵算法的理解。 编制利用旋转变换绘制齿轮的程序。编程实现变换矩阵算法,绘制给出形体的三视图。调试程序及分析运行结果。要求每位学生独立完成该实验,并上传实验报告。 二、实验原理和内容: . 原理: 图像的几何变换包括:图像的空间平移、比例缩放、旋转、仿射变换和图像插值。 图像几何变换的实质:改变像素的空间位置,估算新空间位置上的像素值。 图像几何变换的一般表达式:[,][(,),(,)]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、对一个三角形分别实现平移,缩放旋转等变化。

图形的平移与旋转知识点汇总.doc

第十五章图形的平移与旋转 一、平移:在平面内,将一个图形沿某个方向移动一定的距离,这样的图形运动 称为平移。 一个图形经过平移后得到一个新图形,这个新图形与原图形是互相重合的, 互相重合的点称为,互相重合的角称为,互相重合的线段称为。 注意:1. 平移有两个要素:(1)沿某一方向移动;(2)移动一定的距离; 2. 平移的方向就是原图上的点指向它的对应点的方向;图像上每点都沿同 一方向移动距离,这个距离是指对应点之间的长度; 3. 平移前后两图形是全等的。 平移的特征:平移不改变图形和,只改变了图形的位置; 经过平移,对应点所连的线段(或) 且相等; 对应线段(或)且相等,对应角。二、1、旋转:在平面内,将一个图形绕一个沿某个方向转动一定,这样的图形运动称为旋转。这个定点称为,转动的角称为。任意一对对应点与旋转中心的连线所成的角都是. 注意:1. 旋转中心在旋转过程中保持不动; 2. 图形的旋转是由,和所决定的; 3. 作平移图与旋转图。(确定关键点,将关键点沿一定的方向移动相同的 距离,连接关键点) 旋转的特征:图形中每一点都绕着旋转中心按同一旋转方向旋转了同样大小 的;对应点到旋转中心的距离;对应线段,对应角;图形的形状与大小都没有发生变化。 图形的变换包括、和旋转,这三种图形变换的共同点是:只改变图的,不改变图形的和。 2、旋转对称图形:在平面内,一个图形绕一个定点旋转一定的角度后能与自 身,这样的图形称为旋转对称图形。 3、中心对称图形:在平面内,一个图形绕某个点旋转角度,如果旋转前 后的图形互相重合,那么这个图形叫做中心对称图形。这个点叫做对称中心。 中心对称图形是旋转角度为°的特殊旋转对称图形,但旋转对称图形不一 定是中心对称图形。 4、成中心对称:把一个图形绕着某一点旋转180o,如果它能够和另一个图形重 合,就称这两个图形成中心对称。这个点叫做对称中心;这两个图形中的对应点,叫做关于中心的。

相关文档
相关文档 最新文档