我学习图像处理的小结

jsxyhelu2015 2017-08-14 10:43:41
加精
前一段时间,我一直在制作OpenCV基础知识的课件,因为一方面我感觉如我现在的准备的东西缺乏一个系统的过程;另一方面我也在做视频的过程中,反省自己对基础知识是否掌握牢靠了,千万不能误人子弟。那么课件的制作,包括内容的顺序,主要还是基于《learningOpenCV3》的。结合制作课件,我对《learningOpenCV3》书后的习题较为仔细的解决,并且push到了Github上https://github.com/oreillymedia/Learning-OpenCV-3_examples。有push当然也就有commit了,可喜的是这个commit是由Opencv类库的创始者,也是《learningOpenCV3》这本书的作者Gary操作的。一来二去混熟了,我就问Gary这书怎么还没中文版呀?他说开始搞了呀。我就说我能不能加入呀?他说行。要了我的email,接着联系上了清华出版社,也看到了部分初稿。由于书已经翻译的差不多了,我就作为reviewer加入,主要是看一看语法和程序方面的错误。review的过程,实际上还是一个重复学习的过程,很多在以前学习过程中一笔带过,或者看不懂就拉倒的地方,现在就必须认真仔细地来看——多多少少要担负责任的呀。这个过程中,反思走过的路,悟出了一些东西,主要是当时是如何一步一步学习起图像处理的,和大家分享:

