2007-08-21

最近不知道是不是犯了什么,每个项目都处于狂读论文阶段。最无语的是汽车学院的项目居然也要查新,找一堆论文来读。恰好最近迷上了程序分析算法分析等等一系列东东,每个都是言简意赅却有大量论文的东西。如果这样倒也算了,今天闲来无事看看c++0x怎么样了,居然又Down了一堆论文…

据说knuth每天看25页论文,然后把它们组合起来,撰写TAOCP,虽然我不是那样的牛人,学学人家的进度总可以吧?然而,但是,居然,竟然,愕然,如果每天25页,两个礼拜下来也不过才350页的文章而已,而我的积压已经要动用Gb来衡量了..几乎所有文件都是pdf格式的,一页的大小基本上大家都是知道的…

抱怨永远是没有用处的,让我们正视这论文吧!这是前人无数心血!人家还不是大好青年殚精竭虑呕心沥血熬出来的?老徐一个字都可以卖钱,人家这毕生心血无偿给你,你抱怨的是个什么价?真让你付钱你知道是什么价格么?真打印出来你知道是多少树要被砍掉么?真浪费了你知道有多少花花草草要被摧残么?真实现了你知道科技会发展成什么样么?真….

只是,我还是想找个好点的工具,随时记录下哪些文章我读了,哪些文章我读到哪了,哪些我还得再读一次,哪些我不用看了…

Tags: .
2007-08-09

1.无论是谁写的代码,拿到之后先看看数组越界可能性大不大

2.看到角度,第一时间先想想是弧度还是角度..

这两个小问题疲了我两天…还是单元测试好啊…

Tags: ,.
2007-01-23

在 开源运动蓬勃发展的当下,很多先贤开始反思开源和自由软件的区别,以及在产业相关问题上的一些态度等等,这些不是我要关心的事情。然而《程序员》我每期都 得买,csdn每周都去,MSDN和Linux官方网站及一系列OSI网站也时不时要去逛逛。所以这些问题相应的也有那么点印象,我的结论是:开源到目前 为止还不能说做到了自由软件这个”free”,可是商业的”free”,确实可以说是成功了。

让我们先不谈GNU,看看目前仅凭商业公司的开源/免费产品,我们可以获得什么:

操作系统:Windows Vista(30天授权)(没有开源,不过free,考虑到多种后续软件要放在windows平台上,暂时放在这里) Solaris

各商业版本linux (redhat/suse/debian)

数据库:Oracle XE

DB2 9 Express

SQL Sever 2005 Express

MySQL为代表的一系列开源数据库

编译器/IDE

.net framework

JDK

GCC

Eclipse

Visual Studio 2005 Express

Intel C/C++/Fortran 编译器(如果这个也算)

编辑工具:

notepad++(不算出名,但是我感觉很好)

emacs(这个又过于出名了)

WPS2005

网页服务器:

Apache(这个应该是开源里面应用的最广的了)

IIS(虽然说不是开源,但算免费吧)

各种日常应用软件:

这个太多,不用列了

游戏:

各免费游戏^-^

现在看看,也许我们真的赶上了好时候,只要有台电脑,几乎你可以做程序员世界里面的任何事情,最为重要的是,几乎不要钱。

开源到最后到底会不会free,我不知道,但是目前,我肯定会先享受一下free带来的好处,何必管那么多呢。

Tags: ,,.
2006-12-18

06/16/2007 –这篇文章是当时准备创新项目时花了几小时写出来的,现在看已经没有什么重要,几乎都重写过了

3d建模处于计算机视觉,计算机图形学,计算机辅助设计的核心。是很多领域的基础性工作,主流的3d建模技术分为三类:

手工建模:即使用3d max,maya,pro/E ,Autocad等软件人工建模,这种方式的好处是准确地反映设计意图,可操控型高,缺点是需时长,需要较高技术能力人员,且在对已知物体(如建筑物,生物体)建模时缺乏精度,且需要额外的测量工作。

自动建模:即基于现实的物体,由计算机程序经一系列的机械步骤,形成3D模型的过程。

好处是速度快,操作方便,可实现自动化和序列化过程。

交互式建模:在自动建模的基础上,在建模的过程中加入一系列的可控性阶段,由技术人员参与建模,可以说是综合了以上两种建模的好处。

由此可见,自动建模技术,是3D建模的核心和主要发展方向,当前的大部分理论研究也集中于此,主要可分为如下两个方面:

