图像的几何变换

图像的几何变换
图像的几何变换

1实验目的、要求

实验目的:

(1)掌握图像在空间域进行基本变换的原理与相关方法。

(2)能使用VC++实现图像平移变换、镜像变换、旋转变换、缩放变换的功能。

实验要求:

A部分:

(1)使用VC++设计程序:实现图像平移变换,图像缩放、图像裁剪、图像对角线镜像。

(2)使用VC++设计程序:对一幅高度与宽度均相等的图像,实现逆时针90度旋转。B部分:

(1)包括A部分全部要求。

(2)使用VC++设计程序:对任意一幅图像(高度与宽度可以不相等),实现任意角度的旋转。

(3)研究放大图像时使用的插值算法,使用VC++实现常见的三种图像插值算法:最近邻插值,双线性插值,立方卷积插值。通过实验验证其效果。

2实验原理

图像的平移:通过直角坐标系的平移变换公式:

x ‘ = x +dx

y’ = y + dy

注:(x,y)为源图像的坐标,(x’, y’)为新图像的坐标,dx对应x的偏移量,dy对应y的偏移量。即:平移之后新图像上坐标为(x’, y’)的像素点的颜色值,应该等于原图像上坐标为(x, y)的像素点的颜色值,以下类似。

图像的镜像:镜像分为水平镜像和垂直镜像

垂直镜像计算公式如下(图像大小为宽度为M,高度为N):

x’ = x

y’ = N – 1 – y

水平镜像计算公式为:

x’ = M – 1 – x

y’ = y

对角线镜像(对角线为左上角至右下角)计算公式:

x’ = M – 1 – x

y’ = N – 1 – y

图像的旋转:图像的旋转计算公式如下:

X’ = X *COS Q – Y *SIN Q

Y’ = X *SIN Q + Y*COS Q

注:(x,y)为源图像的坐标,(x’, y’)为新图像的坐标。

图像缩放:设原图像大小为宽度M、高度N,调整后宽度为k1×M、高度为k2×N,则:

Img.New(x,y) = Img.Old(x/k1, y/k2)

图像插值:当放大图像时,像素也相应地增加,增加的过程就是插值程序自动选择信息较好的像素作为增加的像素,而并非只使用临近的像素,所以在放大图像时,图像看上去会比较平滑、干净。常用插值算法包括:

最近邻插值:近邻取样插值的缩放算法,直接取Color0颜色作为缩放后点的颜色

双线性插值:需要考虑(Sx,Sy)坐标点周围4个颜色值Color0\Color1\Color2\Color3,把(Sx,Sy)到A\B\C\D坐标点的距离作为系数来把4个颜色混合出缩放后点的颜色立方卷积插值:考虑映射点周围16个点(4x4)的颜色来计算最终的混合颜色

3主要设备、器材

硬件环境:AMD A8-4500M 1.90G/4G RAM

软件环境:操作系统:WIN7

开发工具:Micrsoft Visual C++ 6.0

4实验步骤及原始数据记录

关键代码说明:

图像平移:

void CImageProcessingView::OnGeoTranslation()

