前言
由于毕业将至,为早日完成毕业设计,最近忙得有点手忙脚乱,在此梳理一下,以便日后学习更有条理。
学习进展
毕业设计题目是点云处理方面的,要求是需要编程,指导老师说到要学习OpenGL,在上一篇OpenGL入门(1)——建立一个OpenGL项目中大致介绍了再之前一段时间OpenGL的学习,想法是跟随着视频教程做,看看难度如何,后来感觉到内容有点多,对很多东西的理解都不是很到位(举个例子就是,正常情况下我写代码都是对实体的抽象,而OpenGL给人的感觉就好像是对实体抽象的抽象的抽象……),在调试的时候也遇到了问题,只好在看完第17节的时候暂停。
后来找的了一个关于OpenGL的文档式的教程LearnOpenGL,感觉内容丰富,可以参考着学习,但开始之后就发现自己C++的知识很多都忘掉了,于是又用几天时间大概过了一遍,不求每点都记住,只求混个脸熟。
又后来,老师给了一些往届同学做的毕设,老师团队近期发表的成果,一些可能会用到的软件,以及一个MFC框架的程序样例。这么多东西到手一下子有些手忙脚乱(这该死的学习资料……)。首先想要上手的是MFC,经过一段时间的摸索(参考的教程是B站的黑马程序员MFC教程),认识到这是微软为了降低Windows平台上开发软件的难度所做的一个框架,里边有各种各样封装好的控件,个人认为这些东西还是留到用到的时候再去边用边学效果好,再说到时候也不一定用MFC框架开发,于是在了解完信息传递机制后就先放下了。
再后来就到了今天,来理一理未来学习的头绪。(2021.1.12)
(2021.1.20)开始学习MFC,用的还是上边B站的那个教程。P2-P4讲的是在不使用MFC的情况下生成窗口,可能有点劝退(之前我就被劝退了o_o),其实只要简单理解就好,后边真正使用MFC还是比较友好的!还有就是在评论区找到了资料,提取码:vvhr,包含教程的全部源码和文档资料!非常Nice~
(2021.1.27)对于MFC的学习感觉从视频教程中连皮毛都学不到,决定找相关书籍进行学习。这里推荐《精通MFC程序设计》和《深入浅出MFC》,已上传至MFC学习资料,两本书都很不错各有各的优点,其中《精通MFC程序设计》较新。推荐重点阅读其原理和框架介绍部分,实践部分用到再看。
(2021.2.16)年大概是过完了,又一次整理思路,决定近期要做的事情。老师之前一共给了大概有20篇的论文,包括期刊论文和毕业设计范文。计划每天完成2篇论文的阅读,并在阅读时做好笔记,包括研究目标、技术路线、研究成果。希望能在月底前完成,毕竟开学要汇报个人工作。 つ﹏⊂
(2021.3.18)认识到时间的紧迫,准备实习时加加班搞一些工作。今天发现了比较友好的MFC教程:MFC 最详细入门教程,MFC编程入门。
(2021.3.20)又看了些MFC教程还有文献后冒出了个想法,先把点云处理的算法搞出来,结果放到CC里边显示,什么窗口应用程序,什么Opengl可视化都先等着,可以的话回头请教一下学长,说不定还能事半功倍。还有就是今天找到一篇跟毕设非常相关的博士论文,内容详细,之前很多疑惑估计都能从中找到答案。明天正式结束实习,专心搞毕设。
(2021.3.23)老师题目给的是超级体元,但见到的多是用超体素来表达这个意思,而且用超体素来查找文献方便很多。看了些文献,对超体素的概念有所认识,不再是一无所知,毕设终于有些眉目了 😃。接触到了PCL,感觉会对毕设很有帮助,开新坑~~
(2021.3.25)上手PCL,感觉是真的好用,希望能在以后更多应用。犹豫是否要继续使用MFC框架,想了下如果这个东西都搞不定,那还能搞什么?之前学长都搞下来了,努努力应该没问题,奥里给,干了!
(2021.3.26)看《精通MFC程序设计》各种代码糊脸上,感觉真的太差了,直接劝退。下午找个靠谱的视频教程来搞一下,这次是MFC进阶教程深入浅出版,快速看完,不行就换。看了下视频,感觉终于有点清楚了,在此安利一下这个教程 😃 。不过思路虽然清楚了很多,但对视图更新方面还是有很多疑问,莫名其妙就自动更新试图,让人摸不着头脑,好在目前这个不是太要紧。
(2021.3.30)开始上手PCL,在此推荐一些网页以供学习之用:PCL-1.11.1、VisualStudio2019 配置点云库 PCL1.11.1、PCL(Point Cloud Library)学习指南&资料推荐(2021版)、点云库,推荐看官方文档,很不错!
(2020.3.31)找教程学习Cloud Compare,在B站上找到CloudCompare Tutorial,不过是英文没有字幕,后来就在油管上用自动翻译看,看下来感觉还是很有用的。之前有想法录下屏发出来,结果一个不到半小时的视频录下来9个G大,直接劝退。CC用下来最大的感受就是数据可视化和里边的数据分析很好用,可以拿来验证想法,毕竟只有深入了解数据的真实情况才能做好后面的处理工作,还有里边也有很多点云处理方法,不过还没接触,相信用处也会很大。
(2021.4.2)大概看完了某位老哥的PCL学习笔记,之后接触了下官方文档,不得不说还是官方文档内容丰富,看起来思路也更清晰,就是之前没找到,可惜了QAQ
(2021.4.4)开始尝试使用PCL实现自己的想法,遇到了不少没处理过的情况(包括报错C盘被占满,,,),不过还是勉强实现了想法,后续再慢慢补充,逐步完善吧。
(2021.4.5)随便翻翻发现了OpenGL在MFC程序中的配置及使用,直接泪目,就是找到得有点晚/(ㄒoㄒ)/~~
(2021.4.7)终于完成第一步,可以开始下一步了,还靠着运行脚本的时间看完了一部动漫(京子赛高!),不愧是我 😃
电脑用下来感觉一直在抱怨加班,只好大发慈悲,勉为其难让他下次班吧。跑了下五公里均速6分半,哭辽/(ㄒoㄒ)/~~
(2021.4.8)试着用kdtree处理问题,稍微修改了一下,结果之前要九百多秒处理的问题十几秒就处理完了,效率惊人。
(2021.4.9)今天老师第二次培训,几分钟时间给了下大方向的指导,收获很大,感觉要在概念上多下功夫,理解清楚概念才能更好地运用基于概念的方法。请教老师带的研究生师兄两个问题,结果师兄不说话了,估计只能靠自己了。 /(ㄒoㄒ)/~~
(2021.4.13)测试了pcl中pcdreader和loadpcdfile这两种读取方式运行速度,结果如下:
可见这两种方法的读取速度基本一致,不过试过读取data为binary的pcd文件相比data为ascii的pcd文件速度有极大提升,一个数据量为六百万的文件如果为binary格式,能在十几秒读取完,如果为ascii格式,则要十多分钟。
学习计划
之前的学习多在程序方面,主要是为以后的程序设计打基础,但就毕业设计本身的内容还没有涉足。在此制定如下学习计划:
阶段一
一边参考LearnOpenGL学习OpenGL,一边阅读老师给的那些文献,对毕业设计内应包含的内容有大致的了解。
(2021.1.19)计划赶不上变化,LearnOpenGL教程里有很多关于着色器、光照、渲染的内容,参阅往年学长的毕业设计发现这些知识在点云处理过程中基本用不到,而且相比之下这部分内容基本上是OpenGL最复杂的,因而现今想法变为OpenGL学习仅看跟三维可视化相关的内容,如此的话教程便只是一个参考,起帮助理解的作用。
阶段二
阅读更多的文献,开始毕业设计内容的创作,在此过程中学习一些专业软件进行数据处理,同时进行毕业设计中程序的开发。
(2021.1.19)关于程序的开发有了新的认识,OpenGL的实际意义并不像之前想象中的那样,可以简单地把它理解成一个可视化工具,主要作用就是进行点云的可视化,真正重要的是滤波、填补、分类、识别的算法,最终的难点还是在处理过程上。(有一点格令人兴奋的是发现之前学长留下的源码,相信参考学习后一定能有不小的收获,在此感谢老学长 😄)
阶段三
对毕业设计的文本和程序不断迭代修改最终完成成品。
总结
如老师所言毕业设计就是锻造宝剑的最后一步——淬火,是大学所学能力的集中体现。大学总要做点东西吧,不然跟没上有什么区别?现在目标只有一个——完成毕业设计,早日滚出学校。