1。基于实体的采样技术。 即通过对实体的接触式测绘(红外,激光等)获得实体的形体数据的点云数据(通常在百万个点的规模),再通过一系列的模拟和逼近方式以点重现曲线,以曲线重 现曲面,进而构建出整个实体的模型。这种技术的好处是精度高,且难度主要在测绘上,建模本身技术难度不大。缺陷是数据量大,且需要专门的仪器,同时对实体 的表面形状有一定的要求。主要用于工业上的反向工程,医学上的组织模拟等等。技术已基本成熟,当前发展点主要是快速处理大量数据。

2。基于图像的恢复技术。 即基于实体的一幅或多幅位图图像,通过对图像的分析重建实体。整个过程与人类视觉重现过程相似。技术的好处是数据量不大,不需要专门仪器,应用面很广,难 处是图像的精度直接决定重建效果,且技术难度高,可靠性不如前者,适于对精度要求不高的方面,如动作捕捉,地形测绘等等。也是目前发展的重点。

这一技术分为单幅图像和序列图像两个方面:

(1)基于单幅图像

单幅图像的基本思想是利用对比度,灰度等图像特征确定光照的反射,再由此进一步确定图像的深度,从而确定物体的形体信息。一般说来,主要是通过纹理,轮廓,阴影三种方面恢复形体信息。

纹理方法(shape from texture)把物体看作由一系列相同纹理元组成,在物体通过光照反射形成图像时,相同的纹理由于物体的形状形成不同的图像,于是反过来,在不同的图像中就包含了物体的形状信息。这种方法精度低,实用性不强,很少使用。

阴影方法(shape from shading)利用成像表面的明暗变化,解析出物体的表面深度信息,于七十年代早期由Horn提出,属于实际中应用较广的方法,此方法在理想光照条件下 有很好的效果,但是现实中物体,光照往往不能满足理想光照条件,于是便加上一些附加约束条件,从而形成如下几种方法:

①最小值算法

②演化算法

③局部分析法

④线性化算法

(2)基于序列图像

序列图像的好处是有效数据多,可通过线性方法确定光照,反射等不变量,在这方面主要有三种方法

1. 光度立体学法 这种方法是通过一系列不同光照条件下物体的图像,确定与所给像素对应的物体表面的朝向。主要难点有两个:①基于光度立体学的法向计算②由梯度恢复三维信 息。其中后者在前面提到的最小值算法中也有。这种方法的好处是实现简单,但需要改变光照条件,需要可控器材,故运用不多。

2.立体视觉 法 这种方法是最为传统的方法,发展时间也最久,主要思路是通过不同图像之间的匹配,得到摄像机矩阵和本质矩阵,从而反推出摄像机运动参数(当前讨论局限于线 性运动),然后通过经典的立体视觉方法恢复物体的三维形状。由于计算机图形学中此方面算法已经很成熟,此方法的难点就是不同图像之间的匹配问题。据查,主 要有两种匹配方式:

(1)区域匹配 即基于灰度的匹配,这种方法中心思想是假定图像序列间具有灰度的相似性,在一幅图像中以一点为中心选定一个区域,在另外一幅图像中寻找与该区域相似度最大 的区域,这样建立起两个区域中心的对应匹配关系。这种方法的优点是:可以得到稠密的匹配点集,便于后续的视差和深度计算,而且比较适合纹理丰富的区域和相 对运动较小的图像对。缺点是计算量大,对噪声敏感。

(2)特征匹配 即基于基元的方式,抽取出图像中独特的特征基元,如角点,边缘段,轮廓等,然后在两幅或者多幅图像中仅仅对这些基元进行匹配,于是把图像的匹配转化为基元 图(矢量点线图)的匹配。这种方法的效率比较高,因为只有一个很小的集合用于匹配,精度高,且基元可直接用于恢复物体形状,但是,一旦不能很好的监测出基 元,匹配效果就很差,在我们项目做设想的时候,主要就考虑的是特征匹配算法。

3光流法 也称运动法,其原理是利用图像中物体的运动,运动可用运动场描述,运动场是由图像中每个点的运动(速度)矢量构成的。当目标在相机前运动或相机在一个固定 的环境中运动时,所获得的对应图像的变化可用来恢复相机和目标间的相对运动及场景中多个目标的位置关系,当相机与场景目标间有相对运动时所观察到的亮度模 式运动称为光流,光流代表了目标的运动信息,可用来确定观察者相对目标的运动情况,并可根据像流解得物体的表面朝向。但这种方法缺点很明显:不能用于不变 动的物体。主要用于动作的捕捉和再现。

我的设想:以上所有的算法都是尽可能提取出各种模型参数,然后重建模型,那么,可不可以采用一种模型重用的方法,一开始就对物体的形状做一定的假定,再根据数据修改参数,即“轮廓加参数”方法,把交互式建模的好处吸收进来?这或许可以作为以后的发展方向。

