- 浏览: 65772 次
文章分类
- 全部博客 (35)
- java (35)
- c# winform 使用flowlayoutpanel控件做为导航菜单按钮的容器 (1)
- 数据库比较工具DBCompareTool 0.3.0 preview 发布 (1)
- xmemcached发布1.3.4 (1)
- web.xml中一些标签的解释 (1)
- Select (1)
- lua 网址大全 (1)
- date 显示至1970年来的秒数 (1)
- struts2一个表单提交多个action (1)
- 监听短信并判断是否未读 (1)
- 日本软件公司 管理者 改善 流程 (1)
- 一点点感悟 (1)
- 判断一个字符是双字节还是单字节 (1)
- “未与信任 SQL SERVER 连接相关联”错误解决方法 (1)
- 如何美化自己的BLOG (1)
- 金山词霸2005采用新的防止盗版的方法及简单解决方法 (1)
- 图形图像必须知道的事(一):几何变换 (1)
- 男人帮之程序员坚持语录 (1)
- android程序复制数据库 (1)
- javascript父、子页面交互小结 (1)
- java使用代理发送邮件 (1)
- eclipse修改project名称出问题,彻底删除项目 (1)
- Android开发之Intent、广播和接收 (1)
- 在一个方向上延伸,我的春天可能快来到了。 (1)
- chm文件无法打开问题 (1)
- Oracle数据库与MySQL数据库的几点区别 (1)
- [转载]SELECT INTO 和 INSERT INTO SELECT 两种表复制语句 (1)
- 高质量Java编码指南 (1)
- ruby 不完全安装修复 [openssl or zlib not found] (1)
- 切换CVS账户 (1)
最新评论
-
jurafish:
楼主,这个比较工具在哪儿下载呀?你说给的链接全都失效了:(
数据库比较工具DBCompareTool 0.3.0 preview 发布 -
wolf_awp:
iteye越来越不行了啊!
一点点感悟 -
zhuchao_ko:
............................... ...
struts2一个表单提交多个action
[size=9pt;]作者:[/size]<span lang="EN-US" style="font-size: 9pt; font-family: Arial,sans-serif;">mznewfacer(Wolf Geek) <span></span></span>[size=9pt;]时间[/size]<span lang="EN-US" style="font-size: 9pt; font-family: Arial,sans-serif;">:2011</span>[size=9pt;]年[/size]<span lang="EN-US" style="font-size: 9pt; font-family: Arial,sans-serif;">11</span>[size=9pt;]月[/size]<span lang="EN-US" style="font-size: 9pt; font-family: Arial,sans-serif;">30</span>[size=9pt;]日
欢迎转载 ,请注明出处![/size]
[size=9pt;]</span>
[size=9pt;] 这两天又不能安生了,得写论文,好吧,先把[/size]<span lang="EN-US" style="font-size: 9pt; font-family: Arial,sans-serif;">arduino[/size][size=9pt;]断下来,似乎我同时只能干一件事,严重怀疑自己的智商!顺便写一些基础总结吧,已备后用。可能会比较枯燥,但是必须强调的是这些都是图形图像方面的数学基础,不可忽视啊![/size]<span lang="EN-US" style="font-size: 9pt; font-family: Arial,sans-serif;"></span>
先看几个变换公式:
[size=9pt;]<img src="http://hi.csdn.net/attachment/201112/2/0_13227908775Ivi.gif" alt=""><br>[/size]
[size=9pt;]<img src="http://hi.csdn.net/attachment/201112/2/0_1322791009rRmc.gif" alt=""><br>[/size]
[size=9pt;]</span>
至此,二维平面上的所有变换集合就已叙述完毕,具体形式如下图所示。
<img src="http://hi.csdn.net/attachment/201112/2/0_1322791055KnDT.gif" alt=""><br>
[size=9pt;][/size]
对于三维图像而言,对应的变换矩阵就变为四阶矩阵。
<img src="http://hi.csdn.net/attachment/201112/2/0_1322791289Q16B.gif" alt=""><br>
[size=9pt;][/size]
<img src="http://hi.csdn.net/attachment/201112/2/0_1322791391Q51v.gif" alt=""><br>
<img src="http://hi.csdn.net/attachment/201112/2/0_1322792155E6Eo.gif" alt=""><br>
这就是初始化坐标系,对应的4阶齐次矩阵为四阶单位阵。
[size=9pt;]<span style="white-space: pre;">[/size][/size]
<img src="http://hi.csdn.net/attachment/201112/2/0_1322792341hAH0.gif" alt=""><br>
在此坐标系上画点[0.5 ; 0.5 ; 0.5],之后在Oxy平面上做投影,所得结果如下图所示:
<img src="http://hi.csdn.net/attachment/201112/2/0_1322793166nth4.gif" alt=""><br>
此时变换矩阵为
<img src="http://hi.csdn.net/attachment/201112/2/0_1322793236zmmA.gif" alt=""><br>
之后将坐标系绕z轴旋转45度并且在y轴方向上平移1.5个刻度,变换矩阵为<img src="http://hi.csdn.net/attachment/201112/2/0_1322794498mxC5.gif" alt="">
<img src="http://hi.csdn.net/attachment/201112/2/0_132279452236nD.gif" alt=""><br>
最后连续绕x轴,y轴,z轴分别旋转45度,得到结果如下图所示:
<img src="http://hi.csdn.net/attachment/201112/2/0_132279619473Oa.gif" alt=""><br>
变换矩阵可以由此推得:
<img src="http://hi.csdn.net/attachment/201112/2/0_13227962808PV8.gif" alt=""><br>
至于为什么引入齐次坐标系,这里就不做多余解释,详情可见这里。
最后用opengl画一下类似的坐标系变换,
<textarea readonly name="code" class="cpp">#include <GL/glut.h>
float w, h, tip = 0, turn = 0;
float ORG[3] = {0,0,0};
float XP[3] = {1,0,0}, XN[3] = {-1,0,0},
YP[3] = {0,1,0}, YN[3] = {0,-1,0},
ZP[3] = {0,0,1}, ZN[3] = {0,0,-1},VP[3]={0, 0, -5};
void reshape (int nw, int nh)
{
w = nw;
h = nh;
}
void Turn (int key, int x, int y)
{
switch (key) {
case GLUT_KEY_RIGHT: turn += 5; break;
case GLUT_KEY_LEFT : turn -= 5; break;
case GLUT_KEY_UP : tip -= 5; break;
case GLUT_KEY_DOWN : tip += 5; break;
}
}
void Draw_Axes (void)
{
glPushMatrix ();
glTranslatef (-1.5, -1.5, -5);
glRotatef (tip , 1,0,0);
glRotatef (turn, 0,1,0);
glScalef (1, 1, 1);
glLineWidth (2.0);
glBegin (GL_LINES);
glColor3f (1,0,0); // X axis is red.
glVertex3fv (ORG);
glVertex3fv (XP );
glColor3f (0,1,0); // Y axis is green.
glVertex3fv (ORG);
glVertex3fv (YP );
glColor3f (0,0,1); // z axis is blue.
glVertex3fv (ORG);
glVertex3fv (ZP );
glEnd();
glTranslatef (1, 1, 1);
glBegin (GL_LINES);
glColor3f (1,0,0); // X axis is red.
glVertex3fv (ORG);
glVertex3fv (XN );
glColor3f (0,1,0); // Y axis is green.
glVertex3fv (ORG);
glVertex3fv (YN );
glColor3f (0,0,1); // z axis is blue.
glVertex3fv (ORG);
glVertex3fv (ZN );
glEnd();
glTranslatef (-1, 0, 0);
glRotatef (-90, 0,1,0);
glBegin (GL_LINES);
glColor3f (0,0,1); // X axis is blue.
glVertex3fv (ORG);
glVertex3fv (XN );
glColor3f (0,1,0); // Y axis is green.
glVertex3fv (ORG);
glVertex3fv (YN );
glColor3f (1,0,0); // z axis is red
glVertex3fv (ORG);
glVertex3fv (ZN);
glEnd();
glPointSize(4.0f);
glRotatef (-45, 0,1,0);
glBegin(GL_POINTS);
glColor3f (1,0,0); // X axis is red.
glVertex3f(-1.0f, -1.0f, 0.0f);
glEnd();
glRotatef (-90, 0,1,0);
glBegin(GL_POINTS);
glColor3f (1,0,0);
glVertex3f(1.0f, -1.0f, 0.0f);
glEnd();
glLoadIdentity();
glBegin(GL_POINTS);
glColor3f (1,0,0);
glVertex3fv(VP);
glEnd();
glPopMatrix ();
}
void display (void)
{
glViewport (0, 0, w, h);
glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
Draw_Axes ();
glutSwapBuffers ();
}
void main (void)
{
glutInitWindowSize (600, 400);
glutInitWindowPosition (400, 300);
glutInitDisplayMode (GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGB);
glutCreateWindow ("坐标系变换");
glutDisplayFunc (display);
glutIdleFunc (display);
glutReshapeFunc (reshape);
glutSpecialFunc (Turn);
glClearColor (0.1, 0.2, 0.1, 1.0);
glEnable (GL_DEPTH_TEST);
glMatrixMode (GL_PROJECTION);
gluPerspective (50.0, 1.5, 1.0, 10.0);
glMatrixMode (GL_MODELVIEW);
glutMainLoop ();
}</textarea>效果图<br><img src="http://hi.csdn.net/attachment/201112/2/0_1322797487GxHN.gif" alt=""><br>
至于opengl的具体坐标系转换,像是世界坐标系到<span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;">观察坐标系的转换,如何利用GL_PROJECTION投影矩阵将3维投影到2维上,投影时选择glFrustum()还是glOrtho(),以及各个变换的具体原理,<span style="color: rgb(102,102,102); font-family: arial,helvetica,sans-serif; font-size: 13px;"></span><a href="mailto:song.ahn@gmail.com" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-color: initial; background-color: white; color: rgb(102,102,102); font-family: arial,helvetica,sans-serif; font-size: 13px; text-align: right; text-decoration: none;">Song
Ho Ahn</a>的博客中已经写得相当详细,里面有两个例子也很不错。理论部分,例子部分。</span>
<span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;"><br></span>
发表评论
-
切换CVS账户
2012-02-07 17:19 1138<div style="text-i ... -
ruby 不完全安装修复 [openssl or zlib not found]
2012-02-07 14:58 968发现 ruby源码包的ext文件夹下有很多 扩展包, ... -
高质量Java编码指南
2012-02-04 14:33 1110核心思想依然是《Effective Java》里面说: ... -
[转载]SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
2012-02-03 12:09 837Insert是T-sql中常用语句,Insert ... -
Oracle数据库与MySQL数据库的几点区别
2012-02-03 08:34 1267<span style="" ... -
chm文件无法打开问题
2012-02-02 13:59 935<div class="quot ... -
在一个方向上延伸,我的春天可能快来到了。
2012-01-31 13:38 821工作了这么久,我好想才找到了自己感兴趣的方向。不知道算 ... -
Android开发之Intent、广播和接收
2012-01-31 13:28 7655<h1>Android开发之Intent、 ... -
eclipse修改project名称出问题,彻底删除项目
2012-01-11 14:28 8488想给刚建好的project改名字,refac ... -
java使用代理发送邮件
2011-12-28 15:03 2027[size=18px;]最近用java写个发邮件的东东 ... -
javascript父、子页面交互小结
2011-12-28 13:43 996<span style="font-f ... -
android程序复制数据库
2011-12-21 13:23 1097一般项目中我们把db文件放到assert或者r ... -
男人帮之程序员坚持语录
2011-12-20 16:29 818[size=18px;]1.”我们处在一个瞬息万变的世 ... -
金山词霸2005采用新的防止盗版的方法及简单解决方法
2011-12-19 09:44 898金山词霸2005新鲜出炉,不少人都已经从网上下载并且安 ... -
如何美化自己的BLOG
2011-12-15 17:24 729下面的三个美化BLOG的方法是用的最多的,是最常见的. ... -
“未与信任 SQL SERVER 连接相关联”错误解决方法
2011-12-14 17:19 835<font s ... -
判断一个字符是双字节还是单字节
2011-12-14 10:24 4823对于字符串的处理,经常会遇到需要判断字符是双字节还是单 ... -
一点点感悟
2011-12-13 11:09 860<p class="MsoNo ... -
日本软件公司 管理者 改善 流程
2011-12-13 09:49 783<p class="MsoNorma ... -
监听短信并判断是否未读
2011-12-08 19:04 1091final String SMS_RECEIVED ...
相关推荐
常见的数字图像的几何变换包括平移、镜像、旋转、缩放和错切等,是图像处理软件必须具备的操作手段。本次实验的目的是要求掌握各种变换的基本原理和方法,能够运用Matlab编写程序,实现这些变换。其中,由于变化产生...
在图像处理领域,几何变换是不可或缺的一部分,它主要用于改变图像的位置、大小、形状或方向,以适应不同的应用场景或实现特定的视觉效果。本项目聚焦于使用Microsoft Foundation Classes (MFC)库在Visual Studio ...
进行图像几何变换时,通常会先分析图像特点,例如图像的尺寸、分辨率和色彩模式,以确定合适的变换方法。在MATLAB中,可以使用`imresize`进行图像缩放,`flipud`和`fliplr`进行上下或左右镜像,`rot90`进行图像转置...
图像几何变换的实质:改变像素的空间位置,估算新空间位置上的像素值。 图像几何变换的一般表达式:[,][(,),(,)]uvXxyYxy ,其中,[,]uv为变换后图像像素的笛卡尔坐标, [,]xy为原始图像中像素的笛卡尔坐标。...
首先,让我们详细探讨每一种几何变换: 1. **平移(Translation)**:平移是指将图形沿x、y轴方向移动一定的距离。在二维空间中,可以通过一个包含三个元素的向量来表示平移量,这个向量可以加到图形的每一个顶点...
在计算机图形学中,图像几何变换是不可或缺的基础概念和技术,它涉及到图像在二维或三维空间中的位置、形状和大小的变化。这篇文档将深入探讨图像几何变换的原理、方法以及在三维图形中的应用。 首先,我们要理解...
本资源提供的MATLAB代码实现了四种基本的几何变换:水平镜像、垂直错切、旋转和加倍。下面我们将详细探讨这些知识点。 首先,**水平镜像**是通过沿着图像的垂直轴翻转图像来实现的。这种变换在许多应用中都很常见,...
在图像处理领域,几何变换是图像分析和处理中的基本操作,用于改变图像的形状和位置。本实验报告主要探讨了图像的几何变换,包括图像的缩放、平移和旋转,以及图像的正交变换,如傅里叶变换和离散变换。此外,还涉及...
本主题将深入探讨四种基本的几何变换:平移、镜像、缩放和旋转,并通过源码的形式来理解这些操作的实现。 1. **平移(Translation)** 平移是最简单的几何变换,它涉及到图像在二维空间中的移动而不改变其形状或...
图像的几何变换是数字图像处理中的重要组成部分,它主要涉及图像在二维空间中的位置和形状的调整。在图像处理和计算机视觉领域,我们经常需要对图像进行各种几何操作,以便纠正图像失真、适应不同的显示设备或者进行...
- 图像拼接:在全景图制作中,不同图片间的几何变换是关键步骤。 - 物体跟踪:通过几何变换预测物体的运动轨迹。 在编程实现上,这些变换通常用矩阵运算来表达,因为它们都可以表示为线性变换矩阵的乘积。例如,...
在MATLAB中,我们可以使用以下函数进行几何变换: 1. `imtranslate`:用于执行平移操作。该函数接受图像和一个包含两个元素的向量,分别表示在x轴和y轴上的位移量。 2. `imrotate`:实现图像的旋转。参数包括图像...
在二维几何变换中,我们关注的是如何通过数学运算来改变图形的位置、大小、形状和方向,以实现图像的平移、旋转、缩放、镜像反射等效果。这些变换在游戏开发、图像处理、动画制作、用户界面设计等诸多领域都有广泛的...
本主题将深入探讨C++实现的几种基本图像几何变换:平移、镜像、转置、缩放和旋转。这些操作对于图像分析、图像配准、图像增强等应用至关重要。 1. **平移(Translation)**: 平移是将图像在二维空间中沿着x轴和y...
在C++中进行图像处理,几何变换是一项关键的技术。这些变换包括旋转、缩放和平移,它们在图像分析、计算机视觉以及图形用户界面设计等领域有着广泛应用。本篇将深入探讨如何利用C++来实现这些几何变换,并涉及形状的...
在图像处理领域,仿射变换是一种重要的几何变换方法,它广泛应用于图像的旋转、缩放、平移和倾斜等操作。本资料包“音视频资料-图像仿射变换原理2:矩阵变换、线性变换和图像线性变换矩阵”深入探讨了这一主题,主要...
在计算机图形学中,几何变换是一种重要的操作,用于改变图像的位置、大小、形状或方向。在给定的压缩包文件中,包含了一系列关于几何变换的实际应用示例,这些示例在VS2017环境下已经编译通过并可以直接运行。让我们...
在计算机图形学中,二维几何变换是至关重要的一个领域,它涉及到如何在平面上改变图形的位置、大小和形状。这个主题通常与编程语言如C++相结合,用于创建复杂的图形应用程序。"案例11-二维图形几何变换算法.rar"很...
在计算机视觉和数字图像处理领域,几何变换是至关重要的技术之一。本项目通过VC++编程语言实现对BMP图像的几何变换,包括180度旋转、平移等操作,这些变换有助于理解和处理图像的不同应用场景,如图像校正、目标识别...