第一个过程,从不了解到了解
我一开始是用csharp的,而且刚开始做图像处理用的是halcon。halcon的官方自带的例程很多,百十来个吧,我当时一个一个跑着玩,感觉很有意思;然后就想办法融合到csharp中去。csharp不是写界面快嘛,加上halcon的函数效果,就能够得到完整的程序。然后我开始修改这些例程,实际上,我一开始使用halcon来做图像拼接,并且实现了出来http://www.cnblogs.com/jsxyhelu/p/3390598.html。但是halcon的版权的呀,还有和界面的交互的问题也多,苦恼时看到一本书,叫做《学习OpenCV2》,听老师傅说这个很厉害,翻了一翻——完全看不懂呀!
第二个过程,抄袭,形成自己的东西
版权是硬伤呀,没有办法只能学习OpenCV,一开始不是看《学习OpenCV2》,而是其他书。我采用的方法是在当当、china-pub中搜索opencv这个关键字,然后找到所有已经翻译成中文的opencv方面的书,然后再亚马逊上面搜索opencv,再找到那些还没有翻译的原版。基本上,OpenCV相关的书英文的我都有,比较重要的有中文的。书拿到了,我认为比较高效的方法就是——快速过一遍,有了基础;然后跑里面的例子,增加感性的认识;然后再根据需要重构,反复反复。这个过程中,也生成自己的专用函数GOCVhelper(位github开源,简介http://www.cnblogs.com/jsxyhelu/p/5904251.html)为了使用OpenCV,从头学习mfc,虽然现在c++发展很迅速了,windows这块还是mfc支持的比较好;偶尔看到于世琪的dshow对mfc的支持,感觉这个太好了,多次封装成为了GOMFCTemplate2(位github开源,简介http://www.cnblogs.com/jsxyhelu/p/GOMFCTemplate2.html),成为一个比较完整的库了,也发给于世琪看了,他说很好!还帮在微博上推了一下。
但是mfc写界面实在太慢呀,怎么办?两条路。一个是用csharp来写,在这个方向研究,形成了《Csharp调用基于Opencv编写的类库文件》http://www.cnblogs.com/jsxyhelu/p/GOCW.html 这种方法,但是有缺陷,传递的图片不能太大太快;另一个方向是mfc形成更全面的类库,实现了GreenOpenPainthttp://www.cnblogs.com/jsxyhelu/p/6350260.html,类似于画图程序,带文件列表,能够放大缩小还带阴影,最重要的还是带准确的标尺,还能够画矩形框。要知道,想在mfc中实现这种效果,全部要底层实现呀,我可是翻遍了github,codeproject,问遍了stackoverflow才得到这样的结果的。
当然,这些模型的推动,都是有实际项目拉动的。首先实现项目,然后从项目中将模型精良出来,方便下次使用。我基本上采用这个模式吧。
这样,csharp通过clr调用opencv , GreenOpenPaint实现多图像处理,再加上GOMFCTemplate2实现实时视频处理。那么对于桌面来说,基本够用了。下一步就是手机端和webapi了,这些已经思考到了,在研究。
第三个过程,算法原创
做到这个过程,还只是使用OpenCV做项目。但是随着项目的深入,很多时候客户的要求,不是有现成的算法的,也不是通过现有算法进行拼接能够解决的。怎么办?只能自己去研究,有一些问题是有论文的,也可能有书,运气比较好还有matlab代码;也会遇到了太少见了,论文也比较少。这个时候,需要的能力,还是最基本的英语和数学。能够快速阅读得到自己要的东西,但是往往一篇重要的的论文也得读个十几、几十遍吧,数学这块,我主要从线性代数开始,包括做《learningOpenCV3》课后习题的时候,只要涉及到数学问题,都想办法给解决掉,推导出来!而不是跳过去。因为我已经认识到,数学对于灵感呀、思维呀综合能力的影响很重要;能够把一个定理,比如pca中svd分解给推导一个例题出来,再使用这个函数,那感觉绝对不一样的(《学习OpenCV3》第7章第4题-SVD奇异值分解的验算http://www.cnblogs.com/jsxyhelu/p/7029283.html)。
图像处理涉及方面很多,无论是理论、实现还是应用场景,再加上软件、硬件,我也只是接触、了解、实现了很小的一个部分。但是反思这几年的过程,感觉还是有必要小结一下的,这里把自己博客中的一些东西串了一下——每一篇博客的发布都肯定是有原因的,不是随便发布出来的。希望大家有兴趣可以去看一看,特别是做桌面图像处理的,应该能够得到一些可以借鉴丢东西。


...全文
12327 62 打赏 收藏 转发到动态 举报
写回复
用AI写文章
62 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sliny2001 2018-05-25
  • 打赏
  • 举报
回复
菜的自己都看不下去的菜鸟 前来膜拜
qq_35638643 2017-11-08
  • 打赏
  • 举报
回复
马住,学习。
weixin_40538118 2017-11-08
  • 打赏
  • 举报
回复
棒棒哒
qq_32363911 2017-11-06
  • 打赏
  • 举报
回复
learning~
hijudey 2017-11-03
  • 打赏
  • 举报
回复
学习学习,做好准备……
__小石头 2017-10-31
  • 打赏
  • 举报
回复
谢谢分享经验,向你学习~~
yuzh_data 2017-10-29
  • 打赏
  • 举报
回复
整理得不错
天台的故事 2017-10-28
  • 打赏
  • 举报
回复
新鲜出炉的帖子啊,关注,搞个实际有用的案例来实战更好吧...
zhangyu09a 2017-10-27
  • 打赏
  • 举报
回复
一步步进步,博主加油!
Clampard 2017-10-27
  • 打赏
  • 举报
回复
学习学习再学习!!!!
q820265121 2017-10-27
  • 打赏
  • 举报
回复
很棒的帖子,值得学习
FoolCarpe 2017-10-24
  • 打赏
  • 举报
回复
学习学习
paschen 2017-10-23
  • 打赏
  • 举报
回复
零隐 2017-10-23
  • 打赏
  • 举报
回复
一分也是分。接
weixin_40753650 2017-10-23
  • 打赏
  • 举报
回复
加油加油谢谢支持
社会瑞弟呀 2017-10-18
  • 打赏
  • 举报
回复
...................
HomerRo 2017-10-18
  • 打赏
  • 举报
回复
习惯性的去下载,一看毛星云的教程就在身边O(∩_∩)O
qq_34912532 2017-10-17
  • 打赏
  • 举报
回复
真厉害楼主!
AITECH 2017-10-16
  • 打赏
  • 举报
回复
总结的很好,有心人
cathy_ff 2017-10-16
  • 打赏
  • 举报
回复
很棒的帖子,值得学习
加载更多回复(42)

5,530

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 模式及实现
社区管理员
  • 模式及实现社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