Tags: ,.
2006-10-31

项目大概会在下个礼拜提交,现在开始做是有些赶紧,但抓紧时间应该是没有问题的,问题在于,写这么一个程序我到底得到了什么。

首 先要说的是WM_COPYDATA消息,自从看到要求要进程间通信以来,绝大部分同学都是采用了这个来做,然而我们是否继续深究,探索一下内存映射文件等 等内核对象?在这门课上,从目前趋势来看,户sir很明显不会将这类问题摆在台面上讲,这门课主要还是以MFC为重,那就是说这类问题只有靠自己去读书解 决了,但反思上学期,书读了一堆,效果并不怎样,关键还是缺乏了实际的动手操作,那这个项目,可能就是在当前时间安排下的最好练手项目了。

其 次是面向对象的问题,我们可以批评很多面向对象技术的问题,但是不可否认的是面向对象的出现是代表着软件的发展趋势,即不断向高端抽象,且我们的项目– 绘图是面向对象的成功应用领域之一,那我们自然应该在做这个项目的过程中不断提升自己的抽象能力和代码复用度,不能用MFC,我们可以设计自己的消息映射 机制,绝对不该用直接用C+win32 API来写,这是我对自己的要求。

然后是对自己的批评,为什么总要到了项目快要提交的时候才开 始着手?前天还跟johnny解嘲般解释为“要锻炼自己在压力和deadline下工作的能力”,真的如此吗?那在图书馆,寝室独自一人的那么多非读书时 间去了哪里呢?或许我应该对自己的时间做更好的控制,昨天在和同学的短信中大言不惭地说我有很多对付忙的心得,其实那只不过是在减少睡眠时间罢了,该浪费 的时间还是被浪费了。这学期轻松了很多,但在项目和学习上还是不能抓紧时间,我应该做点什么了。

Tags: .
2006-08-05

今天总算弄好网络问题了,原来在开机的时候提示的那个net_modules未加载实质上是由dhcp未设置好引起的,没办法,用liveCD登录,chroot,emerge dhcpcd,重新开机,hu,总算好了。

不过无线网卡还没弄好,emerge了新的wireless模块,提示说要把内核中80211那项禁止掉,这什么设计啊!过几天再说吧!

这两天乘着家里网快,先尽量多装些需要的东西,嘿嘿,今早开始emerge gnome,一中午没回去,也不知好了没有,晚上看看吧。

Tags: ,,,.
2006-07-17

可 累死人了,liveCD自带的那个安装程序界面倒是友好,可问题是一旦哪里报个错就得重来,而重来就意味着那个USE选项得重新设置一次…..300 多项啊,最主要的是我是重新分区,用liveCD那个install根本没挂载我的分区,连个文件保存都没有,我就吃了这个亏,头两日完全就在不停的重 来,后来猛然醒悟,仔细研究每次报错的位置和信息(还好有debug信息)。总算发现问题处在挂载分区处,于是换手工安装。

倒是一切顺利,但不小心没发现T43是SATA硬盘,发现的时候也没留意,只想着把hda3换成sda3就行,可惜grub引导内核后总提示无法加载到/dev/sda3,四处咨询后方才得知乃是内核编译时未加入SATA模块,于是又重来编译….

手工一项项核对,编译完成,cp到/boot,在grub中设置了一下(grub真是好用,特别是那个bash-like shell,太方便了) 引导内核后,boot时在回车后卡住….

再次找寻原因,更改到原2.6.17的内核(未支持SATA那个),可以引导内核,只是认不出根分区,无奈,再换内核,为了简便,用了genkernel,真是方便,简单两个命令就完成了,真不错

总算是可以登录了,又提示net modules未加载,那我怎么emerge?看来又得改改内核了…

Tags: ,.
2006-04-12

汇编是看了,有效果

高数没看,看来明早得预习

单词没背

1000米….我主要靠晨跑了

Tags: ,,.
2006-04-11

1,继续看汇编

2,看高数,昨天跟胖子讨论后发现我看数不会归纳要点和细节

3,那本书还是得继续看下去

4,背背单词

5,晚上看是不是再跑跑步,下周考1000米

Tags: ,,.
2006-04-10

这个引擎的方式是采用dll的方式,一个游戏就是一个插件,可能一个或者几个dll构成

引擎初始化i后,载入dll,及其对应的fly文件,引擎包装了所有的实现底层,需要做的逻辑就在dll中实现

今天试试

Tags: ,,.