{

// 实验图像平移

MessageBox("请在这里添加图像平移的代码");

// 可以参考图像裁剪的代码:CImageProcessingView::OnGeoCut()

// 获得当前文档对象

CImageProcessingDoc* pDoc = GetDocument();

// 判断图像是否已被加载

if( pDoc->m_pDibInit->IsEmpty() )

{

MessageBox("图像未加载");

return;

}

int width = pDoc->m_pDibInit->GetImageWidth();

int height = pDoc->m_pDibInit->GetImageHeight();

int bitCount = pDoc->m_pDibInit->GetImageBitCount();

// 将m_pDibInit 拷贝至m_pDibTest

pDoc->m_pDibTest->CloneDib(pDoc->m_pDibInit);

// 设置pDoc->m_pDibTest 为全白图像

int i, j;

RGBQUAD rgbQuad1;

rgbQuad1.rgbBlue = 255;

rgbQuad1.rgbGreen = 255;

rgbQuad1.rgbRed = 255;

rgbQuad1.rgbReserved = 0;

for(i=0; i

{

for(j=0; j

{

pDoc->m_pDibTest->SetPixel(i,j,&rgbQuad1);

}

}

// 实验删除BEGIN

int shiftX = 30;

int shiftY = 50;

for(i=0; i

{

for(j=0; j

{

rgbQuad1 = pDoc->m_pDibInit->GetPixel(i,j);

pDoc->m_pDibTest->SetPixel(i+shiftX, j+shiftY, &rgbQuad1);

}

}

// 实验删除END

// 交换m_pDibInit 与m_pDibTest 指针

CDib* pTmp = pDoc->m_pDibInit;

pDoc->m_pDibInit = pDoc->m_pDibTest;

pDoc->m_pDibTest = pTmp;

// 设置脏标记

pDoc->SetModifiedFlag(TRUE);

// 更新视图

pDoc->UpdateAllViews(NULL);

}

图像缩放:

void CImageProcessingView::OnGeoResizing()

{

// 实验图像缩放

MessageBox("请在这里添加图像缩放的代码");

// 可以参考图像裁剪的代码:CImageProcessingView::OnGeoCut()

// 获得当前文档对象

CImageProcessingDoc* pDoc = GetDocument();

// 判断图像是否已被加载

if( pDoc->m_pDibInit->IsEmpty() )

{

MessageBox("图像未加载");

return;

}

int width = pDoc->m_pDibInit->GetImageWidth();

int height = pDoc->m_pDibInit->GetImageHeight();

int bitCount = pDoc->m_pDibInit->GetImageBitCount();

// 将m_pDibInit 拷贝至m_pDibTest

pDoc->m_pDibTest->CloneDib(pDoc->m_pDibInit);

// 考虑将图像放大两倍的情况【注意!在实验的时候要同时做缩小与放大的测试】float nResizing = 1.5;

// 获得新的图像高度

int newWidth = width*nResizing;

int newHeight = height*nResizing;

pDoc->m_pDibTest->SetWidthHeight(newWidth, newHeight);

// 实验删除BEGIN

int i,j, i2, j2;

for(i=0; i

{

for(j=0; j

{

i2 = i/nResizing;

if( i2>width )

{

i2 = width;

}

j2 = j/nResizing;

if( j2>height )

{

j2 = height;

}

RGBQUAD rgbQuad1 = pDoc->m_pDibInit->GetPixel(i2,j2);

pDoc->m_pDibTest->SetPixel(i,j,&rgbQuad1);

}

}

// 实验删除END

// 交换m_pDibInit 与m_pDibTest 指针

CDib* pTmp = pDoc->m_pDibInit;

pDoc->m_pDibInit = pDoc->m_pDibTest;

pDoc->m_pDibTest = pTmp;

// 设置脏标记

pDoc->SetModifiedFlag(TRUE);

// 更新视图

pDoc->UpdateAllViews(NULL);

}

图像裁剪:

void CImageProcessingView::OnGeoCut()

{

// 实验图像裁剪

// 获得当前文档对象

CImageProcessingDoc* pDoc = GetDocument();

// 判断图像是否已被加载

if( pDoc->m_pDibInit->IsEmpty() )

{

MessageBox("图像未加载");

return;

}

// 将m_pDibInit 拷贝至m_pDibTest

pDoc->m_pDibTest->CloneDib(pDoc->m_pDibInit);

// 设置裁剪的起始坐标点

int x1 = pDoc->m_pDibInit->m_lpBMIH->biWidth/4;

int y1 = pDoc->m_pDibInit->m_lpBMIH->biHeight/3;

// 设置裁剪的宽度与高度

int cx = pDoc->m_pDibInit->m_lpBMIH->biWidth/2;

int cy = pDoc->m_pDibInit->m_lpBMIH->biHeight/3;

// 将m_pDibTest 的宽度与高度按照裁剪的要求进行设置pDoc->m_pDibTest->SetWidthHeight(cx, cy);

// 复制像素点

int i,j;

RGBQUAD rgbQuad;

for(i=0; i

for(j=0; j

{

rgbQuad = pDoc->m_pDibInit->GetPixel(i+x1, j+y1);

pDoc->m_pDibTest->SetPixel(i, j, &rgbQuad);

}

// 交换m_pDibInit 与m_pDibTest 指针

CDib* pTmp = pDoc->m_pDibInit;

pDoc->m_pDibInit = pDoc->m_pDibTest;

pDoc->m_pDibTest = pTmp;

// 设置脏标记

pDoc->SetModifiedFlag(TRUE);

// 更新视图

pDoc->UpdateAllViews(NULL);

}

图像对角线镜像:

void CImageProcessingView::OnDiagonalMirror()

{

// 实验对角线镜像显示图像

MessageBox("请在这里添加图像对角线镜像的代码");

// 可以参考:CImageProcessingView::OnGeoVerticalMirror()

// 获得当前文档对象

CImageProcessingDoc* pDoc = GetDocument();

// 判断图像是否已被加载

if( pDoc->m_pDibInit->IsEmpty() )

{

MessageBox("图像未加载");

return;

}

int width = pDoc->m_pDibInit->GetImageWidth();

int height = pDoc->m_pDibInit->GetImageHeight();

int bitCount = pDoc->m_pDibInit->GetImageBitCount();

// 将m_pDibInit 拷贝至m_pDibTest

pDoc->m_pDibTest->CloneDib(pDoc->m_pDibInit);

// 实验删除BEGIN

int i,j;

for(i=0; i

{

for(j=0; j

{

RGBQUAD rgbQuad1 = pDoc->m_pDibInit->GetPixel(i,j);

pDoc->m_pDibTest->SetPixel(j,i,&rgbQuad1);

}

}

// 实验删除END

// 交换m_pDibInit 与m_pDibTest 指针

CDib* pTmp = pDoc->m_pDibInit;

pDoc->m_pDibInit = pDoc->m_pDibTest;

pDoc->m_pDibTest = pTmp;

// 设置脏标记

pDoc->SetModifiedFlag(TRUE);

// 更新视图

pDoc->UpdateAllViews(NULL);

}

图像旋转:

void CImageProcessingView::OnGeoRotation()

{

// 实验图像旋转

MessageBox("请在这里添加图像旋转的代码");

// 可以参考图像裁剪的代码:CImageProcessingView::OnGeoCut()

// 实现逆时针90度、180度、270度旋转效果,任选其一即可

// 获得当前文档对象

CImageProcessingDoc* pDoc = GetDocument();

// 判断图像是否已被加载

if( pDoc->m_pDibInit->IsEmpty() )

{

MessageBox("图像未加载");

return;

}

int width = pDoc->m_pDibInit->GetImageWidth();

int height = pDoc->m_pDibInit->GetImageHeight();

int bitCount = pDoc->m_pDibInit->GetImageBitCount();

if( width!=height)

{

MessageBox("请使用正方形的图像");

}

// 将m_pDibInit 拷贝至m_pDibTest

pDoc->m_pDibTest->CloneDib(pDoc->m_pDibInit);

// 实验删除BEGIN

int i,j;

for(i=0; i

{

for(j=0; j

{

int shiftX = i-width/2;

int shiftY = j-height/2;

// 这里展示的是逆时针旋转90度的效果

int newShiftX = shiftY;

int newShiftY = -shiftX;

int newX = newShiftX + width/2;

int newY = newShiftY + height/2;

if( newX>=0 && newX<=width-1 &&

newY>=0 && newY<=height-1 )

{

RGBQUAD rgbQuad1 = pDoc->m_pDibInit->GetPixel(i,j);

pDoc->m_pDibTest->SetPixel(newX,newY, &rgbQuad1);

}

}

}

// 实验删除END

// 交换m_pDibInit 与m_pDibTest 指针

CDib* pTmp = pDoc->m_pDibInit;

pDoc->m_pDibInit = pDoc->m_pDibTest;

pDoc->m_pDibTest = pTmp;

// 设置脏标记

pDoc->SetModifiedFlag(TRUE);

// 更新视图

pDoc->UpdateAllViews(NULL);

}

实验数据记录:

实验图像:

实验图像说明:

左上:原图左上二:平移过的图像左上三:放大过的图像右上:剪裁过的图像左下:对角线镜像处理过的图像左下二:逆时针旋转90°的图像

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

面向对象程序设计 学号: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、个人总结

mfc空间几何变换之图像平移、镜像、旋转、缩放详解

MFC空间几何变换之图像平移、镜像、旋转、缩放详解 一. 图像平移 前一篇文章讲述了图像点运算(基于像素的图像变换),这篇文章讲述的是图像几何变换:在不改变图像容的情况下对图像像素进行空间几何变换的处理方式。 点运算对单幅图像做处理,不改变像素的空间位置;代数运算对多幅图像做处理,也不改变像素的空间位置;几何运算对单幅图像做处理,改变像素的空间位置,几何运算包括两个独立的算法:空间变换算法和灰度级插值算法。 空间变换操作包括简单空间变换、多项式卷绕和几何校正、控制栅格插值和图像卷绕,这里主要讲述简单的空间变换,如图像平移、镜像、缩放和旋转。主要是通过线性代数中的齐次坐标变换。 图像平移坐标变换如下: 运行效果如下图所示,其中BMP图片(0,0)像素点为左下角。

其代码核心算法: 1.在对话框中输入平移坐标(x,y) m_xPY=x,m_yPY=y 2.定义Place=dlg.m_yPY*m_nWidth*3 表示当前m_yPY行需要填充为黑色 3.新建一个像素矩阵ImageSize=new unsigned char[m_nImage] 4.循环整个像素矩阵处理 for(int i=0 ; i=Place && countWidth=Place && countWidth>=dlg.m_xPY*3) {//图像像素平移区域 ImageSize[i]=m_pImage[m_pImagePlace];//原(0,0)像素赋值过去 m_pImagePlace++;countWidth++; if(countWidth==m_nWidth*3) {//一行填满m_pImagePlace走到(0,1) number++;m_pImagePlace=number*m_nWidth*3; } } } 5.写文件绘图fwrite(ImageSize,m_nImage,1,fpw) 第一步:在ResourceView资源视图中,添加Menu子菜单如下:(注意ID号) 第二步:设置平移对话框。将试图切换到ResourceView界面--选中Dialog,右键鼠标新建一个Dialog,并新建一个名为IDD_DIALOG_PY。编辑框(X)IDC_EDIT_PYX 和(Y)IDC_EDIT_PYY,确定为默认按钮。设置成下图对话框:

图像的几何变换及其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

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

实验五 图形几何变换的实现 班级:信计二班 学号: :解川 分数: 一、实验目的 为了掌握理解二维、三维的数学知识、变换原理、变换种类、变换方法;进一步理解采用齐次坐标进行二维、三维变换的必要性;利用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

图像几何变换

图像几何变换 一、实验目的 (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();

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

实验二 图形的几何变换的实现算法 班级 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)图形的轴对称 (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且与直线/垂直的直线翻折,得到翻折后的对应图形

图像的几何变换

1实验目的、要求 实验目的: (1)掌握图像在空间域进行基本变换的原理与相关方法。 (2)能使用VC++实现图像平移变换、镜像变换、旋转变换、缩放变换的功能。 实验要求: A部分: (1)使用VC++设计程序:实现图像平移变换,图像缩放、图像裁剪、图像对角线镜像。 (2)使用VC++设计程序:对一幅高度与宽度均相等的图像,实现逆时针90度旋转。B部分: (1)包括A部分全部要求。 (2)使用VC++设计程序:对任意一幅图像(高度与宽度可以不相等),实现任意角度的旋转。 (3)研究放大图像时使用的插值算法,使用VC++实现常见的三种图像插值算法:最近邻插值,双线性插值,立方卷积插值。通过实验验证其效果。 2实验原理 图像的平移:通过直角坐标系的平移变换公式: x ‘ = x +dx y’ = y + dy 注:(x,y)为源图像的坐标,(x’, y’)为新图像的坐标,dx对应x的偏移量,dy对应y的偏移量。即:平移之后新图像上坐标为(x’, y’)的像素点的颜色值,应该等于原图像上坐标为(x, y)的像素点的颜色值,以下类似。 图像的镜像:镜像分为水平镜像和垂直镜像 垂直镜像计算公式如下(图像大小为宽度为M,高度为N): x’ = x y’ = N – 1 – y 水平镜像计算公式为:

x’ = M – 1 – x y’ = y 对角线镜像(对角线为左上角至右下角)计算公式: x’ = M – 1 – x y’ = N – 1 – y 图像的旋转:图像的旋转计算公式如下: X’ = X *COS Q – Y *SIN Q Y’ = X *SIN Q + Y*COS Q 注:(x,y)为源图像的坐标,(x’, y’)为新图像的坐标。 图像缩放:设原图像大小为宽度M、高度N,调整后宽度为k1×M、高度为k2×N,则: Img.New(x,y) = Img.Old(x/k1, y/k2) 图像插值:当放大图像时,像素也相应地增加,增加的过程就是插值程序自动选择信息较好的像素作为增加的像素,而并非只使用临近的像素,所以在放大图像时,图像看上去会比较平滑、干净。常用插值算法包括: 最近邻插值:近邻取样插值的缩放算法,直接取Color0颜色作为缩放后点的颜色 双线性插值:需要考虑(Sx,Sy)坐标点周围4个颜色值Color0\Color1\Color2\Color3,把(Sx,Sy)到A\B\C\D坐标点的距离作为系数来把4个颜色混合出缩放后点的颜色立方卷积插值:考虑映射点周围16个点(4x4)的颜色来计算最终的混合颜色 3主要设备、器材 硬件环境:AMD A8-4500M 1.90G/4G RAM 软件环境:操作系统:WIN7 开发工具:Micrsoft Visual C++ 6.0 4实验步骤及原始数据记录 关键代码说明:

2二次函数图象的几何变换

一、二次函数图象的平移变换 (1)具体步骤: 先利用配方法把二次函数化成2 ()y a x h k =-+的形式,确定其顶点(,)h k ,然后做出二次函 数2y ax =的图像,将抛物线2 y ax =平移,使其顶点平移到(,)h k .具体平移方法如图所示: (2)平移规律:在原有函数的基础上“左加右减”. 二、二次函数图象的对称变换 二次函数图象的对称一般有五种情况,可以用一般式或顶点式表达 1. 关于x 轴对称 2 y a x b x c =++关于x 轴对称后,得到的解析式是2y ax bx c =---; ()2 y a x h k =-+关于x 轴对称后,得到的解析式是()2 y a x h k =---; 2. 关于y 轴对称 2 y a x b x c =++关于y 轴对称后,得到的解析式是2y ax bx c =-+; ()2 y a x h k =-+关于y 轴对称后,得到的解析式是()2 y a x h k =++; 3. 关于原点对称 2 y a x b x c =++关于原点对称后,得到的解析式是2y ax bx c =-+-; ()2 y a x h k =-+关于原点对称后,得到的解析式是 ()2 y a x h k =-+-; 4. 关于顶点对称 2 y a x b x c =++关于顶点对称后,得到的解析式是2 2 2b y ax bx c a =--+- ; ()2y a x h k =-+关于顶点对称后,得到的解析式是()2 y a x h k =--+. 5. 关于点()m n , 对称 ()2 y a x h k =-+关于点()m n ,对称后,得到的解析式是()2 22y a x h m n k =-+-+- 根据对称的性质,显然无论作何种对称变换,抛物线的形状一定不会发生变化,因此a 永远不变.求抛物线的对称抛物线的表达式时,可以依据题意或方便运算的原则,选择合适的形式,习惯上是先确定原抛物线(或表达式已知的抛物线)的顶点坐标及开口方向,再确定其对称抛物线的顶点坐标及开口方向,然后再写出其对称抛物线的表达式. 知识点拨 二次函数图象的几何变换

matlab 图像几何变换+答案

实验四:图像几何变换(编程报告) 一、实验目的 (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 = imrotate(A,angle,’crop’),参数crop用于指定裁剪旋转后超出图像的部分。 三、实验内容 (1)将图像hehua.bmp裁剪成200X200大小 (2)制作动画,将一幅图像逐渐向左上角平移移出图像区域,空白的地方用白色 填充 (3)利用剪切图像函数制作动画 (4)将图像分别放大1.5倍和缩小0.8倍,插值方法使用双线性插值法,分别显 示图像。 (5)将图像水平镜像,再顺时针旋转45度,显示旋转后的图像。 (6)将图像分别进行水平方向30度错切,垂直方向45度错切,分别显示结果 四、实验环境 Windows下matlab编程环境 五、实验源代码及结果 1.f=imread('hehua.bmp'); figure; imshow(f); title('原图'); f2=imcrop(f,[50,50,250,250]); figure; imshow(uint8(f2)); title('裁剪后'); imwrite(f2,'d:/5/hehua1.bmp');

图像几何变换程序设计_

实践教案 兰州理工大学 计算机与通信学院 2012 年秋季学期 计算机图象处理课程设计 题目:图像几何变换程序设计专业班级: 姓名:学号:指导教师:成绩: 目录 摘要 (1) 一、前言 ................................................... 2. ..

二、算法分析与描述 ................................................... 2. .. 三、详细设计过程 .................................................... 4. .. 四、调试过程中出现地问题及相应解决办法............. 8. 五、程序运行截图及其说明 .................................................... 9. .. 六、简单操作手册 ................................................... 1. .3. 设计总结 .................................................... 1. .4. 参考文献 .................................................... 1. .4. 致谢........................................... 1..5.. 附录 ................................................... 1. .5..

图像几何变换的实现

图像几何变换的实现 引论 随着计算机科学的迅猛前进,计算机应用已经与生活中的方方面面密切联系,二十世纪八十年代图形界面操作系统的横空出世,促进了计算机的应用逐渐得到普及。数字图像存储着大量的信息量,现代社会信息大爆炸使得数字图像得到广泛应用,数字图象的收集和处理技术获得普遍的利用。 图像处理通常指的是数字图像处理。数字图象技术始于20世纪20年代,1920年从英国伦敦到美国纽约通过海底电缆传送了一幅图片,那是第一幅数字照片,传输该照片还采用了数字压缩技术,数字图象压缩技术还没有达到今天的水平,当时传输一幅图片采用压缩技术用时3天。从那时起,社会科技的不断发展和前进,数字图象与生活的联系愈来愈密切,为了使获得的图像显示的更为精确,就需要更高效的数字图象处理技术来支持,数字图象处理技术能够辅助人们更客观、确切地认识自然世界,另外,经过数字图象处理中的模式识别技术,能够将不同风格的图像分类处理。 当前国内利用的图像处理软件,其中包含一些专业图像操作软件,在润饰摄影或者绘画作品时,具有十分巨大的功效。可是这些专业性比较强的软件适宜专业的图象处理,国内常用的图像处理软件产品有美图秀秀,该软件是一款无偿的图片处理软件,不需耗费时间去特意研习就会用,比Adobe Photoshop简单很多。但是没有办法完全满足专业人士的要求,这就需要开发一种全新的软件来适应市场需求。 为了满足大多数人数字图像的处理,本文在综上研究了目前社会上普遍使用的图像处理软件,分析了现在社会上图像处理软件存在的不足,明确了研究的目标,主要针对存在的脱节现象,本文重点介绍了图像处理有关图像变换方面的操作,该设计针对目前社会上普遍存在用户自主设计,用户可以自行设计图像处理的效果,在很大程度上满足用户的要求。 Windows系统在现代社会上使用的比较普遍,Visual Studio是微软公司特意设计的在Windows系统下设计应用程序的集成开发平台,支持JavaScript、VB、C#和C/C++语言开发程序。C++语言是是一种高级语言,由C语言发展而来的,C++语言不但继承了C语言的简练、高效和在某些操作上沿袭了汇编语言指令的特色,支持用C语言设计的系统基础类,C + +也有其独特的特点:支持面向对象编程,支持泛型编程和强大的标准模板库。基于MFC 的软件设计使用C++语言开发不仅可以使用其强大的类库,可以很方便的设计界面平台,还有利于程序文档的编写。 第一章图像基础 1.1图像的矩阵表示 通常在计算机平面上看到的画面是通过图形或者图像的形式显示的,图形和图像是计算机上两种不同的图像存储形式。通常图形是以矢量结构的形式存储图形数据的;图像则是以栅格结构的形式存储图的,每个栅格又被称为一个像素,图像就是将一幅图片分成很多的栅格,像素以数列矩阵的形式排列,就组成一个像素矩阵,一幅图像就以这种数列矩阵的形式存储在计算机上的;像素描述一幅图像的基本信息包括图像的强度、颜色和坐标等,这种以像素和数列矩阵的形式存储图像数据的存储方式方便设计和实现数字图像处理操作。图像存

数字图象处理 第4章 图像的几何变换

数字图像处理基础 山东大学威海分校信息工程学院 张亚涛讲师

第四章图像几何变换 几何变换基础 1 图像的位置变换 2 图像的形状变换 3 4图像错切 5三维图像的投影变换

1 几何变换基础—一些概念 一些概念 1 图像的几何变换:是指用数学建模的方法来描述图像的位置,大小,形状等变换的方法,是通过数学建模实现对数字图像进行几何变换处理。 2 几何变换内容:图像的空间平移、比例缩放、旋转、仿射变换和图像插值。 3 几何变换实质:改变像素的空间位置或估算新空间位置上的像素值。

说明:[u,v]为变换后图像像素的笛卡尔坐标,[x,y]为原始图像中像素的笛卡尔坐标。这样就得到了原始图像与变换后图像的像素的对应关系。 如果,则有 ,即变换后图像仅是原图像简单拷贝。 注意,几何变换不改变像素值,而是改变像素所在的位置。这说明像素的 亮度和色彩并不变化,仅仅是像素位置发生改变。1 几何变换基础—一些概念 4 图像几何变换的一般表达式:

1 几何变换基础—齐次坐标 为什么引入齐次坐标? 在对图像进行操作时候,经常要对图像连续做几次变换。例如做了平移后再做旋转,做放缩等等。因为旋转,放缩等都是线性变换,都可用矩阵表示,这样旋转和放缩就可合并成: ?? ? ? ? ?????=??????????z y x T z y x ''' 但是平移变换不能写成矩阵形式,也就不能合并到上式中,因为在直角坐标系中,它不是线性变换。因此引入齐次坐标。 齐次坐标表示图像的几何变换十分方便。

1 几何变换基础—齐次坐标 齐次坐标表示 所谓齐次坐标表示法就是用N+1维向量表示N维向量。线性代数 如把平面上的点P=[x,y]放到空间去表示为[X Y H],使得x=X/H,y=Y/H 则称[X Y H」是点P的齐次坐标。如规定齐次坐标的第三个分量H必须是1,则称为规范齐次坐标。P=[X,Y」的规范齐次坐标是[x y 1]。显然,二维空间中描述的点与齐次坐标空间描述的点是一对多的关系。

图像的几何变换|图像的几何变换包括

学号专业姓名 实验日期教师签字成绩 实验报告 【实验名称】实验七图像的几何变换 【实验目的】 理解和掌握图像的剪切、垂直镜像变换、水平镜像变换、缩放和旋转的原理和应用。 【实验内容】 【实验步骤】 1.对原图使用最近邻插值法进行放大2倍。 2.对原图使用双线性插值法进行旋转。

3.对原图同时进行垂直镜像变换和水平镜像变换。 对原图进行剪切,剪切的区域的位置和范围自己设定。 选做可自行选取多种方法完成以上操作。并进行比较和讨论。 附图像的镜像变换是以图像垂直中轴线或水平中轴线交换图像的变换,分为垂直镜像变换和水平镜像变换。 【程序清单】 图像放大缩小 >> I=imread("D:\Fig_lenna_RGB.tif"); >> figure,imshow(I) >> D=imresize(I,0.2,"nearest"); >> figure,imshow(D) >> E=imresize(D,4,"nearest");

>> figure,imshow(E) 【实验截图】 512*512*3 uint8 102*102*3 uint8 408*408*3 uint8512 图像旋转 >> I=imread("D:\Fig_lenna_RGB.tif"); >> J=imrotate(I,40,"bilinear"); >> figure,imshow(I) >> figure,imshow(J) 【实验截图】 图像水平镜像变换和垂直镜像变换

>> I=imread("D:\Fig_lenna_RGB.tif"); >> subplot(2,2,1),imshow(uint8(I)) >> title("(a)原始图像"); >> subplot(2,2,2),imshow(uint8(I)) >> title("(b)原始图像"); >> I=double(I); >> h=size(I); >> I_fliplr(1:h(1),1:h(2),1:h(3))=I(1:h(1),h(2):-1:1,1:h(3)); >> I1=uint8(I_fliplr); >> subplot(2,2,3),imshow(I1) >> title("(c)水平镜像变换");

几何变换

EX05:几何变换 本实验包含个任务。任务1要求对一个扫描产生的图像文件进行仿射变换,任务2是进行栅格数据的矢量化,栅格数据矢量化是一种重要的数据输入方式,任务3是对一幅卫星影像进行仿射变换。 任务1:地理参照和矫正一幅扫描地图 所需数据:hoytmtn.tif,用TIFF格式存储的扫描后的土壤图。 二值扫描图文件hoytmtn.tif的度量单位为英寸。在本任务中要将扫描图像转换为UTM 坐标。本转换过程包含2个基本步骤:首先,使用4个位于原始土壤图角点的控制点(Tics)对图像进行地理参照,其次,对地理参照后的结果进行校正。4个控制点以度-分-秒(DMS)制表示的经纬度值如下: Tic-id 经度纬度 1 - 116 00 00 47 15 00 2 - 115 52 30 47 15 00 3 - 115 52 30 47 07 30 4 - 116 00 00 47 07 30 当投影到NAD 1927 UTM Zone 11N坐标系统后,上面4点x,y坐标为: Tic-id x y 1 575672.2771 5233212.6163 2 585131.2232 5233341.4371 3 585331.3327 5219450.4360 4 575850.1480 5219321.5730 接下来对hoytmtn.tif进行地理参考。 1.运行ArcMap,将数据框架命名为Task1并将hoytmtn.tif添加到Task1。单击View菜单, 指向Toolbars,设置Georeferencing。ArcMap中会出现Georeferencing工具条,在Layer 下拉列表中存在hoytmtn.tif项(图5.1)。 图5.1 Georeferencing工具条 2.对hoytmtn.tif进行缩放,定位到4个控制点。这些控制点以框标表示,2个位于图像的 顶端,2个位于图像的底部。1号点位于左上角,而后按顺时针方向顺序排列。(图5.2) 图5.2 控制点 3.放大到第1个控制点,在Georeferencing工具条上单击Add Control Points工具,在框标 角点处单击,而后第2次单击。此时,在控制点上的 + 标志由绿色变为红色。使用同样的方法增加其他3个控制点(图5.3)。

相关文档
最新文档