GAMES102:几何建模与处理 - P1:课程介绍 - GAMES-Webinar - BV1NA411E7Yr
啊各位games啊,群友啊,晚上好啊,我是中国科学技术大学琉璃刚啊,今天非常高兴啊,这个在这个games在线论坛来给大家讲一下games 102这个概念在线课程啊,这个电池101和10201啊。
两位两门课程刚刚结束,那么我来开始讲一下关于几何的一些这个课程啊,好那么呃,我首先介绍一下我们这个课程的一些基本情况。
之后呢,再讲我们正式内容,那么非常欢迎大家啊,这等待了一段时间,因为9月份啊我还是比较忙,所以在10月份啊,我还是如期来开这个课啊,虽然也是非常忙的一段时间好,那么这个讲之前呢。
我还是想呃这3年来吧啊我和几位老师啊,这个在gains这个在线论坛的一些操作上好,然后给大家介绍一下game,全面介绍一下这个game的一些情况,那电池呢是图形学与混合现实在线平台这样一个啊,缩写啊。
那么这个它的主要的一个宗旨呢,主要是是希望给重新学及相关领域的一些,我们的华人在线社区交流的平台啊,那么,那么它实际上是是2016年,就当时我们的呃专委主任,16年4月份创建了这样一个平台games。
但是那时候是线下活动,那么在17年啊,17年6月份我们在杭州开了个会,决定呢也把这个活动啊,让更多人受益啊,想把它搬到线上,那么最后讨论由我来负责创建这个game是线上的活动,所以201117年啊。
6月份我就开始处置,花了将近一个多礼拜,就网站建设,所以把它运营起来了,那么我把这个模式基本上运行这个差不多好了以后呢,啊,稍微等一下啊,喂啊,那么这个声音怎么样,喂好,那么到2019年1月。
那么这个论这个在线方式呢就交给了那个我们的浙大的周晓薇老师,到现在,那么到现在为止将近3年的时间,3年多了3年半,那么呃已经举办过158期,大家可以看到这这个基数158 七这个那个在线报告啊。
另外还有一些今年开始又有一些专题啊,今年开始呢我们又创新的这个在去年的时候就开始规划了,由杨林奇老师第一个来讲101的这个计算机入门,后面我们又请了胡彦明同学来讲这个201这个高级课程啊。
那么呃之后的话就下半年就我来讲几何,明年的话叶利钦老师还会出来讲202的高级课程实时渲染,还有那个啊黄旭熙老师来讲这个三维的一些视觉与重建,理解方面的东西,当然像现在3年来已经这个社区发展规模蛮大的。
有11个群啊,有近5400多人啊,大家如果各位网友还没加入的话,可以扫右边这个二维码啊,这个二维码就可以进行加入啊,按照那个网页的方式,网页大概应该大家都熟悉啊。
我这我也给大家介绍一下这个网页,这个这个网站呢是啊games啊。
gcn。y g像这里面有好多内容,像这个是往期的报告和视频,你们想回顾以前100多期啊,这这个视频ppt都可以在这里访问到,那么这里是在线课程。
就101201和102的很多很多一些ppt视频也可以在这里访问到,那么这里呢是每年我们会有一个线下会议,今年由于疫情啊啊新冠疫情呢我们这个推迟到明年了,所以这个你能访问到1918年的啊,甚至以前的啊。
这里呢更多资源里面呢有很多我们一些学术会议的一些资源啊,你点进去就可以看到我们在8月份在吉林啊举办的cad。
这个会议的一些视频下载啊。
我就不打开,然后他有这个走音高校,我们现在办了三期了啊,他们那些视频我们都保留起来啊,给大家共享,也是希望让这些资源更多地受益于啊授予啊,这个我们的一些网友。
还有我们啊我本人在科大办的属于学校啊这个课程等等。
所以这里面实际上是我们积累了很多很多这样的资料,可以是适合于不同的方向,不同的领域不同的啊,呃这个一些一些同学让他们能够在足不出户就能够享受到这些高级啊,高端的这样一些讲座和一些课程啊。
这3年来我们得到了很多老师,我有病验啊,主要是我们专委的一些领导啊,就是日常的这些报告的安排,还有这些组织活动啊,这个也是啊,感谢这些老师是这个无视的付出,特别感谢现在现在的这个啊。
我们的在线上运营负责人,浙大的朱小伟老师啊,这个把这个模式搞得越来越规范,越来越好,越来越顺畅,还有背后的默默无闻的这个技术秘书,陈林浩同学,还有董俊廷同学,还有其他几位保护不列举。
当然这个是当时我前面1年半的时候的一些啊基础团队和秘书啊,我这里一并感谢好,那么啊这3年来还是呃虽然付出很多很多时间来那个,但是也有很多啊,这个收获也从里面学到了好多新的东西,也是特别感谢这个平台。
我也是受益人之一好那么我们怎么今天开头的这个102课程呢,啊大家如果想访问这个更多信息,可以到我的主页上啊,我的主页上这个有个提取。
然后下面有一个啊啊这个games 20102的这个点进去就能访问到主页,这个注册这个smart chair这个作业系统呢有100多哦,看到很多很多的啊,这个网友的说明是说没有任何的数学这个几何基础。
希望啊讲一些这个非常基础的东西,那么当然有些我看了一下,有些有这个建模的经验的网友啊,所以呢啊这里这个这个这个听众啊,可能从啊没有数学背景到有一些几何经验啊。
还有一些可能是啊我们非图形专业的这样一些同学,所以我尽可能讲的通俗易懂吧,啊如果呃大家对这个课程这个有一些反馈,或者甚至给我写邮件来给我反馈,那么这个课程呢我定义成基础,因为我想先讲基础。
后面明年我可能会考虑,或者是我们同事会考虑开一些三维几何处理的高级课程啊,事实上我们在科大每年都会开这个数字几何处理这个啊,那个啊我们团队的付晓斌老师今年开的这个课呢也录屏了,也在b站上可以找到啊。
大家也可以看,但是这个课呢我想定位在基础知识啊,所以啊大家放心不会太难啊,我把很难的东西呢放在啊以后的高级课程里面去啊,那么这个课时间就是这个时段啊,那么这可能为了让大家这个还是要从从做中学。
我我还是布置了5~6个编程作业啊,这个编程作业呢也不是太难啊,所以大家也不用害怕,那个呃希望大家如果有时间啊,跟着我们的课一起来做啊,这个这个是提交系统啊,在里面,还有这个我们也建了两个群,一个bbs。
bbs是挂在games网站,大家有一些技术的专题的问题可以在bbs上问,可能会问你很多会覆盖你的问题啊,如果你bbs上问的话呢,可能会比较好的组织在那边,几位助教啊,都会在上面会回答大家的问题啊。
那么这个助教都是我的研究生啊,那个他们啊在这方面都很有经验啊,你们也可以跟他们建立一些联系,有问题也可以直接问他们啊,那么还有一个跟前面两门课以后,我们在课程结束后也会颁发这个结业证书啊。
那这个当然也是颁给那些孩子付出了啊,特别是完成了很好的作业的这个同学,那我们开始讲这个课程啊,那么我们这个课呢呃怎么和建模离不开,图形学本来就是图形学的一个非常大的一个内容啊。
这个是我呃呃7年前我那时候记得是暑假啊,刚好有点空啊,那个就抽了大概一天多时间吧,写了一个介绍什么是图形学的一个帖子啊,因为那时候我我也在刚去科大一年左右吧,啊,就经常有同学来找我。
我跟他们解释了很多遍,所以呢那时候我就花了一天多一点时间把这个帖子给写完了,然后按照我的理解把图形学分成了三块内容啊,建模啊啊仿真与渲染啊,这个上单问题,当然还有人机交互,还有其他的一些啊。
这个扩展应用应用的一些领域啊。
大家有兴趣可以看一下,实际上是这三个方面的建模,动画渲染啊,161是讲呃呃图形学基本中心渲染偏多一点,201呢是动画活跃名字啊,那么所以我今天把最后这个建模这一块呃给大家讲,这也是出于这个目的啊。
基本上今年的这个三个课cover了这个图形学的三大块内容。
那么我们来看一下啊,就是图片是什么,照片是什么啊,实际上照片呢就是我们的三维世界这个投影到我们的这个,比如说我们眼睛就是我们的视网膜啊,这个上面的成像啊,当然我们大脑会把暴力的这个成像解释为正立啊。
这是我们大脑的这个解释好好,那么对于我们这个机械的这个这个相机呢,算是这个一个啊,是基于世界中的物体成的是倒像对吧,然后这上面呢也是有跟我们感官细胞一样的,它有一些感官元件,这原件呢能接受。
通过发到这一点的这个光的汇聚,就形成了颜色,就呈现相应颜色,所以就把自然界的这个场景,通过透镜就呈现在了这个相机的胶片上面或者底片上面。
而这个由于这个感光元件是一个个啊有物理大小的一个元件,所以无论它是有多小,它总是占有空间体积,所以我们的存储图像都是离散方式。
所以你看起来这张图片是连续的一个区域,去一区域,但事实上你可以看到它实际上是有好多好多这样一个小的感光元件,所组成的这样一些像素所组成,每个像素呢是有红绿蓝三个分量啊,这个就是我们的颜色的一个。
所以图像本质上啊就或者叫数字图像,本质上在我们所有计算机存储的时候,基本上都是这样一个离散存储,这个叫图像,也叫荒山显示图像啊,我们显示器我们的手机屏幕都是这种光栅化的。
所以说啊只不过呢就是这个这个啊像素呢小到很小的时候,我们人眼分辨不出来,我们就分辨不出它是离散的还是连续空间啊,所以会有这个x乘y这个n行m列呢就叫做它的分辨率,分辨率啊。
这个就是指这个图像的像素的多少,举例来讲,如果是1000x1000的这样一个图像,它的像素是100万啊,这百万像素级啊,所以图像的表达啊非常简单,就是这样线性的,虽然它是取证,取证也是线性。
因为你把矩阵可以拉扯一列啊,那么呃那么我们同事说那个是叫图像,那么我们还有两个是叫图形,图形的话呢,给大家呃稍微我自己理解的图像和图形的区别,图形的实际使徒性就是有具有数学表达的几何对象。
一个点或者一条线,一个线段或者一个多边形,一条曲线都叫图形,还有一个区域去有这个填充的啊等等,那么如果你这个里面的填充颜色可以设置很好的话,你也可以做出像右下角这个老虎这样的一个非常啊。
这个真实的或者漂亮的这样一个矢量图啊,所以这个叫图形,所以图像呢是由像素所表达的离散的一些点图形呢,什么是有一些点所表达的一些几何元素啊,这是两个不一样的,那么图形有的时候也叫做矢量啊。
在有些领域也叫矢量啊,比如说图像的矢量化,就是把它变成一片一片这样的区域,每个区域呢是由这个数学表达的边界所表达好,那么我们处理的图形假设是啊这个平面上的线多边形,三角形等等。
那么它呢要把它显示在这个电脑上面,就一定要把它转化成这个像素所表达的,那么这一部就叫光栅化啊,你们相信你们在101的时候都学过这个光栅化啊,比如说一条直线怎么样用这个像素去填充来表达一个直线啊。
这个当然这个像素很小的时候,你就看不出它里面有这种很明显的锯齿啊,这个句子叫这个走样啊,这个严严老师也讲过这个走样的方式的原理以及怎么消除啊,我就不展开好,还有三角形,你给它个点里面哪些哪些点是填充。
哪些点不填充,这个也是一个这个光栅化的啊,很重要的一个,还有一般的多边形,事实上在我们电脑中存储的这个文字,字母等等,你可以看到多次矢量,所以呢这些文字放大以后呢都非常清晰,为什么呢,你把它放大以后。
我们重新要求填充里面像素,所以它里面的像素不是存储起来的,是什么,是实时算出来的,我们存储的只是这些多边形的顶点啊,这个所以你放大这顶点重新算一下,里面的填充区域又重新变化了,我们又重新少量转化。
帮他换一下,所以你无论怎么放大,它里面的这个边界看起来都是非常非常光滑的啊,好这就是矢量啊,这个图形与三格图像的区别,这张图像因为只是存了这些像素,所以它的信息只有这么离散的这个n乘m的这样一个像素。
所以它放大后,你如果不采用一些特殊的这个差值啊,外差或者上采样技术,这个图像看起来很模糊,那么暂时矢量就不一样质量,因为它存的是一些点线的坐标,所以呢它放大后呢点线的坐标重新计算以后。
我里面的填充区域重新被光栅化,重新计算了,所以它始终是能保持非常高级分辨率的一些这个啊这个这个效果,所以矢量图形呢也有的时候把它叫做这个呃这个无穷分辨率的图像啊,这这就是一种叫法。
但是我我更偏向于它叫图形啊,图像是离散的,图形是连续的,是有数学表达的好好,那么这个我们拍实际照照片当然是可以把这个这些影像存储起来,但是呢如果我们人类要去创造这样一些影像怎么办呢。
好了我们人类从很早以前就知道我们用不同的彩笔去绘画啊,画出我们这种想象的这个世界啊,比如啊这个小孩子画这种卡通型的,还有这种啊大师画的这种非常表意性质啊。
当然还有一种啊艺术家能画出跟照片一样的这种写实型的照片,当然这个这种艺术家的这个手法非常啊,他对这个自然界这个光照啊,这个这个理解非常好,你可以看到下面三幅图片,这个一个水果,一个一个动物哈,豹子。
还有一个一个一个人能像你,你如果不说是个是个画出来的啊,那么大家都会认为他的照片,当然这种呃这种才华是要非常很多年呃,这个这训练才行,比如说我这个人脸这里啊是是光源,在这里是阴影啊。
怎么这个头发在这里面怎么交互等等,它主要是自己靠脑袋去想象的啊,它是它甚至没有一个参照物,就可以把这个这么真实的东西画出来,但这东西肯定不是一个常规的做法是吧,比如说我要画一组动画呢。
这样画的话根本不可行,所以我们能不能通过计算的方法来创造出这种图片机的东西,这也是很多年前大家在追求的,那么如果你要去做这个事情,你就要去理解这个图像成像的原理是吧。
好这里面这是一个镜头成像的这个啊主要元素啊,这是一个成像平面,那么这是一个四世界物体,好,如果你这个没有光源,你什么都诚意成不了,因为有一片黑暗,那么如果你加了个光源在在这。
那么呢这个物体上的这一点就通过透镜达到这一点,就可以把它光源呈现起来,所以呢一个物体的颜色它能不能被看到,能不能被被感光元件感受到,一定要光源的存在,光源与它发生作用。
它的材质反射出来的这个这个光线汇聚到这一点,才能形成这一点的像素颜色,这也是我们图形学做渲染的一个基本的一个啊物理的原理啊,实际上是啊大家很多同学学过101就清楚,实际渲染就是光的计算科学啊。
比如左边这个就是一个局部光源,我一个光源照到这里,我眼睛在这,那么这个这些反射出来的光光线就跟这个夹角相关是吧,那么夹角越大,就是看着这光就越弱,因为它是按照一定的分布会会散开啊。
就是那个cos这样一个set up啊,这个角度好,那么对于辅更加真实一点的话,这个光源不仅在这一点反射到人眼,而且还有多次弹射,还有折射,甚至其他的一些光学现象,这就是我们的一个光光照方程啊。
这是渲染的一个核心,就在解题方程左边,这个呢其实这个方程的一个一个简化版本啊,因为它里面假设的b r d f是一个长值啊,各个方向这个是一样啊,所以这个左边是右边的一个简化,但是真正的你要绘得很好的话。
像下面这张图啊,一个实际场景,我一个这样模型就能够通过光源来这个计算,渲染计算就能呈现出这么逼真的效果好,那么这个就是里面用大量的这样一些计算好,但是你要做这个事情呢,少不了什么,少不了你的原材料。
一要有这个场景模型是吧,这就是我们办校几几何,这也是我们这个课要重点讲的,其次你的光源怎么设置,你怎么打这个光能够让我看起来比较和谐啊,还有什么这个上面这些模型上的一些啊,纹理是怎么样。
特别是这个材质bdf,你这个因为因为这个光源与这个模型发生作用以后,反射出来的光源来说,这个这个光的强度都跟这个材质相关,所以呢呃这个材质的设置非常非常重要,如果你材质设置不好,你再怎么样的算法。
你绘制出来都不好看啊,就是因为就像艺术家给他们涂色一样的,木头的材质跟沙发这个布的材质就不一样是吧,所以你这个事实上是在在很多领域,特别是游戏啊,这个这个场景的创建啊,多次有一批啊叫做美美工啊。
也叫美术啊,还有既美啊,技术美术一批人在里面做创建,那么场景这些素材啊,几何好,纹理漂亮,还有才才子说得对,那么你才能形成一个真实场景,所以呢你们做渲染,大家都关注在怎么写这个方程,事实上还有很多部分。
你这些东西要素没有是好,你怎么画都画不好啊,当然这里面这里面这个难度还是非常大的啊,我后面会再展开好,可以看到现在利用假设我们材质设好了,这种透明的都设好了,那么再通过强大的算力。
就可以绘制出这么逼真的一些这个啊这个图像啊,这个左上角是那个啊狮子王啊,这个呃一个渲染出来的,那么左下跟右边这个是啊阿丽塔这个一个电影啊,在里面这个用了大量的这个几何去表达,还有材质表达。
这个物体绘制出来非常逼真,那么一个物体,我们世界物体还有动态物体啊,特别是流流体啊,这种软体是吧,那么呢怎么去去呃那个表现这个运动物体呢,上次就是这个运运动的科学,所以里面是运算的计算是吧。
那么说到底这里面就是在解各种各样的方程,再解什么解偏微分方程啊,刚才渲染的是在解积分方程,那么仿真是在解p v方程,所以pv方程的数值解法就很重要是吧。
那么左上角这个这个在胡彦斌那个201课程也讲了是吧,就是解这样一个n i方程啊,这个这个叫net net stock,就是这个n方程,那么它有不同的解法,你可以把这个啊这个从历史的观点。
从皇冠店你解法是不一样的,当然也可以结合就是最近流行的mp m方法啊,当然对于这种楼型,这个刷窗帘布料可以用这种弹簧自检系统去解啊,当然还有有限元等等啊,也可以去做做的啊。
这个给给给不同的物体去做这种仿真运动计算,所以呢仿真就是在做运动计算,你当然还有钢铁运动啊,就是那个牛顿那个力第二方程啊,还有这个一些其他的一些量的一些变化啊,这个我不展开啊,所以你要去做仿真。
就是在解不同各种各样的不同的运用和力学方程,流体方程以及这种波动方程等等,好那么可以看到在电影里面,像这个左边是冰雪奇缘,这个血的一些变化,还有这个海洋奇缘这个水的变化都做的越来越逼真啊。
这这次通过一些非常强大的算力啊,能够生成一部这样非常大的一个电影啊,我通过一些物理仿真,再通过渲染就可以得得出这么多啊,生成这么多三维的虚拟的电影啊,那那那那我们国内在这一块也最近几年发展起来啊。
左右上角那个就是去年的大片啊,流浪地球,这个叫白蛇缘起啊,这是哪吒魔童降世啊,这个大家应该都看到过是吧,里面都是纯三维的一些东西好,每个人物,每个故事都是不一样的。
你可以按照你的你的想象去创造里面的这个世界,实际上是在里面就是那个导演啊,就是创造了一个真实的一个平行世界。
那么这个电影大家如果看过应该都非常熟啊,就一个一个任何一个人戴上这个头盔啊,然后启动那个程序,他就能马上就到了另外一个世界,当然这里面它是一个畅想啊。
他身上还要绑好很多触觉传感器,还有运动传感器等等,那么你进去以后呢,看到的世界是另外一个,并且你里面的感觉触觉啊。
当然你这个规律跟球一样,你就没有无感对吧,如果你跟地球不一样,是月球的这样一个吸引力,那么你可能就会觉得比较轻好,但这是另外一个事情好,那么进去以后的话,那个世界就有一套规则啊,那个世界叫绿洲啊。
那个那个绿洲后面有个boss定义了这个世界的一些运营方式。
你就可以在里面跟那其他的虚拟人啊,但每个虚拟人都对应一个真实人进行社交活动啊,可以接触可以啊,谈话可以这个啊可以赛车,你可以看到他进去以后。
然后就可以在在里面进行啊,赛车啊,里面这个赛车里面的这个车装在这里面已经开,它也有真实的力反馈,有速度有力的这个作用。
你在里面这个车跟在我们正式界开始一样的的感觉啊,就是所以纯粹是在另外一个时间,当然你可以在大街上跟一批人这个这个汇聚啊。
这是最后一批个片段,把那个这个这个这个啊打打那个坏人的情况啊,那么我们可以看,所以这个电影呢呃如果大家没看过,值得去看一看啊,这个展示了我们这个vr就是虚拟现实。
未来如果哪一天各个支撑技术都能够到位啊。
触觉啊,力学啊,这些到位。
那么这个我们每个人都有创造这个虚拟世界好,那么我刚才讲完了那个呃这个世界我们可以利用从一些技术去创作,但是一个问题大家有没有想过数据从哪来算了,我刚才讲的数据,从右边这张图里面看到数据。
你造一个这样的这个用这个这个图像的这样一个啊数据,你要去建模,你要去把它做uv展开啊,uv展开以后我们会讲啊叫参数化啊,你要去给它生成法线贴图啊,这个偏移天图,还有这个啊这个一些这个材质贴图等等。
所以你要去做那么多东西,你才有可能创作出这么逼真的一个渲染效果,那么这个效这个效果,你们如果是只只只只只是做那个渲染或者是仿真的时候,你们可能觉得数据是已知的啊,不用你去撞,创造已经有,当然没问题。
但是这个数据来源是非常非常困难的,201可以靠哎,我们用美术,你靠美术去堆吧,靠美术去画,他们去调这个美术就会疯掉对吧,因为这种虽然这个美术这个能够帮你做的这些事情。
所以我们这个课目的就是来讲这些数据我们怎么来构建,怎么来自己有这个能力,无论是通过工具也好,还是通过程序也好。
来来做这个事情好,那我们来看这张图,这张图呢左边有很多那个啊,就是这个有很多不同的模型啊,左上角那个啊这个模型大家一看小s就就能感觉到啊一些方块啊,一些求啊柱啊啊,这个这个追啊等等。
所以这些是比较简单的几何,大家一看马上就能想出它的数学表达,但是如果看右下角啊,左下角这个是在工业界需要造一辆汽车,造飞机,它的曲面是要非常非常光滑,非常非常光滑,那么这个你光用一些点是表达不了的。
那么这就需要有连续的这个数学表达,那么这个就是后面我们会讲一些样品啊,还有诶就是在一些动画里面,我们可能不需要这么光滑,但是我里面有很多细节,我可以通过一个简单的通过一个一些规则去细分。
然后再加上一些雕刻去建模,这里面就是叫细分以及雕刻这样一些像gba这样一些软件的一些应用,当然如果你要做的更加逼真,你还有这种translucent啊,这个叫叫叫半半透明的材质,还有这个毛发啊。
还有这种啊这种啊像毛一样的,还有这个啊这个金属表面的一些脏啊,这个这个这个印章一样的东西啊,如果你要去刻画这样一些东西的话,你的建模就更更加要精准了啊,就是材质怎么获取,魔法怎么表达。
还有这些这样一些这种秀啊,这个这个铁锈怎么表达等等,当然这里面涉及的建模手段以及这个表达方式也有很多,所以呢啊这里面现在到现在为止,你说渲染可以很真实了,这个这个这个仿真也可以拿这个骗我眼镜了。
但是建模我们把它叫做几何内容的生成,仍然是图形学的一个瓶颈之一啊,我们这个课呢啊最左边的这个几个建模手段,我会在下面的十几周,我会给大家做一些这个介绍啊,希望大家能够有所了解,右边这些高级建模呢。
可能未来有机会啊,我们再再来详细讲好吧,那么所以我们左边的那个课好,那么现在我们就呃讲开始这个讲我们的,我想今天的第一个内容就是函数拟合,我们先讲这种连续精准建模好吧。
那么可能很多呃在游戏界或者是一些这个工业界的朋友,可能更多的接触是离散建模,那么我想这个先把建模这一块,大家先有个概念,有个基础,后面的讲一散就容易啊。
更容易接触啊,那么呢呃我也看到很多同学在注册的时候留言,能不能这个数学方面的考虑到他们的基础,所以呢我尽量的会把数学概念讲得清楚,然后一点点数学开始讲啊,这个一点都不讲的,这个是没法去去表达一些啊。
这个后面的一些一些一些概念,数学正面大家千万不要怕啊,这个这个不是说我们科班出身的同学,数学这个就就切成好,不是这样,数学呢实际上是它是一种语言,就是说我要表达一个量。
我就要用x y z x b c是吧,它就是一个符号,所以呢这符号表达一个规律,这就是一个符号,数学数学表达,还有智能方程,还有这个这个啊其他的更复杂的这样一些这个方程,所以数学呢啊我今天呢就不能展开。
因为展开的话呢,我也把数学历史讲一讲,实际上是数学是来源,生活就会从古代的这个结成技术到丈量土地,就开始有了这样一些呃这个呃树和新的概念的话呢。
就后面og里则又把它啊把这个这个这个一些几何的东西抽象出来,形成了五条公理,几何的这个这个这个理论框架,所以说他一些聪明的人善于把一些观察的一些各个规律,把它变成一些公理。
然后用这个公理的在无限的去推啊啊,这个是数学的这样一个发展过程,那么数学实际上真的是非常有用啊,特别是做这个科研来讲,你没有这个数学的好的思维,这个做做就做不深啊,所以我在这个课呢。
也希望给大家来建立一些这个数学思维和数学建模能力,当然这可能不能像我在科大跟我们的本科生上课,那样的一个啊这个难度我会尽量的把它讲的通俗啊,大家尽量的啊这个跟一下好,这个数学产生。
我刚才也基本上提了一下,就是来源于实际目的,就是减少基数和土地丈量,后面呢就有些出名的人呢就把它变成一个逻辑游戏了啊,我刚才讲的平面结合就是什么从里面抽出了五条到七条公里啊。
就欧气里的这个家伙就把它写成了几何,原本就从50km出发,大家要认同的好,只要这五条公里或几条公理,那么你就可以无限的演绎啊,繁衍啊推理去产生各种各样的这个性质啊,如果公理如果有一条是不对的。
或者是把它变一下,变成了另外一个这个这个学科,比如说平面几何啊,从中间的两条平行线互相交变成相交为一点,那就变成了顺应集合等等,所以说他就把它变成一个这么纯粹的一个理论的一个学科啊,你就是纯纯纯数学。
就是它呢嗯可能不考虑它的应用,我只把它考虑一个这样一个逻辑体系,你也可以把它看成是一个逻辑上的游戏啊,这是属于纯数学的这样一个范畴,像我本人虽然数学出身上,我也不是纯数学这样一个啊研究工作者。
我我更希望把数学用到我们的工程工程问题是吧,所以纯数学很多一些听地理啊,新命题啊,猜想啊,各种各样的非常深刻的,但是呢啊这个不一定有实际的用处啊,当然可能若干年后会发生用处啊。
这是纯数学的一些就是逻辑上的一些这个这个游戏规则好,要训练要把实际问题啊转换成一个数学模型啊,这个这个模型是什么呢,所有的学有可能是诶用一些符号表达一些问题的一些变量,然后呢是用优化模型呢。
还是用方程模型,是用其他的统计模型等等,模型有了以后你才知道对这个问题进行一些刻画,后面才是真正就把那模型去求解,有可能是优化,有可能是解解这个方方程,有可能是解解一个这个这个概率问题或者统计问题啊。
最后代码才是实现你这个算法的一个东西啊,代实际上是在这个整个研究里面是最不重要的,但是没有他你你有想法,你验无法验证也没用,所以代码是必须的,但是更重要的是什么,是这个这个过程啊。
从问题到模型怎么去去进行建模啊,那么后面可能会碰到一些课程中讲的一些东西,我会引导大家来来进行这样一方面的一些啊,那么数学还有一个东西呢,就要要要善于抽象啊。
就是就是这个本身数学符号就是从事件中抽象出来的,比如说我们在幼儿园啊,我们做加法,你不能太抽象,我们说老师一定是问你两个苹果加三个苹果,直接一个苹果压啊,五个苹果是吧,就苹果很具体。
小学呢苹果可以扔掉了啊,233。5到中学呢,那2x加3x等于5x x可以是苹果,也可以是人,也可以是是一个虚拟的东西,甚至是一个是吧,我有函数的这个性质了,那么怎么就是一个这个这个微分方程了。
所以东西越来越越越来越抽象,越来越高深啊,好那么我们那个要去开始讲那个你和我想前面一些铺垫,我给大家回忆一下,在数学科班的同都会学到这些,可能非数学专业的可能不一定学,但这些概念都是些基本的啊。
大家不用不用不用担心好,首先是集合,就是一些具有同样性质的对象啊,比如说我有我有一些数字被构成集合a可以可以当然可以啊,那么呃这个这个集合呢是什么,是可能可能是有无穷多个,比如说自然数集,有理数据等等。
它也是结合我们在讨论一些东西的时候呢,我们都会限制在一些特定的集合上来讨论,比如说我们讨讨论这个这个人的性质,我们可能会局限在人这个这个群体来讨论啊,我们讨论一个这个这个向量性质。
可能讨论在一个n维向量,不会把不同维的向量放在一块是吧,所以集合是具有同样性质的一些对象的结合啊,这个这一堆好,那么结合这里就有啊,可触及不可阻击啊,这是要无穷级,如果有限级的话。
就是个数无无限级的话就是可数跟不可数,大家可能啊可数的话就意思是它能跟自然数一一对应啊,上次比较这个面积的大小呢,你只要能跟n对应起来啊,一一对应,他们就是个数是一样的啊。
虽然可能比如说整数跟自然数就是一样大小都是属于可数集,虽然好像自然数集是整数集的一个子集一样的是吧,因为什么他们两个就可以建立一一对应,我把自然数一对应整除一,自然数二对于整个的-1啊。
就就就像间隔就可以,我建议一一对应,因为什么无穷之后我们可以不用管它啊,那么还有一种不可数集,就是次数啊等等好还有这个还有集合的这个一些运算啊,这个并按交叉啊,大家一看,这稍稍微看一下就行了。
好那么集合之间呢,如果他们没有一些运算,那么这个集合呢就比较难去构建一些关系,我这个我这个a元素跟b元素之间到底是什么什么什么什么关系,不知道,所以呢我们要引入一些运元素之间的运算,就是说两个集合相加。
还是这个集合里面,如果这个集合放大多少倍,还是在这个集合里面,那么这个集合具有非常好的性质,叫线性结构啊,要满足于这些病率啊,要交换率啊,a加b等于加a结合率等等。
这个呢在里面大一的微积分就学过这个线性空间是啊,如果具有这个性质的这样一个一个一个集合呢,它具有非常好的结构,什么意思呢,我里面的每个元素啊,就不要一个个去列举了,我我的元素呢都是能写成这种形式。
就这样的vi呢就是里面的若干个一个g啊,这个这个这个叫叫叫basis,那么这个basis的个数线性无关向量叫做维数,那这样的话呢我这个空间啊就实际上是很简单,就它所有元素都表达成一些vi的一些组合。
这个aa就是实数,就是它的系数,每个元素啊就对应了一个这样的n维向量,只要n个实数就表达了中间的一个啊,这个元素如果你看这个位数又又可以啊,同同构于这个n是n维的这个欧式空间。
所以这空间这样一个性质就让它结构非常简单,我们就可以很容易去去描述充多的这一类东西啊,最终那些什么有一个非常好的细菌结构啊,那么所以我们看到的一维实数啊,二维平面,三维空间,这叫欧式空间,还有多单词。
这个这个空间都是这样的结构,因为有了这个结构以后呢,我们讨论这么无穷多的东西呢,就把它变成一个有限的,就n个n个实数的这样一个性质了,这是一个特别啊这个重要的一个概念啊。
所以我为什么我们要学线性线性空间,学线性代数就是这个好影射,隐身的话就实际上是这个啊,就是有两个集合a和b这个a和b如果a中有一个任何一个元素,在b中都有一个像跟它对应,那么这个就叫影影射。
那么这个f呢就叫做影射规律啊,这个下面这个呢a对应两个这个b b1 b2 ,那么这个就不就不是影射啊,就只能a对一个b,那么能不能多个a对一个b呢。
象象征这个多一个可以啊啊那么啊还有有没有这个有没有影射到呢,也可以啊,那么如果每个影射是都不一样,这个叫单色啊,如果多一满了就满次,如果是一对应的话,叫双色,也叫弯弯啊,一对一映射啊,这个好。
这里有几个啊,一个影射的地域,一个叫值域,a就是定义域,b就是值域啊,就是我这是df这样一个定义是在这里上面可以作用,b就是它它的值,那么a叫项比较原项,那么当两个集合a和b都是实数的时候。
a和b都是实数,这时候呢就是我们初中就接触过的叫函数啊,所以x在这y在这是吧,然后呢这个y等于fx就是表达了一个实数印到了另外一个实数,这就是我们一个啊这个函数的概念啊,也叫变换啊。
这个反正影射函数变换有的时候在不同的上下文都可以就可以混着用,但是函数特定我们在这里啊,特定就是指实数r1 f就是实数到实数的一个变换啊,这个叫函数,那么这个函数怎么可视化呢,这是挺麻烦的事情。
为什么你x是啊是个实数啊,是个十轴,i也是个实轴,这里点运到这里来,这里点进到这里来是吧,那么它怎么可视化呢,就不好可视化,因为y x从这里走到这的时候,他可能在这里一一回来,来来回回就爆口化了。
人们就定义这样,对于这样一元函数,我把它分为生成二维一个x把y放到这里来看好,这样就可以吗,就这里一点x加上y呢,fx呢就放这个y就变成这样的一些,但是我们初中时候就会了啊,实上这个就是图像。
而不是函数的可视化,也叫做函数的图像,这个非常容易理解啊,这个大家先记住啊,我我们对函数的可视化,什么是是人为的把它升级为了两维,相当于是这里一个点就是空平面上的一个点,给个x有个fx是吧。
然后把这个x和fx啊,这个点放这里啊,那么x走走完这个定义以后,这个它所形成的这个项就变成一个曲线,这叫函数的图像,我们对于高维的函数,我们就不这样做了,我们啊这个下周会讲好。
那么幂函数你可能是要有哪些函数,我们在初中就学会很乱的函数啊,等幂函数啊,三角函数等等是吧,这个大家都初中就学过他们的很多性质,那么我们的函数你需要去研究函数的话,也需要有一个特定的领域啊。
这个范围这个就是函数集合啊,好行情和也一样,就是如果你现在在比如说有一些g函数啊,这个f f i x,那么只要只要让它当成一个线性空间,那么就能够什么就表达我有这样一个线性组合的函数的一些类啊。
也叫函数类啊,不会叫函数组啊,在不同的学科里面,他们的叫法稍微有点区别,但是什么意思,就是一个函数的一个集合,我要去研究问题,我一定得先定义我在哪个集合里面去找我要的东西,如果你不给我定义。
说你去找个函数在世界上千千万啊,这个这个挣那么多啊,这个无穷多我怎么去找对吧,所以我希望在某一类里面去找话呢,怎么就把一个函数啊,变才去找跟刚才一样的去找n个技术的这个一个事情了。
就是所求函数求函数就是什么,就是在这样一个线性空间里面,还是线空间里面去找这个n个系数代替这个n系数就可以了啊,比如说你现在在密集就多样子空间,那么你去找这个n个这个信息组合系数,这个三角函数空间。
你去找这个cos sin的这个组合技术就可以了啊,所以我们研究问题一定得先限制我们在哪去研究,最好是这个空间有结构,这样的话呢我就把用了一个我要的东西变成了一个量,这个量呢虽然是n维的一个一个一个向量。
但是它毕竟是一个n个实数可以表达的,所以这当然你选函数空间也也不是说随便选啊,因为你随便选的话,这个函数表达能力不够,比如说我只选三次函数,三次多项式,三次项式有一个呃,这个连就只有一个拐点啊。
这个不能产生很多别的类型,你这个函数的这个表达能力就不够,你函数函数的这个这个g函数啊,也要足够的管,要什么,要能靠近我想要的东西啊,比如说我那个函数很复杂,你如果仅仅用三次函数这个啊这个类去毕业。
我肯定毕业不好是吧,所以呢还有一个问题,这个函数空间的时候呢,一定要什么里面存在一个函数能够很好地逼近我,我要的那个要的那个真实的这个这个规律的啊,这个啊实际的函数内函数是什么,我不知道。
但是我希望他要逼近,所以这里就在发函分析里面,就要研究这个函数里面很多一些性质,那么首首先你要去读什么叫这个函数逼近那个函数,所以中间要引出度量好,这里就引起了很多一些函数的内积,立即就硬诱导这个算数。
算数就就可以去诱导这个距离,你你有两个函数距离,你就可以去度量这个函数跟那个函数好不好呀,那个函数是不是我在最好的,毕竟啊等等性质,还有一个完备性,什么叫完美性,就是说我这个函数线性空间啊。
这个n取大一点,我那个函数表达能力就很强,比如说我当n趋向于正无穷的时候,这就是我们这个定理叫万能逼近定理,叫while trust定理,这个在大一数学分析里面就非常有名的一个定理,什么意思啊。
就一个区间上的一个连续函数,无论什么函数,这个函数你要给我啊,你不告诉我也好,还是告诉也好,它都可以用多项式来逼近它,只不过这个这个后面写个级数级数是什么,有可能像素很多啊,但如果像素给定一定的话。
他这个就是那个责任是逼近,这个叫鱼香啊,好同样你可以看到如或是这个周期函数都可以用三角函数去逼近啊,一些一些这个主要信息去逼近啊,所以这个叫所以说你要去选函数的时候呢,你必须要考虑它的完备性。
因为为什么我要保证我要找到我要的函数,好好我们看一下这个这个才一概念,大家不用去太着急啊,叫复范一一看,就是数学概念,我们先不管好,我们看一下这个弗利尔基数,在这个是所有工科同学都学过的。
就是任何一个周期函数都可以写成cos和sin的一个这个组合啊,你可以看到什么,就是这个函数无论是怎么复杂,只要是周期函数可以写成cos一个sin的组合,实际上是上面两个表达是一样的。
就这个框框跟着框框这两个表达式是等等价的,由上面可以推出,由下面可以推出上面来啊,可以看到它也可以看到是有一个函数就可以表达和一个fx,这个fx是一个内这个函数,只要它的周期是周期性的好好。
那么看看那么任何一个函数都可以通过一个函数去表达,但这个函数呢你可以看到里面的变量是t里面什么里面乘那个因子,然后呢还加了个平移上,这个是什么意思呢,t就变成了我把这个抽象一下阿尔法t加上贝塔。
那么那么在意这个这个用阿尔法加贝塔,就sin函数呢就就衍生出了很多这样的一些一些一些函数,这函数呢也可以看到是一个奇函数,什么意思呢,我用一个函数的一些变换,我也可以装成一个空间。
这个空间呢就可以逼近任何一个函数,大家看到啊好那么这个这个变化是什么呢,是阿尔法t加贝塔,如果把贝塔去掉,阿尔法t呢就是把这个函数进行伸缩,连连x方向伸缩,阿尔法是小的话呢,就就就比较宽是吧。
所以你可以看到阿尔法阿尔法大的话呢就就比较窄,就去看阿尔法为二,就是比较直,还有贝塔呢,贝塔是什么,让这个sin x往左右平移,所以这里有一个很奇怪很很有意思的现象,就是说我用一个函数sin x。
我通过它的这个这个函数本身的啊,就是让他密点啊,就是往x方向挤一点,拉一点,以及我左右平移,我也能够很有效地表达一个非常复杂的函数,这个函数可以任意复杂啊,当然这里只是我们局限在周期函数啊。
所以这里面是一个非常有意思的性质啊,这个我这里先卖一个关子啊,这个后面会会会有一个东西跟他非常非常类似好,那么我们通过这样一些简单函数再通过复合是吧。
我我可以就把一个任务把这个函数变成很多个函数的复合啊,我先用f0 ,再用f一在那个啊,这个叫符合,符合意思就是fk里面是什么呢,是fk减一。
然后到到最后f1 f0 x就这样他不断的把这个算作结果给f1 ,把这个算结果给f2 ,最后把这个结果给他f k这就符合函数,所以呢通过复合也可以构造出非常任意复杂的函数啊。
从它的这个这个函数的这个能力啊,表达能力就就就就就更强了啊,但是他要做很多个基础的复合好,那么下面一个问题就是怎么去求满足我要求的这个函数啊,上次呢在后面的建模过程中呢,我会跟大家讲讲一些这个案例。
很多实际问题啊,都是怎么和建模师找一个函数,只不过这个函数呢是一个pd 1 pd用方程也是在求一个函数,只不过函数是用pd表达,还有什么优化方程又化优化。
就是只是对这个函数的一些性质来进行一些这个这个度量是吧,只不过呢这问题呢是变量不一样,维度不一样好,怎么样找这个函数都有这么三部曲啊,这是我所个人归纳的啊,这个导函数就是这三部曲,大家记住啊,一往哪走。
你是在哪个函数空间找,这就是我刚才讲的空空间,第二找哪个什么叫哪个,就是哪个学校,哪个是最好的啊,哪个是相对于你要的东西,或者说呃你希望它满足什么性质,就是定义这个哪个哪个就是定义它的好坏啊好坏。
那么这个也可以把它叫做loss function损失函数,我这我这个损失少,我这个函数觉得好啊啊,这个呢就是一个函数空间啊,好那么怎么找诶,好我定义好了,哪个叫好,在哪里去找,那么怎么找这个问题呢。
就是什么就是求解或者叫优化啊,当然最好的优化方法也较快越好,那么这是非常好的,好吧好记住啊啊这里我们后面今天的课基本上都是在讲函数啊,就是你要去找这个函数,一到哪找啊,你度量哪个叫好好坏。
你要你要告诉我有个度量,第三怎么就是我要去求解它,混淆优化它啊,模型策略啊,以及后面优化啊,也叫算法是一样的,所以这个呃就深圳网络本上也是在纯最终这三三步,如果呢它是用网络来表达一个函数集合与空间啊。
好啊,那我们来看一下一个这样的问题,逆向工程啊,我们这里呢假设我们这个呃呃我们回到几十年前啊,那一个我们拿到一个船型的这个这个设计图,但是这个设计图纸啊,这个这个这个我们只有图纸,没有方程。
我们只要造船的话,一定要有它的方程,一定要看它函数好,那怎么办呢,唉我们这个当时呢就是在很早年啊中,如果没有很多基础自学技术核心的情况下呢,都是把别人的产品拿来。
当然我们再怎么去反求它的方程或者反求它的函数,那怎么办呢,我我就在上面,你好多多点,我虽然不知道它的方程,但我但我可以瞄他的点,那么这个描描描里面点以后呢,那么我怎么去用函数去把它把它拟合出来。
叫就把用函数去逼近它,那么我认为我的函数就啊这个拟合的这些采样点,因为这个在在制造里面我们是还是需要光滑函数的啊,这个在后期我们可能会直接讲明离散的这个处理。
但是前面我们这里还是假定我们一定要有一个不表达,才能做后面的应用好,那么怎么办,好好那么在在很多很很早年前,这个逆向工程是中国的一个非常大的一个啊,这个这个应用就是说我很多很多一些零零件啊。
是不是高机密零件,我们都是没有它的它的函数方程,但是我们要制造的话,就一定要输到电脑里面去啊,这个去去去那个使用这些方程函数怎么办呢,我们上面去描踩点,去用三维扫描仪炒少了一些离散点啊。
这些第三点呢只是这个录取的一个外表面的一些这个测量点,那么我怎么样去造出它的那个模型呢,我要去这样去求出一个光滑函数啊,就就这个问题,所以这是三个问题啊,那么我们来回答二位问题,好,数据拟合好。
恢复期是这样一个问题,好我给定了这个平面上的若干点啊,x0 x i和xn啊,这么这么一点好,我以及呃这个点你可以看的是我们从一个船型上采来的,或者是从一个机器零件上面采来的好。
那么我们要去找一个函数y等于fx去反映这些规律,规律可能是一个呃现行啊,这个船型的这个这个外外外表面轮廓有可能是个机械零件啊,这就是个拟合问题,所以我们这里先限制在我们的都是一维啊,高维的问题呢。
可能同学们啊要理解到下节课我再我再给大家解释啊,先一尾,因为就是我们现在因为函数是最简单的好好,那么这个红线这个函数我应该去怎么找呢,那么同样你要去找找一个函数,叫你和他这个在大学很多同学应该都学过啊。
这个就叫拟合问题,好,这首先三部曲啊,这个这个礼盒也叫回归啊,这个此时用三部曲一放哪儿找,一是想去用多项式去你和这个线船型呢,还是想想用那个其他的函数或者三角函数去拟合,如果你发现它是有规律的。
可能有周期的,就可能三角函数可能会比较合适,你选定一些基本函数,这个叫g函数,有可能是中原实,有可能是其他函数啊,那么这样的话你一个fx呢就表达成这样一个系数,只要是带领这个系数我去求解出来。
你这个函数就找到了,对吧好,那我们看一下好,下个问题找哪个对吧啊,那个那个函数空间我就定义好了,我我选定了,假设我用同样使我选定了,就在在这一课这个里面去找啊,用这些啊。
幂函数的组合也是就是n字多项式里面找一个去逼近我的数据好,那么第二个就是度量找哪个哪个叫好是吧,好,假设我要求很严格,这些点我都是很精确的,我需要你一定要这个函数经过我这些点啊,这个问题就叫差值啊。
就是我这个函数得经过所有点啊,那么这差值的话就是误差是零嘛,就是因为这个函数啊,这个满足所有这个这个这个点的这个啊这个关系,再带到这个阶函数里面,就就形成了一个a可以a0 到an啊,假设是继承阿尔法。
就变成一个阿尔法等于b这样一个线方程组啊,啊这个线性方程组的实际上就是我们啊以前学过的,大一学过的一个拉格朗日,它的中样式就可以求求求出来啊,如果你这个有n加一个点,用n子多样子去逼近,是有一点啊。
就是我们下面这个插拉格朗日插值多项式,这在在1年级就应该学过了是吧,就是啊差值n加一个点,用次数为n的,不超过n的多项式是存在且唯一的啊,这里是差值是吧,刚好这个自由度是零嘛。
因为未知数个数等于已知数个数,所以一定有n个未知数啊,比如n加一个未知数,n加一个方程就一定是有解的,解也可以表达成拉格朗日的这个行插值函数形式,但这里面有个问题就是什么,有些这个问题是病态的病态。
就是这个这个a啊的矩阵呢,他这条件处过高,求解是非常不稳定的啊,这个就是数值上面就有问问误差,这个a那么什么叫条件数呢,就是a的他们那个呃叫做离职啊,这个这个这个啊比例比较大。
就是就是有一有一个方向特别特别窄,这时候就容易形成变态啊,这个是数解法里面的一些问题,我这里不展开啊,未未来有机会再再跟他解释好,那么还还有另外一个目标找,刚才我讲完了哈。
就是就是这个这个目标意识差值好,有可能呢目标我是说我找哪个呢,我有其他的一个度量什么呢,我不需要插值,要靠近,因为这些点呢我虽然是踩重里面采来的,但是呢有可能我设备的误差,我可能存储的误差。
我可能这个数据呢是不是精确的,我只是大致如如果是大致,那么这时候呢你说我曲线这个函数一定要差值,这个就不是很合理,允许他有一定误差怎么办,那我说我曲线呢我只要靠近它就行了,这这个叫逼近问题。
问题就是说这两个值就不要严格相等,但是呢我希望它的误差呢尽量靠近,误差尽量小,所以呢我希望他们两个差啊,这个一一个某个度量,比如说它的平方和新管加起来是最最小啊,这里变量仍然是那些系数。
就求n加一个系数,使得满满足我这些啊,这个这个误差平方和最小的一个啊,这个函数是在哪里,这叫逼近问题,大家能理解吧,哦当然你说诶我能不能不用平方啊,我用绝对值可不可以啊,答案了就可以了啊。
这也是一种误差,那这个值就度量了这个点到取取线的这样这样这样一个距离是吧啊,当你说我用更好的距离,我有这样一个点到这个曲线的在函数的一个一个垂直距离,垂直距离好不好啊,平方和最小可不可以也可以,没问题。
这些东西都是你家的这个目标,你的度量,你度量这个函数的好坏啊,但是为什么我们不采用刚才我讲的一个绝对值,一个怎么点到曲线距离这样的度量,因为什么,因为怎么找,很难不好优化,就就就不好去求解啊。
因为怎么找你,你你自己设了一个更这个这个坎啊,这个坑在这里对吧,所以呢我们大部分这个优化它的时候呢就喜欢用平方,因为平方有好处,因为你要去求这些最小值。
你要只要对这个目标函数求这个关于这系数未知数的导数,就它的重点啊,那么二次平方一求导就变成线性了,就让这个求解非常快啊,也是为什么我们喜欢用平方来作为这个度量的一个原因,是让后面我们这个啊这个怎么找。
把这个问题不要去设设定那个坑,让让自己为难啊,所以这也是当然你说在某些特定的应用里面,四平方一定要有绝对值,那没法让你只能去硬着头皮去解这个啊,这个这个一模的这样一个问题啊。
那么这个这个平方我们也有时候把它叫做平方模啊,叫一模好,那么前面两个目标,一个是差值,一个一个逼近啊,问题怎怎么找啊,指什么早餐问题,数据模型出来了是吧。
最后一句就就就这个啊那个对每个点它的误差和啊打大达到极小,我怎么去求这个,你要求一个函数的极小值,这是一个关于关我把它计算器啊ga 0 an的一个函数对吧,因为里面变量是系数好,我要去求它的最小值大于。
因为我们当然说学过了,就是求它的驻点,驻点什么呢,什么意思呢,就是这个函数对每个变量都要等于零是吧,等于零啊等等,就只要这个等于零,这个等于零,就是有有n加一个方方程就出来了,好n加一个方程。
n加一个系数啊,重量也可以得到一个线方程组,那么这个呢有个特定名字叫叫法,方程叫罗某与亏损法,方程就是这个呢就是这样一个问题所得来的一个方程,那么这个这个方法呢就叫做最小二乘法。
最小二乘法就是诶我这个最小2x2乘就是二二层,就是这个这个二二盼数误差最小,那就是这个值最小啊,就是这个也是最少好,那那么这里呢就是啊很容易理解,就是我去求它的梯度就能够得到方程啊。
这个是大家经常用的啊,最小二乘法非常非常普遍啊,那这样做也把这个问题解掉了,我毕竟问题我也可以可以找到一个函数了是吧,那么实际上是呃你和也叫回归,只不过是你差值型还是逼近型运用的比较多,为什么呢。
我们数据中总是认为它是有一些概率以上的一些误差,你如果差值的话呢,啊稍微啊这个自由度不够高是吧,毕竟的话函数空间可以可以可以给更多好,这里的话呢就还有一个问题,你这个你你假设我这点很多有一一笔1万个点。
你你如果你用那个啊9999次的数量是一tp拟合就不合适,所以我一般我们不用那么高次系数比较少啊,它的误差都在这里体现了啊,这个呢就没问题是吧,去减少我可能只有十个点,你一定要用一个二次十多项式去拟合。
或,毕竟这时候就会产生很多问题啊,这个问题啊后面马上就会讲了啊,你怎么去选多项式,选几次是是非常非常纠结的,你们有应用背景,你没有这样一个啊,这跟一些先验知识,你去随便试试的话,往往是解不好啊。
这里面就出现很多问题啊,就是你系数选少了,你这个表达能力不够,这就是欠拟合,如果如果点少了70多,我本来就是一个逼近你,你你你每个点都差值啊,这个就像下面这个啊图啊,马上就好了啊。
好那么我们拟合与差值就这样概念好看才他已经提到了过拟合,就说本来是红点,是我采样的,我希望求出一个略曲线给我,有绿函数给我啊,你求出来这个这个函数呢确实误差也很小,是蓝色的,是他非常震荡。
虽然在红色这些点拟合得很好,就是它在在非红色的这些点的预预测极其离谱,什么原因,这是因为你虽然你度量的是那些观察点,你像采样点的误差,但是你这个函数本身的行为不好,为什么这个这个这个函数很强。
因为它次数很高嘛,但是呢这个这个这个不是我想要的,情况经常发生啊,所以大家在用的时候一定要去好好思考你这个应用背景啊,呃这个后面我们会引出神经网络,就是用的时候是上次没注意这些东西往往是过拟合。
以为很好,那么这就为什么说诶我这个呃这个你说这个这个误差很小啊,但是为什么预测很很差啊是吧,所以实际过程中呢大家也会这样搞,我把数据集里面随机抽取10%,我把它拎出来,我不去做拟合,我90%虚拟合。
然后用10%呢去做验证啊,来认证这个函数说得好啊,这样的话又可以降低混凝土的概率啊,但是不完全好好,我这里就稍微这样提一下,这是铅笔盒,铅笔盒,如果这个函数是一个这个二次作为一个线性函数去拟合。
就欠拟合,因为你拟合能力不够,就是这表达能力不够,你的函数空间太小了,你只有线性函数在在这里面啊,那么如果我我这个这个点很很少,但是你用了一个非常复杂的函数给我这个叫叫过拟合啊,这个叫嵌啊。
那么过拟合什么呢,我误差我我用户看起来误差很小,等于零正等于零,没有误差,但是函数呢并不是可靠啊,那什么时候才是一个比较好的函数呢,这东西有办法,那我们人们想了好多这种交叉验证啊。
就跟我刚才讲的哪一部分数据来随机拿不出去来做测试啊,能能够很大概率减少啊,当然也必须这个从理论上来讲是没法避免啊,除非这个数据分布我是预先知道的,那么我是有办法去避免。
但是这些在过程中你根本不知道这个实际数据是什么样的行为,所以它啊这个什么事情都可以发生,如果你这个啊函数空间讲得不好的话,这样在神经网络里面这个一个神经网络就是一个函数空间啊。
那那些因为全函数就定义了所有函数的形式好了,那么这里面就没办法,这个就不不断的需要尝试啊,还有不断的教他验证啊,这个这个呢我把它叫做调仓,就调仓,那当然避免过拟合,就是我实际过程中。
如果你这个这个物体是知道的是这个船,那么还好这采样不会有太大问题,但是呢如果是一个实际问题,你根本不知道这个这个样本在哪里,一直只是观察,那么你可能有部分踩的比较少,有部分踩的比较多啊。
举例啊举例假设我我是个正规律,你你看你不知道你在这里踩的很很很多,这里采了几个好,你想进你和他,你想你会出这个样子,你怎么可能以后好,他以后可能以后出一个这样的规律的曲线出来。
所以在这里的预测就肯定是不准的啊,那么这时候你要么什么要么就是增增加数据,采样多一点啊,还有一个呢什么数据什么去造啊,还有简化模型啊,还有加正则项好,那么今天我这这就不详细展开。
我后面就讲一下这个几个重要的政策项啊,时间有限,那么第一个政策项目呢就叫李回归,就是啊我距离和一个一些点,那么最后得到一个最好零二的拟合以后,我对这些系数的系数就是我刚才那个a0 。
我希望它的膜也很小个什么mini值刚才的误差,这是模中间一个圈,表示这两个的重要性比例什么,我希望它能磨小一点啊,这时候呢就让这个回归问题啊就变得更加稳定一点啊。
就是我因为以前呢以前以后模型只有前面部分对吧啊,我对这个这个系数呢加了加了加了加了个限制啊,让他啊这个能够更加稳定啊,这个也是十几十年前这个啊,就是我具体去选哪些函数,我确实没把握,但呢我知道了我。
我可以我可以知道这个现象里面有好多函数都有这种性啊,这个跟他类似,我们把这个函数全拿来啊,函数有可能是过冗余的,甚至这些函数有可能是什么,可能是线性相关的啊,就是叫过完备啊。
不不像不像刚才讲的函数是线性无关和线性相关,怎么办呢,好那我没我我我采用什么策略呢,我取了好多函数a i x这个函数呢不一定线性无关,而是线性相关,那怎么讲,我对这个a啊。
a0 到a n这个w就是这个临摹什么意思啊,临摹确实这里面的非零元素个数好,我也希望他误差项,这是飞行员的项,希望他最它尽量小尽量小,什么意思呢,希望它里面有尽可能少的非典元素,什么意思。
希望它里面有尽可能多的零,但是这里面某个项等于零的时候,实际上是这个g函数就没有被采用到,所以你虽然给了我很多基函数,我呢只是通过这样一个优化,在里面选了部分的基函数来组合我要的东西,我再讲一遍啊。
这个临摹表达这个向量的非零元素个数,也就是说这个值越小,非的元素越越少,也就是很多是零,就是呃呃零的元素是越多好,那么假设是这一项这一项啊只有三项式非零。
是不是表达了只要用这三个基函数来刻画我的要的东西就可以了啊,那么这样的话呢,中国这样一个临摹啊,这优化问题啊就可以来什么选择,根据不同的数据来选择我要的函数啊,这个上面这个跟下面这个是等价的啊。
就这个是写写成一个约束方式,任何一个贝塔都存在一个谬,他们两个这个解释啊,相啊这个是优化理论,这个中间的我就不展开啊,我就讲思想啊,就是就是那么又想了好多方法啊,对我要的函数加一些限制。
使得啊我能不用在乎那些函数怎么选择,因为刚才讲了选择函数是非常非常痛苦的事情,你选的不好,你感到人不够太少好了,你欠你欠你和你选的多了就过你喝对吧,然后总是应用中发展一个问题。
那么我能不能利用用别的方法,然后对这个啊函数讲的这个会那个啊这个选得更精准一点,好讲到吸收优化啊,实在是这里这叫展开又讲很长时间,我还是提一下吧,可能可能听众你里面也有部分的同学学啊,是这个呃。
呃了解过这个压缩感知,但是感真的在10年前是非常热啊,特别是10年到20年左右吧,啊这个这个研究非常非常火,没没没人去去研究了,但事实上这里面还是有很多很意思的东西,但是什么意思呢。
就是我有一个有一些这个信号,讲的是一个x很很很高维的,但是这信号呢我知道它是稀疏的什么,只有少量的元素是非零,这个信号呢你要你要你要去记录,要很长的存储是吧,那么简单呢我我通过一个方法。
我通过一个采样矩阵采取正在对他进行一个呃,这个现行乘法相当于点击就存储了一个短的一个y,我有一个问题就在于,我已知一个y已知这个采样矩阵y我能不能恢复出x从数据上来讲,不可能。
为什么这x有无穷多格我我怎么怎么怎么可以可以呢是吧,就这个方程它是方程个数少于未知数个数,显然是有无穷多个解是吧,哎但是里面其中有个解是什么呢,其中有个解呢最稀疏也是唯一的吧,这个证明非常强啊。
这就是我们著名的华人数学家陶哲轩,这个插座证明了就是说如果你知道这个这个函数是稀疏,通过这样一个方法,你就能够用很少的存储量去存储这个系数信号,然后呢通过这样一个优化就能够反解出x。
并且可以证明在在于1亿以下能够得到增减啊,什么叫概率一,就是说这里不保证每次写的都是啊,一定是真假,但是很大概率是真减啊,就是你减1000次可能有999次啊,这个都是真结啊,这个概率上面它有有有一些。
因为毕竟中间用里面有一些这个随机的一些量在这里好,我就不展开,像这里就是一个稀疏,你看临摹是不是稀稀疏啊,因为什么一个向量只有少部分是非零吗,啊这这个就叫稀疏优化啊,所以稀优化跟压缩感知是相关联的啊。
这个特别是压缩感知很成功运用在一些这个像c啊,mi这个信号采集啊啊等等,我我不展开,今天我想这个啊把这个这个函数在这个啊拟合啊,把它讲完啊啊啊,我不知道这样讲啊,这个对一些啊没有从来没接触过的同学啊。
有没有这个难度啊,但是我已经进自己可能性把它讲的讲的比较通俗了好了,函数都没问题,但是这种非函数型是吧,像这个曲线它如果你这样去看看它,这应该是他有若若干个y,所以它显然就不是函数。
所以用函数来表达这种曲线是不是吧,那么怎么办啊,那么我们我们下周会来讲这种复杂它的曲线啊,后面还有曲面的一一个一个去怎么表达,怎么怎么怎么怎么去拟合啊,那么今天这个呃呃这里面我再我再提几个思考。
一个是这种非函数型的曲线拟合啊,还有呢,啊为数可以可以往高位走是吧,还有一个复杂度很高的是吧,那么就要考考虑不同形式啊,甚至考虑什么,我我把大问题变小问题,就把一个复杂的函数曲线变变成分段。
这一段又一个函数,或者要求曲线,这一段又有曲线是吧,那这段用曲线去取决你和他对吧啊,这都是都有这种技巧,但是我保证他们的这些光滑性啊,这里有些约束啊,这就是这个在这个建模领域非常重要的一个东西。
条调的话,数学东西味道也很多啊,我我只是讲讲思想,我后面不会不会去讲非常多的这种理论推导好,大家离了思想就明白了,这思想明白以后的话呢,你们去用3d max maya ro这种软件。
你就知道怎么去控制那些啊这个行词点啊,你们只要有这一概念,但是对于数学专业同学呢还是需要深入的去了解一下,因为后面还有好多东西是基于这些性质来进行啊,这个好,同样那个我也希望同学们跟着课啊。
啊今天是第第一次啊,这样这些内容呢从原理看来讲都是你们大一啊,只要你们是本科生啊,这个如果非本科生高中生,那可能还是有点难度的啊,因为很多这种什么啊,嗯你和呀啊函数啊,这个复范呢这一集都没接触过。
那确实有点难度,那么你们也别着急,以后等你等你学了微积分以后再来再来重新学也是来得及的啊,不用担心好,那么对于大学本科的同学啊,有这个基础的这个作业实际上就是你们大一的一个课程作业哈。
那么只是现在通过我的课呢啊,把你们这些啊这个知识啊,从啊这个深埋在啊这个远深处的这个记忆把它先拎出来啊,有有益于后面去讲这个更复杂的一些东西啊,你们最好是这个课呢,还是要要要跟着不断的回忆一下啊。
还有这个作业也做一做,这作业很简单啊,什么是作业,我来我把这个作业的这个这作业会稍后挂在我们的这个网站上面啊,这作业是什么呢,就是啊函数拟合就给了这个n个点,给了这么n个点。
然后你要求一个函数去拟合它拟合的过程,你可以用差值,你也可以用用逼近啊,就是我刚才讲的只要解个方程是吧,那么解现在的话呢你可以不用自己写啊,能用啊,你有个库就用用户,还有i跟库就比较好啊。
就可以得到那个非常好的那个啊求解方法,那么这样,那么这些点呢你你也可以是鼠标交互式的去指定,也可以是啊像那个啊它也是函数去生成,然后再加一些脑洞等等去看一看,你们可以练一练啊。
看看这个礼盒性质啊是怎么样,特别是我希望你们也去看一看,如果这个函数空间缺少了会怎么样去多了,那么你画出来这个是不是呃你想要的这个函数啊,那么你们做完以后的话呢,也通过这个系统去提交好吧。
我先试一下看啊,那个可能进度比较快的同学呢,就啊按照这个时间17号来完成啊,同学那没也没关系啊,别慌啊,那个后面我们这个还是会这个延长啊,因为毕竟这个不一样啊。
不像我在啊那里面教同学这个进度可以可以保存一样,所以这是网络上面有不同的背景,同同学和这个网友啊,所以大家你看啊这个就不用分,太担心好,还有另外一个就是你怎么去画画这个曲线,画成函数。
那么在这里面这个刚才讲光栅化就清楚了,我们任何一个这个曲线在计算机里面都要把它变成像素啊,那变向数的话呢,一般曲线变向数是是是比较麻烦,所以对在平面上我们只对直线段变向数提供基本的函数。
那就是直线的光栅化啊,这个啊我们那个库里面或者文里面都提供了,对于取现在的话呢,那个除非圆啊,椭圆这种特殊的有特殊算法去把它关上化,那么其他的曲线没有一般方,那么怎么办呢,只能在曲线上面。
比如红红的是你所求出的函数,你可以在上面取若干点,你就越密这个点啊,这个就会越多啊,然后依次连成线段,那么你就把这个线段依次把它画出来啊,就是就是靠那个欧米ga或者是g3 g的这些api啊。
我们给的那个框架里面也有基本的这个画直线的,所以我们在计算机里面画曲线,都是要把它离散成啊这个多边形才能去把它画出来啊,为什么你们在讲呃101课程时候都是以三角网格来做做做,做那个渲染,做柜子。
我给的是个连续函数的这个曲面,我也必须把它离散成一个个点,一个三角片画画出来,所以光滑函数是在工程中,这个是表达是非常强,但是绘制时候还是得把它离散出来啊,所以平面上是画线段。
空间中画三角形与三角形投影到这个屏屏幕上就是三角形啊,你们挂上画啊,那么就可以把它画出来,好吧好,那么这些东西呢是呃呃对于呃呃我们数学专业同学应该都是比较基本,能力很简单。
但是对于呃第一次接触这方面知识的同学呢,可能还是我稍微稍微好,请其他同学稍微耐心的跟一下,因为第一次潜艇前几次呢我会讲得稍微慢一点啊,因为后面可能就会比较快了,因为后面很多复杂的东西呢,我也不会讲太多。
因为讲太多的话,这个难度有点高的话呢,会会导致有些同学可能啊根本啊或者是是持续兴趣,那么这个课后面的一些计划,我也稍微稍微简单讲一讲前面的呃连续性这个曲线曲面啊,这是基本为什么。
这是在业界就是呃汽车行业,飞机行业啊,这个工业界用的标,这这这个叫做非均匀有理面条啊,这种建模呢呃在很多软件里都有3d max玛雅啊,特别是有些专业软件reno新牛都是用nbs建模,是非常强大的啊。
所以它可以建出非常光滑的这种曲面,像汽车为什么要光滑,因为不光滑,它它如果是面片,那么跳出来就很不光滑,所以在工业界中都是用这种连续性的样条函数来表达这种局面啊,那么这是前面大概1/3到一半不到。
我会讲这个,但后面留2/3啊啊或者更少一点时间就会讲这个离散的这个曲面,因为离散曲面呢就是它们它不具有方程,它是把方程那个离散成那个三角面片,那么那么只要有面片,我就可以啊。
只要点足够多面片就足足够逼近那个曲面,我就可以对它进行进去,就进行那个那个研究啊,那后面的这些东西呢就是啊内容也比较多啊,这个重重建呢去造啊,还有这个啊,还有是这个变形编辑等等啊。
就后面那个东西还蛮多的,那个呢就是偏向这个离散型曲面好吧,所以我们这个课呢前半前一半不到是是连续,后面的是离离散的好,离散的那个呢也有好多东西,大家也要数据上面稍微有一点了解,我尽量的能照顾到更多同学。
好吧好,那么今天的这个课呢差不多时间也差不多了啊,我看看有没有一些问题哈,这个平台上,呃如果啊大家说可不可以用别的编程语言写,当然可以啊,你用mac写也可以啊,我们我们会提供一个框架。
这个框架是我们自己这个这个这个写的好,这个没问题,就是问这个会讲多少啊,里面不会讲的太多,因为毕竟这个不是面向啊,这个图形学这个学专业或者数学专业的同学,所以我会讲一些思想。
是因为变样条这东西讲清楚还是要花很长时间,所以我我会尽量的讲的那个通俗一点好吧,照顾到各种各,我同学还有一个同学问这个拟合函数跟神经网络的关系是什么,那个这个我唉如果下周来不及回答下。
下周应该能回答这个问题好吧,就上次啊就是在做拟合,上次我们做拟合,不不管是曲线也好还是曲面也好,做这个拟合实际上就是在在回归,在预测我们的三维的数据或二维数据,只不过一它的神经网络呢是回归什么。
回归更高为抽象数据,因为人类超过三维的空间就没法想象是吧,很少有人想象出来,那么几万维是吧,那么我们这个我们的这个呃里面或者是c我们的图形图像,图形学里面研究的的这个位数呢相对特定。
我们能看见能看见是空间中的点,能看见是空间中的曲面,而一但超过三维高维以上的话呢,曲面就不可想象了,就不可不可见了是吧,如果你要去可视化超过三以上的数据,比如设为5a这是100为那个人办,没办法啊。
只能把它通过保持一些度量,比如说这个相邻呃这个边长的关系啊,把它投影到三维来,或者投影到二维来可视化哦,我们就认为二维方这个分布就反映了高位那个东西分布。
这里的这个投影的这个或者或者降维的这个方法也很重要,如果你降维方法不对,实际上是你根本反映不出来,本来有一批点在一起,你降维方法不对,就可能把它分散了,或者说他们本身这些点不在一块,在高维中不在一块。
你降维方法不对,你它把它在二维中呈现或三维中呈现存在一块儿,你也会导致你的这个错误判断,所以各位数学的东西呢是是是非常麻烦的啊,也也确实是比较难研究啊,好那么我想这个啊先解决道理。
还有这门课与付老师数字几何处理有哪些异同啊,郭老师的那个课呢在b站上,在我那个课程主页上面也会挂,也可以发表访问,他那个是专门讲述几何啊,比较深的一些东西,所以他那个的可以看到是我这个课的高级版本。
如果明年啊呃排课能排出来,那么可以有傅老师或者是我们一起啊来讲这个更深的数据和处理啊,这个也会增加啊,这是啊客观这些我们我们是腰嘛,要开头的课是基础课,二开头的课时高级课啊。
嗯哦还有这个switch能不能分享,这个肯定没问题,这个我们结束之后啊,我们的df都会发给啊这个games的技术秘书会分享在这个games网站,我一些网站上面我也会挂一份好吧。
主要是用github来来回复,大家可以学一学好吧,还有什么问题啊,没有推荐的教材呃,这个呢嗯教材因为我的内容实际上是涵盖了两门课,一门是就是我们叫做计算机辅助几何设计的一部分内容。
还有一个是就是数字几何处理,所以呢教材呢我后面啊稍微推荐一些比较基础的吧,下下节课再推荐吧,或者是我找到了一些比较简单的,我就把它挂在主页上,大家可以去参考好吧,那个如果有电子版本,我也会更分享给大家。
这最后一个问题对于有间断点的函数多项式是不是就不完备了,这个这个未必啊未必,因为在有些原里面,也经常会用一些间断函数来来那个表达一些这个啊啊函数性质,特别是建筑有限语言是一个非常大的一个联方向。
所以说那个呃用实际上它只要是能够表达能力,比如现在函数它可以表达什么,表达一些不啊,不光滑的函数是很有表达能力的啊,我们在202016年就利用这个性质啊,做做了一篇非常好的工作啊,发发在top上面。
大家有些可以看一下其他的啊,没有,那么如果有问题的话,跟我们的助教我,我有时间我也会回答,大家好,那么今天啊时间已经到了好。
那么今天呢这个课程就到这里为止,好我们下周日再见。
GAMES102:几何建模与处理 - P10:曲面去噪 采样与剖分 - GAMES-Webinar - BV1NA411E7Yr
各位在线的同学们。
今天我们开始今天的课程。
那个同样我们今天首先看一下。
这次卓业期的批改情况,呃 这次卓业总体上交的同学还是不错的啊 那个其中可能有同学一个压缩包是空的啊。
请这位同学检查一下啊 然后看看大家的一些作业的结果,啊 给交的同学基本上做的还是到位的啊 你看这个,同学是实现了两种这个称方方法 其实全不一样 一个左边是均匀权。
右边是那个这个计效取这个mean value啊 这个平均曲率权 就那个contention的权啊 可以看到,效果还是有点区别啊 那么怎么看效果呢 就要把一个。
矩形域上的棋盘格 等大的棋盘格把它印到局面上 就可以看出它那个,效果你可以看到这个均匀权的话 效果这些地方就不如,右边的结果可以看到那个参数化的时候 这个权对结果还是有影响的啊 那么。
如果是把这个,边界固定 整个性能方向图求解 就可以求计效曲面。
啊 那么这是另外一个同学的这个参数化 右边是他的结果。
啊 这里应该是有个视频 我们来一起看一下 这是。
用utopia这个框架来做这个实验啊 可以在这里操作生成计效曲面,好 也可以生成参数化,啊 等等就可以看到他那个,随时可以在用共同的这个作业啊 把它几个作业都放在一块了啊 好。
那么 这个是另外一个同学做计效曲面跟参数化的一些演示,啊 也有个demo 这是全球法球,计效曲面 这是参数化结果,这次作业 大家发现全球法比上次作业的。
这个迭代的局部法要稍微快一点 也会稳定一点 这也是,看到局部迭代法的一些不足 那这样的局部迭代法呢 就比较容易实现 也比较快,好 这是威廉影视的结果,所以这次作业主要是让大家学会怎么去构造一个。
这个网格曲面的,这个拉布拉斯矩阵 以及怎么去求解一个大型系数方程组啊 因为这个非常重要,在后面的很多训练系里面都会用到 所以 呃 大家务必掌握这个这种系数方程求解的方法。
那么这是另外一个同学的一个演示,好 界面有所不一样 他也把这个平行曲率给他可视化出来了,好 他把它印到一个球面上的这个圆边界 可以看到他那个参数化的马上结果。
好 这是可以在不同的这个参数化结果中进行切换 边界也可以切换 所以他做的就比较,那个灵活,这是他的那个极小曲面的结果 极小曲面的平平曲率,我们再跳过去啊。
这是最后一个比较复杂的armduino这个模型的平行曲率的一个结果,好,好,行 他这里是一个优化 学照的一个结果,那么这是昨夜同样我们把优秀同学的。
就是昨夜比较优秀的代码和报告啊也挂到网上啊 课后大家可以参考,我们这里就不详细展开,这样的话 每次昨夜放在网上以后呢 同学们就可以自己去学习。
特别是后面补昨夜同学啊 自己去对比参考啊。
那么今天我们开始讲一个新的话题啊 有一个曲面很重要一个课题叫去照。
可以正常图层可以看到就是在我们,实际的应用中啊 我们的数据啊往往是从一些扫描仪或者是一些重建算法所得到的,那么由于设备的误差或者是重建算法的计算误差,那么往往的这个数据上面带有一些这种可以看到一些这种。
小的细节 那小细节呢 你知道这个可能不是顶点的正确坐标,他可能是经过了一些劳动啊 那么这个劳动呢 我们把它叫叫做噪声,因为这个噪声产生可能是由于测量仪器啊 计算误差所造成的啊 那么。
给定左边的一个带噪声这样一个网格曲面,如何能把这个噪声去掉 那么这个过程就叫做denoising,这个noise就是噪声 是吧 加个顿名词表示,这个操作 那么这个dee呢 大家应该是很常见的哈。
那个你们经常写程序会有一些bug是吧 就是一些一些错误,debug就是去掉这个错误 dee就是那个delete,的缩写啊 就去掉这个bug 那么denoising呢 就是去除这个噪声。
所以这也是这个领域所,所所专用的一个词 好 那么这个,把噪声给去掉 不管是网格还是曲面 反正这个,曲面就是连续的 网格就是离散的而已啊 那么这个。
还有一个是叫smoothing 以前我们见到过 是吧 这个光滑呀 光顺啊,也有时候会叫 把它叫做滤波filter 等一下我们会解释filter。
这个一个真的含义 当然还有些地方也把它叫做improvement,这个表示网格质量极高 当然还有些paper呢 也会用fairly来描述这个过程,但是我们以前在上班。
课介绍过这个fair 表示光顺 光顺呢 在造型里面是有特殊的含义 是指,比光滑还要更高要求的 就是不要有曲里抖动的那个词 但是呢 在在这个离散情况下呢 我们fairing。
跟smooth经常会混用 所以我再打个信号,这个你也可以 大家有时候也会看到这个题目是用fairing这个词 但意思是一样的啊 我们就是指。
怎么把这个噪声给去掉 虽然我们以前讲这个fairing 光顺还有更多的,不仅是去除噪声 还要去除多余拐点 这些限制 这些要求,这个可以回到前面几节课 可以看到这一这一。
这个词 这是正含义 那么在这节课里面呢 我们就是就是指把这个噪声给去掉啊 不是指这个整体的这个曲面的光顺的一个含义,好 这个去噪并不陌生 很多同学如果学过数字图像处理。
图像左边的那个lina图有些噪声 那么把它去掉啊 也也是同同样的这样一个意义,只不过呢 他们是针对个二维平面的图像区 我们是针对一个二维流行上的一个几何信号。
网络曲面来做而已 所以是那个对象不一样 实际上是,从这里可以看到就是我们做这些,操作 事实上本质上都是一样 就是对这个数据进行操作。
只不过你的数据呈现是在二维上的r g b这种像素呢 还是一个流行空间上的一个一个顶点坐标,所以从这个方面来看的话 同学们就。
对这个几何处理也应该不用太太多担心 为什么呢 因为他只不过这个信号的表现形式复杂一点,这个处理的手段 被编成的数据结构复杂一点,他的很多方法都是可以从图像的相关的一些这个问题就是。
比如说这个去照问题 图像也去找问题 所以在图像领域有大量的这种去到的算法,同样都可以把它迁移到这个二维这个流行上的,数据上来就是我们的网格曲面啊 所以这个。
如果从这个角度来看的话 如果同学们对图像处理比较熟悉 事实上对网格处理呢就是把这个,数据的类型把它变一下 把这个关键的一些流行上的数据的这个形式把它想明白。
基本上就可以做很好的研究 或者是解决很好的问题,好 那么讲这个之前的话呢 这个什么叫噪声 noise 什么叫noise 上这个呢,没有一个非常严格的定义 我这边右下角看到我这里写了。
就这种模型来讲 我知道上面就有噪声 但是怎么正义噪声呢,你是说这个这个是什么量 是是是大一个什么值才是噪声呢 这个是很没法确定的。
所以人们呢 往往会采用一些这种经验性的描述 比如说这个高频啊 这个小部分,还怎么还还一些什么小的小的这个bumps,这个振动或者叫包啊 还有什么曲率比较高的地方。
还有还有什么 我定一个能量 这个能量很高 就像我们以前做光束一样的定一个那个曲率的一个平方的积分,这个地方如果这个积分很高 那么我就认为这个区域是有是有噪声的。
但这些呢 事实上是都不严格 因为什么 什么叫high 啊 什么叫高 什么叫是small 是吧,所以这个没有个量化 比如说你说high coverage parts 就是这个曲率比较高的地方 大的地方。
那这但是这些群这个网络本身的尖点或者叫一些不连续点,不光它点也是曲率很高啊 你怎么这个可能就是会把它当做噪声呢,我这个是要把它留下来的 所以说噪声在一定尺度上跟这个future是很难区分的。
就是这里就呈现一个问题啊 就是往往你有时候去照,过去照了以后会把这个本来这个几何体的一些特征就就像这个右边的这个弓箭一样的,把它的一些边和角给它磨平了 那么这时候这样你就去到结果。
就不是你所想要的 为什么 你给你改变了我以前的这个几何 所以说怎么样保证这个,保持原来这个几何模型的特征情况下去照 这个是一个一直是比较难的问题。
这里可以说 我就展开一下 这里可以说这个噪声跟future这个保持,是一个chicken leg 就是叫中文叫鸡生蛋 但是鸡的问题,如果你能够把造成去掉 特征就就容易检测 是吧。
反过来我特征如果能够检测到这个右边 左边这个特征是在哪 假设是这条线跟这条线,那么我去照呢 就就会相对容易点,所以这两个问题啊 实际上是是是卡不在一块的。
这导致这个去照啊 在对一些 特别是这种cd零件带有特征的这种尖锐特征的模型呢 是比较难处理,往往就会把这个边角啊 叫角点给他给他磨掉了,所以这个噪声到现在为止都还是只是一些定性的描述啊。
比较小的bounce 比较高的这个curvature 这些一些描述,所以这个要根据具体的问题啊 具体的应用来来这个尝试这样用不同的这样一些参数或者一些量来规定,好 那么这个是在维基上看到这个。
有人对噪声去照这个问题的一个描述啊 上次这个也是差不多,他的意思是说 我给定一个这样带噪声的问题,我怎么样找到一个逼近函数 使得这个这句逼近函数 使得他能逼近这个这个这个值。
并且保留这个这个数据中的一些叫important pattern,所以所以这个描述呢 也是定性的 那么什么叫做important pattern,这pattern是什么 对吧。
对我们对我们这个例子当然简单 pattern就是这个三个平面 两条折边啊,但是呢 如果这个数据为数很高 或者是为数数据很复杂,这个pattern你本身就是一个问题啊。
这也是机器学习领域也是在纠结的问题 是吧,我给了很多数据给你 你怎么样去找你的pattern,让使得能够表达这个数据的这个数据的规律啊。
同样我们这里也是 只不过这个数据呢 是一个二维流行上的一个数据而已,好 如果我们要把他变成一个formulation 变成一个数据模型,好 我们输入呢 是一个带噪声的一个m。
我希望找到一个m0 m0就是我希望的理想中的这样一个没有噪声的一个曲面,那么一般的这个模型就说 哎 我知道这个这个输入模型是我的理想曲面加了一些noise,这个noise我们这里就用ε来表达。
所以呢 我输入是一个m 要得到得到一个干净的 没有噪声的m0,当然 噪声把它去掉 就是ε,所以这个问题呢 显然是一个eo pose的问题啊。
这个很多视觉的问题也是这样啊 我只有一幅图像 我要回过他的几何和光照,这个 这两个都不知道 他们就很难的 这个叫eo pose的问题啊 就是,啊 这个问题就比较难 因为什么 我是不知道m0和ε。
刚才我也讲了 他们两个是cover在一块啊 这个这两个谁先知道都有另外一个问题的解决,好 所以呢 这个问题就相对来说这个是比较难的一个问题啊,但是难 我们也要把它去解出来哈 那我们看看。
在这个业界或者我们学术界有没有一些方法去解呢,当然有了啊 好 我们就一步步先把问题做简化,假设是我一个网格网格曲面啊 就是左边的这样一个,对啊 它是网格 只不过每个顶点呢 它有一些抖动。
所以造成这样一些噪声的这个这个样子啊,所以呢 我们先把这个问题呢 变成简单一点,我们就是求什么 求顶点一个新的位置,啊 比如说每个顶点进行一些挠动或者偏移。
哎 使得这个我构成的网格啊 这个右边这个网格呢 哎 就非常光滑,啊 这个也保持了一些尖锐特征 这就非常好了啊,好 那么这里有个问题,我们的顶点应该怎么样去偏移 怎么样去劳动 或者叫怎么去修改。
那么这个顶点是朝哪个方向去修改啊 就把这个,问题呀 从刚才这个问题变成一个具体的啊,我就要去搞清楚每个顶点的偏移的量,我就可以去求出这个去照的方向,好 进一步我们把这个网格问题就变成这样的问题。
我已知一个代造成的m 就是上面每个顶点是v,我要去求一个m0 顶点变成了v0 v0就是m0的一个顶点,我认为呢 这个这个这个代造成的顶点呢 是原来这个干净顶点加上一个偏移量。
这偏移量是什么 我进一步又去这个,啊 这个假设就他是朝某个方向偏移了一个epsilon距离,啊 那么 那么这个这个方向是什么 对吧 方向是什么 对吧。
好 如果这个方向我知道了 那么这个问题就进一步会简单了 是吧,所以呢 一般大家很容易想到哎 我这方向是不是就是,v0的一个法项就好了 对吧 如果如果这个这个造成都是。
沿着这个原来这个曲面的法项去劳动的话,这个造成这个特性就就就是相对简单一点 是吧,好,所以这个这个这个n呢 如果你是取为0就是那个未求的那个,曲面的顶点的法项 但是这个这个曲面还没求出来。
所以同样是一个又破译问题 所以以后也导致这个问题很难解,哎 所以所以说哎 我们能不能想一想就是,或者变个思路 我们是假设是为这个原来这个网格就微分网是知道的。
用他的那个normal来来做呢 至少就让这个问题可解了 对吧,但是虽然他不是精确的 但是呢 我经过若干次迭代,随着这个v啊这个造成越来越少的时候呢。
这个normal啊这个会越来越逼近这个理想的曲面的normal,这就是你们作业6所做的极小曲面那个作业的一个迭代过程的一个思路,好 那么我们model就变成了啊,那么我也假设已知道n。
这个原来的曲面点点v 我只要沿着这个n偏一个epsilon就可以了,这epsilon是等于多少呢 哎 这个就是你自己,经验去取 当然你理论上可以证明或者某些结论啊。
epsilon取多少就迭代是稳定的 我们这不展开,就像有些同学说 哎 0。1是不是不合理,对于有些模型0。14是过大了 是吧,可能要0。05或者0。01这个步长,那么这个我就不想你展开 这里就是一个。
基于这个拉布拉斯这样一个坐标的一个光方寸,就每个点呢 这个点的朝他的这个,这个法项方向 这方向就是那个平均曲率法项的估计啊,这个就是你们左右6,是左右7 左右6和左右5这个这个方法啊 就是这个练习。
那么光纯呢 刚才也提到了一个叫filter 叫叫滤波,那滤波呢 实际上是数学上在数学分析或微积分里面一个概念啊,这个我这里稍微解释一下 因为这里面,还是有不少理论的东西可以讲的啊。
就是两个函数啊 一个叫xt 一个叫ht,他们两个的这个卷积啊 这是一个新的函数,你可以把它变成啊 比如比如这个g t等于什么,他变成是t 他这个符号这个新的函数。
他等于什么呢 xt跟ht呢 这样一个乘积的一个积分,啊 把它理想形式就变成这个样子,好 我我这里画个图啊,你这个上下面这个图如果仔细看 大家可以看得懂,我们这里有一个几何意义 大家要理解。
理解到几何意义以后呢 就容易理解这个滤波是在干嘛,我这里啊 这个示意性的,再详细画一下啊 假设这里有一个所谓的xt,好 那么这句话证明呢 ht啊是一个全函数 ht。
而且ht呢 他也是个函数 假设这个函数呢,我这里取一个特殊的啊 叫高次函数,在0这里呢 是最大 越远0呢 是是是越小 那什么意思呢 你看,那么对某一点x。
我要去求这个函数跟这个函数的两个函数的卷积是什么意思呢,我就把这个函数啊放到这里来,放在就偏偏移到这个x这个地方了 好 怎么呢,我就对应点相乘 对应点相乘。
对应点相乘 当然注意啊 这里实际上是应该把这个ht做个近近面以后再再相乘,因为我这个ht是对称的 所以我这里画出来是一样的啊。
实际上是应该是这个点跟这个点相称 我把它做个做个近镜像好了啊 做个对称好 您说,这个值跟这个是相乘 加上这个值跟这个是相乘啊 这是理想情况 那么对于连续就是做积分嘛 是吧。
好 这个什么意思呢 假设这个ht是一个这样的高产数 是不是相当他是个全函数啊,这个全离我0点越远就表示越小 离我这里0越近就越大 表示这个点的值啊。
我用周围的一些值来进行加全 离我越远的地方呢 这个全系数是越小,离我越近的地方呢 全是越大,所以呢 他相当于把这个点周围的一些值啊 给他我平均起来了。
那么平均他不是均平均 他是一个加全平均 这个全呢 就是这个ht函数所提供的,所以说你如果ht提升这样一个高产数是很有道理的 为什么。
我离我越远的呢 这个全对我的影响加全的对我影响小 离我越近的对对我影响比较大,而这就叫滤波 所以滤波是很有几何意义的。
这个可能大学里面很多老师没有把这些东西交给你们 只把这公司交给你们的话 你们就很难记住,事实上你只要记住这个几何意义 那么这个这个滤波的概念或者几何意义,或者意义是什么意思 为什么用就很容易理解。
什么意思 就是用一个函数作为一个全函数对这个点周边的值进行一个加全,那么这个这个ht你取成高次函数是比较通常的做法,你取别的函数可不可以 当然没问题 你只要只要是一个。
加全等于1的一个一个函数 基本上这个都可以用来做这个卷积,所以卷积的意义是什么 就把周边的值给它平均,那么如果周边有些值是比较比较比较高的,噪声 它那一平均以后呢 就是因为噪声是比较稀疏嘛。
所以它不会被平均压下来 又把这噪声给去除了,所以滤波本质上也是在在做一个中间的一个周边的一个光滑,那么这里就有问题 你如果平均的话 这个特征就会丢失 对吧。
所以这里面后面大家又会去想怎么去构造保持特征的这个滤波,对吧 这个后面我们再讲啊 我们先把这个滤波给他讲明白,啊 里面这个滤波以后你看公司就是什么 就是在在做加全啊。
所以这公司只是这种 这个这个几何意义的一个体现,数学从来就是个符号系统啊 所以大家不用怕,这个上我希望大家这个这个不要看到公司就觉得好像很难,不难的啊 只要你理解。
就理解好了以后 你就知道他这个这些文章中的公司是啥意义,好 那我们就把这个滤波这个在这样一个形式化。
就是这一点 这是原来的一个信号,我们讲信号也好 讲数据也好 反正就是一个数据啊,这个i 所以用这个i呢 用一个这样的这样的函数,这个函数你可以看到是二维二维了 图像平面。
所以他的加全函数啊 这个就是个这个二维的一个高斯 是吧,就是跟距离相关的 就是rbf嘛 就是景象机函数去加全,加全以后呢 就中间就变得光滑了 噪声也被去掉了啊。
就是这样一个意思,所以呢 人们往往喜欢用这个高斯函数进行加全,因为高斯函数有很好性质啊 首先它是概率密度函数,因为积分等于这个这个这个相对面积啊,另外就是这个函数具有对称性 它是跟这个距离相关。
离我这个点距离越远 这个值越小 是吧,离我越近 值越大 就是大家经常,不经常基本上都是会用高斯函数作为加全函数啊,好 这是图像的一个势力 图像势力就是叫卷积,卷积这个这个这个眼罩 找眼码 mask。
就是拿一个比如三乘三这样大小,当然这个是个是个是个这个kernel呢,是一个比较均匀的九分之一 拿这个九分之一跟这个,跟这个三乘三啊 对应值相加啊,这个这个就得到了这个这个区波后的滤波后的值啊。
那这样从左到右 从上到下滤一遍啊,所以这个操作就是就是非常快的啊,这个我再提一下 好 我们回到平面上来 而且三分钟来,好 那么上三分钟的话就是怎么样跟这个加全呢,实际上是我们一推倒就知道了。
实际上是就等价于这个点呢 朝他的一个方向,我们刚才讲的这个某个法相方向去去偏移,那么这个我们在上期课讲过,拉布拉斯这个向量就是法相的一个很好的近视,如果你是考虑口腔的这种权的话。
咱们就考虑这个几何的信息 那么这个近视是非常准确的,或者就在极限意义下 它是收敛的或者逼近的,这时候你就放心用啊 所以你们已经理解这个方法了,所以滤波对象呢 除了那个顶点你可以滤波。
你是不是法相可以滤波啊,因为法相他有也是转来转去的会有,甚至包括曲率可不可以滤啊,你上面如果颜色有噪声就像平面上的噪声一样,图像一样的 是吧 当然你还可以滤别种,所以这个滤波对象我们今天重点可能讲顶点。
法相后面会提一下啊 同样的别的也可以做好吧,那么当然你们做过了那个局部法以后,你发现这个这个这个迭代次数啊,就是那个步长 逸步虚荣这选取都是很重要的,如果选的不一样的话 哎 就可能迭代什么过过方法了。
over-smoothing 是吧,有可能啊 这个产生很严重的滞交 还有还有萎缩现象 对吧,所以这个趋兆呢 这种方法毕竟虽然比较简单,但是也有它自己的一些问题 好 那我们。
先讲一讲那个顶点去去造光顺的啊,我们最熟的就是拉布拉斯,所以今天我们可以很快讲掉这个部分,因为你们已经做过作业了嘛,啊 虽然是那时候是面向极小曲面,你们在面向极小曲面的这个局部法 每一步都是在做去造。
对吧 因为你把噪声全部去掉不就是最光滑了吗,就极小曲面了吗 好,所以这个图一看你们就明白了啊,做过作业 做过作业的同学啊就非常明白啊,我就不展开 好 那么这个方法就是啊。
就是不断的去用用用一个lambda值,未来有些方法可能会自动决定 决定这个lambda是最好的,那么一般的话我们都会取个经验值,不断去迭代就可以了啊,这里这里有一个东西挺有意思 大家可以推推。
事实上的这个拉布拉斯光顺呢 是等于加什么 等于加于,我这里画个示意图,这里有一圈鳞鱼啊 等于加什么呢,你去极小化,就这个点要移到哪呢 极小化他们的边长的平方和,就是他们的边这个鳞鱼边的边长平方和。
极小化这个值式性 等于加于是做拉布拉斯光顺,这个是可以证明的 我再提一下,好 那么光顺就有这样问题啊,你如果如果参数取得不好 或者是集在次数比较多。
就会容易产生over-smoothing 就是特征没了,这种被我丢了 像这个眼睛啊,本来这个有个眼珠的啊 没了 是吧,这个就会产生问题,这个叫shrinkage 就是缩缩的问题。
啊 就特别是这种简单的拿拉布拉斯光顺,我以前也解释过 因为这个这里的比例比较密,他的拉布拉斯向量比比较小 这里比例比较稀,拉布拉斯向量比较长 所以这边的光顺就就会快一点。
就为这边缩缩的快 这边还保留着一个比较高的,最后呢 还这个这个这个角度收缩掉了 没了,当然无穷以后呢 还是会变得已经同样平面,那这样这种结果可能也不是我们需要的,那有没有办法去改呢 当然有了啊。
那我们都会想到很多办法出来,所以拉布拉斯光顺呢 又有一些改进的啊,我这里一下他的思想 距离不展开,这是我们常见的拉布拉斯 取个lambda 是吧,那么呢 那么在90年代呢 就有人说。
哎 我收缩完以后 我再怎么 我再把它扩张回去,你可以看到啊 这里这里首先是先收缩,然后再怎么 再再扩张一个一点点,这一点点呢 就是用一个拉布拉斯的两两级拉布拉斯,啊 就是相当于我再起来补回去一点。
啊 还有些呢 哎 这个呃 我用双拉布拉斯,拉布拉斯就更光滑 它是个四阶的微分量,啊 这个叫by labration啊 就是双,就是相当于是拉布拉斯 这是拉布拉斯一算子,再给他做个算子。
好 我们会把它记成这个这个算子,就是这个平方的算子 这个就表示更光滑了啊,也有这样做的 好,可以看到 这是一般的拉布拉斯 这次用的那个加上了那个。
expansion 就是那个扩张的时候 就稍微把细节给他补回来一点点,造成也能去掉 好,好 那么 嗯 这个第二种方法就是mean curvature。
mean curvature是什么 我们中间加了一个平均曲率的估计 是吧,这样的话 它是朝平均曲率这个流 等于0的方向去去去去收缩,这个大家也有体验了啊 那么这种方法呢 就跟几何相关。
因为他那个权是cotent的那个权,所以他这里呢 cotent权呢 他会小一点 这边会大一点,所以你可以看到 你如果用你如果用这种方法的话,你你收缩的过程中呢 这三个峰啊 都保持着同样的高度。
就不会像刚才那样的话 一个一个塌的非常快 一个塌的慢一点,这就是要考虑几何影响的这个权,就会对这个结果产生这这这些影响,那么具体的Nissan mean curvature这个权 大家都很熟悉了啊。
你们是你们做过作业 都非常清楚啊 这也是他的一个比较,好 那么刚好群里面也有人同学在问 如果保特征怎么办,这里呢 我们提一个比较 比较通用的,或者是当时也是从图像里面借鉴过来的方法。
叫双边滤波 就是我们记住啊 刚才的一个,这个和啊 和函数是对什么 对这个数据本身进行了一个,啊 就是他周边的值进行一个加权 是吧,这个s周边的那个相中值也可以是他的一个顶点坐标。
我们这里呢 又进行了一个加权 就像像什么呢,我考虑这两个点之间的值的这个这个这个差异,如果这两个值差的越大 这个权呢就越小 什么意思呢,我一个点周围的值 值什么意思呢 值就是跟他相差很大。
相差很大说明可能他们之间可能会有一个特征,比如这个点,我们应该看看这里 比如在这个点 如果取个领域,他的领域可能有些领域跑了跑了跑到这来了 是吧,你看这个值跟这个值是不是相当很大。
所以这个值就对他影响应该要大量减少 甚至不影响,所以他把这个值的因素也加上来了以后,来给他又给他一个和函数加权 加上是两个和函数跟他一起加权,我不仅要距离要一个影响 而且值也要给我有影响。
值相差越大影响越小 因为什么他可能发生在有特征的地方,他的值一下子跳跃非常快 我就不要考虑他对我加权了,这样的话就就会爆特征,所以这个双面滤波当时在十几年前吧,03年有两篇文章同时提出来。
上次这个想法在图像渠道里面已经有了,下面这个除以这个呢只是为了把它规划。
规划就是为了这个这个权值等于,那么这个有一个例子,首先special就是指距离上就是从传统定义上的这个加权,而距离越远就加权越小,这个呢就是什么值 就是一定影响力,就是你看可以看到像这里有一条尖锐边。
那么这里上这些点呢就这个权呢就没有影响,为什么 他因为这个值相差很大,高斯函数一下子就让他变得很小 甚至非常非常非常小,所以影响就不大 所以说你在这一点的去求他的滤波的时候呢。
这一半的这个像素也就是这里的值,对这一点的滤波是没有影响的,为什么 这个高斯函数一下子把他率性掉了,这就是双边滤波的事项,当然你说我还可以考虑别的吗,我再加个高斯核可不可以。
有 这个叫tri-lateral 叫三边滤波,你觉得还有什么因素可以考量吗,比如说法项考虑进来可不可以,再给他加一个法项的影响fgh是吧,可不可以 有这个叫tri-lateral。
也有人tri-lateral 三边,你说我四边五边可不可以,这个就没意思了啊 就是就是没有必要为更多,就是说你这个就是考虑一些重要信息,你就可以去创造更更多的这些加强方法。
好 那么看看这是这双边滤波的一个意义啊,可以看到这个高斯函数在这里一下子就变成很小了,因为这个值很大 是吧。
值很大就 值就变得很小,好 那么同样这个想法能推广到网格局面,我就讲讲思想啊,这个如果要感兴趣可以看一下,secrub2003年一篇文章,题目就叫by lateral filtering。
好 这是一个曲面上的,我们就二维来演示啊,一些点 这个点呢,事实上分布在这个曲线的左上下带有招生嘛,好 我们来看看这个蓝色点的一个去照,好 那么蓝色点,离这个理想曲面都是有些距离 是吧。
所以我们也不知道是这些理想的曲面在哪里,但是我们可以估计出这个蓝色点的一些信息,好 那么信息怎么样呢,我们就要要要保持这些信息啊,那么我们一般的会怎么,首先算出这个点的一个法项的估计。
这法项估计呢 我们后面可能会还会想一展开,这个我今天介绍思想,一般的会取这个点的周围的一部分数据,然后做一个最佳线性逼近啊,这个逼近呢叫PCA。
叫principle components analysis,就是叫主源分析,那么主源分析的这个应该是一个3*3的,一个矩阵的特征值,最大特征值所对应的法项啊,这个像这个相量就可以作为他的法项的逼近。
这个是通用大家都非常熟的啊,就是一个点的法项怎么估计呢,用他的领域做一个最佳线性逼近,一个平面啊 在这个二维中心这个直线,那么他的法项就作为这个点的法项估计,好 然后呢把所有点的往这个法项上面去投影。
是不是就有个距离,好 这距离就让什么呢,就让离这个切平面的远近,越远的点呢 是不是因与他,就是这个值越大的点是不是因他,应该离 因他影响越小,好 那么再看这个距离,这里越远的对他影响越小对吧。
这个值越大 影响就越小,所以把这两个值考虑进来,就是叫双面滤波,如果不考虑这个值对他影响的话,只考虑这个距离呢就是通常的单面滤波,网上单面滤波和双面滤波就这样一个做法,好 那我就不去详细讲了。
然后做法就是你去算切平面,然后去算刚才那些值,然后呢 然后就用高斯核去把它加权一下。
加权 所以这里两个高斯核都是两个参数,你也可以去设 参数不一样 结果都不一样,所以一个算法呀 他一定会带有些参数,这参数呢对这个结果是有影响的。
那么当然这一篇文章对当时提出来的时候呢,对这个做了很多例子,可以看到做了几次迭代以后,他有些特征就越来越会明显一点,好 具体呢 大家可以去尝试一下,这个算法实际上不难。
因为就是一个这个两个高斯核这个滤波 是吧,你们在昨夜午时实现了一个非常简单的,这个这个法项就是拉帕拉斯像那样的一个。
用他的第七代 这里呢稍微算一下,这是当时一些例子,大家可以看到当时在03年17年前,在SIGGRAPH那时候这个方法还是比较新的,效果也还不错,当然最近十几年发展,又有很多新的方法超过他,好了 那么呢。
这里再给大家讲一下另外一种这个滤波的,就是刚才呢是顶点找他的一个法项,那么那么用作为点跟他一个做做一些滤波,这个平均是吧,平均呢就可以得到新的法项 偏移方向,那么还有那个这就是用老的这个方向来决定。
事实上应该什么呢,应该是用最理想的那个曲面,所以说应该用新的法项来做是不是会更好,那么这种方法叫隐视 为什么,因为这个东西还还没知道还不知道是吧,但是呢如果你是用了新的曲面的法项来做。
这个估计那应该是更有道理了是吧,但是呢这个呢是两边都是未知数,所以这个叫隐视方法,因为从从这个是可以推出下面这个式子的,就是说你这个拉巴拉斯这个南无阿达是在这,你去做这个一个迭代。
那么这个方法呢就叫隐视方法,他要通过求解一个西苏,就现行西苏方程组才能才能得到结果,就是有点类似于你们实现的那个拳击法,就是这次作业的拳击法,所以你只要看一次想,那么最后他变成了什么方程组呢。
你们现在已经有能力,做过作业的同学就有能力去实现他了,就不难了,所以为什么我们会设计的时候会把,西苏现行方程组作为一个非常重要的一个作业,给大家去做掌握他,那么这些方法就自然都会去实现了。
具体你这个看一下这个公司或者相关的文献,就可以看得懂了,好,那么还有一种呢,刚才我也提了一下,就是滤波的时候呢,我不一定是决定顶点进行滤波,我还还对法样进行滤波,那么这种方法呢也比较容易理解。
这里是一个左边的一个输入数据啊,这数据先加进啊,这个数据是已经有联系关系了,有关系的话,你可以看到这边的法象就是这些蓝色的这个法象啊,弯弯扭扭啊,一左一右啊,这偏移很厉害。
如果我有办法把法象进行一个滤波,那份法象呢比较光滑的变变化,而不是一下子左右这个变化非常剧烈,如果法象他有一个光滑的这个一个变化,好,那如果我去求一个新的顶点坐标,或者叫一个曲线,使得这个曲线呢。
以这个新的这些法象为法象的曲线的时候呢,是不是这个顶点分布也会很很很光滑的,因为因为这个法象比较光滑的嘛,是吧,所以这个会迫使的这个顶点会比较光滑,就把他造成给去掉,所以这个方法呢,是什么。
是通过对法象进行滤波,然后去反求网格顶点来得到的,所以这个方法这个也流行了十几年啊,所以这思想非常简单,好,那么具体法象怎么滤波呢,没关系,你你顶点有什么滤波,我这里也可以拿来,顶点有拉巴斯。
我这里有拉巴斯啊,对吧,那个法象也有这个定义在这个边上的中点啊,或者上阳线的中点,反正也有拉巴斯啊,所以那个顶点有双边,我这里也可以考虑双边嘛,所以说所以说这里没有任何问题,所以你这个法象滤波呢。
可以用前面讲的任何方法啊,全球法也有啊,好,就这样的话呢,就对法象进行了一个新的求解,求的一套新的法象,好,那么这一步怎么办,就这一步,因为这一步呢,很容易,因为这一步就是用以前的方法。
只不过着用对象是法象而已。
好,那么有法象重新顶点呢,这个是一个,就是你可以,事实上从数学上来讲,这个是没问题的,因为法象是一阶微分量,微分量是可以通过积分,就可以求出顶点的,但是对于立场情况下呢,我们把它变成了一个这个性方程组。
这个是什么意思,我稍微说明一下,这里有xi xj xk,好,我知道这个平面的法象,新法象是SFF,好,你要对这个上阳线顶点进行劳动,此时这个三角形啊,这个以它这个方向,新的方向作为法象,怎么办呢,是吧。
法象跟这个三角形具有什么关系啊,是不是垂直啊,所以说这个法象必须垂直这条边,也必须垂直这条边,也必须垂直这条边,对吧,所以说三条边垂直就是3个点1等于0,所以我要求的新的一个顶点坐标,怎么,必须满足。
以这个法象跟三条边垂直,xi是这些xi是位置量,顶点是位置量,那么这样的话就构成了一个非常庞大的信义方程组,因为每个方程只有两项是非0,所以你们用这个,这次作业的这个练习就可以去做的事情,没问题,所以。
做了作业以后,这些东西我想象就非常快了,已经前面做过铺垫了,因为这个就变成一个ax=b,ax就是所有顶点坐标,那么这里法象是已经求出来了吗,就每个每个就另一个方程,没有没有方程,就可以了。
具体的你可以看一下我们五年前的一篇文章吧,里面也介绍了这种方法,也引用了这个相关的基于法象滤波的一些文章。
大家可以从一篇文章开始就可以找到一些相关工作,好,好,那么那个后面我会也快速讲一下,这个方法大家也能听懂了,非常非常容易,那个这个呢,是07年,我们一篇cd文章,那就是用全体法来做。
那么这个也是一大类的这个做这个光顺的一个方法,就是什么,我认为我这个原来曲面是s,我要求它的渠道曲面s1’,这个时候我要求的,我认为呢,事实上是我去定一个能量。
这个能量就是我想求的这个s1’的这个某个某个度量,在这里的度量是什么,就由于两部分,一个是光法,一个是叫Δ,这上面呢,正常就是s1’离s呢,不能太远,是吧,因为这两个误差,minimum值就比较小。
还有还有一个呢,s1’要尽量光滑,那这个φ呢,就是描述s1’光滑性的一种度量,你可以看到这里是用一阶两个一阶的平方和,这个是用两阶都可以度量一些光滑性,大家如果记得前面我提到光顺的时候呢。
也提到这种能量是吧,我度量一个一个曲面,这个这个这个曲率啊,或者是这个微分量的一些平方的时候呢,你是达到一个微分光滑,所以说我要求一个s1’,使得他呢,跟s不能太远,然后s1’要比较近。
你去求取这样一个能量优化,就可以去得到一个结果s1’,那么这种方法叫叫能量优化法,优化法,那么在我们这里的话,你可以可以看到,你可以定义就是这个能量是用用用什么来定义呢,就是这个这个光滑性。
因为这项是非常简单,就是每个顶点偏移,不要不要不要太远就可以了啊,主要是前面的一项,前面的一项上当时我们是用拉巴拉斯,因为拉巴拉斯就是这个两极微分量的度量啊,所以有一个拉拉斯就可以构成一个方程组啊。
这个我们做过作业就很熟了啊,我就很快讲讲掉了,好,那么你xyz上是在上个礼拜我们也讲过这样一个方法,我们就快速过去啊,好,那么如果你希望保持特征,你这个点是特征,这个点不要动怎么办呢。
我就这里加一个约束啊,就是这三个坐标啊,都都等于某个给定的值啊,你就把它作为软元素放在这来,如果有另外一个点呢,也是那个特征,你也不要动,那么就把它加到下面来啊,就这样的话呢,像是求解一个拉巴斯。
然后呢,然后又某些点是不动的啊,但是别的点是近两个相近就可以了啊,那么如果还有一些什么,我希望这个三角形的这个重心不要发生改变,我在光称时候呢,这个某三角形的重心我认为它是很很重要的,我就把它固定住。
这时候呢,这个表示这个值是制造的啊,这时候呢就这个值呢,制造也是中间加了一个一行是吧,三三个量乘积等于某值啊,所以也是一个方程组啊,好,同样你可以让某个边的中间或者某某个点来变成。
然后这不动也是个线性约束,甚至你还约束101的这个重心坐标都都可以,只要是只要是线性的都可以往往这个大的方程组去加,最后呢就变成一个啊,这个一个非常长的一个x啊。
那么这时候用这个就像二层就是法方程序做啊,这个东西也是大家非常熟悉的啊,这个必须要掌握就是怎么去求一个超定的一个方程组的解,超定什么意思呢,就是啊方程组多于变量的个数,因为就有可能没有没有解嘛。
但是我可以求求什么呢,求ax-b^2 minimize这样一个值啊x,那么那么这个呢,实际上是等价于求求这个值求这个法方程啊,那么求这个方程,求这个新的方程组呢,你们你们作业也做了啊,就都知道了。
用chores分解啊,很多分解方法就可以做,或者直接调一些数学库就可以去做了啊,那么这方法实现可以作为作业给你们,但是你们已经有这个能力可以去实现了,没问题啊,我们就不作为作业了。
作为大家以后如果遇到这样一些问题呢,也可以用这个方法去去去去解啊,那么最后我们再看一下,这部分那个还有个概念叫improvement,就是叫网络质量提高,上光滑我们在以前讲上部分课的时候。
就已经接受过那个割角就是一个光滑,你把一个尖锐的这样一个多边形,慢慢磨光啊,磨光割角就是磨光嘛,就可以变成一个光滑曲线,所以它也是一个smoothing的一个问题,那么那些improvement什么的。
就是也是希望把一些尖锐的东西把它割掉啊,我有一次课我记得是形象的比喻,拉不拉丝的一种操作,就是相当于割了几次角而已,是吧,所以割角以后呢,点点就会进行一些变动,就变成一个质量更好的,那么在在历史上呢。
也有这样一些比较启发的,或者是叫局部操作的一些网格的质量提高的一些操作,比如说我我来考察一个相邻两三人形的一个四边形,如果这个对角线这两个质量不够好,我我我给它换换一条边。
就是相当于是这个黑边变成这样一个啊,这个边这两个质量的比这个两个质量是要好,具体怎么叫质量好,我们等一下再再来补充一下啊,好,我就把它这个edge啊,给他给他flip掉,把它把它叫做翻转一下。
把把这个联系关系变一下,好不断这样操作,不断操作,那么总会操作这个质量会越来越好是吧,好,我们回过头来怎么来看这个质量,质量的话,你可以看到最简单,哎,这个这个角度比较小,像在这里吧,这个角比较小。
你可以看到哎,这里像这两三人形最小角在这,这两三人形最小角在这,你看这个角就比这个角是要大,是吧,所以说这个质量相对好一点,因为角越大嘛,就越胖一点啊,胖的话就像正三人形一样的啊,就比较质量比较好。
那角比较小呢,就比较比较狭长啊,就不好,是吧,所以你这里可以提提出很多度量,然后当这个操作是可以做的啊,当然也也有也有操作,像你这里再再再怎么做,也也也发展不了的时候呢,你也可以把那些边给删掉啊。
再变成这样一个样子也可以啊,这也是一些local的操作啊,能够改提高这个网络质量啊,也就是采用这样一些方法就可以可以go,好,去到呢,呃,这么多年文章非常非常多,我这里呢,因为基础课。
我也不去详细介绍所有的方法啊,给大家一个概念,那么对这个是最开始对这个去造就一个formulation,怎么去做他的数学模型啊,从模型出发就知道哎,我们怎么去去构成一个法,这个方向,那么去到呢。
又可以对法相操作,事实上还有很多的方法啊,我们这里,呃,我个人认为几个最大的方法,我这里列了三个文件啊,引用西数优化的方法啊,就是一三年西瓜,还有我们自己的一个英语压缩感知。
这两个方法实际上本质上有点类类的红啊,只不过我们是从那个更好的理论,我们理论保证是非常好的啊,这个这个新文章非常非常不错啊,大家有兴趣可以看一看,那么也有用机器学习方法,机器学习方法怎么的。
机器学习方法就是一个拟合嘛,就是啊,就是他他认为啊,这里在噪声,呃,他可以构造好多ground truth一个光学面,随意给他加加噪声就啊,然后还要求S0啊,那那么这是不是一个隐私啊。
我这里多边噪声是什么是什么分布,我就要求一个硬件函数,变成一个呃这个光秀是一个法项,所以他中间构造了好多这种呃局部算子,然后呢,也通过这个机器学习去求这样一个影子F,所以他他他就把这样一个。
这个这个渠道问题变成一个连续影子,但是这里这种方法呢,有个问题在于他的数据体一定要非常非常的充分,并且你的数据的这个噪声的分布,一定要在数据其中要体现,如果体现不好的话,他拟合就不好啊。
这机器学习本质就是你做拟合嘛,啊,我们以前就讲过啊,所以这个这方法呢,这个作为一个新方法,大家可以去参考啊,但是实用性上面的话就要去取决于你这个,数据应用的时候呢,你数据的这个分布类型是什么样。
你要你要你要构造大量的这样的样本啊,里面还有这样分布,你这样做的就比较好,当然这个去找每年都有很多工作啊,当然观看我们这个课,这个啊,一个小时课是讲不完的啊,嗯,更希望大家理解这里面的一些思想。
然后以后你们碰到问题的时候,通过这个课也好,文件也好,自己去再去探索,好,好,那么刚才讲的是有一个假设是是个match,match是turb结构是不变的,对吧,所以你只要去变这个顶点啊。
所以那些方法呢都是假设这个联系关系是变的,但是对于别的一些类型啊,像point cloud就是一些点,你怎么去做他去找,因为他这里没有没有联系关系是吧,谁跟谁联系不知道的这个点就这个叫点云。
就是原始点云,他没有够网没有充够网额,那么这个点怎么够呢,是吧,那么怎么办啊,那么这里呢,我大概讲一下啊,但是如果碰到我们不会的东西,尽量把它想办法把它变成我们会的东西啊,这是一种思维方式,啊。
我已经会了一些东西,比如刚才网络去照我会了是吧,好点云来了,哎呀,这个我我不会,我以前也没没做过怎么办的是吧,好,那怎么把它转成会呢,哎,你可以看啊,刚才去照是不外部不就是找他的相相相邻的一些东西吗。
是吧,所以你可以找一个R领域啊,把这些点呢给他够够一个切平面没问题吧,所以呢,你这就可以假设实际上是可以这样的,我之前的临时的跟着这些一领域某一领域,这时候他他叫一笔一笔零,他不叫一领域了。
因为就是刚才网格是就跟他有直接边缘的关系,你想念这里呢,哎,我没有我去取一个距离就一笔是某个距离,这距离的是可以是很小,这个这个啊,0。1啊,或怎么样,然后让他这些点包含起来。
你就可以去做这个他的一些估计,微分属性估计,这时候就把它转成了,哎,我局部构成了一些相邻关系来做这个去照,好,好,点晕这话我们再重新讲一下啊,就是呃,大家能听到了吗,喂,好,那么可以,然后点晕的话呢。
就是把它转成网格的这个形式,就是用他的近领域来把它连起来啊,那么就变成局部的每个点都有个局部的突破关系,你就可以用网格的这个方法去做啊,一样的哈,那么对这个怎么提数据呀。
还有什么深度数据就是用connect这种数据去去做,也有一些去到的一些方法,因为特别是对这个debs,他有RGB,还有还有还有D,D就是那个深度啊,Debs,那么。
那么有的时候去到那会用图像像素跟那个深度集合一起结合的啊,就是叫叫联合滤波,有很多这样一些方法,大家去看的时候就是哦,我我不仅有那个红绿蓝这个三个分量,还有一个深度,我滤波的时候呢。
可以结合这两个信息一起来做就可以了啊。
好,那个去到这个,这个做了几十年啊,这个基本上几十年,但是仍然还有很多问题,特别是对于现在这个深度相机流行啊,大家也知道,现在iPhone啊,包括我们国内一些手机厂商都集成了深度相机。
但深度相机的数据呢,实际上是很差的啊,就于数据这个是不是深度这一围啊,他的精度没那么高啊,那么随着设备硬件的发展会越来越高。
但是这个去照问题还仍然是还是存在的啊,所以这里面还是有很多方法去去做的。
那么去到这一块呢,我就大概这样。
讲一下这个这个入门的一些东西哈,今天还中文还一块内容呢。
我要我要先快讲完,只有半小时了,好那个现在开始讲一下这个第二部分内容采样与破分。
这个也是非常重要啊,那么我们先看采样,我们只要学数据处理或信号处理,就要一个采样,采样什么的,采样上就是我们在就是就是离散啊,就是我们讨论对象往往是连连续的函数啊,什么一个空间啊等等,但是呢。
我们无论在计算也好,还是在做存储也好,都是有都是有离散的一些表达对吧,那么我怎么样,比如说大家知道对调曲线,我怎么样去对它绘制曲面绘制,我不可能去让计算机去画一条光滑曲线。
都是把它离散成分段的叫线性函数,分成多样式或者叫占氧片网格才可以做对吧,所以一样的字就在做采样啊,这采样的话呢,你可以看到我们前面也讲过一些这个那么曲线的采样,一些这个概念是吧,在这那么还有。
这不是在印象工程里面,我们对一个模型进行扫描,我们我们去踩上面的点也不可能所有点都踩到,都是踩中间的若干点,特别有时候会踩一些稀疏点,一些侧层点,然后再来估计这个曲面,原来这个曲面的性质。
就是这个sampling采样,那么比如一个图像,我们上次这个这个Lina这个图像照片,看起来是很光滑的一张序,事实上它是很离散的,因为它我们光散化的这个显示器就是一个点一个点存储的是吧。
所以我们还是包括我们的红绿蓝的RGB,这个这个这个格式的文件也是这样,包括包括视频,视频不是一个连续的这个画面,它是离散画面,只不过用25秒一帧,骗我们眼睛。
我们眼睛因为分辨这个时间的这个分辨率没那么高是吧,所以也就变成一个光滑的图像,曲线采样,大家都很清楚了啊,网格也一样采样是吧,所以好采样是什么,是说我们通过一些设备设设施或者计算。
来对一个连续信号进行观察,那么重建呢,这是我们未来要一个讲的一个课题,今天不讲啊,今天我只是把这个概念提出来,重建什么,我根据这个离散观察,怎么去估计这个连续信号的信息,这个叫重建。
重建实际上是前面我们花了很多时间去讲这个拟合,拟合就是重建,你只不过你用什么函数空间,你用什么函数去估计去拟合这些这些采样,还是用什么神经网络这个函数去拟合而已,好,那么那个这个在相容定理啊。
就是信息论的这个基底啊,我们我们的采样一定要充分多,要高于那个原始信号的平均的两倍,你这个重建才是可靠的,要不然这个是会有损失的,那么这个在Games101,应该也大家如果听过的话。
也这个严老师也讲过这个是吧,就是采样的问题是欠采样就是什么,就是因为我们的信号啊,我们来看看这个看那个例子,这个例子从两方面例子啊,假设这个蓝色的是原始信号,我们怎么只采了这些这个空源这些信息。
结果拟合出来是拟合出来一条黑色曲线,是不是就怎么就欠拟合了嘛,因为你这个这个圆圈这些点啊,间隔太太大了,还还没有达到这个蓝色这个信号,所达到的这个这个频率,甚至还没达到他这个一倍,别说两倍了是吧。
所以呢,你这个很容易出现欠拟合,就是欠拟合的现象,好反过来,假设我这个黑色曲线是我这个理想曲线,我采了一些点,这些点呢,这个信实际上是采的还挺好是吧,灰不黑色的,但是你用了一个非常,高复杂度的函数。
比如说这个蓝色函数,频率很高的函数去拟合他,拟合出来是蓝色这个样子是吧,上次他也没有表现出黑色曲线的性质,所以这个叫过拟合,好吧,所以你把黑色看成我们的目标,这个采样用蓝色去拟合这个点呢,就产生过拟合。
反过来你用蓝色是是原始信号,你用低频率去拟合呢,就欠拟合,所以在做这个采样和拟合过程中,这些问题经常存在,你不知道原始信号是什么,是什么频率,你采样到底原样本够不够,你就拿一个什么很武当的函数去拟合。
都是不对的,都会有问题,那么采样有很多应用了,就是stippling,就是这个点化图,就是根据这个图像的,这个这个这个灰度啊,或者颜色的密度来进行一些点的分布,也是一个采样用,还有我们打印机。
这个叫Halftone,叫半色调,Dithering也一样的概念,就是通过一些这样的密度不一样的采样,包括这里,来表达这样一个,就是只要用黑和白两色,就可以去逼近一个,或者叫那个近视一个图像。
甚至在打印机就是这样一个原理,因为打印机只有黑的一种颜色嘛,所以他要么打要么不打,通过这样一些格子就可以去逼近一个图像,今天我们不讲这个,我们看一下,曲面采样大家就很清楚了,大家已经做过作业了。
这个就是分辨线性并行函数,就是三项曲面,好,那我们现在先限定在二维,因为三维中有些概念,这个或者计算方法不一样,但概念都是一样的,好,我们看一下平面区,如果平面区你要采样的话是不是很简单。
就假设你要采样这些,一百个点,10乘10就有一个grade,采样非常均匀,是吧,没问题,好,关键是这种不规则采样,好,假设这样一个区域,一个这个桌面型区域,中间我采了这么几个点,那么在这个几个点呢。
那么你怎么把这个区域又把它分解成更小区域,因为我们要去分辨线性逼近它嘛,所以说我们很自然就会说,我怎么从这个采样点去剖分出一个这种三角化的区域,或者是叫平面三角网格,使得我剖分比较好,那么好。
这里一个剖分,我们怎么再看下一个剖分,好,在这里啊,我这个剖分等一下再再再来展,好,那么这个三角化就是什么,就是这个一个函数的线性逼近嘛,那么这采样呢,里面还有个叫蓝噪声采样Blue Noise。
这个呢,那我这里也不想你展开,大家有兴趣可以看在graphics这个paper里,这个这个graph有好多文章,特别是十十十五六年前吧,文章很多都在讲怎么去产生这个蓝噪声采样,蓝噪声是什么概念呢。
就是这个采样呢,既不均匀,也没有规整的pattern,你不能用这个格子去采样,因为人对这个重复pattern是很敏感的,那么什么你可以看到这个采样,看起来又很随机,但是呢又很均匀,但又没有那么规整。
所以这个叫蓝噪声,那么从数学上来讲,就是可以用这个这个信号的一个叫频谱图,来看他的这个这个这个噪声,这个分布为什么会有这个规律,那么这个频谱图呢,就是右边这个显示的这个样子。
你可以看到这个这里有有些噪声,那么他的这个频谱图呢,就是第一个比较高,第二个稍微比较矮一点,大概有三两三个峰值,这个叫蓝噪声,但这个也不是严格的啊,大家如果有兴趣可以看一下,因为这个在在很多应用。
包括一些rendering啊,包括一些这种imaging,这些都很有用,我这里不展开,好我们来我们重点是看一下,我们几个上的一些三角网格的构造,好我们我们来问这个问题,给了平面上这些点。
我怎么样构造一个三角网格,使得我们认为是可用的,或者是比较好的啊,好对于这些点呢,我们可以这样构造一个三角网格对吧,可以这样连啊,那么这些三角形是这样形状,我也可以这样连,注意哦,这两个图。
这个点点是一样的,只不过这个三角化不一样,那么大家如果用肉眼看,你们觉得是哪个比较好,是吧,可能大部分同学都会说左边的比较好,因为右边呢,你可以看到这质量相对来说,好像不是那么好,像像这个三角形。
这个角非常小,还有还有在这里是吧,还有还有这里是吧,对于说看起来这个三角形呢,就是比较比较狭长,就是就是不是不是那么胖,这个胖子,你看到这个三角形呢,这里的三角形大部分都比较正向。
正三角形或者叫靠近正三角形,胖一点,所以呢,我们我们会选择左边的会比右边好,那么这里就会会不会有一个度量,说哎,到底给一些点以后怎么样,三角形是最好的呢,是吧。
所以历史上就有一些几何计算几何的学家来研究这个问题啊,这就涉及到一个这个叫做质量的问题,那么什么叫一个质量比较好,我们从直观上来讲,左边为什么比右边好,因为什么左边的这个三角形形状比较更接近正三角形嘛。
是吧,所以你可以用什么最小角来描述,可不可以啊,没问题,可不可以用这个外接元或者内接元的比例啊,来来来度量啊,也没问题是吧,还有一个什么可不可以用一个奇值,这什么意思啊,假设我要度量一个。
度量一个三角形的好坏,我可以,算一个它到,正三角形一个影射,像这个影射呢,就在平面上就是用R乘以2的矩阵,M A,那么把它A在两个奇值上做一个奇值分解,σ1,σ2,U和V都是正交,那么σ1,σ2是什么。
表示了这个这个这个影射啊,假设是可以把它看成土球的话呢,就是一个是σ1方向,一个是σ2方向,如果它们两个都等于1,表示这个这个影射是一个这个等大的影射,叫这个等距,如果σ1和σ2差的很大。
就表示它们这个变得比较狭长,所以用σ1和σ2,就奇值啊,比如σ1比上σ2,假设这个比这个大,这个值非常大,那么表示这个质量就越差,就会用这样一个度量来表达质量,后面我们下个礼拜就会可能再解释一下。
minimizer这个东西,你也可以去取考这个质量,这个比例不要太大,太大就表示有出现了非常差的占氧型,其实是用奇值来表达,所以你可以看到,怎么来度量一个好的占氧型,你可以用不同的角度去度量,好。
那么历史上有两位数学家,这个一个叫Dinoli,这个还有一个叫Volnoi,这个两个词可能有些同学已经不陌生了,因为经常会出现,这两个数学家都是俄罗斯人,这个应该是上上世纪了,俄罗斯人他们发明了。
或者叫做对这种点阴颇分进行一些研究,好 我们来看一下,什么叫Volnoi这个颇分,那么这些绿点是一些平面上的点,那么如果给定这个绿点,我对平面的空间做一个这样的颇分,你可以看到每个绿点都有一个区域。
每个绿点都有一个区域,像这个绿点在外面,它的区域是没有边界了,就是一个无穷边界,像这个点的边区域就是这些多边星所凝成的,那么这个区域是怎么构成的,每个点的区域的点,都是离它最近的点所构成的。
比如说这个点离这个点是最近的,因为它离这些点都比这个距离是要远,就是这个性质,什么意思,每个点占有一定的疆域,你可以把这些点看成是,非洲大草原的狮子吧,狮子在这里住了个窝,它呢 这就是达成规则。
离我最近的领地是我的,你不能抢 是吧,这个地方令你近,就是你的,那么这些狮子窝已经构成了,问这些狮子的领地是什么,这个就是文而图,那么可以看到就这样定义,离它最近的点应该是归成它,不归成别的 是吧。
所以可以想象,这里上的每个点都是离某两个点,整距的点吧 是吧,所以可以证明这条边,就是这两个点的连线的一个中锤线,所以马上就可以证明出来,这里的所有边,都是某两个点的中锤线所构成的 是吧。
所以这个性质很容易被证明,我可以判定,只要把我们所有中锤线给找出来,那么删掉一些不可能的,那么留下的就是这文而图 是吧,文而图的这个对额图,对额图我们以前也提到过 是吧,这个蓝色是文而图。
红色就是这个对额图,对额图是什么,点变成一个面,应该是在这,边对边 面对点,就这样,它的一个对额过来的话,就是变成一个这种橙色的,平红的这样一个三角形,这个叫Denoy三角化。
所以文而图跟Denoy三角化,是一个对额关系,好 我们来看看文而图怎么,这里有很多不同的方法来求解,一个点击,我们这里先限制平面,点击的这个文而图,首先找两点求中锤线,中锤线去扫略一下,找到这个点。
那么再在看,那么再求它的中锤线,这样慢慢慢慢迭代,这个在网上可以找到好多这种,比较有效的方法去求这个文而图,在很多数据库里面,像CGL 包括后面我会讲到,这个QRAN口库里面都会有这些方法。
大家可以去看一看,这个不难,因为这个东西非常成熟了,求文而图有很多很多方法,你们甚至可以自己去实现,那么它的对额图叫QRAN generation,记住 在这个图。
就是文而图的对额图就是QRAN generation,这个DT Denoy generation,有非常好的性质,这个性质大家非常,这个比较通用的就是叫什么,叫空源性质,什么意思呢。
我每个DT Denoy的三角形,这三角形的外接源,这是其中的某个三角形,就是这个层三角形,它的外接源一定不含另外的这个文外点,就是那个给头的点,不会包含的,这个是个非常好的性质。
也就是说我每个三角形的外接源,只有这三个点在上面,但是这里是不含四点共源的现象,四点共源的话就不在这个范围之内,那四点共源也没有点的内部,只有在边上,还有这个叫最小角最大,就是我们刚才说的。
这个最小角是在这,因为以这些点为三角化的,这个三角化有很多很多,我对每个三角化,我求其中的最小一个角,它在这里,那么这个三角化的最小角是在这,这是最大,最小角在这,最大一一定是大于等于四,是大于。
所以顶端的这个三角形,三角化就有什么,最小角,这个最小角,它是所有的可能的三角化里面的,最大的一个三角化,所以它是最胖的,所以这个三角形是最胖的,好 还有这个图包,就是顶端三角形的最外这一层。
就是这些点的图包,这个性质也是非常被用来,求解这个点集的图包,当然还有好多性质,有些性质是一些比较抽象的代数性质,什么极角化它的粗糙度,什么极大化它的平均,这个算数平均,什么意思呢。
这个三角化的三角形的内接圆的,算数平均它是最大的,下面的一些我就不详细去展开了,有新同学可以去看一下,还有这个是,这个后面也可能会提到,它是在更高位空间中的一个,我这里解释一下,就是这是一个高位空间。
这是二维,那么这是三维中间的泡沫面,那么它呢,每个点就在这个泡沫面上也有对应点,把它这个投上去,那么这个三角化呢,在这里也对应三角化,这三角化跟这个泡沫面之间就有个体积,这个体积达到,达到应该最小。
这个三角化,所对应的三角化就是极端三角化,好,这个也是刚才的后面,这个是个代数性质,代数性质是我们101年证明出来的,也是一个新的发现,这个发在CED上面,就是我们把这个Denali。
Denali三角化是不是也对应一个是个网格,是吧,网格的话就有它的拉巴斯,就矩阵,我把这个矩阵L的这个特征根拿来,从大到小排序,比如说有n个点的,n个三角形的,有n乘n,好,那么呢。
Denali三角化的这个特征根啊,相对来说是最大的,比如说有另外一个,另外一个这个这个三角三角化,它有个拉巴斯,它也有比如说lambda1,1’,lambda2或者叫做μ吧,μ1,到μn。
我们我们我们可以证明,我们这个这个lambda是什么,是其中的最小的一个,lambda,就是最小的一个特征根,每个都对应都是小的,这个性质,好,那么怎么去求这个denali呢。
事实上是有一个非常简单的一个方法,就是就用刚才我这个叫做Mesh Improvement,那个就是最小线不断的去改进,不断改进,这改进规则是什么,你只要这个边交换,能够对这个角度变大,有有有好处。
我就交换,比如说这条边,我一交换之后呢,这个角呢变变,这个最小角变大了吗,像这样一个这样的话,这个最小角可能就在这,它比较小,是吧,所以就就就用这个交换,好,那么这通过这个方法呢。
只要出现了可以交换的这个最小线,就可以交换,就就交换,那么大家就会问,这样的话,它会不会收敛,那么理论可以告诉大家,这个是一定是收敛的,你只要去做,总会停止的,你交换不动了。
你这个最后的denali就出来了,但这种方法效率比较低,因为它要迭代很多次,并且这个不可并行,可并行,但是它迭代次数比较多一点,那么这里面有好多方法来求这个monoi图。
monoi图是个非常非常成熟的一个东西,所以大家没必要这个自己去发明新算法,因为相对来说还是很多方法是比较快的,特别是在这个库里面,有很多库都有这个monoi图的一个。
所以我也鼓励大家自己去用他们这些好的算法,去求这个monoi图,好吧,好,我想monoi图跟那个,刚才这个方法不就提到了,刚才光顺时候用到了那个怎么提高网络质量吗,是吧,所以我们下面肯定要去讲。
有没有更好的提高网络质量的方法,好,那么提高网络质量,你如果给定了这个点,我可以找到一个代码化是比较好的,就比较denali,是吧,大家没问题,但是呢,如果点的分布不均匀,注意啊。
这个图在这个图里面质量是不是也很差,但是这些点啊,放的不好,什么采样的时候就没采好,你这个点不好,你我这三样化最好也就是这个样子,也就是这个图是不是,但这个图呢,没法改变了。
为什么这就是denali的三样化了,这是出问题出在哪里,出问题出在这个点的采样,不够好,是吧,所以你要去提高这个这个三样化的质量,是不是就必须动这些点的位置,是吧,我们前面的光顺。
至少把每个点往拉巴拉斯这个方向去移,就有可能把它提高,对吧,还有没有别的办法呢,我们这个历史上也有很多几个方法去做这些问题啊,所以我们如果只是把点固定。
你再去求connectivity联系关系是怎么做都做不好,那么我们就要去动这些点点啊,那么有没有可能动到像右边这个点点,这个三角形分布呢,大家可以试一下啊,你们自己会用那个拉巴拉斯光速的方法嘛。
局部迭代啊,这个有可能会得到右边的结果,但有可能也得不到,因为他毕竟会这个缩练,好,那我这里介绍一个比较好的方法叫CVT,就是文内图,但是它是个centric的,centric什么意思啊。
如果一个文内图,CVT啊,如果他的文内图的这个区域的重心跟这个点本身是吻合,那么这个叫CVT,C就叫centric,那么这指什么,每个cell每个文内cell的重心就在这里,像这个绿的重心也在这。
像如果非非这个CVT,一般的文内图呢,这个红的重心是在这,但是这个点原来的点分布在这,跟他是不重合的,那么这就是非CVT啊,那么CVT有个什么好处啊,它的这个分布非常均匀。
你从这个落叶就可以看到这个这里的蓝色点,跟这两个点这里蓝色点更均匀一点是吧,好,大家有没有去想,我怎么样去生成一个CVT,应该马上就想象出来了哈,好,我们看假设这个点,我给定的分布,我去求一个文内图。
他不是他重心是吧,那么把这个重心移到他这个重心来吧,我把这个点移到这个重心来,我再去求一遍那个文内图,如果还不是是吧,我再移吧,所以非常非常好,就这样一个简单方法。
我就求一个文内cell diagram,就图,然后看这个点在不在他重心,不在我就更新点点,不在我再更新,不断这样重复,这就是著名的这个这个这个乱算法,这算法很早年就有了啊,乱算法就这样啊。
我给定一个采样点,我去求他的这个文内图,求完以后呢,我把这个点更新到他的文内cell的重心,再求再求再求,再求不断迭代,迭代到受链,所有点都动不了的时候,这个这个这个就基本上是CVT了。
那么CVT的这个CVT的这个对额图就是这个样子,就就这三角形就非常好,几乎都是正三角形,所以这样的话就可以,如果采样点个数给定的情况下,就可以生成一个非常好高质量的这样一个分布跟三角化,那么这CVT呢。
事实上有很多很强的理论啊,这个可能时间也快到,时间不够,我就稍微展开,稍稍稍微那个讲一讲,不展开了啊,就是上上端他是在求取一个CVT能量,就是每个这个x啊,就是这文内cell的每个点是离他的平方和。
因为刚才也讲了,这个平方和最小的点就是这个这个重心嘛,然后最重心加一个全,就全函数等于会有一个公式,那么如果从这个能量角度上来讲,你这个low x这个权上如果等于一个一个一个单位单位的话。
low他可以是等于一个单位的话呢,他就是CVT,如果不是单位,假如是个图像,有像素的这个区别,你可以加全,就可以是一个内容相关的一个CVT啊,这个不许展开,那么在CVT能量是是一个一箭可导。
这个在80年代或90年代的时候就已经有了,但那时候大家一直认为他不是CR连续,这个这个能量不是CR连续的,只是CE连续的,后面大概在09年,这个现在在微软的刘洋博士呢,就证明他是个连续函数。
所以大家就清楚的,这个CVT能量是可以两极光法,是可以求导,可以进行很快的加速的,那么这些历史我就不展开,大家只知道一下,好,那么你怎么样把这个CVT这个推广到曲面上呢,是吧。
那么你以前都是在一个平面上,在一个欧式平面上去做,所以他的距离这些东西就很好算,在曲面上的话,只要把这个距离变成曲面上的这个度量,曲面的这个这个测力线度量就可以推广到曲面。
但这个实现相对来说会比较复杂一点,这个后面有如果有机会我们还会讲到的话,我再提一下,就是在怎么把平面欧式距离的这个度量,就是欧式距离啊,变到曲面上的度量,曲面上的度量就是什么,事实上就是测力线。
测力线就是曲面上的最短路径,如果大家没有去学过微微几何,什么叫测力线,测力线就是一个点沿着测力曲线的一个积分,每个点都是测力曲线的方向,那么每个点呢,假设在一个球面上测力线就是那个大圆大弧或小弧的距离。
就是就是在曲面上的话呢,就是沿着最短距离吧,你就把它认为是离上网格的最短距离,那当然度量比较难算一点,那么局部算的话可以把它参照化到平面上去算,如果这个参照化比较好的话呢。
可以用参照化的平面上的这个这个距离去近视曲面上的测力距离,好,我这里就提一下,好,这就是可以看到左边的网格很差,如果用了曲面上的cpt呢,这个就质量变得很好了。
好,可能这部分我们后面还会有专题来介绍,我这里就提一下而已,好,那么相对于cpt呢,还有一个早年有个叫odt,odt是另外一种能量啊,这个也是可以做提高质量提高那个网格质量的,就是由这样一个输入。
这个点的个数m是给定的,然后通过点的移动就可以生成一个高质量的一个shrink,还是cpt,odt呢,比cpt在某些方面是有优势,就是它的它那个这个小的角度啊,不会太多,它都集中在在在那个60度左右。
你看它分布还会不一样,啊,这个,历史上也有很多文,一些文章在分析,我不展开,好,最后我给大家介绍一些个比较好的一个生成二维的平面的。
啊,这个,呃,一个三角化的库叫triangle,它的名字就叫triangle,啊,是那个CMU,卡尔德基梅隆的一个,呃,这个研究工作者写的一个库,这个库呢,呃,在业界还是比较有名的。
因为他也开发了很多年,不断在完善,他只要有新方法就往这里起家,到现在还在维护啊,这个以前课上我也提到过。
但今天我就比较详细介绍一下,他这个库呢,可以生成各种各样的带约束的Denali,带约束什么意思呢,就是我希望这些边在这啊,这些边必须是在边上啊,就是说他最里面可以经营这个Denali。
最外面可以经营Denali,也就是说我用户所教过的这些边呢,我可以成为最后上氧化的一条边,别的地方呢,是像这些结果,别的地方都是Denali性质,至少他能保证,他的所构成的这个上氧型。
在所有可能的上氧型里面是最小角。
是最大的啊,呃,并且可以看到他能做,还还可以去直接指定最小角的这个角度的,的这一个范围,因为因为如果呃直接去用原来的点去连接上氧型,但是达不到这个要求,他中间会自动加入好多景点啊。
那么这些景点叫standard景点,就是他会中间添加很多新景点来达到你的要求啊,让这个最小角超过某个角度,他这些东西做的啊,历史上是这几个这个区刻里面有很多这个不同算法能做到这事情,全国都能帮你做到啊。
你你如果感兴趣,可以看看他的源码,他的代码都是公开的。
也是开源的,你可以看到这个你,你甚至可以指定他那个三角形的最小面积啊,不能超过多少,他也能自动给你中间加入景点。
给你生成这些三角形啊,包括这个渐渐进的密度啊。
还有可以看到不同的这样例子,这个在他那个网站上面都能找到好,大家同学们不妨去玩一玩,因为呃生成这样三角形三角化或者叫采样,这是个非常重要问题啊,这个在以后大家会用得到,还有一些这个更高纬数的解析对象啊。
刚才这个流行曲面我也讲到了是吧,你可以看到你踩一下样,你可以采样很均匀,但我先用说呢,因为你也觉得可能呃弯的地方采样多一点,像这个头比较比较平坦,我采样少一点啊,这个叫自适应采样啊。
这个在有些应用中也是也是需要的,为什么如果你在这个上面也采用很密,你的点点就非常非常多啊,造成存储啊,传输啊,绘制会开销很大啊,所以能不能像这个这里一样的,我这个细节比较多的地方的采样多一点。
细节不多的地方采样像少一点啊,自行采样能能做,刚才那个全口就能够做到,同样在曲面上也可以做到这个事情啊,只不过度量上面稍微复杂一点,好,当然这个四边形化也是在很多应用中是非常有用的啊。
让常见我们现在刚才到现在为止都是讲的三角形,怎么把它升成三角形,那么如果怎么生成高质量的四边形也是,这边是在有些原理里面是经常要用这种网格的,也可以去做啊,我们后面会有专题再详细展开。
今天我们只是讲一讲这个这些概念,还有空间体空间体就是一个封闭的曲面内部,那么在表面上是用三角形,但内部呢就要用体,那么最简单的体就是四面体,用四面体对它进行剖分,好吧。
我现在里面要闪亮的点中间点连着四面体,那么对一个体来进行一个三角剖分,那么在有些原理里面的话,平面上曲面上是用四面形,内部呢,他们喜欢用六面体,因为六面体就是四面形在体质最广。
也有这个叫这个叫六面体剖分,这个叫四面体剖分啊,这个就是有不同的这样一个领域,后面我们会有个专题来讲,这就是一个例子哈,像这个一个人头,他如果如果一层层去看,我们放慢一点去看,都是四面体里面都有点。
那么我们在当前这几节课呢,都可能只是讨论表面的这个曲面,这个三角化的问题,没考虑体,因为考虑体的话,你要做体里面的一些分析的话,就要用四面体去做剖分,这个采样啊,才可以去做相关的应用啊。
那么可能在下面几节课,我们只是讨论表面上的这个点的分布,就三角网割,好,那么对于体的话呢,这个也是有一个比较好的库,TEDxGen,TEDxGen呢,我这里链接也放在这里面,他也他也是开源的啊。
就是专门生成高质量的这种四面体,给一个剖面曲面,他可以帮你生成一些不同的四面体,这个是一个华人学者施航,这个开发了很多年,我们在学术在做项目过程中,也经常会用到这样一个库,去生成一个实体的四面体剖分。
里面这个库呢,也会帮你去做自适应的采样啊,还有四面体化,好,Mac这个剖分采样仍然是一个比较难的问题啊,特别是在某些应用中,这里PD我们这个我们这个有限源FEM。
Finite Element Method,就是那个有限源分析,我们这个这一课不会讲,因为这个在做仿真时候是要经常会用到的,上次里面有个关键问题就是这个单元怎么怎么去剖分,因为我们去求一个方程也好。
求一些性质也好,都要去在他的离散的这个域上去做这个分析,做做计算,如果这个离散的不好,那么对计算误差造成误差非常大的,这里就有个例子,如果这个微方程在这里性质上啊,你可以看到如果你剖分的这里不够密啊。
那么你这里出来的结果完全是错的,本身理想结果应该是这样,它就会出现在这个样子啊,所以剖分就是采样,以及网络质量对很多应用,是非常重要一个问题,你这个采样和剖分不对,你可能导致你的数字误差啊。
这个因为这个连续性的计算,在一贯上面的话都是表现成为一个差分,相对的差分的精度不够,你就会导致数字很大的误差,就使得你后面的这个结果是不可靠的啊,所以你在前期就应该把这个采样的问题。
以及网络生存问题就要把它搞得非常啊,这个好后面的计算才是可靠和稳定的,好吧,好那个我们拖几分钟,因为中间网络那个断断了一下几分钟啊,好我们就把这次作业布置一下啊,作业8啊,因为上节课我也讲了。
所以我会带着部分第一期队的同学还是继续走吧,一周一个啊,多练一点,这样的话这同学能够对及格处理掌握的更好,如果后面同学跟上来,你可以参照这个优秀作业嘛,慢慢来好,我们这次作业什么呢。
就是实现刚才说的这个CVT方法啊,就什么,首先生成一个无论来波分,首先采用多少点啊,无论波分,然后呢,算中心把它移过去,不断的更新,非常非常非常简单,事实上你如果想偷懒,处理需求。
也可以去找到很多开源代码,就把这个事情做了,但我更建议大家去至少自己尝试一遍怎么去生成一个无论来算法,如果你不想尝试去实现的,你可以调用别的库,至少你要把这个库给用用起来,包括CGA哦,用用看好吧。
对于当然这些轮值都是已知的,你说你说我不重造轮值,去调研一下行不行,也可以好吧,大家体验一下啊,那个具体我就没有没有限制具体的这个二维形状是什么啊,你们可以去自己去自己去购得一些这个二维形状啊。
然后你们去采样啊,也可以去看看有没有带那个全的啊,像这里密一点这里稀一点啊,密的话是什么意思呢,就是这里可能图像啊,有些绘图纸啊,就像我刚才在找这个PPT找找几页,有个那个stippling啊。
也是一种这个是可以改进的CVT来做的好吧,所以呢,如果您仅仅是把CVT拿来用一下很快就做完了,但是如果有你们有兴趣的时间可以自己去尝试造不同的CVT,甚至密度不一样的,有些地方密度很密,有些地方很稀啊。
你去看看这个全稿上面是怎么去用的好吧,因为这两个库大家学会了以后很多,你们在做实际问题的时候呢,都会都会受益,好,那这个比较难了,就是在曲面上啊,这实际上因为关键在于这个就思考吧。
因为我也写的是可可选的,那如果有比较技术比较好的同学可以尝试一下,他那个CVT呢,实际上就是在曲面上定义那个测距离来来那个期待那个OCD的这个这个距离好吧,所以这个目的呢,就是通过这个练习呢。
体验一下无人论算法,还有CVT算法以及这些数据库的应用,那因为学会了以后呢,后面后面的这些作业都会都会用到有可能会用到这些库,特别是这个产样跟网格化这块好吧,好,那么我们今天作业因为比较简单。
我们也只给一周啊,有点开放性的啊,现在同学们我看这也将近20个多同学都始终跟上啊,基础都还不错,那个技术上面也越来越熟练了,所以呢,我希望大家去看开放式的啊。
你们去自己去创造或者是怎么样生成更好的一些这种文案铺分的一些例子啊,写在你们报告里面,然后下个礼拜,希望有些同学作业被选上能够给大家展示展示一下,好吧,好,大家发挥自己的能动性和创造性。
期待你们的作业的表现,好,今天的课程就到这里,好,那么好。
就这样好,再见,嗯,未经许可,不得翻唱或使用,没人照顾我。
GAMES102:几何建模与处理 - P11:曲面参数化 曲面简化 - GAMES-Webinar - BV1NA411E7Yr
好 各位同学晚上好。
首先讲一下这次卓越8的情况,这次卓越总体上提交卓越的同学完成情况都还是比较良好。
我们看几个代表性比较做的比较好的同学,卓越主要是实现那个CVT的ROAR算法,就是一个迭代过程。
这几个卓越的同学的卓越还是界面比较好。
那么这里有个demo来看一下,它是个实时生成一些点,然后用ROAR的算法来迭代,这个点的个数可以用户进行输入,可以看到它对这个迭代次数也是可以进行一些修改,因为从理论上来讲迭代无从多次。
就是总是能收敛的,但是有些情况下收敛会比较慢。
这是另外一个同学,大家看一下他的结果,他也是随机在边上生成一些点,然后构成我的内图,同时他也显示了Denali赛亚波芬,然后同时在做一些迭代,像这个情况这个case比较好。
到这里就生成一个比较规整的一个市面性网格,赛亚网格。
那么这是另外一个同学,同样他实时的进行迭代,可以看到这个他也在用鼠标交互增加一些点,那么这个结果也在实时可以计算出新的文案,他这个交互增加的点,大家可以看到,他在增加文案图,基本上是在更新。
那么当然文案图你也可以进行一些变密度的,密度的来源于图像的灰度,你这样的话就可以生成这种像stippling,这种艺术叫stippling,这个点的个数跟你这个图像的灰度相关,颜色越深。
那么他的点的密度越高,他用cpt来做,效果也还不错,这个部分同学的优秀代码和卓页,我们也会挂在这个卓页网站上面,供大家参考,同学们可以根据这个优秀卓页来对比一下,看看自己实现的这个卓页效果,好。
今天有两个主题。
第一个主题是曲面参数化,参数化。
同学们应该是在前面卓页已经体验过,是吧,那么我们以前一直从影射开始讲,这个影射不同的维数到不同的维数空间,影射的本身维度就是定义的维数,那么可以看到这个,如果从二维到二维,那么是平面影射。
二维到三维就是一个曲面,这是个正向影射,那么这个R3中的参数曲面,实际上是一个平面区域映射过来的,所以它看起来是三维空间的一个曲面,它本质上是个二维流行,所以这个以前我们都非常清楚,那么这里就有一个。
另一个问题,就是给另一张曲面,我要去找他的参数域,就是它的这个对应的二维,这个区域或者定义在哪里,所以这里这个问题就叫做参照化,那么这个参照化也叫做展开,因为很形象,为空间的曲面。
怎么把它展开的一个平面,所以它本质上数学问题,就是找一个这个影射,从R3到R2的一个影射,那么使得这个影射,那么这个点之间有一对应,那么这个参照化,为什么这个事情很重要,这个在以前做曲面曲线拟合的时候。
大家就体会到了是吧,这个大家做过作业,如果参照化不对,不好的话,对这个曲面的拟合,曲线拟合会有影响,虽然这里是一个曲线拟合,曲面拟合也是一样,如果你这个参照化空间,这个不均匀。
就会导致这个拟合的这个曲面,会呈现不好的性质,那么参照化,还有很多其他应用,这个我们有没有地图展开,就是一个球面展开成一个平面的过程,是吧,所以在用地图绘制过程中,也是用到参照化的一些技术。
在那这个地图绘制有不同的技术,不同的这个展开结果,他们在地理学,他们叫这个球体投影,那么在图形学中用的最多的就是文理影射,我准备一个网格,中间有个割缝,把它展开以后呢,然后用一张文理给它对应。
所以每个顶点呢,就有一个文理坐标,文理坐标有了以后呢,它这个曲面的这个这个对应的这个点呢,就有个颜色可以汇译过来,所以可以给这个曲面进行一些贴图,当艺术家基于这个贴图,也可以在上面进行绘制。
画一些这个颜色和图案,使得呢,这个相当于是在曲面上进行画图,因为有的时候在曲面上进行操作不方便,可以在平面上这个,这个叫文理地图,就这因为在这个例子里面,它这个网这个曲面被分成了若干部分。
每一部分都分别参照化,所以就变成一个若干部分的一个参照化的一个拼接,这个叫Atlas,叫文理地图,这个这个为什么分割成若干片呢,主要是每一片参照化呢,它的这个扭曲会比较小,所以分割的比较小片的话呢。
就会有更好的效果,这个在后面我们也会提到,但还有好多其他的一些应用,也是基于这个参照化的一些,这个结果,后面我们陆陆续续会展开,我这里就不详细介绍,那么把一个曲面展开成一个二维的一个形状,或者定义。
我们以前在讲微微几何的时候就提到,有一种理想的曲面叫可展曲面,可展曲面呢,它能够没有任何扭曲,把它展开成平面,是吧,那么可展曲面你也可以这样理解,是由于一张平面的一张纸,可以没有任何的这个皱褶。
或者是挤压,然后把它拼成的形状,那么根据理论的这个微微几何理论就可以知道,这个可展曲面只有三类,柱面,锥面和切线面,是吧,所以他们是可以没有任何扭曲能展开来,显然对于非这种可展曲面的话。
他们就没这么好的性质,所以一般的这个曲面展开都会有一些形变或扭曲,那么最理想的当然是这种可展了,但是一般来说我们后面就会,对任意曲面的话,我们需要怎么去计小化这样一个扭曲,使得参照效果会尽量好。
有些参照性质呢,参照性质的结果也包含保持别的性质,比如说这个褒角,我希望这个夹角尽量保持住,但是对于这张曲面来讲,连曲面的夹角就是这个点连着两个夹角,就是表示这个两条曲线的切线夹角。
他们尽量保持这个叫共型影射,当然有些保持局部面积,有些是保持这个等距关系,那么从一个影射观点来看的话,这个中间的这个保持性质,事实上就是这个F的一个几何量,就是雅各比这个行列式的一个。
这个雅各比决策的行列式,这个行列式的模,这个行列式的这个决策值,就是度量的这样一个保持性质,如果这个雅各比行列式等于,1就是局部等距,大于1就是膨胀,小于1就是收缩,小于0的话呢就是发生了翻转。
就是用F的雅各比这个行列式可以刻画,那么这个由于我们讨论的这个曲面呢,主要还是一些理想表达,就是我们曲面分成了很多小单元,所以我们一个F呢,可以把它分解成若干个函数,每个函数定义在这个小单元上面。
F呢是一系列的这个小单元上的函数的一个拼接,只不过这个拼接呢要保持一些光滑性,所以我们讨论F呢,就可以把它分解成讨论一些小单元之间,在我们这里小单元就是三角形之间的一些这个变换,我们知道这个小单元之间。
三角形之间变换在平面上,就可以是用一个比较简单的函数,比如仿真变换或线性变换,就来来近视,也就是说我任何一个复杂的函数,我在一个局部上面就可以把它变成一个线性,就是像是就是菜鸟展开的一阶部分,好。
那么我们把一个是R3到R2的这样一个映射呢,我把它先简化,就是R3的每个每个小单元,我可以没有任何扭曲就旋转,把它摊到一个参考的一个R上面,那么好,那么呢,一个这个到这里的影视就变成了这个到这里的影视。
所以我只要考虑每个每个顿小单元三角形,它这个影视,就是这个这个影视啊,它的这个扭曲是多少,因为因为在这里面只是一个从R3空间旋转到R2空间,所以这里没有任何的扭曲,所以扭曲产生是在这个Phi这里产生。
就就这个圈圈里面这个Phi产生的扭曲,所以我们要去讨论这个总共的扭曲变化呢,只要讨论从一个这样的全转单元形,就这个全转过来啊,变转到我的参数域上,单元形之间的一个扭曲程度,那么这由于这是个性应变化。
性应变化中间的那个矩阵呢,就是这个Phi,就是这个Phi可以表达成平移加旋转,所以用骑士坐标,这也是我们同学学经常用的,L是一个R3的旋转,T是一个平移,那么我们这个平移。
因为不发生任何的这个对扭曲的贡献,所以一般扭曲就由这个L2*2的这个矩阵来度量,那么怎么去度量一个三角形之间发生的这个扭曲程度呢,这里在数学上我们对L可以做一个分解,叫SVD分解,叫奇值分解。
这个分解是把任何一个矩阵,不管几位的,我们这里是R*2,可以把它分解成这样形式,左右两个都是正交阵,中间是一个对角阵,对角阵就是这个矩阵叫做奇值,也就是L转之L,这个乘积的一个乘乘根,就是σ1和σ2。
我们先假设σ2>σ1,那么它的几何异非常非常好,就是说它如果把一个单位圆,如果局部一个圆,整个变成了一个椭圆,这个σ1和σ2就是这个椭圆的长轴和半轴,你可以看到σ2如果越长,表示扭曲拉伸的非常非常扁。
如果σ1=0就向下退化,所以我们可以用σ1和σ2来度量,这个变换所发生的这个形变程度,从这个图上可以很容易就知道一些度量,我们可以看到,比如说σ1和σ2等长,但是有可能很大有可能很小,这就是相似变化。
保角,如果σ1*σ2=1,表示这个单位椭圆跟这个单位圆的面积是一样,是吧,保面积,如果σ1和σ2都等于1,跟这个圆一样的就是等距,所以就推出了很自然就理解了这样几个度量,如果你要保角怎么办呢。
σ1和σ2要相等,就是保角conformal,共型,它的乘积等于1,表示面积相等,那么如果这个等于1,表示这个保刚性,因为都是单位圆变成单位圆了,对参照化的话还有这个就是怎么保持定扭曲。
那么可以看到不同的扭曲,这个参照化是不一样的,这个扭曲是不一样的,你看这个扭曲就小很多,这个就被拉伸了,那么另外还有一个问题就是这个叫做翻转,如果这个翻转问题呢,可以这样来就是可以看。
如果上个顶点它的顺序V1 V2 V3是一个,像这里是顺值针,那么如果变成了对变换以后,它变成了逆时针,那么是不是这个这个orotation,就是这个角度发生了翻转,这时候就是我们不希望的。
因为翻转容易产生这种回影现象,翻转是翻转产生以后呢,就是有两个点,两个三角形可能会有重叠,会对应一个纹理,这样的话就会这个使得纹理进行一些非常不好的现象,如果没翻转的话,就是局部是一一对应的。
就是不会有这个回影现象,所以翻转也是我们一个比较考量的度量,那么对于对于这个形变的话呢,那么这里有个图啊,就像这个点从这里慢慢的往这边靠,可以看到这个它的这个sigma,就会就sigma1就会越变越小。
到这里的话,sigma1就会趋向于0,好当这个点跨越这个边的时候呢,sigma1就变成0了,是吧,你可以看到这个sigma1往0越靠近0,那么这个退化程度就越高,好再往上往前跨的话呢。
sigma1就变成负了,因为它的就发生了翻转,就是从右手系这样一个变成了左手系,这样一个这样一个朝向顺序,这就是sigma1小于0就会发生这个事情,所以从这里可以看到,怎么去避免这个翻转。
就sigma1不能够跨越这个0值,是吧,所以sigma1要大于0,要不然sigma1小于0就就那个就会发生翻转,这个从我们刚才那个雅克比这个描述里就可以看到。
因为雅克比这个值啊就等于sigma1乘以sigma2,这两个乘积,所以如果中间有一个值是小于0,那么这个雅克比就小于0就发生翻转了,好所以这个很容易理解,好那么坐参的话呢。
大概很多年坐下来问文章非常非常多,到最近也还是一个非常火的一个课题,每年都有一些在sigma上面都有一些好的论文,我们也在这上面做了长期十多年就做了非常多的工作,特别最近几年做了一系列工作。
那么等一下会来介绍一下主要一些工作,好那我们我们把这个参数化分成三类方法,那么我们先介绍第一类TART,TART方法呢大家都实现过,上次就是你们实现的这篇FLOR的方法。
它是根据TART这个理论来来做的,并且拓展了,它这个方法很简单,就是对一个开曲面我们有一个边界,先把这个边界点呢印到一个平面上的突突边形,可以是圆可以是矩形或正方形。
然后呢其中每个点呢都是它一领域的一个线性组合,这个组合这个系数你可以自己定,可以是均匀权,也可以是跟几何相关,口谈权或者什么权,那么就这样的话整个系统呢,因为边界是被固定了。
所以它整个系统呢就是一个一个系数方程组,就可以求解这个方程组就可以就会得到这个解,这种方法有个非常好的好处呢,就是它有个理论保证,它怎么说呢,它说这个边界如果是个突的,那么它的这个结果呢就一定能保证。
理论上保证是没有翻转的,就是这个解是个非常好的,理论上能保证它是一个非常好的一个value的一个解,所以这个方法虽然很简单,但是它这个理论性保证非常好,所以至少可以生成一个没有翻转的一个结果给我。
但是这个由于这个边界是固定的,它的结果往往就会扭曲很大,这显然了因为它的边界不够自由,很多点就会挤在一块,导致这个扭曲非常非常大,所以这一类方法就很多人也会去在那些改进,最近几年151617可以看到。
对这种方法也进行了改进,好那么另外一种改进方向呢,就是基于这个几何的优化方法,就是这个就是基于几何的一些一些一些度量,那么早年的话有这个ABF,叫Angle Based Flattening。
就是基于角度的一个展开,上去参照化嘛,它的一个出发点就是说,我去保持每个三角形的这个角度,如果这个角度保持好了,这个三角形相似性就相似了嘛,所以它是把角度当作变量,求解这个参照化的这样网格。
那么它的变量就是这些角度了,你可以看到对于这个其中的一个这个空间三角形,空间四面这个这个三角形变到平面以后,它的一圈要满足什么性质呢,要满足180度啊,还有每个三角形要保持。
那个一个三角形的话内角和是180度,所以呢,它求得这个每个角的角度以后呢,它就可以重建出这个网格,所以它的变量就是这个角度,这角度约束有三角形内角和一派,并且它为了防止这个防防止那个这个角度。
这个变成零,所以它设了一个非常小的值,每个角就必须大于等于1平,这个值很小而已,还有每一个点的一圈,它就加强等于2π,还有一个这样的正弦定理所保证的一个比,每条边比上正弦,等于这条边比这个正弦。
所以传递过去以后要满足这个势质,所以它就把这个参照化的网格的角度作为变量,去优化求解,如果这个这个解是存在的,那么它就可以保证是没有翻转,因为这个这个强约束是在这,它只要优化出来能得到解。
当然有可能得不到解,这个得不到解它有参照化失败,那么整个的话就是它把这几个约束,变成一个这样的拉格朗的层次方,就可以就可以做,好,那么就minimize这样一个函数,这个目标函数就可以去得到解,好。
那么这是2008年我早年的一篇文章,这个文章语音还是比较高的,也比较知名,就是它就是我们把每个散热器,这个这个形状的尽量保持是保持它的那个旋转刚性,那么这篇文章读起来或者实现起来也也不难。
大家有兴趣可以去可以去仔细看一下,在未来我们也还会再介绍这个工作的一些方法,我这就不展开,那么这篇文章是我们团队的傅晓明,当时他还在读博士期间做的一篇文章,他呢这个变量呢是什么。
是一个散热器到另外一个散热器的一个变换的系数,他去优化这些系数,不像刚才优化角度优化刚才的那个旋转,这是变优化这个系数,就是那个变换,那么去求得最终的参考结果,好,那我们今天重点来介绍第三类方法。
就是能够严格保证Foldover Free的一个方法,这个方法呢来源就是,实际上是跟第一种方法有关系,第一种方法理论上保证了它一定是没翻转,但它的问题在于什么呢,在于它扭曲很大,那么这个方法就在想。
我能不能从这个方法本身开始,不断的去优化调整这些顶点,调整顶点过程中呢,使得我的扭曲能够不断减小,一步一步减小,直到减小到不能减少为止,并且在做的过程中始终保持上扬型,不发生任何的退化,就是不发生翻转。
这时候就能保持严格的不翻转的结果,但是我的扭曲给我降下来了,那么这个图呢就是,这个color bar就显示了,越红就表示扭曲越大,越白呢表示扭曲越小,可以看到,从这样一个非常多的红色。
慢慢就优化出这样一个结果,这个就没有红色,就是表示扭曲很小了,那么具体怎么在度量这个扭曲,在这么多年来,能不能发明了不少的这种度量扭曲,我们前面提到过,σ2比σ1要大,你可以发现。
这些扭曲度量都有一个共同的特性,就是这个小的σ,就是这个c值都在分母中出现,我们刚才也提到这个想法,σ1如果一旦去向亿零,它的这个倒数就去向正无穷,所以你为了避免这个发生翻转。
所以你不希望σ1变成去向亿零,甚至往负的变化,所以你只要去最小化这些能量函数,这些能量函数里面都有σ1作为分母,就可以避免σ1往零跑,往零去靠近,因为一靠近的话,这个目标函数就非常非常大。
所以它为了避免这种非常大的值,它一定会去牺牲别的太阳型的一些度量,所以这里面任何一个度量都可以拿来去做,早年有这种形式,那么最近几年用的比较多的度量是2015年,这篇文章所提出来的。
这个叫对称基地克略能量,你可以看到这个σ1和σ2是对称的,共同考虑两个奇异值的这种度量,所以我们后面也是用这种度量为主,当然你说我用别的度量可不可以,当然也没问题,当然不同度量它的优化难度可能会不一样。
好 那我们就把这个问题就变成这样一个问题,就是我去对每个太阳型计小化这个度量,那么有什么约束呢,我希望这个雅各比要大一点,雅各比大一点就表示没有反转,那么实际上是这个σ1和σ2。
实际上是一个矩阵的奇异值,它是跟那个变量,就是那个顶点坐标是非常非线性关系,所以整个系统就是一个非常复杂的非线性,非突问题,就求解起来会比较困难,再加上t的个数可能会很多。
所以整个求解效率就是大家要关心的问题,那么对于优化来讲,如果同学们做过优化的话就清楚,我计小化一个能量函数,实际上就是朝它的一个t度方向去走,那么这个t度呢,如果是用一阶的t度,就是一阶方法。
如果是用海选阵代表的t度,就是那个两阶的信息的t度,那么就是两阶法,就是牛顿法,当然中间还有一些近似的牛顿法,牛顿法等等,所以它本质上都在,如果是两阶方法的话,就都在怎么,都在找这个方向。
海选阵的me这个方向去走,然后呢,还有一个就是line search,就是走多远,这个点走多远,所以整个优化就是一个这样的过程,给定在末班函数,我去,当然有初值是什么呢,初值就是那个tars。
这个参照化所给的结果,所以由那个初值,我就不断的去更新这个点点的,这个这个坐标,朝某个方向更新一个距离,就可以去做这个优化,好那么因为优化过程中呢,实际上一个比较重要的量,就是有几个量,一个是方向。
一个是步长,这几个量,初值已经给定了吗,所以说方向和步长,那么,这五六年来,这个有很多paper,就在做怎么来快速求解,这个非线性非图问题,像这篇15年这文章,就是利用一个擬云端法的一个方法。
lbfjs这样的方法,那么我就快速练一下,咱们这是利用这个,尼斯兰拉巴拉斯,作为海神针的一个近视,作为一个二次逼近,然后来做这个优化,那么这个是用加权的一个拉巴拉斯,来做优化的过程,17年。
这文章也是跟刚才一样,是属于一接方法,那么这篇是用了另外一种,这个近视,用一个像量场的一个,算子来逼近这个海神针,也是属于一接方法,大家有兴趣也可以去看,我们下面把这个参考文献都写在这里。
这个CM方法是最近几年,比较有名的一个方法,这个是他,因为他是变成了两接,两接以后呢,他就比一接是要快,是吧,他是用了这样一个矩阵,的一个,也是拉巴拉斯,这个一个算子,来近视这个海神针,这是比较早。
就是最近的18年,一篇文章,就是用了一个拧刃法来做这个,优化,那么这个也是属于两接方法,好,那么我想多花点时间来介绍一下这篇文章,这篇文章是我们也是18年,是C-graph这一篇文章,这篇文章呢。
因为前面几个方法,大家可以看到都在都在找啊,就是怎么去找这个海神针的近视,就是这个框架里面的这个edge,那么这就是大家都在,在优化过程都是差不多,只不过就在优化或者近视,更好的这个海神针。
然后使得这个优化过程快速啊,稳定啊等等啊,我们这篇文章的思路呢,稍微有点不一样,就不一样的,实际观察,你可以看这张图,这个图这个大位的头啊,是只有脖子是个边界,所以他边界一展开以后呢,是个圆啊。
那么中间很多头发这个顶点就挤在这里,导致这个扭曲非常非常大,这个大的原因就在于这个很多顶点,是挤在这里吗,是吧,所以呢,这个如果你去优化那个能量呢,就发现这个中间的那些这个底球性的非常非常大,就是很大。
而从优化观点来看的话,如果你这个函数函数,那目标函数值很大,他要去下降,他的这个下降速度呢,就是或者是这个不常的,啊就不能设的,就是你下降这个过程呢,就会不是很快,是吧,所以呢。
我们的一个想法就是我们把一个极大扭曲的这个值,把它压下来啊,我们不去优化这个原始目标,我是中间有一个目标函数,但这个目标函数的这个这个扭曲呢,是有借的,那这时候我的优化就比较快,好。
当然我优化完以后的话,我们我们优化的这个目标呢,并不是原来的目标,所以我们去更新这个目标函数,然后再去做优化,所以虽然他是不断在更新目标函数,要做多次优化,但是呢,他中间的每一次优化过程呢。
由于没有非常大的这个这个能量值,所以他优化会比较快,这也是我们这个方法的一个非常大的特色,我们不是去跟传统方法一样,去去找好的海选证的逼近,而是什么把目标函数进行进行修改啊,指着优化变得更快,好。
那这就是这篇文章的一个过程啊,好,我们,有一个数值值,那么我们中间构造一些啊,这个参考三角形,使得这个扭曲啊,不是太大,然后呢,我们再去不断的去更新这个参考化啊,以及这个reference。
这个这个参考三角形,然后不断的去去去优化啊,然后就得到最后结果,好,这个过程中也始终是保持跟刚才那些目标,还是一样啊,这个这个防防止翻转啊,那么我们这里就不详细去介绍中间那些细节啊。
大家可以在我们的主页上可以去找到这个,当时SIGGRAPH的一个PPT啊,里面有非常详细的介绍,我只是介绍大家啊,这个,我们这篇文章的一个思路就是去更改目标函数,不断去更改目标函数。
然后达到对原始问题的纠结啊,跟原来的思路是非常不一样啊,毕竟结果也非常好啊,数据也也也相对来说到现在为止还是最快的,好,可以看到这里我们对比了当时18年时候的文章,对比了这几个方法,可以看到他的。
可以看到这个这个图,这个图呢,就是一下子我们的人量下降的很低了啊,你看这个红色这个是CM方法啊,就是收敛的就比较慢一点啊,时间也比较长,我们是速度非常快,那么这个是一个非常大型的一个模型啊,Lucy啊。
这个模型有看看这里有900K,90万多万个点啊,你看到我们这个蓝蓝色就是我们的方法啊,然后这个下降的很快,迭代94就已经达到这个能量值非常非常小,别的方法还在这个不断的迭代来收敛啊,好。
这个另外一种常译化的特性呢,就是叫bijective,bijective是什么,是一个global的一个injective,实际上什么是说局部的没有翻转,是是也是局部的叫bijective。
他是global的bijective,就是什么,我我边界也不允许你在远的地方相交啊,不允许碰撞,局部的翻转表示局部在碰撞吗,好,那么全局你看这里,虽然每个每个每个点局部来讲,没有这个翻转。
但是他全局发生了碰撞,就是错综,就是叠在一块,因为叠在一块的话就有问题,就是你你这个网格的曲面上的两个点,对应了同一个纹理,也会发生这样一个纹理,这个这个杂乱的现象,这里有个图,这里有个红色块。
上次这里只有一个块啊,但是这里被印成两个了,这里没有发生扭曲,没有发生这个全体之交的话,就是正常的一个纹理的印词,好,那么这种呃global这个bijective啊,难在哪里呢,难在哪里。
它不仅是这个印词的这个函数,或者印词这个有个有个别的一个性质,它是个整体行为,因为他要边界上面都要不发生重叠,就不发生碰撞,所以它是一个比较难判断的问题,因为它是一个像是把边界看成是一个形状的话呢。
它就是一个这个呃边界不能自交,也不能碰撞的一个问题,所以它它这个全局的一个检测问题啊,所以不能光靠就印词函数的一个局部性质来做判断,所以它的计算量是比较大的,到现在为止呢,也实际上是在我们这个工作之前。
我们我们的工作是今年发表在siggraph,在我们工作之前只有两个文章来做的做到这事儿,做最大进行加速啊,一篇是15年这本文章啊,用一个拟的方法来做这个加速啊,但是他收敛性比较慢,17年这本文章呢。
一个比较巧妙的方法想法就是什么,他在这个形状,他在参照画的外面的又包了一层啊,更大网格,因为如果这个更大网格不发生自交,是不是就不会发生碰撞,所以他这个非常巧妙的方法,把它嵌在一个更大网格。
只要这个更大网格上面用传统方法去做,那个那个那个免自交啊,因为因为这些三星外面三星不发生自交,就保证了他们不会发生碰撞,对吧,但是他也是收敛会比较慢一点,那我们今年有篇论文呢。
发表在今年siggraph啊,这个所以你可以看到我们再看一遍,你可以看到这同样时间,我们一下子就收敛到结果,他们还在不断的去迭代啊,像2015年这文呢就更更慢了啊,看他能不能收敛到我们这个结果啊。
差不多啊,因为这是个全球经济新闻题,他不保证结果要要是为的,这个这个因为有可能他们找到的是其他的一个绩效值,好这是个比较啊,我们看一下,好那么这个这个是比较的,我们跟这两篇啊。
这个全局byjective的方法,可以看到他的收敛性啊,速度啊就会比较快,时间用了五秒啊,他们啊,这方面还还在那跑啊,那么这个是这个是刚才说的progressive文的文章。
就是progressive就是利用这个改变目标函数值的方法去做,但是这个pb方法呢,他是不保证全局啊,无织交,他全局有可能产生织交,虽然他总体上会比这个我们方要要要快一点,但是快的快的不多啊。
所以我们比这个方案要慢一点,但慢的是就像是消耗了一点点时间,达到了一个全局啊,这个byjective的一个结果啊,你可以看到0。26,2。23,11。77秒啊,是比这个两个方法要快快了。
就将近一个数量级了,是吧,所以一下子我们把这个问题的这个纠结啊提高了一个数量级,那么对于一些比较极端的例子,像这个例子比较是这个曲面是一个比较极端的例子啊,像我们很多方法都都没法没法做到收敛。
因为在这里面他这个啊,中间有一步能过去啊,但我们方法还只能能够达到非常完美的解,好,那么参照的话呢,是刚才是对这个椅子的一个开曲面,是吧,就是有边界的曲面来做,但是对于一张这个封闭曲面。
比如地球是封闭的一个球面,那么你要把它展开就一定要有个割缝,把它割开才能展开,是吧,所以曲面割缝问题也是一个非常重要的问题,因为你不割开,你就没法去把它摊平啊,一个封闭的球面是没法摊平到球面,是吧。
所以他要不要割开,而割开这个问题呢,也有很多配方在做啊,这是早年的2002年有篇啊,比较有名的文章叫geometry image,结合图像,他呢就是贪婪式的去找这个啊,这个他的参照画的一个最大的扭曲。
然后到边界找到最短路径,最长距离反映到网格上面就是一个割缝啊,所以他不断去找割缝,使得这个扭曲啊,这个能接受为止,这个割缝就找到了啊,我们还有这是两年前我们的一个博士生柴双铭做的一个割缝问题。
他是沿着这个球面上,我先把它印到球面,因为他是个亏口亏零的这个局面来讲的话,他印到球面球面以后呢,找这个最大扭曲的点把它连起来,那使得这个展开以后也会扭曲比较小啊,这几年也有不少文章啊,你可以看到啊。
autocad的这个这两个都是啊,都是那个C管文章,就是想办法在这个曲面上找更好的割缝,使得这个减少中间扭曲啊,像这篇文章他还可以实时的去割开这些这些这些曲面,你可以合并起曲面。
然后使得他的总理上的这个割缝啊,尽量的好,这是18年一篇文章,这篇文章的考虑了不仅考虑了割缝,这个使得参照化要扭曲小,而且他还考虑的割缝的这个总长度尽量小,这是个非常难的辩论问题。
这个文章提出一个辩论方法去找这个割缝,好,那么割缝问题呢,在去年我们做了一篇这个有很有意思的文章,本质上也是在找割缝啊,那么这个是做什么呢,我们先看一下一段视频啊。
那么现在在冬天冬天刚好是这个橘子上市时间啊,相信同学们也是了,这个这个时间也在吃橘子,这个视频显示一个艺术家在橘子皮上面用刀子,找割缝啊,割完以后的话,这个橘子皮展开成什么呢。
展开成一个这个这个很有意义的一个图形啊,是一匹马,是吧,很很神奇啊,就是这个他在橘子皮上割缝啊,展开以后啊,能展开成一个目标函数,这个问题上是马上就应该想到,他就是个三人化问题,是吧。
只不过这个割缝怎么找啊,这个比较不知道,是吧,所以我们后来去找了一下这个艺术家,是个日本的艺术家叫Okada,他呢,这个他有很好的空间感觉,因为他对这个割这个橘子皮还是比较熟悉。
所以他要去经过大量的尝试,才能做出一个例子来,比如说他想割一匹马,他他需要割很尝试很多次啊,这是他他的一个一个demo,可以看到要浪费大量的橘子,才能找到一个合理的解出来,从我们这个,这个几何问题来看。
我们中间一个科学问题是什么呢,就是给一个曲面,我怎么去找空间找一个割缝啊,使得他能展开之后,能够逼近或者说能够成为我们用户想要的一个二维形状,注意这个形状也是用户输入的,右边这个啊。
割缝是要我们自己去找的,所以说,所以他是给定一个二维形状,还有一个橘子皮,这个曲面如何去生成或者找到这个割缝,只展开以后能够逼近我的那个二维形状,但这个问题实际上比较难的,因为因为这个。
你以前的参照的话呢,找割缝的做什么,做事目标是在脊脚化他的扭曲啊,而现在呢,事实上是要是希望他的边界啊,能够逼近我一个用户所以输入的一个形状,所以他的目标是不一样的啊。
并且这个这个目标是一个关于边界一个global的一个性质,跟刚才那个自交一样,他是个非常难的问题啊,我们想了很久就找不到方案,后来突然发现这个印象去思维啊,反正这个这个方法啊,这个就找到了啊,他什么呢。
我们把一个这样的用户输入形状,把它把它通过一个映射,印到球面上去,如果印刷过去以后,刚刚好这个这个就拼了,缝子没有了,是不是这个这个这个缝的边界就是割缝,对吧,当然你运气不总是这么好吗。
所以有可能这个缝还不能够完全消失,那你要对这个形状进行一些变形,或者增加一些编辑,那我们利用这样一个方法,指导用户去进行对形象进行修改,就能够让这个这个用过来的缝啊,就就就填满这个填满以后。
这个缝就自然就形成了这个这个啊,割缝啊,所以把这个割缝,然后用这个球球级的这样一个坐标,以及这个坐标生成这样一个指导图,用户根据这个指导图,然后就可以在上面画这个黑线,那么你在沿着这个黑线呢。
就可以用刀子是自己就可以把一个橘子皮给割开,割开完之后呢,就可以展开成你要的那个形状啊,那么在这里呢,我们还真是做了一些这种交互式的这样一些UI,啊,就是让你去根据你的愿望输入你的形状,修改你的形状。
使得你能够从一个橘子皮展开成你要的形状啊,好这个,嗯,你们本质上它也是个参照化求割缝问题,怎么过目标呢,是要逼近我的形状,所以他中间的一些技术跟传统方法还是有不一样的,我们看到我们这里一些艺术家。
在那个书上只能做五十六十个例子,我们他做人做的我们也能做啊,这个因为算法嘛,这个就是可以做很多,但是他做一个例子要花很长时间,我们做例子啊。
就是一个算法就可以去做做出来,他做不到的我们也能做到啊,所以这是我们通过我们这个系统去做到的这些例子,可以看到这个当时我们去年啊,去年科技节活动,我们面向全社会普及数学图形学就也面向中小学生。
让他们来实践各自这个举止,他们都还是非常开心,特别是小朋友,自己做出来的东西总是非常非常非常开心嘛。
好,那么传统化这里面还有一个问题呢,就是说如果一个形状单片传统化呢,可能会那个扭曲会非常非常大,那么呢,有的时候呢,会把一个模型的分割成若干小片,小片分别传统化以后呢,把它拼起来成一个大的纹理。
这个叫做Multi-Charts,那么这个Multi-Charts拼起来以后呢,这个就叫Atlas,所以你可以看到一个模型的参照化,它并不是只有一片参照化,它可能有多片,那么它的纹理呢。
这个一样的可以印过来,那么这里有一个问题是什么呢,就是说你每片参照化以后是一个单独的片,你要把它拼起来以后呢,形成一个Atlas地图,那么你这里有大部分的这个空白区域就会浪费。
比如说纹理是1024x1024,那么你这里一个占的面积,总和与这个整个矩形的面积相比,你这个比例叫做Packing效率,Packing一般叫装箱,就是可以看到这些物体装在这个矩形箱子里。
如果你这个空间浪费很多,这就叫空闲率就会比较高,这是不好的,会浪费这个纹理的存储空间,所以可以看到同样是这一块,我右边这个装箱就比较紧,它的占有率达到86%,达到非常高。
你可以看到它存储的纹理大小就这么大,比它要小很多,大大节省了内存和显存的开销,那么这个Packing,就是Atlas生成也有很多方法,这个本身它是一个优化学里面的一个叫做装箱问题。
就集装箱怎么去装更多的货物,那么对于这个矩形的相对容易一点,但是对于这种非矩形的这种内形状的多边形的就装箱问题是个NP难问题,所以它一直是个非常难的问题,那我们的一个这个。
去年CPUC管我的文章的一个思想,是吧,我们把一个这个难的问题把它转换成一个比较简单的问题,怎么转换呢,我们就参照化的过程中呢,就就,用那个矩形去逼近它,这样装箱效率就会更加更加高,所以我们目标是。
做更高装箱效率的这样一个工作,对于这个Packing问题呢,历史上这几年也有几篇文章做,像这篇文章就是你Packing完以后,他发现这里浪费控制率很高,他把这里割开来,把它填到这里来,通过一个搜索。
然后去去不断的去优化这样一个Packing的效率,啊,那么我们这个方法呢,就是19年啊,去年的SIGGRAPH,就是我们是把这个网格呢,做一个先做一个参照化,这参照化呢有个特殊的性质。
就是他的这个边界啊,要么是横的,要么是竖的,就是形成这样一个边界是平行于这个这个核子边界的,这时候呢,你就把它进行分割以后呢,它装箱效率非常高,因为矩形的装箱效率可以有很好的奇葩式算法装的很高。
那么那么这个这样的话呢,就它的浪费空间就比较小,最后呢,我在这个参照化呢进行一个优化,让它那个边界可以自由啊,这样的话就使得装箱效率可以控制在一定的这个界里面,因为矩形的装箱效率,我可以控制的非常小。
给定一个上界,我都可以给他啊做到,因为我这我这里分割可以可以更多的分割成细块,所以能保证这个装箱效率,好,这是我们方法做的,这这是如果如果不去用我们方法,这个话就装箱效率就80%。
我们把它分成做个快以后呢,能提高到92%,这其中一个例子啊,还有这个值可以改,这个值可以用户输入,比如说我希望装箱效率就90%,我分割快就会多一点,但是这个快的不会突然多很多啊,就我们中间有一个算法啊。
能保证这样一个装箱效率,好,最后参照方的还有一些其他参照化,我我这里也稍微过一下啊,有一个球面参照化,对于这个quickverding的后面后面曲面呢,那么你把它剪开参照化到平面,ok 是吧,没问题。
但是呢,如果你还有另外一种归层曲面叫球面,你可以把球面参照参照化区域啊,把这个啊,这个这个网格把它不剪开,就参照化到球面啊,因为球面也是归整区域啊,至少啊,比较均匀啊,比比较比较对称的归整。
所以球面上也可以定义其他信号,就球鞋盘数啊等等,所以有些时候应用在球面上做这个参照化啊,完成这个这个曲面的处理也是ok的,所以球面上的话也有它的应用啊,这方面也有不少工作啊,我们也啊。
从前前五六年也做了系列工作,这是我们大家有兴趣可以去看我们的主页,上面都有我们的论文啊,这个好,另外一种参照化呢,就是在两个内容曲面之间做一个映射啊。
这个叫compatible这个这个match叫相容性网格啊,就是你可以这样认为,把形成一个曲面当做是一个定义,把它的这个顶点把它map到这里来,是吧,那么如果map到这里来。
中间可能也会有很多扭曲问题啊,还有那么你也可以去对它进行重重采样啊,那么改变它的网格,使它们之间有一个意义对应,做好这个事情以后呢,这两个曲面的什么就每顶点都是一一对应好了啊。
就是一个包括三角形边和顶点都是有对应关系,可以做很多其他的应用,比如说这个啊,这个形状差值啊,等等后面也会来讲,专门讲这个方面的内容,啊,好,那么我们也是在这方面做了一系列工作啊,这个有兴趣。
特别是今年有一篇啊,C管文章也是把这个方法做的非常非常好,效果非常好,好,这个参数化呢,大致来就介绍这这些内容啊,因为它是个几个处理的一个非常基本的一个问题,所以我们啊,今天讲的比较多一点。
那么它本身是一个三维到二维的降维问题,是吧,那么事实上参数化呢,做好以后的话,它在参数区间就可以存储这个几何的很多信息,除了存储文理以外,它还存储其他的,对吧,比如说法项啊,这个一些材质啊。
就normal map,还有一些这种细节啊,dispersion map啊,等等还有材质,都会存在这里面,所以呢,对这种大型的这个场景呢,还有其他一些的度量要考虑,除了参数化以外,怎么存储啊。
分割存储等等,这就是像这个虚幻5的宣传片里面就就就啊,这个这个场景是景点是非常非常大的,啊,在宣传片里面,他们指出有160一个面片啊,那么就这种几何怎么样,最近参数化要存储啊,就就就有很多挑战,好。
但是参数化还是有继续很多没解决问题啊,那个冷蓝,又还是一个chuteoff,就是怎么样是一个平衡啊,这个质量效率和普达度之间的一个平衡,另外还有一些方法,还有不少人在做,特别是对于这个超大场景的参数化。
如果这个规模,景点规模已经超过内存了,那么你这个参数化怎么去做也是个挑战。
好,那么今天还不问内容呢,是简化。
简化也是一个非常重要的一个,啊,问题。
好,我们看一下,刚才刚刚提到这个虚幻5啊,今年五月份出了一个宣传片啊,不知道有没有同学关注啊,当时这个场景非常大啊,这个达到160个亿一个面片啊,好,还有这种,城市场景。
还有些模型本身就达到1000多万面片,这个场景,这个,数量都非常多,所以大规模网格啊,它在这个是应用中经常存在,你怎么有效存储传输啊,处理等等就是一个非常大的挑战,但是人们发明了很多方法了,这个,所以。
一个一个很简单的想法就是,你一个模型如果离我视点很近,就看得很清晰,如果视点离我很远,我可以看得非常啊,可以看得不是很清晰,就没有必要用这么多景点去表达它,是吧,这就是一个简化,就是怎么把一个模型。
如果在不损失太多视觉效果下面,把它的景点减少,啊,会甚至减得非常粗糙,那么使得在远处的时候呢,我就用这个粗糙的网格去去做替代,那么这个就是怎么怎么样去把一个高复杂度的几何体进行一些简化表达。
减少它的景点面和边的个数,那么,这个技术的就叫LOD,level of detail,也叫多层次细节,那么这里有很多应用啊,就是LOD一个是这个modeling,用于这个绘制渲染中,还一个是用于这个。
仿真中,因为做很多计算几何处理也一样,你如果对于在很高清晰的这个几何体上做呢,时间和开销非常大,那么有没有可能在低分辨率,就是低网,这个这个粗糙的网格上去做,然后呢,再去逼近精细网格上的一些几何量啊。
或物理量等等,这也是一个方法,那么做做简化,很容易知道它这个简化的景点越多,就偏离原来的曲面会越远,是吧,所以它的质量和误差是一个,就是这个大小和这个误差是一个平衡,是吧,然后你这个简化的,不简化。
就是景点越多,误差越小,但是呢,你如果,简化的很少的景点,size很小,误差就会越大,所以简化也是一个中间这两个量的一个平衡,还有一个质量的一个考量,你能不能保持这个限率特征,像这个简化就特征就没了。
是吧,好,那么这考量的一些因素呢,就是,简化在历史上从90年代开始就开始做,那时候内存啊都是,非常非常小,所以对简化的要求也是非常迫切,虽然现在内存啊显存都非常大了,但是呢,这个场景可以更大,是吧。
所以这个还是有它的是意义,所以这个简化呢,这个performance啊,就是这个性能,有这么几个考量,有一种就是,这个离线的简化,有一种是实时的啊,好,我们来看一下,这简化的,一个,方法就是什么。
或者是你怎么做简化呢,肯定是要减少它的那个,几何几何量吧,是吧,几何对象有顶点边和面是吧,度量呢,哎,你有一些几何度量,还有一些视觉上的一些度量,你你,无外乎就这么两两个考量,这两个考量。
把它把它明确以后呢,简化算法就会,相应的就会去找到,好,我们来先看一下简单的策略,这个策略是什么,这是简化呢,可以,看成是一个过程,是有一系列的这个局部的操作,啊,比如说这个操作是一个,嗯。
这个点有六条相邻的点啊,那么我如果把这个点,讲到这个点跟作为这个,英语说是,共鸣性很强,我我我这样一个平面,没有必要用六个三角形来表达,我可以把这个点给删掉,删了以后的话呢,就形成一个框,对吧。
这个框我又重新三角化,就变成这样一个形状,可以看到,这个操作,这个顶点,把他去掉,一下子就变成少了一个顶点,是吧,而且少了两条边,也少了两个面,所以他就今天就个数少了,面也少了,好,所以这些操作呢。
就是很容易理解啊,这样这样一个操作就叫顶,顶点删除,顶点少了一个面少了两个,还有一种操作叫边收缩,就是对调边,这个边假设跟周围,一圈平面啊,都都那个误差啊,这个这个不大,那么我就可以把他边给删掉。
你看那边删掉是什么意思呢,就两个顶点收缩成一个顶点啊,这时候呢,就两个三角形就就就就就没了啊,这时候也是少一个点,少两个面,还有对一个三角形进行收缩缩变成一个点啊,这时候今天少两个面少了四个。
还有对这种啊,这这这种这种顶点进行收缩啊,还有这种算子,还有对这个两条边进行收缩啊,所以你可以呃,在实际过程中,根据不同的这个度量啊,可以去进行这样一些这种啊,合并啊。
简化就就导致就可以一步一步减少顶点量和面面的量啊,还有一种方法比较比较常常见的,也比较实用的就是这个叫聚类法啊,你可以把这个场景用这里以二维图形来这个示范啊,就是你把这个二维用一个格子。
Grid把它分割啊,分成好多一些Cell啊,这个又比如说四杀数,然后位于同一个Cell的这个三角形呢,你会点了几个顶点呢,就可以进行合并,像这个这两点合并成一个点,对吧,这里三个点可以合并成一个点啊。
这个叫聚类,就位于同样一个Grid的这个点来把它聚成一起啊,这样的话呢,可以大量的减少很多顶点颗数啊,当然这里这里处理的时候会发生这种非流行结构,还有这种悬桩边,这时候呢,就可以出做些处理。
这些边对对渲染是没有用的,可以把它删掉啊,那么在简化过程中有一些度量啊,就是误杀度量,误杀误杀怎么来控制呢。
有些局部的度量,有些是全局度量,我们分别简单介绍一下啊,嗯,度量不一样,它效果也会不一样,像这个2000个面片减化到488,一个是用了局部度量,一个用全局度量啊,总体上来讲呢,全局度量会相对好一点。
因为局部度量是一个点一个点去删,贪婪的去去删,而全局的话,它有个全局性啊,好。
我们来看看局部的一些方法啊,有方法度量一个点是不是要被删啊,这个规则很多啊,这里列了几个规则,大家一看就明白啊,这个点0,它作为10这个镜子平面,越尖锐啊,越越高就表示这个顶点越重要,不能删。
像这个就是以前写的拉布拉斯啊,相关的类似的,还有什么,还有它的一圈夹角,跟二排的比相啊,因为如果这个点是,一圈三角形是共面的话,这个这个角度加起来是二排,如果如果是这种尖的话,就小于二排。
所以这笔子越大就表示越可以被删除啊,同样这些度量,你可以想到很多,啊,那个这是点点删除啊,这是边收缩,边收缩其中有一个度量叫做25X,这度量的是1997年,SIGGRAPH那个提出来的,在后面有啊。
叫QEM,叫25X度量,这25X度量呢,简单解释就是说,我这条边周围的这一圈呢,我用一个R字曲面去拟合,用一个R字曲面去拟合,这个周围一圈啊,我像这个方向就是一个R字,抛线拟合这样一个周围的情况。
那么对于这个三维中来讲,它有一个R字一个啊,曲面,那么这个曲面呢,就是拟合出来就有这样一个系数矩阵,是吧,你看这是个R字函数吗,是个抛面,是个R字曲面,然后利用这个R字曲面的这个性质。
就可以来这个度量它的一些扭曲。
这是求解这个,对,那么这个是个格子化,对每个点我就可以,用这个R字曲面的那个系数矩阵,的一个奇值来看,越扁的表示这个地方越平,就这个点,这个这条边就越不重要,就可以把它删掉,如果是有这个方向性的这个。
这个边呢就很重要,就可以不删,所以它通过这样一个R字度量,就可以判断哪些点不重要,就是哪些边不重要,可以把它删除掉,所以这个度量,度量呢它周围的,领域这些象形的一个平坦度。
越平坦就越先被删掉,可以减化掉,那么这个算法就非常简单,然后你对每个点点算一个R字度量,然后看一看这个边,这个R字度量是大的小,如果小,小的话就可以被删掉,就可以把它删除,不断去这样迭代。
就可以去完成整个算法,当然任何减化算法都会碰到这样一个问题,就是当你删掉一下边也好,减也好,就中间这些象形的会发生很多怪异现象,就是有些是折叠,有些翻转,这个要避免掉就可以了。
这是个例子,这是个12000个顶点,减化到2000,甚至到200多,300不到,那么可以看到,减化越狠的话,这个形状就是,这个世界效果就会越差,但是如果它这个物体放在很远处,实际上是轮廓还是比较像的。
就够了,对好,这个还一些这个减化呢,就除了几何的误差,他还会考虑这个一些别的,Appearance相关的,就是眼睛看的一些视觉效果,比如说颜色,纹理,这个法相,因为法相也会影响这个,能渲染的效果,是吧。
实际上是这些考虑这些方法呢,考虑这些因素的方法呢,大概也差不多,怎么就把以前,顶点只有三个坐标的因素,变成了一个,加上了别的因素,比如说你如果考虑颜色,就是xyz是顶点,LRGB是颜色。
你就相当于是对这些量,以前只有xyz来来来,来拟合一个25差嘛,能量,那么现在是一个,如果考虑RGB就六维的,考虑纹理就是五维的,这是一个非常简单的一个推广,所以只不过这个相量的为数变高了。
但是度量仍然类似,用一个20就行了,所以推广起来不难,可以看到这个例子,这个地图已经简化,如果你不考虑那些度量的话,在这里面就扭曲被拉,就拉伸的很厉害,如果考虑的话呢,这个这里简化。
这个就不会对这个纹理发生太多的,这个扭曲拉伸,好,还有一些global的一些,简化的一些策略,就是全局策略,全局策略呢,相对来说,度量比会比较难,那么历史上的有一些方法,我比较有名的,我稍微介绍一下。
一个一种是92年很早年了,还对那个retailing,在retailing本质上是在一个曲面上,进行重采样,比如说给1000个点,你怎么在曲面上采1000个点,是均匀均匀,那么这篇文章张早年做的。
他是一个想法,就是把这个点点,把它看作是那个,就是曲面上流动的一些粒子,粒子之间呢,有相互的这个排斥力,就是每个点受力平衡的时候呢,就会是达到均衡状态,来模拟这样一个过程,所以他整个算法的一个过程。
就是每个点跟周围,这个互斥力达到平衡,就是能够使得这些点呢,尽量在曲面上尽量均匀,他给的这个参数就是这个顶点克数,所以他本质上是在做一个重采样,使得这个重采样呢,是尽量的分布在这个曲面上面。
这是他的结果,他这个早年我也实现过这个文章,中间有些细节就是怎么让这个点,能够在跨散氧型阶段移动,所以这些点呢为了达到均匀,这些点就不一定能够在那些原来那些,尖锐特征上面,因为他的度量就是尽量均匀。
所以他不一定能保持这个尖锐特征,这93年Hugh Traubi这个当年一篇文章。
他是用一个网格的光纯能量去优化,去移动这个顶点,这个我们在讲拉布拉斯那一节时候,也讲过这个方法,就是在minimize他的那个拉布拉斯能量,只不过当时不是叫拉布拉斯,是另外一种能量形式。
上他就是在移动顶点的坐标,使得他这个整个网格的质量进一步提高,那么结构中你也可以采用一些,这种减少顶点的方法,可以边收缩呀,顶点删除策略,但是他的度量还是全局的,好那个后面我们再讲一下AOD。
AOD的话呢,就是简化的一个非常重要的应用,就是,那么那么AOD,讲AOD的话,有一个概念叫做多分辨率分析,多分辨率表达,就是我把一个网格表达成一个,这个简化以后表达成简化网格,加上中间的一些这种。
这个操作,那么可以看到这个,我们以二维为例,从这样一个形状,简化三个两个点变成他,再三个点变成他,上这个就是一个,这个简化过程,上你可以把中间这些参数,把它记下来,举例了,比如说你如果记下这个长度。
再记下这个长度,你是不是,记录了他怎么从复杂,简化过来的一个操作,同时我从简化的网格,这个形状逐步去加这个长度,是不是就可以回到这个点,回到这个点以后,我再加这个长度,就可以回到这个点,是吧。
所以他是记录了这样一个,简化的过程,好,基于这样一个思想,就是上这个从小波分析来看,我把一个信号分解成一个。
比较简单的网格,加上一些系数,就可以恢复原来的网格,是吧,好,那么AOD呢,这个,有几种形式,一种叫Discrete,就是这个离散AOD,这也是早年,这个AOD的一个方法,就是我对一个模型。
比如说模型很复杂,我给他进行简化到,不同的点点数,或者把他们都存起来,那么,当我在做渲染或漫游的时候呢,我如果离得近,我就调这个模型,离得远就调这个模型,是吧,所以他两个模型之间呢,会突然一个变化。
这个叫POP,好像不联系性,是吧,好,那么这个,后来就就说,我怎么避免这个突然的这个变化,那么我们能不能continuous,就是能够记录中间的连接变化,是吧,那么其中一个想法就是什么。
你把中间的操作全部把它记录下来,你就能够,比较好的这个,一个边一个边的加,或者一个点一个点的加,就用户是看不,就是就是看不到这些变化,那么这个事项就刚才我讲的,就是你把这个边收缩啊,这个把它记下来。
比如说你可以看到,如果你把它记下来以后呢,你从一个复杂的景点,网格不断简化不断简化,就可以把它操作,给他记录下来,或者把它编码成一些信息,那么如果你想从这个模型,逐渐把它变密啊,变成更多的网格呢。
就中间就是不断去增加点点,就行了增加边就行了,所以你把这个操作的这个属性,把它记下来就可以变成可逆了,这时候就是一个重建过程啊,我怎么样从一个网格不断的去增加,这些操作就能够变成更加,点点更丰富。
不断的增加,所以你只要记住这些操作就行了,这是95年96年,SIGGRAPH提出一个概念,叫Progressive Mesh,叫渐进网格,当时这个提出来以后,还是非常好的一个创意啊,嗯。
这我也讲一讲就是这个想法非常好啊,就是你你说我,只要存一个,简单的网格再加上一些操作,我就我就可以,这个操作呢,可以存储量不是那么大,不像以前他要存中间,若干个几何模型嘛,我只要存一个简单的。
加上一些操作就行了,但现在呢事实上是事实是呢,在那个游戏中,或者一些应用中,我们还是不是这样用,因为你这样用的话呢,你这个操作是要消耗客户端的一些,CPU计算资源,虽然时候呢,是虽然灌到GPU去渲染。
但是你这个加这些,还是要在CPU上做,所以呢会消耗客户端的一些,计算资源啊这也是这个方法,现在啊没有在实际,中用的很广的一个原因啊,因为我宁愿这个,这个消耗这个带宽,去下载一个模型这里,我马上就能这个。
读取然后把它汇职出来啊,而不是我用在这里,在进行一些这个,CPU上要消耗这个,开销来计算这个网格更新,好那么这就是continuous。
这个AOD的一些概念,就是可以把这个操作,一个简单网格,加上这个系列操作就可以,恢复到任何一个,经典数的一个,网格上面,好,那么,当时提出,progressive matching,还有一个另外的背景。
当时的网络啊就是20多年前,网络带宽没有那么大,所以当时纯,如果你是纯M0 M1 M2,是若干个零散的网格的话,就对带宽的要求会比较高,当然现在来说带宽不是问题了,那么当时就是说。
我们还可以节约这个网络上的,传输时间,因为这些操作就量不大,你可以还有别的方法去压缩,所以说,你可以在客户端,我编完游戏的时候,编或许一些这个码流,然后更新这个场景,这个带宽有限的情况下。
这种方法还是比较不错的,那现在呢因为随着硬件发展,包括网络发展,这个网络速度是越来越快了,所以,现在不是这个大问题,所以这种,技术呢,应用的这个场景并不是太多。
好另外一个,这个在LOD的时候,显然就要有一个基于视点相关的,意思也很容易理解,我的视点在这。
离我近的话我LOD密一点,离我远的话就LOD就稀一点,就是你怎么样,去,去适应的去选取我的这个操作,当年还是,蛮有意义的一个工作,现在可能也没有。
自己应用中,好更大挑战呢就是,今年五月份虚幻5,引擎推出的demo,它里面可以,自己声称这个场景整个有160亿,一个面片这么大的一个,场景当然这场景不可能,是一个网格了它可能也是分布式,存储啊包括那个。
简化得到的,所以它里面,还可能还有硬件的,包括因为它是运营在,那个Playstation,PS5上面所以是索尼的,一个专门为游戏,所开发的一个这个,这个硬件所以可能综合,综合来讲它这个。
渲染这个加载的这个量会比较大,但无论怎么样,这个加载可能不是一片,一起加载这个,可能开始失效不了的,所以他怎么他要把这个场景进行怎么切割,怎么怎么做LOD,怎么做简化等等这个综合技术。
做到这样一个demo,最近我们也在探索这其中的一些技术,当然还有,这个城市级别的这个商业模型,数量也是非常大的,怎么样能够,高效的实时的这个进行,进行渲染,那么渲染,还有很多值得,为了渲染的这个简化。
还有很多值得去做的一些挑战,这个去解决,包括现在,云计算的这个,慢慢成为普世以后,你怎么样利用这个云的资源,云边端,配合来做一些这种,实时的这种调度啊组织啊,你这个几何,可以很大但是呢。
我在我当前的视点里面,所呈现的几何,这个信息或者是数据量并不大,但是你怎么去智能的去调度它,能够达到,这个质量与这个,速度之间的一个平衡,也是非常大的挑战,这是还有很多工作,是需要等着我们去探索的。
那么关于简化呢,到现在工作也很多,这里有一些资源,有些资源还是比较老的,大家可以相对参考一下,好,那么最后布置一下,这是卓业,是这个就实现,这个97年那份文章的qm,方法,来实践它。
那么这个实现过程中呢,有些技巧啊,因为我们顶点是,一个列表面也是个列表,如果你减换掉一个顶点以后,或者是少了一些顶点以后,你先不要把这顶点,从这个列表中删除,因为这个这个列表,是一个连续性存储。
如果你删掉一个顶点呢,是要是要有开销的,是吧你要把后面的一些元素,要把它全部拷贝到,前一个去,啊实际上你只要寄,这个被删除顶点寄一个标记,表示它,是没有用了,到最后解放完以后的话。
如果你要导出一个网格也好,啊或者是,到宣传管线里去再给他更新,这些指标就可以了,好这个要注意,也可以QAV网上有很多版本,你们可以去参考参考,当然你如果做的好的话,你可以实时的,用一个波动感。
实时的操作这个个数,使他减换到,另一个顶点个数还有回来,都可以,这个data line这里写错了应该,不是26号是1月,就是给这次作业,给大家两周时间好吧,给大家两周时间应该是1月,3号啊这个。
data line好吧就是,是两周时间,大家完成这个作业。
好那么今天的课就到这里,结束了好那么。
这个各位同学好再见,你可不可以帮我找个地方住啊?我可以帮你找个地方住?
GAMES102:几何建模与处理 - P12:几何映射 几何优化 - GAMES-Webinar - BV1NA411E7Yr
各位同學晚上好。
今天課開始,今天的內容是講幾何映射,我們回歸一下上周講的曲面差異化。
差異化是將一個三維的曲面,因為它本質上是二維流行,所以可以把它展開成平面,有了平面這個相以後,就可以賦予紋理坐標,等等可以做紋理映射等等應用,事實上它本質上是在求解一個F,這個F映射。
這個F映射是從三維空間到一個二維空間的一個映射,這裡每個點對於打到這裡每個點,所以它本質上是個映射,當然上節課我們講了,這個映射本質上可以把它看成一個二維到二維的映射,因為你可以把這個三角形。
平鋪到一個平面坐標,這個C下面的三角形,然後就變成了這樣一個映射,因為這裡就相當於一個剛性變換,沒有任何的形變,所以FF也是一個二維到二維的映射,但是映射的概念在這個課上面,從開始就給大家灌輸,就函數。
如果兩個都是實數,我一般叫函數,只是實數的話,多元函數,都是一樣的催廣,如果是二維到二維的一個映射,就是這樣一個平面去到另外一個平面去,如果同學們學過浮邊函數的話,就是你把這個C看成一個負數。
這就是一個二維到二維的映射,負平面到負平面的一個映射,但是參照化我們學過的,就是一個二維流行到一個平面的映射,上節課也學過的這個球面參照化,就是一個二維流行到一個球面的映射,我們用S平方表示二維球面。
就是二維流行球面,就是三維球面,但是映射也很廣,如果我把這個範圍推廣到一般的定域,我可以一個曲面上的一個點,就曲面到曲面,甚至可以定義在三維空間的一個體,體裡面一個點,映到這裡一個點,這也是映射。
所以映射的這個範圍,實際上是跟我們最早開始講,這個函數映射是一樣的,只不過這裡是定義在我們人看得見的,這樣一個二維三維的一個O值空間,我們人類所能接觸的,二維三維的這個曲面曲線。
那麼我們這些課主要還是限制在,平面映射,我們就假設是二維平面到二維平面的一個映射,那麼二維平面有個定義是UV座標,那麼一個點X表示一個點,映到一個像UX VX,所以大家要清楚,這裡雖然寫了個X。
我用初體上它是個像量,它是個UV兩個值的一個像量,映過去的像也是一個像量,一個U一個V,這是兩個函數,這就是參數曲面曲線的形式,映射表達我們在上半課程中,都給大家講得很清楚,映射有很多個表達。
我們最常規表達就是,把一個函數在一個函數空間去表達,這個函數空間就是G函數,所以每個映射可以看成是一個G函數的一個組合,V分量是另外一個組合係數,那麼這兩個一般都是會共享G函數。
沒必要這個第一個分量擁有G函數,第二分量擁有G函數,可以共享,這樣的話表達就比較方便,那麼這G函數組合就組合出最後這個函數,那麼這是第一個分量,第二個分量BN也組合出另外一個分量。
如果把他們加起來就是這個,這樣的話就表達起來,因為這個G函數是共同的,所以這個AN就是CN就是ANBN就相量,這樣可以表達形式上非常統一,所以你可以看到這是我們以前學過,我們2倍到2倍的映射。
事實上本質上就是一個這樣的組合形式,那麼你這個G函數當然你可以選很多了,你可以選RBF函數,B樣條G函數,還有本質上的G函數,甚至其他的G函數都可以,這個用你自己的這個應用出發,所以這樣的話就定了一個。
這個函數就可以從一個區域到另外一個區域,做一個映射,那麼在幾何數理裡面,由於我們這個曲面都是用離散表達,所以用另外一個方式,我們可以把一個複雜映射,把它分解到各個小片的映射,因為我一個區域可能很大。
那麼我可以把它用散咬化,把它散咬破分,所以我這個一個複雜的函數,映射可能我表達不出來,但是我可以知道,它在某一個小單元上的一個映射,這個結果,所以可以把一個F用一些分片線性。
這個這個仿似變換給它靜止起來,當然在一個小片圓上面的定義的這個函數Fi,跟在另外一個小函數上的Fj,當然要滿足一定的連關華性和連續性,你首先要連續,不連續的話就這裡會有個縫,對吧。
所以這裡就會對這個每個小單元上的函數進行一些約束,後面我們會提,好,那麼幾何映射有很廣的例子,那麼如果你們做過圖像變形,像這個變形的話,你想對這個那個摩蘭依法變形的話,我可以用交互啊,這個點往下拖。
是吧,這個鼻子不動,那就交互想讓他的嘴角往變成這個樣子啊,往往往向彎一點啊,你可以交互,或者說我對一個二維的一個形狀,這是個多邊形,裡面有紋理,那麼我對這個幾個關鍵點,這個點拖拖拖在這。
那麼這個點往上拖,拖到這,那麼問最後的形狀變成怎麼樣,所以這個不管是圖像空間變形還是這個形狀變形,都是有這樣一個交互,那麼這個交互怎麼做呢,是吧,這個是圖形圈裡面或者叫圖像圖裡面一個非常基本的一個問題。
怎麼去對這個進行交互,就是這個形變,那麼後面我們還會有專門課來講這個更多方法,那我們這裡先把它變成一個,是個什麼問題呢,本質就是個差值,對吧,因為每個點有一個目標點拖拽,是吧,那麼問任何一個點。
這個點拖到拖到到哪了,對吧,就是這樣一個問題,所以很容易就想著,哎,我我要去求一個函數FP,那麼使得FP呢,滿足這些拖拽點,到我的目標點,這些這些約束呢,就是這些左圖上的那些,用戶所拖拽的點。
那麼這個FP用什麼形式呢,這個就取決於你的應用,是吧,你可以在一個函數空間,選一套新函數,你可以去定義它,那麼帶定係數,CI求出來就行了,那麼如果你要去差值,那麼你希望這個PI就等於QI。
那麼這個就可以列出很多方程組,是吧,就看這個這個變量個數跟方程的個數是不是一樣,如果不一樣的話,你還要加些條件,就是RBF記憶函數差值的時候呢,就要加那個一些對係數CI的一些約束,是吧,好這個我不展開。
好那麼求解的話呢,就就就有兩種啊,一種差值,就是帶定這些係數,像這個是RBF啊,這裡用了RBF記憶函數,是用了這種形式,你用高次高算函數也可以啊,那麼這裡是一些這個多樣子項啊,只是為了來讓它能夠。
這個增加一些變量而已,好,還有一種呢,能量極小化,我要求一個函數,這個函數的F是什麼呢,是反正就是相當於是對F的一個函數,就叫泛函,我希望它的函數的一個某個值,要達到最小,比如這種形式。
這種形式就是一個叫薄板樣樣條,叫彎曲能量,就是它的兩階偏倒的一個平方和啊,加上一個交叉向的平方的兩倍,好那麼這個這個這個在物理上,他們叫就就這塊薄板,實際上就是平那個線樣條的推廣。
啊就是線樣條是一個線啊,把它彎曲起來,這就是我們已經講過的,三次樣條函數的那個近似,那麼對於快很薄的板呢,薄板樣條呢,就是就這種形式啊,這個一個板彎曲就就有一種彎曲能量,啊物理上可以去近似。
好那麼對F去去進行一個這個求解,那麼同樣也要對F進行一個代定,代定的係數,就接上代定的係數,你去求解它也可以去優化它啊,求出F來,好那麼只不過呢,這這兩種呢,就是一種是絕對差值,我我希望它圓滿足。
一種呢是F呢在某個空間,我要去函數啊,就在函數裏面,那麼這時候呢,這個這個差值呢,可以放鬆啊,比如說這個就約等於,約等於的話就是他們平方和最小,就會把它放鬆一下,就變成軟約數,上面這個叫硬約數。
硬約數就是絕對要滿足,叫差值,軟約數呢就逼近,好,那麼你還可以做很多其他差值,和我以前講過的赫米差值是吧,你可以過來差值,如果差值頂點,那麼印射過來就頂點不動,是吧,如果我還可以差值。
它的什麼兩個這個切線方向,或者法線方向,那麼這時候呢,我可以求的另外一種這個這個啊,印射啊,所以這個這個約數,你可以可以加很多啊,這是對頂點的位置加的約數,這是對它的這個梯度進行約數,也導數,好。
那麼我們以前也提到過那個中庸標,曾經有些課講到過中庸標,中庸標意思就是這樣,你可以對一個多邊形,定義裏面的點跟多邊形點這個關係,如果這多邊形進行交互變了以後呢,裏面的形狀怎麼變呢。
就每個像素重新用這個中庸標,去對邊界多邊形的點進行組合,就得到了它的那個變形的結果,所以這裏面其中有一個,假設這個是輸入多邊形,他們這個邊界就是綠色這些頂點,所構成的多邊形,那麼我們定義一個線際組合。
就是希望裏面的每一個點,裏面的每個點都跟這是QI,那麼這個每個點呢,QI對它的貢獻呢,這是X,對QI對它的貢獻的是一個全αi,但是αi跟X相關的,X在這αi是不一樣,所以這樣可以定義一個這樣的函數。
這個值呢就是X的中庸坐標,對吧,以前是用W來表達,這裏αi是一樣的,就是對一個X某個點就有一套W,去對這個邊界點進行組合,好給一個X就有一個組合,所以這個組合係數就是X的一個函數,那麼這個全函數呢。
你要設計的好,你變形效果就會好,那麼一般這個αi會怎麽設計呢,就是αi在這個這一點QI上面是等於1,那麼對其他等於0,對這裏的每個,這裏是個X區域是吧,所以這樣的話,你可以構造出系列的αi來。
在這裏等於1,在別的等於0,是不是這時候你X在這裏一帶進來,QI就等於1,其他就等於0,好,那麼這樣你構造出一個中庸坐標函數來以後呢,你如果對這個邊界進行這樣一個交互,邊界看看這個點。
這個點應該是變到這裏來,這個點被拖到這裏來,好那麼這樣拖住以後呢,問其中的裏面的每個像素變成什麽樣子,就是在這裏的話,用格子來畫的話,就看得出它的一些這個走向,就是這個格子變成這個樣的格子。
算的時候是每個點,每個交點算出來就行了,其中的每個四面形,對於這裏的四面形,事實上這裏可能不一定是變成一個直的邊,但是這裏是個近似,只要你這個單元足夠小,就可以是個近似,好,那麼這就是中庸坐標。
所以它也是個簡單的Mapping,好,那麽你中庸坐標構造不好,那個它效果就會不好,所以歷史上呢,也有不同的構造中庸坐標的一些方法,常見的有這種中值中庸坐標,還有柯西,還有這個調和,以前都提到過。
我以前忘了在第三和第四節課上面就提到過這個坐標,然後有個網站專門收集了歷年來的中庸坐標的一些研究工作,大家可以有興趣可以看一看,好,那麽你要做一個好的影射,這個要有哪些性質呢。
就是一個好的影射要有什麽性質,那我們這裏從兩方面,一個是叫做雙射,一個右邊叫這個低形變,也叫低扭曲,那麽雙射什麽意思呢,雙射就是我這個這個映射,那個我希望呢,這裏任何一點對應這裏的唯一的一點。
反過來也一樣,就是我們以前學的那個單射雙射滿射,這個概念,雙射就是說有意義對應,這個區域在它的定義域裏面,跟它的那個直域裏面這個點,這個意義對應,那麽那個像這個例子啊,這個就是不是雙射。
因為它有幾個點重合了,可能有一片小區域,重合在一條一條線了,這就不是雙射,像第三個就是雙射,雖然它扭曲了,但是可以看到只不過這個面積,這個面積變得窄了,但是它沒有重合,不像這樣的就重合到這樣。
這樣一條線了,是吧,退化掉了,面積沒了,是吧,就是甚至有反轉,這個這個就是不是雙射,像這個就是這也是雙射,但這個雙射呢,這個白的這個框呢,扭曲會比這個扭曲要小,因為原來是這麽大,是吧。
所以這個是具有更小的扭曲,所以所以同樣是雙射,也有不同的這個性質,所以我們可以考慮,從雙射和扭曲兩個維度來看,來評判一個影射是好還是壞,因為雙射的話呢,保證了這個映射啊,它這裏不會出現這個重疊的點。
還有甚至扭曲,這個特別是對文理,文理映射來講的話,就不會出現在曲面上,有這個鬼影的現象,那麼扭曲越小,當然越好了,就不會出現非常大的形變,這個文理,好,那麽雙射還有一種,另外一個概念,雙射是全局雙射呢。
實際上就是真正的雙射啊,還有一種叫做local雙射,就是局部雙射,局部雙射呢,就是指局部上面,它沒有是一對應的,那麽那個概念叫injective,叫單射,叫injective,就是local雙射,好。
我們來看一下,如果你要對這個,這個左邊這個形狀,把這個頂點點往這邊去拖動,我們來看一下,會發生什麽形狀,如果如果裏面的張牙,如果裏面的張牙形,發生了這個翻轉,好,那翻轉翻轉,翻轉什麽意思呢。
以前我張牙形是V1V2V3,假設是逆時針這樣方向,結果你這個V1V2V3,變了以後呢,呈這樣一個方向,變成了順時針,它兩個朝向,一個順時針一個逆時針,反掉了,比如說這個張牙形,大家看到,這個張牙形。
那麽這時候呢,就這個性能不好,就發生了flip,上次我們上節參照化的時候,就提到過這個現象,這個叫翻轉,也叫這個,算是這個非單射現象,好,那麽你可以看到,我如果我們不容許,好,如果這個不處理的話。
可能會發生這種翻轉現象,你可以看到右邊這個呢,就沒翻轉,只不過呢,這個頂點啊,每個棉花形呢,都保證它的這個正向,只不過這裡的扭曲,會比較大一點,是吧,顯然吧,因為你這個這麽多點,會擠在這裏。
就跟我們參照化的時候,很多點會擠在一起,這裏一樣,但是呢,這個這個翻轉沒有了,所以這個是一個,保證了這個,這個bijective,就是叫flip free,就沒有翻轉的這個一個印射,這個印射是翻轉了。
但是它的邊界條件是一樣的,這個點也是跟這個點的條件是一樣的,好,所以怎麽去構造這種印射,把一個矩形變到這樣一個區,邊界區,然後使得它裏面三角形呢,可以扭曲,但不翻轉,這是個非常硬的一個條件,好。
當然在不翻轉的情況下,能夠減少扭曲,這個是更好的性質,好,好,那我們看一下,翻轉現象就是三角形,從一個這個,逆時針的朝向,變成一個順時針朝向,朝向反了,那麽我這裏提一下,如果我們定義這個。
逆時針這個朝向的三角形的面積是正,那麽逆時針面積就是負,是吧,這個面積可以用他們三個點的那個,座標,求個行列式就可以求出來,那麽這個行列式是正,就是大於零,行列式負,就是小於零,就是沒翻轉。
小於零就是有翻轉,那麽這個點,不會跳到這個邊的這邊來,只會在這邊,但它可能發生非常大的扭曲,就是這個三角形形狀可能不好,但是微因始終是在這個邊的這一側,因為這一側就保持了都是,都是這個逆時針的一個順序。
就這個是沒翻轉,所以翻轉不翻轉,這個本質就在於這個三角形的面積,它的這個有相面積的符號,有沒有辦法改變,如果是沒法改變就沒翻轉,如果翻轉改變就翻轉了,那麽這個面積等於價於就是那個。
他們三個點是不是形成同樣的右手系,或者左手系,剛才我已經講了,就是這個逆時針和順針的關系,好,那可以看到這個,這個global adjective,就是全局這個雙色跟局部雙色,局部雙色也叫做單色。
就是局部是單色的,那麽如果這個全局是雙色,當然是局部雙色,對吧,這個沒問題,但是反可以看到這個例子,可以看到例子,可以看到我把這個矩形把它翹起來,好,這裏始終都沒有發生這個裏面的三角形,翻轉,對吧,好。
這時候呢,從這裏到這,這裏到這裏,那雖然裏面這些點都沒有發生這個翻轉,但是呢,這裏它這個點邊界碰到這個邊界了,所以在對這裏的一些點,這裏的一些點就什麽,就有這個,好。
對這裏的一些點就發生了重疊。
是吧,所以這時候就破壞了這個Byjective的性質,好,如果你再翻轉一期,這個重疊就會非常大,非常多了,那麽這是好,這時候就是Not Byjective,實際上是從這個狀態開始,發生了非雙色。
但是它局部是雙色,就是它這裏處處,即使到這個樣子,它裏面都沒有發生翻轉,裏面沒翻轉的,只不過Global發生了重疊,好,這就是雙色和這個局部雙色和全球雙色的概念,我們在上期課插上話的時候,我們講過了。
就是怎麽去算那個Local Byjective的一些運算,這個優化,就是那個印射的甲殼比大一點,等一下我們還會解釋,那麽對Global的Byjective是比較難處理的。
是要判斷這個他們的邊界是不是碰撞,是吧,我們上期課也提到,我們今年有篇SIGGRAPH文章,做了一個非常快的算法,超過了以前的方法,好,我們展開,好,那麽這個雙色會帶來什麽壞處呢。
就是如果你是把它看成是個文影式的參數域,那麽這裏有個圖片,這個顏色,這裏就這兩個顏色是一樣的,就發生這樣一些重合歸因的現象,你可以看到這片顏色,在這裏也是,那麽在這裏也是,好,那麽這是一個例子。
就這個例子是拖動中間的一個點,應該是拖動這個點往這個方向移動,好,那麽移動到這裏開始發生了,發生了翻轉了,是吧,這個網格在這裏就就就就有重重合了嘛,在這塊重合了,好,那麽怎麽去做這種早年呢。
重合的這個方法,優化也沒有那麽快,所以當時就沒法做,最近幾年這方面進展還是蠻大的,好,那麽我們看一下,我們來看看本質在這裏是什麽,這是什麽,就是局部的一個雙色,也叫injective單色的本質。
數學上是一個什麽概念,這概念呢,這個數學上非常簡單,如果我們把這個印尺F的這個這個叫甲鎬比,先就拿來,甲鎬比是一個2*2的一個這樣的矩陣,他的行列式就叫甲鎬比行列式,這甲鎬比行列式。
等一下我我再來解釋上意,上次這裏再去解釋,他是這樣,他是每個這個分量的函數,對x和y進行偏導,就構成了剛好是這樣,一個2*2的一個矩陣,事實上一個局一個印尺,局部是不是發生翻轉,一個判斷條件很簡單。
就是看他的行列式是不是大於零,這個非常簡單,這個我來把這個解和异,給大家講一講。
這個在數學上是很好,我這裏還是以二維到二維,就是就這裏這裏有個區域,這裏有個區域,我們這區域叫叫Domain1,那麽這裏有另外一個區域,第二這個一個函數印過來,好我對這裏的一個x假設是x0。
那麽我取他的一個無窮小的領域,但是包含這個x0,這個領域叫做ω,那麽這個f就會把這個x0,印到這裏一個點y0,同樣這個ω這個領域的每個點,印過來以後,他這裏也會形成一個區域,是吧,那麽這個區域。
我把它記成fω,相當於一個區域的每個點,印過來一個區域,是吧是這個區域,好,fω我算他的有限面積,我這裏規定是逆時針,有限面積是正,那麽比上原來的ω這個有限面積,我這裏先假設為數是一樣的,都是二維。
好那麽他的這個值,就是這個這個ω,趨向於0的時候,就ω的面積趨向於0,也就是說這個這個區域,包繞x0在越變越小越變越小,好他這個極限存不存在,有一個印射f把x0變得,假設印射是光滑的。
這光滑就是連續並且可可導,那麽這個x0周圍的這個領域,這個y這個領域,印到了這個領域,這個領域的面積比上原來這個圓向的面積,這個比,也就是說這個比是不是可以,可以可以,大家可以直觀想想。
是不是體現了f在這個點的一個局部的一個性質,他是發生了膨脹,還是發生收縮,對吧,如果這個值小於1,是不是這個相當於這個無窮小的時候,這個值比,這個面積比這個面積小是吧,大的時候,這是不是發生了膨脹。
就是可以體現f函數,在這個點局部的一個是放縮,還是還是這個放大,還是縮小,還是不變,對吧,可以證明這個值體積線是存在的,並且是等於f的雅各比行列式,在x0的這個值,這個j就是這個雅各比,好。
從這樣一個事實,我們我們好好理解一下,好,我們f把一個無窮小領域,印成了一個另外一個無窮小領域,並且他的有限面積比,是一個跟f這個這個這個雅各比相關的,是吧,好,我們看一下,如果這個雅各比。
這個行列式發生了變號,小於0了,小於0是什麽,是有限面積,這個是本來就是這個是正的,變成一個負的,是不是這個就發生了flip,所以小於0就是發生了flip,局部發生了翻轉,一定發生翻轉,等於0就退化。
就退化成了一個一個零面積,是吧,就是這個這個這個degenerate,大於0就沒有翻轉,很好,性質不錯,但是呢,大於0也有大於,因為這個這個體現了這個面積比,所以呢,大於0又可以分幾種情況。
如果是大於1,是不是這個局部面積發生了放大,這個就是,就是叫膨脹吧,就這個這裏面發生了大的膨脹,等於呢,表示面積是不變,這個這就是等級變化,如果小於1,小於大於0,就是收縮縮。
所以我們這個一個隱身的性質,完全可以從F的這個雅各比,這樣一個行列式的性質來著,所以可以看到很多優化裏面,都會拉雅各比這個行列式來做,他的一些這個這個度量。
所以在這裏,大家馬上就清楚了,雅各比行列式的這個行列式,大於0就是沒有翻轉,所以這是個硬條件,每個點對每個點都要是大於0,這樣的話,這個F就一定是處處都是injective,好,那麽這個這個沒問題。
好那麽反過來,如果處處每個點都是injective,能不能推出global,這個顯然是顯然不行嘛,對吧,這個我們裏面每個點都沒翻轉,但是全局發生碰撞,但這問題很難,就是你很難從局部性質,推到全局性質。
有些結果這個你可以百度和谷歌,一下這個這個全局inversion,但是這個實用性上面還是比較難的,一般我們還是要,就像我們今年SIGGRAM那篇文章一樣的,還是要去顯示去判斷邊界,到底碰不碰撞。
因為這個情況就發生在邊界,發生碰撞了嘛,就是在很遠的地方發生碰撞,好,所以實際上是個碰撞,免碰撞的問題,好,那麽我們在第二部分來看看這個destruction,我們現在搞清楚了這個雙色,或者局部雙色。
也叫單色的一些性質,好那麽剛才我已經解釋清楚了,我一個無窮小領域,這個Fω,跟ω的這個面積的比,就度量了它的一個形變量,這個大於1就是膨脹了,小於1就縮縮了,等於1實際上就是局部是等級變換。
至少在這個點,它沒有發生形變,所以這也是我們上一節課講的,所以我們一個上下型到一個上下型,求一個這個性質變換以後呢,把它的那個這個性型比,性型這個矩陣拿過來,做個SVD分解,中間的這個奇異值。
就度量了這個它的形變,因為這個東西亞克比,因為這個是正交,這個正交,所以它的這個,它的亞克比,本質上就是這個,Σ1和Σ2的度量,所以這也是上下課,我們那個slice把它拷過來了。
如果是這個局部的一個這樣的,一個變換,這個亞克比,這個奇異值相等,就是表示這個叫保角變換,乘以等於是保面積,那麼這個多等於就是等級變換,那麼為了防止翻轉,所以歷史上大家就想了好多,不同的度量來度量。
這個防翻轉,上防翻轉,這個能量函數,這個最有的特點,就是小的這個奇異值,多在分母下面,因為這裡我們確診是σ1,小於σ2,這樣來變排,所以當你這個σ1,趨向於0的時候,那麼就相當於是這個變形的這個區域。
就趨向於退化,所以要防止這個小的,要趨向於0,怎麼辦呢,我就把σ1放在下面,如果這個σ1很小,趨向於0,那麼這個值它的分之一,而倒數就會趨向這無窮,所以導致這個能量很大,所以可以用這樣一種形式的能量。
去壓制住這個,不要發生這種現象,這就是為什麽,大家都用這種形式來,來避免防翻轉的一些這個應試,對於體也一樣,給體的話,大家也可以看到,都用σ1也放在分母,這裡是σ1,它因為在體的話,有三位空間。
就有三個奇異值,空間的一個反應變化,我這裡可能反了,應該是大於,因為這個性管上是小的,這個稍微大家應該清楚,那我們繼續,那麼我們看看影射的優化模型,優化模型,這是我們上期課講參照化的時候。
就以我們minimize所有三角形的這個能量,因為這個能量叫對稱deuterium能量,這個就是這個能量,然後呢,再約束每個亞克比大於0,這個是能量極小,這個是亞克比大於0,免翻轉,去優化這樣一個能量。
就可以求出一個比較好的一個映射,只不過這是一個參照化的一個映射,這是上期課我們講了,好那麼看一下這個具體,具體怎麽求,我們再簡單的過一遍,你要去算一個映射,這個例子是這個意思,我以為這樣舉行。
我希望把它的邊界,這個邊界變成這樣形狀,就是底邊這個邊界變成這個形狀,問這個形狀變成啥,這個在後面我們做形狀編輯的時候,變形的時候也會講,我這裏只是把它拿來做個例子,好,那麽你說變形。
那麽我這個邊界是一樣的,那麽變形量上面這幾個例子,這幾個圖都可以,都符合我的要求,那到底它是哪個好呢,你要有個度量,我們希望找到那個形變,不是就是比較小的那個,那麽這時候呢,就是你要滿足要滿足什麽條件。
是變形體量比較小呢,還是變形這個夾角比較小,就是你要這裏有一個度量,好,那麽對於不管是什麽要求,你最後把它變成一個優化問題的時候,總是這樣,你minimize一個怎麽能量,然後呢,這裏滿足一些條件,好。
那麽這個就是一個典型的一個優化問題,我們參照化那節課,上個禮拜天的那個課就一直在講這個優化,就是優化這個某個能量,然後使得它滿足某條件,但這個條件如果很復雜,是個非線性約束的話,整個是個非線性系統的話。
就優化會比較慢一點,好,那麽這個叫能量,這個叫約束,我們今天晚上後面會再講優化,講得細一點,好,那麽去做的時候呢,這個函數,這個硬設呢,可以把它分解成三角形之間的,所以對幾何問題來講。
我們可以有很特殊的一個分解,實際上這就是有限元的思想,我們把一個函數,作用在一個三角形上面,只要去度量這個三角形到三角形,這個小單元之間的一個硬設的性質,那麽整個硬設,我把它求和,就可以去量化。
那我們三角形到三角形呢,平面上它是一個仿真變幻,由線性部分加上平移,那麽對扭曲是不影響的,主要是這個aj會有影響,所以我們會用這個,這個它的那個奇異值來度量,所以這種形式的能量有個好處呢,它是什麽。
它是由很多項給組合的,所以呢,我把整個的一個硬設的能量,可以分解成若干個三角形的能量,所以它是separable,就是可以可以分離的,好,你去求解這個硬設呢,這個還有個條件,你希望我的目標的這個。
這個值還是要跟它一樣的,突破關系一樣,所以這個必須要也要也要拼在一塊,如果你每個三角形單獨去做,可能三角形就拼不起來,是吧,就就給它割裂了,這是不行的,所以怎麽樣去保證這些連續,也有不同方法。
我們來看一下,一個方法是說,我這上面一個硬設的ai,把這個三角形硬到這來,下面的aj把這個硬到這來,好,那麽他們就分別把這個兩個頂點,v1和v2,公共的這個邊的兩個頂點,也就是公共兩邊。
分別硬成了ai v1和ai v2,下面這個硬設的aj呢,硬成這兩個是吧,所以呢,我為了保證他們要拼起來,所以你只要保證他們兩個是相等,他們兩個相等就可以是吧,所以可以,如果你去求這個硬設,作為變量的話。
就要保證這個兩個,這個這個性質,他們兩個頂點要重合,這是保證的c0,好這個剛才那個條件呢,是對這個ai aj,實行強制的這個,一些這個約束,是吧,所以把ai和aj看成變量了,是吧。
對這個在15年SIGGRAPH有篇文章,就是用,應該是我們組的傅曉明老師做的,就是把這個這個這個硬設的這個,參數作為,係數作為變量去優化,就是apply這種頂點約束,就構成一個也是個系統。
好還有一種方法的,什麼我呢,希望我就假設我求出來一個,假設這個U1就是這裡呢,求出來一個結果,假設是個參數的話,每每個點有座標,好我對每個點這裡做過來,好ai把這個三角形,用到這個三角形,那麼ai又把。
對這個三角形,用過來以後呢,就是就是是這樣一個條件,好嗎我對別的三角形,也也有這個條件,所以我的變量呢,不是那個變換,而是這個U,就是我的這個結果的這個頂點,就Ui是是變量,好那麼這個ai是什麼呢。
ai呢,事實上是可以由,因為這個Ui是假設,我是要求的,他他他他有的吧,所以說ai是可以由這個vi,跟ui一起來決定的,因為在二維中,大家可以很快寫出一個方程組,就是就是ai乘上vi,vi, vii。
這三個變量變換過來,到又叫叫到v到又叫到U1,這時候呢這個ai的係數啊,就這個矩陣啊,這個三成二成二,每一下可以表達成,vi, vii, viii,U1, U2, U3的一個變換,這個一個表達。
這表達是線性的,所以這樣的話呢,就就把這個變換ai中間,我要求的這個ai呢,由這個U位置數所表達出來,所以整個系統還是關於這個U1, U2, U3,變量的位置數的一個一個一個表達,所以你對ai進行約束。
相當於對U1, U2, U3,這些變量目標的變量,做了約束,所以把這個這個這個要求的這個變量呢,轉嫁就是隱含到了這個ai裡面去了,好那麼這樣的話,你去在這裡的時候,優化的變量呢,就是這些U1。
U2到這個Um,就是目標之間的這個U,所以只不過這個a_j呢,是由U和原來這個v所決定的,好所以這是這個叫叫隱私的連續,那麼這種方法是用的比較多的,所以我要去求一個目標的目標的一個這個映射。
那麼我想要去帶領這些映射的這個頂點,往個頂點,然後呢中間的所有的變量都可以,包括包括映射都可以由他們來表達,所以你加在a_j上的一些約束,等於加在U上的約束,所以始終變量還是這些這個目標頂點。
好那麼這裡怎麼優化求解啊,這個上一節講了一點啊,我們看一下就是對a這個,每個象形這個仿真變換,就是現行變現行變換的係數,最早是用這個delete kernel能量,delete kernel能量很簡單。
就是這個映射矩陣,就是二乘二矩陣的一個Frobenius範數,Frobenius範數就是abcd的話,就是a平方加b平方加c平方加d平方開根號,就是這種範數,這範數沒有太多幾何意義。
就是純粹度量這個變換,這個這個這個元素的平方和,這個這個那麼w_j呢,一般也會取成三角形的面積,給它加全面積大就就比例高,面積小比例低啊就這樣,但是這個這種意思呢,容易發生非常非常大的扭曲啊。
早年會用的比較多一點,這個這個後來最近就不大用了啊,那麼最近用的比較多的就是這種,保持某種特性,我們上一節也講了啊,比如說我保持這個這個a啊,這個a中的某個旋轉部分是是真正的旋轉,所以使得這個圖形啊。
發生真正的一個旋轉,不會伸縮也不會縮小也不會放大,如果你讓這個a中的這個旋轉分量啊,這個變成一個相似矩陣,這時候呢它又發生放大縮小,但是是比較這個均勻放大和縮小,所以這是個相似矩陣啊,就是叫做包角變換。
那麼這個我們上節都講過啊,那麼這就是對a進行一個u s v的分解,那麼這個這個中間的這個矩陣呢,就是一個對角陣,對二維來講就剛才寫寫過的這個,u乘以v t就是兩個旗子,然後旗子可以看到。
如果讓它盡量的向這個旋轉,那麼這個u1,σ1和σ2都等於1是吧,如果它相似只要它們兩相等,這就是剛才那個度量,相等等於什麼呢,應該等於它們的一個這個平均值,好這就是我們上節課也講了。
那個a i c a p,提了一下啊,就是那麼這是a i a p,a i p就是讓這個,這個中間的那個三角形,變換的這個矩陣部分呢,盡量是一個旋轉,那麼可以看到a i a p呢。
比較好的保持了這個三角形的形狀,a i c a p呢,形狀保證不了,但是它有個伸縮,它有一個這個這個比例的伸縮,但是不是絕對的,好這就是你對,如果這個度量不一樣啊,你是保相似還是保那個等距,就是旋轉。
還是常規的這個迪力克能的量,它的就會證明,minimize是什麽呢,minimize這個奇異值的平方和,這是minimize,它那個奇異值跟平均值的這個差,這個是更易的差,就是保形。
好那麽a i p這個方法,我們上節課沒有去展開,這個我稍微提一下他的思想,這思想呢就是一個迭代優化的過程,就是分成一個局部和一個全局,如果有大家有興趣,上這個文章實現不難,在雛形學課裏面。
我們是把它作為作業,本人也想作為這個課的作業,後來把它去把它那個還是先不暫時佈置,大家可以去看看這文章,是08年我的一篇文章,然後它那是兩兩部,一個是局部局部的話,就是始終對一個結果。
我始終去找一個最好的旋轉去逼近它,然後有了以後,這個散氧氣泡不就分裂了嗎,就把它縫合就算是就求解一個global的一個,系統發展組這個叫global,然後不能不不斷的迭代,後面有個圖我們看一下。
假設我要我要把把這個這個輸入這個紅線,就是中間在紅紅線往上抬,就抬到這裏,但是這裏的話這當然是個結果,但這個結果很不光滑是吧,那麼我們就去看,那麼這裏一個一個散氧氣泡。
原來原來這個我們考慮其中一個散氧氣泡,變到這裏個散氧氣泡,是不是就有個反的變化,但是反的變化可能肯定是發生扭曲,對吧,所以我把中間的這個最相似的旋轉扣出來,然後讓他們每個散氧氣泡發生變形。
這時候每個沒散氧氣泡就就碎了,碎了以後呢,我又要去global的一部呢,把它們縫合起來,就縫合成這樣子,可以看到,這個這個弧度已經出出來了是吧,好我同樣,我再去找一個最相似的旋轉,畢竟每個散氧氣泡。
然後然後然後又分裂了,是吧,然後又把它縫起來,所以分裂這一步呢,是local部,縫起來是global這一步,global是求求一個稀疏性方程數就可以了,那麼不斷不斷迭代,那麼迭代到最後,這個結果呢。
就是盡可能幫剛性的AIP,它使得這個總體上的這個,奇值都等於1,每個散氧氣泡的奇值,這個距離平方和最最小,好,這就是這樣一個結果,大家有興趣可以看看,未來可能用得到。
那麼事實上是這種local global的概念,是非常非常廣的方法,在優化裡面用的非常多,也叫local global這個方法,有的地方也叫交替迭代。
就是alternating local global,就是交替迭代的意思,好,那麼還有一些其他的一些詞,local global是在這,還有一些什麼T數下降,還有一些這種交替投影方法,好,好。
那麼這個這一刻,我們就很快就走出總結,這個幾何映射,就今天詳細解釋幾何映射中間的,幾個性質,還有一些類型,特別是這個bijective,還有這個distortion,這個度量。
那麼對於這種幾何映射的問題,優化問題,它有一個比較特殊的結構,因為它的能量是,這些三角形能量一個核,它是可分離的,所以呢,造成了就有一些比較特殊的方法,去求解它,就是不同於一般的這種優化問題。
它是有非常特殊結構,好,那麼往往這種能量的都是非線性,非推突的,所以對於這個,如果這個三角形雖然很大,它的計算量都是非常非常大的,這也是一個需要人們不斷去,再進一步減少計算量的一個地方,好。
那麼還有一種的就是上次剛才,就是我們不用去做剖分,就最早提出來,就是對這種fx,對某個g函數,組合出一個函數,那麼對整個區域進行一個f映射,那麼這時候,這裡就不需要去做網格化。
因為它是一個定義在整個區域上一個函數,只用這麼,那麼對於這種函數,這個叫matchless,我不用做網格,因為我是定義在這個區域上的,任何一個點,那麼它的這個bijective。
或者是flip-free,notation怎麼度量呢,比如說我要把這個圓,這個左邊這個圓,變成一個這樣一個像一個花的形狀,問裡面的區域怎麼變形,這個f應該怎麼求,是吧,這裡也有一系列的這個工作。
我就不去講,特別是我們組成一個陳琳潔老師,陳琳潔老師在這方面做了很多工作,其中就是這個f,你要有些獨特性質,比如說,我這個f在邊界上滿足一定的性質,我內部就一定能保持滿足一定性質。
這時候我想要把這個複雜度,把這些約束,只要定義在邊界上就行了,那麼這個f怎麼構造,這個是一般是用這個調和,這個映射的一些性質,可以去推出來,這裡面就是對這個f整體上的一些性質的討論。
這個跟基於這種三角片分解的性質不一樣,好,這也是,也有一類的文章來做這個幾何影射,是從這個全局的這個函數來考慮,我們一開始就提到過,函數可以按幾函數分解,也可以按區域分解,是吧。
好,那麼幾何影射,我今天主要重點是還是二維到二維,事實上是有很多其他形式,開始我也講了,就是二維流行到二維流行,甚至體就是一個volume,一個體的變形,體的話,內部有四面體,或者是六面體去變形,好吧。
那麼最近我們組,就是傅老師牽頭,寫了一篇中述文章,就是關於這個幾何影射的一些工作,這個內容比我今天講的還要多,因為今天我們主要還是一個入門,這文章應該是明年會發在CVM這個期刊上面,大家有興趣可以去看。
如果做這方面工作的話。
好,這是今天的一部分內容。
我們今天還要講一部分比較重要的內容,叫優化。
因為有同學這個這個通過助教,還有跟我發信,希望因為在做幾何裡面,特別是圖形學,不管做幾何還是仿真,都離不開優化,因為有大量的優化問題,很多優化問題是非常複雜的,那麼希望我們講一講這個優化的一些。
優化是個大學科,我們也不可能在一節課上講完,所以我今天會花個40分鐘,把優化的一些基本概念,大家給他一個引路,這是指針,如果發現有同樣的一個優化問題,你們再去找那些專業書,或者是paper就可以去看懂。
好吧,因為優化是非常重要,學圖形學不會做優化。
這個就很難做得很好,好,那個在上週我們就開始就介紹過參照化,就說這裡面是一個非常複雜的優化問題,這個是非線性函數,三角形的那個C值是吧,約束也是非線性,所以優化你要注意做這種幾何處理,包括建模啊。
這個沒有不會優化,這個是是就做不深,只能用簡單的工具而已,好,那麼除了幾何問題,事實上是在工程中,包括物理仿真,就大量的這個建模啊,從一個問題提出來,裡面的這個我要求它的結果,那結果呢。
都是可以model成一個優化問題,這個一個optimization問題,那麼這個經常會出現這樣一個模型,這個在這節課開始的時候,我就說到這個對一個問題要去解決,你一個非常重要的思想就是。
怎麼把這個問題變成一個數學模型,這個叫數學建模,這模型有可能是優化模型,有可能是個回位模型,有可能是一個統計模型,有可能是個其他的模型,但是這個模型,把問題變成一個數學模型以後呢。
剩下的東西就是用數學的方法去解它而已,那我們這裡今天介紹,如果你把一個問題變成一個優化模型以後,我們怎麼去解這個優化,那麼一個優化問題,這個整個建模啊,一個解剖問題出來啊,你可能是要找一個能量函數。
就一個目標函數,然後呢就還有好多約束,有些約束是等值約束,有些是非等值,就不等值約束,有些是線性的,有些是非線性的,最後呢,我有個目標函數,minimize這個目標函數,x的變量呢。
可能是一個NV空間的一個點,對於網格來講就是這些頂點坐標,那麼這是等值約束,這是不等值約束,那麼CECR就只指一些函數,那個具體形式,後面會就是根據問題不一樣,好,我們先介紹一些概念。
這個概念做過優化同學應該都清楚,如果沒做過的話呢,這一課對你了解優化是非常重要的,好,我把剛才的優化問題再把它抽象,實際上是在最優化的教材裏面都會是這樣,優化是什麽,我們一般都是指實質函數。
因為如果這個值是向量,向量是不可比大小的,所以談不上最大值和最小值,這大家有個概念吧,就是平面上的點,兩個點不能夠比較大小的,大小只有實數,所以一般最優化問題呢,就只能做是一個實質函數,實質函數。
那麼這樣的話,它這個實數就可以去minimize,求它的最小值,它的變量當然可以是一個高危的函數,這個就叫多變量函數,那麼這個叫目標函數,叫objective,也叫做能量函數,能量函數是energy。
所以你有時候叫目標函數,有時候叫能量函數都可以,還有些時候叫cost function,代價函數,因為這個代價值,你做一個事情,它有什麽代價都可以,所以這三個詞一般都是都可以通用。
一個叫objective,一個叫energy function,那麼這個function呢,有可能是可能會有好多項,F1+F2+F3,我們以前在做擬合的時候,我跟大家講過,有一項呢,我用函數去擬合點。
點擊的時候,F1度量它的誤差,F2度量這個函數的光滑性,F3度量什麽,所以一般這個每一個項呢,就把它叫做能量項,第一個能量項,第二個能量項,第三個能量項等等,或者是叫cost1 cost2。
這個cost代表,那個代表光滑cost,所以這個術語是通用的,好,那麽還有些約束,那麼約束呢,我們會把它分成兩類,一類是等於0,叫等式約束,一類大於等於0叫不等式,大家說我會不會出現一個。
小於等於0這個約束,沒問題,因為小於等於0的話,等價於大於等於0,因為什麽你前面兩邊同時加個負號,就變成大於等於0,所以我們一般寫的時候,只寫大於等於0就夠了,因為小於等於0的話,跟他是只要加個負號。
就可以變成大於等於0,好,所以這是一般優化問題的,一個一般形式,有個能量項數,有等式約束,有不等式約束,好,下面就是說不同形式,不同的這種FGH的這種性質,就決定這個優化,用不同的方法去做,好。
那麽今天不可能講所有方法,這個整整一本很厚的書,假對話書,這個是要一個學期才能上完的,不可能在我們40分鐘,或者半小時就講完,所以今天只是給大家引路,讓大家知道一些概念,你們知道概念以後,去有機的去看。
有目的的去看那些這個方法,這我也順便講一下,你們也不用擔心,說我沒有學會最優化,是不是就不能去做這個優化問題,不能做圖形學了,不是你們是邊做邊學,邊學就是邊去實踐,是學得最快的,所以呢。
今天我基本上把最優化的,大部分方法都會講完,你們只要有個聽完以後,有個印象,這個印象在腦袋中形成一個,一個事實上是,我把它比喻成聲語言中的指針,你們記住指針就行了,然後具體什麽方法。
你們這個遇到問題的時候,再去看這些書,再去找,這是學得最快的,沒有必要去什麽,一定要學一個學期的最優化,再來做事情,這個當你學過那個課以後,這個指針可能會更加全面一點,好吧,好,那我們就就就那個。
盡快把這個優化這個,這個講一下,好,這裏上是做最優化的話,有一個有兩個,有兩個非常重要的,就是說你不同的優化問題,有不同的優化方法,並且呢,你特定的優化問題,需要用特定的方法去解,才是最佳性能,所以呢。
你一般的這個不懂優化的,或者優化不是特別熟的,這個這個這個研究工作者,甚至包括一些老師或者同學,他們就是要有Metalab一個優化器,去求解,像這個是完完全全不夠的,你這個問題具有什麽特點,你要去挖掘。
你這個優化才能做得非常好,否則的話呢,你求解的這個優化,只是用一般的generic,就是通用方法去做呢,未必是達到性能最好,所以你要去根據你的問題,去刺激你的優化方法,本身這個優化優化。
就是一個非常大的一個學科,大家知道優化很多,不管是這個這個做工程的,還是做數學的,優化有非常多的人在做,是吧,其中還有很多院士,好,那麽這裏面有個概念啊,這個我們一步步把它,大家都要有概念。
如果一個函數,一個一個一個高位函數,那麽它對每個變量的偏導,這個叫t度,t度就是導數的一個推廣,那個在如果是n等於1,就是導數啊,那麽n是多位,就是偏導,那就是叫一階導數,這個這個推廣叫t度。
那麽這裏有個圖,這個黑色的是高,白色的低,相當於是一個貌似函數在這裏,只不過我把它顯示了一個揮手圖,事實上你可以把這個這個,這個黑色值想得大一點,就相當於一個高色函數,是吧,那麽這個t度顯然就是都是朝。
朝這個中心的嘛,是吧,事實上這就是為什麽叫傾向階函數,因為它跟方向沒關系啊,好,那麽這個函數呢,是一個坡度一樣的,左邊低,右邊高,所以它t度是這樣,所以t度是很形象,是什麽,是這個曲面。
一個高位曲面的一個最速下降方向,這個大家很容易理解,那麽如果是多變量,這個一個一個一個值率,是也是也是也是多維的話,那麽每個分量的函數,對每個變量去求找就構成一個矩陣,就是以兩何比啊,我們剛才也用了。
還有Hyson 陣,Hyson 陣是什麽概念,Hyson 陣可以看到,我把這個函數啊,在x0做這個tile展開,這是x0這一項,這是一階項,一階項這個就是t度,那麽這是兩階項,那麽中間有個矩陣H。
這個H就是這個Hyson 陣,所以Hyson 陣是一個,是我們兩階導數的一個推廣,那麽如果是tile展開,應該還要還要加上一個小歐,一個x-x0平方的一個無窮小量,無窮小量他就忽略掉了。
所以這是用約等於,就是後面就可以高階項可以忽略不計,所以說Hyson 陣是一個函數的,兩階逼近的一個,兩階項的一個度量H,你可以看到H是什麽意思呢,也可以這樣理解,就是這個是個z-fx,H是什麽。
是他的一個泡沫線在這個逼近,這個值,這個是個泡沫面,他泡沫面的一個逼近的一個,兩階導數的近似,另外一個critical point叫柱點,柱點就是那個t度等於0的點,就是導柱等於0的點。
導柱等於0的點我們用意味函數來,這個紫色曲線是一個意味函數,那麽這些點你可以看到,他的這個導柱等於0,這個在微積分就學過了是吧,那麽一個函數的最小值柱點就等於0,對吧,這是個是個可以是個必要條件。
但是他並不充分,因爲什麽柱點不一定是最小值,因爲什麽他有可能最大值,也可能是這個叫拐點,因為拐點的這個這個這個切線也得1。0,這個導柱等於0,所以但是我們就還是希望去找到這些柱點。
因爲柱點是有可能成爲全局最大點的,最最小點的,還有一個座右的話,大家清楚啊,這個我們的科學包括數學發展這麽多年,對一個函數的最小值求解,我們還是無能爲力,這個數學沒有那麽强大。
所以我們數學還是遠遠不夠用的啊,我經常講的數學不是沒有用是不夠用,是吧,所以說你看我們在實際問題工程中,要去求一個函數的最小值都沒沒法求啊,那麽只能什麽只能求局部績效值,因爲這個函數可能很複雜。
有很多的績效點,那我們唯一的能得到的信息就是說,我從一個點開始,從他點開始慢慢慢慢慢慢去搜索他附近的一個績效點,這個只是一條local minima,但是這個global是在哪裏。
事實上是到現在都沒有理論可以告訴你,當然對一些特殊的函數是有的啊,比如比如說是個突函數或者說是一個陷阱函數,當然這個最小值是很容易求的,但是對一般的非陷阱函數是局部績效最小值,我們是到現在都沒有辦法。
那麽那麽總有某個初值,那這裏就很有意思,你這初值怎麽取呢,所以取決於你的運氣,你運氣初值取得不好,那麽你可以掉到一個不好的這個績效值,那麽離這個最小值差很遠,你這個結果就就就就就不特別好。
那麽你說我求的運氣呢,也不是因為你在不同的問題裏面,你要去好好的想一想,你這個背後的物理背景有沒有,或者工程中有沒有背景,他的初值在哪裏是最有可能的,就最小值在哪裏最有可能。
所以說選初值不能夠這個這個缺乘,就什麽東西都都取零作為初值,這個是不對的,這個是要給你的問題,可能你用一個別的方法去求這個解,這個解作為初值會更好,不能什麽一股腦子,什麽東西都變成零。
從零開始開始來找這個最小值,往往找的就不對,因為我看到好多,包括包括他們做機器學習,深度學習初值就缺乘成零,這種這種稍微比較暴力一點,事實上你要根據這個問題本身,去找一個好的初值,就像我們做參加一樣的。
我們可以從那個float參加化,作為初值,然後再去做迭代,可以設置更好的一個參加化,好那麽一些特殊的函數,像to函數的注點就最小值,因為to函數有非常好的性質,他的最小值就一個,還有這種quasi。
quasi就是有為為to,他不是完全to,但是呢,他的性質很像to了,這個也是非常好求的,那麽這種我們不詳細討論,因為to函數在實際問題中運氣好,因為這個優化這個模型是個to問題,那麽就非常好。
這個能保證,但是大部分形狀的,他不是那個to函數,那麽這個就比較糟糕,那麽你要去想辦法去去求,好優化問題有些概念,概念我這裏稍微提一下,經常大家能看得到。
那麽如果一個minimize一個function,他他那個有些是沒約束的,就是只有一個minimize一個,比如說fx是一個變量,那麽下面沒有約束,這個叫5約束,如果下面有這個subject to。
那麽就是有約束,那麽線性非線性呢,這函數是個線性函數,非線性函數,你是求global的minimum還是local的,還有是to我剛才講過了,還有一個continuous跟discrete,這是什麽。
這是變量的類型,有些時候呢,你的變量的可能是在這個實質空間去去找,那麽那麽這是連續變量,連續變量的這個優化呢,相對來說比較好,因為什麽他的無窮小領域性質,微分就可以用上,還有些有些情況的x是屬於。
比如說我只讓你在整數域上去找,x我只是只是只是整數,你要去幫我找一個函數,幫我找一個好的整數滿足這個目標函數,這時候叫做整數規劃,或者叫做離散規劃,因為他的只是是離散的,他不是整個連續的一個這個定域。
這個叫隨機和確定性,這是優化模型,還有一個呢,這個我也提一下,可能很多地方也會碰到,叫單目標跟多目標,所以你有時候在一些工程問題,你可能有兩個度量,一個度量呢,是比如說你你去找一條最短路。
我們經常用的導航對吧,最短路那麽你希望這個距離最最近,這個是度量他的距離,從一個點到一個點的距離,但是呢我還我還還有個度量,是什麽度量這個這個時間,有些因為距離最近的這個路徑,不一定是時間最最短。
因為他有可能堵車,是吧,所以他可能有一個時間開銷,可能會多開銷,好這兩個開銷呢,哪個重要哪個不重要呢,你很難把握,所以什麽你就從事優化這兩個,希望他們兩個兩個都要小,對吧這個叫多目標,多目標這優化呢。
本質上也比較難,因為你這兩個可能是相互矛盾的,是吧,一般的兩個目標函數呢,會我們這一這個二為例啊,這個先不考慮好,1112往往他們是形成這樣,這樣的關系,11越大的12會會會越小,12越小呢。
12會越大,所以最佳目最佳點的是找找這樣一個點,這個這個點這個這個時候兩個目標都達到一個中和,這個誰也不不吃虧,是吧,所以怎麼找到這個點呢,也是有技巧,還等方式呢,就是說我這兩個目標啊。
我們兩個妥協一下,後面先不看,我就看兩樣,我我我給我給我加個權,給你加個權,如果大家都這個量剛差不多,那麼就lambda1=lambda,一般上去0。5,0。5,但是但是你覺得哎,我覺得時間更重要。
我把這個這個權加大,lambda2=10,lambda1=1,是吧,就表示時間重重要,我也把它權加大,因為權加大的話,會指這個值會進行小,是吧,所以多目標的話就要不就是找一個比較平衡點。
要不就是我們就這樣變成大目標,把兩個兩個目標加權,變成大目標去優化就可以,只不過這兩個目標中間有個權度量,好,無約束的優化問題,我們先講,好,無約束的優化問題就是下面是沒有約束。
沒約束這個這種優化問題相對來說比較容易,我們在微積分不應該在微積分獲得之後,你們如果學過數值數值數值方法就就學過,好,就是提出最簡單就是提出下降法,假設給定一個初值,我們這裏做任何一個優化。
都要給定一個初值,X0,就X0怎麼去一步步步跑到你要的這個局部績效值,X,好,那麼那麼一般迭代就是怎麼朝最速下降方向,對吧,好,我有個其中有一個迭代Xk以後,我下一步要往更低的值跑,怎麼跑呢。
就朝T的方向的負方向跑,是吧,偏一個αk,這個αk是取多少很有講究,這個αk有個名字就叫Line Search,就是度量,我這個αk不能太大,也不能太小,太小就跑很慢,太大呢,可能就就跑破頭了,是吧。
所以很多一些優化方法對αk就是這個步長,就是步長,這個是需要非常謹慎的挑選的,那麼這是這個這個叫一階方法,牛頓提這叫這個提出下降,是叫這個一階方法,那麼還有更高階方法就是牛頓法。
牛頓法的這個幾何意義很明顯,你可以看到他跑的方向啊,是跟這個海省鎮方向的一個相關,實際上他用一個局部的一個拋物線去逼近他,他往這個拋物線兩階方向去跑,跑完以後呢,再往下來,再往下跑,這樣跑的話跑得更快。
因為這樣跑的話,他本來要跑好久才跑到這來,他這樣一下子跑到這來,再一下下來,所以這個是用了一個牛頓,用了一個海省鎮的一個信息,這個來找這個跑的方向,可以跑得更快,那麼這個叫兩階方法。
那麼牛頓法這個兩階收斂很快,但往往有的時候呢,這個牛頓法這個海省鎮啊,他這個這個可能是非正定的,就沒有逆或者是退化的,或者說他的逆很難求,那麼怎麼我們就能不能找一個中間的一個,所謂的矩陣啊。
這個海省鎮的逼近,然後用他來逼近這個海省鎮的逆,這種方法也是一大堆,牛頓法,那麼比較有名的就是BFGS跟LBFGS,BFGS這個沒什麼特定意義,就是就是用發明這個方法的四個作者,這一個頭字母。
就是這四個人啊,這個這個這個頭字母來命名的,因為沒有特別的名字,所以就叫BFGS,以及他的一些這種變種,很多變種啊,比較有名的就是LBFGS,好,這就是說,我牛頓法裡面海省鎮如果不好求,或者性質不好。
我可以去找一個近似矩陣去逼近他,那麼具體這個問題,有些問題好找,有些問題不好找,你要看你的問題本身,那麼還有一種是叫坐標下降吧,這個呢就是畫個圖就容易解,容易清楚,假設是雙變量,這個函數是這樣,他找呢。
他他也不是往T2,也不是往這個二階牛頓去方向,他怎麼他是首先固定X去去,固定X去讓Y優化,然後固定Y在X優化,固定X固定Y固定X固定Y,就是沿著這個坐標軸下降,就是把一個多變量的,變成一個單變量的。
你看第一步是FIXXK去求Y,求到一個YK,然後再FIXYK來求X,上就是這樣這樣做是吧,那這種做呢,就是也也能夠去去找到一個,相對來說比較比較比較這個這個低的值,好,但這個這種方法也要小心應用啊。
因為不是所有函數都具有很好的性質,有可能跑著跑著就就跑偏了,那麼大家那個這個對於不是做優化本身的,一些同學或者是不熟的同學,就直接可以去找Metalab,還有C++有很多庫,這個是LBFJS專門的庫。
像Metalab裡面就一個Fmin,還有MinFunction都可以去用用好吧,用這些函數的時候呢,你們也要注意一個要要那個很好的設好初值,或者你這問題本身我還是這句話,你不能一股腦什麼都確認。
設初始值,比如不常你也念念什麼什麼隨便設,那個那個那個那個初值隨便設0,你還是要想一想,你的問題本身到底有沒有幾何意義,或物理意義,有沒有物理意義去找那個符合這個意義的一些初值,不常呢也要去去好調。
不調的話你可能收斂出來,求出來的值最小值是是不好的啊,那大家多去體驗一下,好那我們再講更多的類型叫整式約束,整式約束的就是比剛才無約束加了一個東西啊,就是多了多了個這樣的啊。
那麼整式約束這幾何意義是什麼呢啊,我們看一看啊,Gx等於0表示什麼,表示他這個這個我的我這個解啊,要滿足這個等式,滿足這個等式這個Gx等於0,我把他的圖像給畫出來假設是這個紅的,好Fx是一個函數。
那麼我把他的等值線畫出來,這是Fx等於0 C,這是CR這是C,好那麼那個什麼點才能達到Fx的極小值,然後又滿足這個條件呢,你可以看到你從直觀上來看,假設這個方向是是是是慢慢變小的。
是不是是不是這個點是最有可能,是吧這點有有什麼性質啊,可以看到這個顯示性質呢,F的t也是這個這個最大化的,G在這點呢也是跟他跟這個等值線是相切,所以呢他有很好性質,這兩個函數啊。
在這在這個我所要的這個目標點這個t度啊,要要重合或者是叫平行,但是可以相差一個正負好是吧,就是就相差一個倍數lambda,就是要有這樣的性質,可以看到我要去求這樣一個代約數的x,那麼他要滿足這個條件。
是吧我們這個條件這個條件就是什麼,就是變成了x就要滿足原來的條件,又要滿足這樣新的條件,這就變成一個方程組的問題,那麼這個lambda在這裡面也是個變量,你只不過多了個變量啊。
這就是這個上次從數學來看來看的話,事實上他把它變成一個lagrange的乘之法,就是fx加上一個lambda gx,minimize這個函數,那麼x和lambda都是變量的,所以你去對x求偏導。
就是這個式子,對lambda求偏導就是變成這個式子,這個式子是對lambda求偏導的,這樣一個等式,所以多了一個變量lambda,但是呢我把它變成一個方程組的求解的問題。
所以對於這種帶等式約束的這個優化,lagrange乘值這個是比較好的方法,當然還有別的方法了,我這裡就不詳細展開,基本上就是把它轉化成一個無約束的,想辦法把這個約束給去掉。
當然很多情況下,如果你這個約束不是特別複雜,你可以反反解把這個消元,把這個裡面的一些變量去掉。
代進去就減少變量,就是把它變成一些on constraint,就因為你可以去消掉一些constraint,這種運氣不一定很好,有些很複雜的這個約束就不一定做得到。
還有現在是用一些這個函數去逼近的,好,那麼還有一種這個方法經常用的,就是有點像這個交替迭代,算就是交替投影方法,什麼什麼意思呢,這裡C1 C2 C3都是一些等式,就是既要滿足這個等式又要滿足這個等式。
P是他們的交集,就是要同時,那麼每個等式約束都是一個空間,就是這裡表示C1,這裡表示C2,這個方法有點像剛才那個坐標這個迭代,我先把這個一個初始往這個C上去滿足,因為C滿足的話。
相當於是P0對這個C進行投影,有個垂足,然後我再去滿滿足C2,然後再滿足C1,再滿足C2,不斷迭代迭代,就找到一個中間點,這個這個就是我們剛才坐標法的一個推廣,只不過這個這個不是朝坐標。
是朝一個這個可行極,那麼這個地方才是C0和C2的一個交集,共用部分。
那麼還有這個Lagrange,這個Lagrange的事實上是,就是把這個constrain作為一個目標函數,但是他不是Lagrange,他是中間他就讓他極小化,但是這裡有個權。
這個權是在用過程中是要改變的,還有這個ADMM是最近幾年非常流行的,就是他把這個變量分成兩套,這兩套關係是個現役關係,這時候就可以用這個叫交替迭代法,就像是交替迭代法的本質,是把這個變量分離後。
就變成了若干個小問題,有一個問題關於X的,有個問題關於Z的,還有個問題是關於這個,就是關於這個變量的,變成三個子問題,而每個子問題相對來說好解,因為規模小了。
還有一個是可能是變成一個closed form,中間經常會有個這樣的詞,叫closed form,closed form就表示是一個有意思是什麼,叫解析解,就不要去優化,只要去解析求一下。
那麼大部分情況下,就是有一個優化是局部的位優化,規模很小,有一個是有全局解,全局這個closed form的,有一個是,比如說是一個很小規模的優化,這樣的話,通過這些小規模的優化。
來求解這樣一個大的系統,這裡就是要發現這個變量之間的關係,有些是要這個,這個憑空產生這些變量,作為這個ADM的方法的一種應用,比如我這裡舉個例子,舉例子,就是這裡題目有點像藝術一樣的,你看這個優化。
這個解釋一個,比如是個矩陣,m解=b,是要這是個項量,矩陣乘大就要滿足這個方程,那這個方法,你可以看到,他憑空的生成了一個新的變量,解一把,解一把,解等於解一把,解一把滿足這個。
所以這兩個跟這個是一樣的,但是目標函數,他這裡加了一個這樣的項,GI-GI一把,這個平方和最小,這是不是讓他們倆盡量相等呢,這就是增廣項,那麼他可以變成兩個子問題了,一個求GI,原來的GI,一個求GI。
那麼這時候兩個,就有一個是顯示的,有一個是這個,很容易求解,這樣的話,你就把這個再一個問題的巧妙的,變成這樣一個ADMM的方法,可以求解,很多文章,像這裡有個文章可以看看,他裡面用的技巧,也是比較漂亮。
好,關於等式優化,剛才也講了不少,這個大家,這個這裡我列的主要的一些方法,特別是最近十年來,圖形學裡面大量用到了這些方法,ADMM,這次你就可以看得到,還有AL,這個增廣拉攬日,這個方法。
這個你們碰到看文章的時候,如果碰到了,你就知道他們是怎麼做,是什麼思想,那麼這個懂了這四項以後,就看得懂他那些變換,這個獅子是怎麼弄,所以一篇好的文章,這個基本上就是model,解決問題。
model很重要,model完以後,優化如果你還有自己的一些特色,很好的去,如果不用這個優化,用通常優化很慢,而你想一個好的優化,那麼你這個優化又是文章的一個貢獻,所以很多幾何文章。
基本上都是model是一半,這個優化,這個是一半,就兩部分拼起來,才構成你這個文章的,這個非常大的貢獻,好,那我們等式約束講完,我們再講不等式,不等式約束很簡單,就是剛才等式,這個變成不等號,是吧。
就是他,他是一個不等號,不等號,等式是一個什麼,等式上就是一個高位空間的流行,是吧,不等號呢,小於等於零,大於等於零,大家想一想,一個曲面小於等於零,假設一個球面,球面等於零就是這個球面本身,是吧。
小於等於零是不是球面內部,大於等於零是球面外部,所以他這個表達什麼,表達了一個流行,把空間分成了兩部分,小於等於零是一部分,大於等於零是一部分,所以很簡單,所以他這個不等式約束。
我們理解他的幾何意義以後,我們去想,去看懂那些方法,就能看懂,好,那麼這裡當然都假設F和G,都是實函數,好我們看一下這個,那麼這裡G1X等於零,是一個流行,那麼小於等於零就是這個半空間。
如果是要曲線的話,就是這個半平面,好,那麼大於零就是另外一個空間,是吧,所以那麼這個小於等於零,這個空間,叫做這個約束的可行域,Feasible Domain,可行域,對於整個優化。
對於整個優化問題的可行域,是所有約束都要滿足,像是G1X有個半空間,G2X我也有個半空間,這個半空間跟這個半空間,他們交集,就是這個可行域,如果還有G3等於零,G3小於等於零,那麼就他們交成這個空間。
就這裡面這個X都滿足這些約束,所以從這裡面去找一個Fx,最小的值在哪裡,所以Fx求最小值,應該是在這裡面去找就行了,這個叫可行域,叫feasible domain,就是因為在這個地方。
才是這些不等式都滿足的地方,是吧,所以這個可行域,叫feasible region,好,那麼這裡看一個函數,那麼你這個可行域求出來以後,你這個Fx再去求最小值,就是看他等值面,等值面跟這個可行域的這個。
這個接觸點在哪裡,接觸點,比如說Fx的等值面在這,那麼大家可以直觀想想,那個等值面都是這樣一圈一圈的,那麼是不是這個點是極小值,概率是最大的,對吧,因為這個等值面在這,是吧,所以跟他第一個接觸的等值面。
就是最小值,因為往外就是變大了,對於這個點,所以等值面是跟其中的某個函數,應該是垂足的地方,但是是哪個不知道,這個就要看距離問題,好,這個好,那麼這裡有不少方法,不少方法,這個因為在優化理論裡面。
還是比較豐富的,就是有個叫KKT,這個條件,條件就是一般把這個問題,先轉化成拉格朗的形式,因為這個不等式,我先變成等號,像這個就是個拉格朗的,多個項就多個拉格朗的層次,那麼我也希望。
希望他滿足什麼條件呢,就是這個KKT證明了,這也是三個人名,就是你要去求的這個minimum,他要滿足什麼條件呢,一他要滿足這個拉格朗的,這個是必須滿足,第二這些條件必須滿足,這顯然嘛。
因為這是條件在了,還有第三,這些那層次必須大於零,第四還有一個這個條件,這個條件是比較非直觀的,但是可以也可以看到,他就是這個最小值,lambda i在這裡要等於零,表示差在邊界上面,好。
那麼具體怎麼怎麼個求解呢,這些我就不詳細展開,時間可能比較緊張了,好,然後最後這個怎麼求解,還是有一些方法的,也是這種T2向下,用一些這個GGG的方法,對對對,這是GGG,Active Set的方法。
就是他也是在不斷的去去去去,去迭代這個Active Set,還有一種方法是比較多,採用的叫內點法,內點法,內點法就是什麼,設置這個障礙函數,Borel這個函數,Borel函數什麼意思呢。
Borel函數上的就是這個值的一個倒數,就是如果u小於零,就是u大於零,他就要等於正無窮,他就阻止這個值,要變成u小於零,這個解,所以一般一般的就會把這個GX,作為一個在這。
作為這個這個函數的一個裏面的部分,因為這個值大於零了,就變成了正無窮了,所以不能讓這個值大於零,所以設一個這樣的中間函數,這函數就表示一個障礙,就跟我們剛才講參照化一樣的,就三項型我一翻轉。
他這個值就變成無窮大了,因為因為分母變成零了嘛,所以用怎麼來設計這個障礙,是這個這個這個一個一個一個關鍵,那麼這個呢,解法也叫內點法,好那麼具體方法的陳述,我就不展開,大家有個印象,我想我們我們這個課。
畢竟不是講最優化,因為最優化本身也要講一個學期嘛,所以我在這裏只是給大家一個一個主路線,好還有突優化就相對比較簡單一點,雖然比較簡單,但是也是一門,要要要講可以講很久,也是一本書,因為突函數性質很好。
所以大家都希望怎麼去去那個,把一個這個優化變成出問題去做,那突優化呢,突突擊的概念很簡單,就是任何兩點他連線都出現在這個集合本身,這就是個突擊,突擊他的那個最最小點,他有非常好的性質。
所以這裏面也發展出一系列的這個這個方法,我就不去找,不去不去講,那麼經常碰到的一些典型的突優化的一些類型,這裏應該是類型,類型比如說這個線性規劃,這個像這個x這個線性函數,這些線性整式線性不整式。
這就是突優化問題,這個這個可以用分析境界,就是線性規劃,這個叫二次規劃,他的能量是二次的,二次就是突嘛,就是就是拋物線的推廣,這個只要整式也是線性的,不管整式還是不整式是線性的,都是屬於這種二次規劃。
還有一種叫Conic Program,就是這種模對模進行約束的,也是不整式,還有這種半正徑的這種優化,這個在優化突優化的學裏面,就有很詳細的解釋,大家根據具體問題,如果你的這個目標函數剛好是這這幾類。
那麼儘量用突優化去去解,會解得非常快,還有其他的優化,還有這個這個這個最小二層,非線性最小二層,非線性最小二層的形式是這樣,能量是某些能量的一些和,只不過EIx是非線性,那麼這個是叫,這個是大引領嘛。
因為是平方嘛,平方和但EIx是個非線性的,可能很複雜,最有名的方法就是LM方法,還有整形規劃,整形規劃就是變量,就是混合了有連續性的,還有一些整形的,就是這部分變量的只能取整數,是整數範圍。
所以它是混合型,那麼整形規劃的這個相對來說比較難,比較麻煩,那麼大部分方法就先把它鬆弛成連續,然後再用一些係數方面的東西,把它把它限制在整數上面,這也是有很多比較多的技巧,我都這裡就不展開提一下。
在純優化學裡面這種方法用的比較多,因為很多一些問題要限制在頂點,要限制在一些,比如要對齊啊,直接整數的一些性質,這個約束,好,那麼這個講純優化,剛才講了這麼多,實際上是我們更重要的是。
怎麼把優化用到解我們的問題,是吧,我們解決處理優化問題,優化問題實際上是跟一般的純優化問題,還是有點特殊性,因為這個圖剛才也看過,是吧,就是什麼,我們的優化目標,往往是這種很多小單元的一個目標,所求和。
是吧,所以它的這個目標函數,是有個非常好的結構,separable,是可以分離的,在我們前面的兩次課,包括今天的影射,都有非常多的這種特殊結構的優化,而這種優化呢,是在我們幾個處理裡面。
也非常特殊的形式下發展出來的,很有意思,包括那個18年,我們Sigma Progressive,那個Parameterization裡面,這個方法,我們對這個目標函數進行一些改,這個逼近,是吧。
我們不是優化,這個找方法,不是去找優化方法,而是把目標函數進行一個變化,來去求解它,然後把目標函數不斷逼近原來的目標函數,所以這是這個,這個這個這個發明了一套新的一個優化的觀點,也是非常有意義的,好。
優化這個這個領域很大,所以很多科學家,學者就就一些開源的軟件,包括一些庫啊,等等啊,就發展起來,那麼我們用的比較多的,Igon在卓越6就讓大家去用了,是吧,你們只是用了其中的那個求解稀疏方程組,啊。
實際上裡面他也有一個優化器,如果你要找工具的話,Metalab是是是比較比較用的比較廣的,那麼CVX也是個比較有名的,它是用來做圖優化的啊,啊,還有其他的一些優化軟件,還有Lingo。
Lingo解這個線性規劃,還有一個叫Lingo解非線性優化的。
好,如果要去學優化,這個這也不是我們這學科重點關注的啊,本身在這個優化,這個就是一個方向啊,這個很大方向,裡面有非常多的人去做做這個研究啊,這個大家都在希望,希望這個去找一個函數的,那也就是問題很簡單。
就是一個函數找到的最小值,就是這個優化,但是呢,裡面的理論啊,包括這個函數複雜度的分析啊,包括收斂性啊,還有精度啊,等等理論上還是有很多東西可以去做的,啊,但我們對我們來講。
我們就是要靈活的把它用上來啊,如果對圖優化感興趣的可以看看這本書,這本書還是不錯的,那麼對於一般的優化,這本書是我鼓勵大家只看一眼,不要看太多書,這麼這麼這麼教材是最好的啊,啊,雖然是零用年的。
但是基本上還是比較比較經典的啊,那麼如果對整形的話,看這本那整形用的比較少,包括這種組合優化啊,這個左右化可以看這本書,但如果你們在實際問題中沒碰到的,也沒必要去看啊,碰到時候再去看一看啊。
或者是從別的已有文章裡面去得到一些啟發,把它用過來就行了。
好吧,好,那麼今天差不多時間剛到啊。
就今天講了一個幾何映射和幾何優化啊,優化的話呢,講的也是比較泛的,告訴大家有哪些類型,主要去找哪些,啊,這個這個這個方法,還有一些參考書,更多的是我們在實際中成長啊,就是在在做一些實際問題啊。
我們不斷去學學優化,不斷去去去找這些這個優化的一些技巧和規律,從別的的文章中學習啊,這是學的最快的啊,不用擔心說我一定要去選一門課,學完之後才敢來做這個事情啊,往往是在戰鬥中才能成長一名將軍啊。
我也鼓勵大家去多多這個實踐好吧,那麼後面這個課呢,那個還有一個事情交代一下,那個上週因為直播平臺可能出問題,所以後來改成同學會議沒有錄,我會抽時間吧,再再重新錄一遍啊,以保證這個課程的完整性。
那麼後面這個課呢,估計還有三到四次啊,我看情況,因為後面還是SIGGRAPH deadline,我也會比較忙,那麼我想這個有些後面的課題課題呢,我可能就講得比較快一點啊,這個給大家一個指針啊。
幾何處理還有一些什麼問題,還有什麼方法啊,實際上是真的要慢慢細細講,估計還可以上十次課啊,這個可以可以講得比較比較深入一點,但我想未來Games平臺,我們還會再繼續開一些高級課程,把一些問題進化一下啊。
所以大家也不用擔心啊,然後如果一旦碰到問題呢,也可以跟我們聯繫啊,跟一些同行聯繫啊,這個來啊這個繼續學習好吧,所以後面具體還有幾次課,估計三到四次吧,所以後面我想還是盡可能多的,給到各位同學呢。
更多信息對這個領域有個全面的理解和了解,更多是一些指針的一些了解,你們還是要通過做一些實際的項目啊,不管是跟自己做還是跟別人合作,做的過程中就會對這些東西有更多的更深層次的理解,好吧。
實戰中才能成長為這個真正的高手吧。
好那麼今天的課就到這裡為止,各位同學再見,再見,拜拜。
你不是說你會幫我嗎?我會幫你, 但你別想太多了。