图像编程的转型经验
目前程序员编程处理的主要数据类型是数字和文本,而图形图像视频音频等内容会越来越多,未来对这方面的需求会越来越多。出于提前占坑的考虑,俺进行了技术转型,转向这方面的开发。对于 .Net 程序员来说,进行这些领域的开发有较大的优势(有待继续挖掘):
(1).Net 是生产力高的平台;
(2).Net 是折腾最少的平台,不折腾;
(3).Net 是类似平台中,对内存操作最灵活的平台,拥有强悍的值类型系统,可以得到近似C/C++的运行效率;
(4)在桌面上有 WPF ,在 Web 和手机上有 Silverlight ,在游戏上有 XNA ,还有 Mono.Simd和 CUDA.Net(后两者我还未用过,目前的应用性能已经够了,当不够时,可以去尝试);
(5).Net下C# 是C风格的,实在需要转换成别的语言时好转化,诸如我现在,开发是在.Net下,客户需要.Net版本的就不转化了,客户需要C++的,就用C++改一下,客户需要Flash的,就用As3改写一下。
截止目前为止,这方面的小项目做了10个了,语言分布为 C# 开发的 5个,As3 的 3 个(Flash在线系统),C++ 的2个(1个是对方的主程序用 VB 开发,没办法只能提供 C++的,2天时间就改写完毕,1个是嵌入式,没.Net环境)
下面以我自己的经历谈谈自学转型途径:
数学。大学数学基本足够。如果大学数学忘个七七八八的了,最好复习一遍:微积分是需要的,尤其是多元微积分部分;线性代数也是需要的,尤其是矩阵变换,射影几何这些;概率和统计那些也是需要的;数值计算也需要。大学数学的几大块是缺一不可。
入门书是 Gonzalez 的 《数字图像处理》 。如果您能直接看懂我后面推荐的书,这本书是无需看的。俺就没看。同时推荐一个视频教程:中科院研究生院空中课堂刘定生的《数字图像处理与分析》。您如果有中科院的同学,可以从他们那里要到帐号。您也可以去淘宝买到这些视频。这个视频教程很清晰,刘老师讲的很棒,很风趣。
接下来是四本宝书:
- a)《图像处理、分析与机器视觉》(Image Processing:Anlysis,and Machine Vision),这本书第二版有中文版,最新版为第三版,原版可在卓越购买,原价折合人民币是1500多,卓越价是300多。网上也有电子版。中文版基本够用。本书的特点是对老算法讲的很多很细致,配了不少的案例。图像这一块的算法只有新、老之分,老算法,很多都是极其有用的。
- b)《Computer Vision:Algorithms and Application》,这本书刚出版,还无中文版。作者把电子版放到网上了,可以自己去下载打印了看。这本书的特点是比较前沿,新算法较多,对老算法基本是一笔带过。这本书结合上一本书,在算法这一块就够用了。
- c) 《实时计算机图形学》(Realtime Rendering),这一本书的中文版是第二版,最新版是第三版(有电子版可下载)。图像这一块很多时候会牵扯到图形,图形方面的知识,这一本书讲的足够用了。
- d)《Numerical Recipes》这一本书第二版有中文版,已经很难买到了。第三版的英文版电子版网上有下载的。本书是数值计算的宝书。
这四本书不必看完,找自己感兴趣的看就够了。话说回来,您要真看完了,把上面的算法全部实现了,那就成了黄裳看道家宝典,成超级大牛了。
论文
上面四本书基本够用,可以应对大部分的工程问题。它们简明扼要的讲了各种问题该怎么处理,有哪些文章可以参考。书中无不有大量的参考文献和现实案例,无不有完善的索引系统,你可以很快的找到某个工程问题的候选解决方案。如果需要进一步去了解,就需要去具体阅读论文。在校内的或在研究机构的可以直接下载,没有下载资源的,这时 Google Scholar出场了。大部分重要论文都可以在Google Scholar 上下载,如果在 Google Scholar 上下载不到,可以借助淘宝,上面有很多店家可以收费下载,一般一毛到一块钱一篇。
(5) 库
a) 首选库就是 OpenCV。OpenCV算法多,性能高。有.Net的封装版本EmguCV。如果选用OpenCV,推荐一本书《学习OpenCV》,中文版翻译得很不错,又有索引。
b) 备选库是 AForge.Net。AForge.Net 比OpenCV好用。