如何自学图像编程

 现在,图像类信息越来越多了,对图像的编程需求也越来越多。图像类项目的特点是性价比高,单行代码的价格一般是普通的程序的10倍,每行代码能够卖几块钱。很多人把目光放在这个上面。刚才又有网友咨询,做图像要看些什么书?结合我的自学经验,写一篇博客谈谈这个问题。
 
 需要先明确几个问题:
 (1)你的基础如何?做图形图像的话,对数学要求比较高,至少要有大学数学的基础——微积分、线性代数、概率统计和数值分析都会用到的。不然,书看不下去,没法自学。如果要做深入的话,对英语也有一定的要求,绝大部分深入的资料都是英文的。

 (2)做哪个层面的?与硬件严重相关的只能选C,做应用层的话可以选C++和C#,我个人推荐C#,当然,智能手机还是推荐C++。做Web层面的话,目前最佳选择是Flash(其实Silverlight比Flash更适合做Web图像,好歹Silverlight有byte类型,有struct,但Silverlight的普及度不够),Html5/Canvas目前只能做简单的应用,复杂的还不行。如果只是做算法,matlab就够了,但一般不是科班出生,很少做纯算法的。做纯算法还有个缺点就是,算法转换为收入很难。鉴于C#写算法并不比用matlab写算法慢,不建议摸matlab。但matlab代码要能看懂,因为论文中很多算法是用matlab写的。

 (3)有没有克服困难的勇气。图像类项目大多不大,普遍的几千行代码就可以搞定。就这几千行代码,难度越大的钱越多。关键词就是困难和难度,工作量往往不是问题。也就是说,你越牛逼,越值钱。牛逼是没有止境的,不像那些靠体力的项目,身体是个硬的限制。

 下面的书籍,如果是写的英文名字,那就是推荐阅读英文版,如果是中文名字,那就说明,中文版写的/翻译的也不错,推荐看中文版而非英文版。都是可以直接下载到的或买到的。
 
 首先是两本核心书籍:
 (1) Image Processing,Analysis and Machine Vision 3ED。(中文名:《图像处理、分析与机器视觉》)
 (2) Computer Vision: Algorithms and Application(中文名:《计算机视觉——算法与应用》)

 第一本书偏重于基础,但是它写的可不基础。写的很简且信息量极大,但核心概念都讲了,重点算法大部分都列出来了。第二本书偏重于工程应用,概述了各个领域的有效算法,点到为止。
 如果看第二本没困难的话,可以忽略掉第一本。第一本书也不好读,一上来就讲了狄拉克分布,因此,要想从头到尾都看懂是几乎不可能的,但是它的内容的前后依存性不大,看不懂的直接略过去就行了,只看能看懂的即可。
 没必要看完,我也只看了30-40%感兴趣的部分,其它的要么是不感兴趣的,要么是看不懂的。
 只需要大学数学基础就可以开始看,能看懂部分就可以做项目了。找到和项目相关的内容,找到相应的参考文献,直接去看论文实现论文的算法即可。绝大部分重要论文Google Scholar都能搜到原文,如果英文水平不够,也可以在几个期刊网搜中文的论文,不是特别前沿的东西,中文的论文也有涉及到的。
 看书的重点是理解,理解算法最佳方式是自己把算法写一遍。可以参考OpenCV的代码来写。理解一个算法之后,这个算法就可以为你赚钱,不理解,是很难用对算法的。自己写算法。你才对这个算法的性能有直观的感受,知道可以通过哪些方式来改进它,知道怎么在性能和算法效果之间进行取舍,这对项目来说,是很重要的。
 不建议买第二本书的中文版,它的中文版阉割了参考文献和索引这两个最有使用价值的部分。
 
 把这两本书全部看完吃透,单靠大学水平的数学是不够的,至少得数学系本科生级别的知识储备。如果大学数学忘了,建议先复习一遍。
 自学推荐:
 (1)陈天权版《数学分析(一、二、三)》。这是国内最难的一套数学分析教材,为什么推荐它呢?它自成条理,信息量丰富,把图像分析深入所需的数学内容都包括进去了:微积分、点集拓扑、实分析、泛函、变分、复分析、流形……,重要概念都讲了。学完了,看论文问题不大。缺点就是难。可是,图像类项目的特点也是难。遇难而上是必须的。这套书虽难,但是思路极其清晰,就是看的慢一点而已。要知道,计算机所能发挥出的威力只是数学理论的一部分,随着计算机的计算能力越来越强,越来越多的数学方法会引入到程序中来,对于图像分析领域尤其如此。所以要未雨绸缪,别看有的数学知识现在用不上,说不定哪天就用到了。
 (2)Lax的《线性代数及其应用》。作者是沃尔夫奖得主,写的很简洁明要,且不与大学学的线性代数重复。
 (3)《Numerical Recipes》。数值分析有这一本书就够了,秒杀众书的书。这本书只看感兴趣的或当前用到的即可。

 

 鉴于图形和图像的关系越来越紧密,关于图形学的书籍也是值得一读的。推荐两本:
 (1)David F.Rogers的《计算机图形学的算法基础》。这本书实在是太经典了,就是有点老,比较基础。
 (2)《实时计算机图形学》这本书讲的都是比较现代的,正好结合上一本看。

 

 图像编程 = 算法 + 性能。因此,性能优化方面也得看。比如这本:《软件优化技术--IA-32平台的高性能手册》。
 
 会用Photoshop对图像编程很重要。Photoshop有强大的编辑功能和特效库,很多时候,可以用Photoshop先进行预研究,确定项目是否可行。可行的话,我们再把Photoshop的操作过程用算法来实现,实际项目中,经常会这么操作的。 Photoshop 推荐一本书:李金明、李金荣的《Photoshop CS5完全自学教程》。这本书写的非常棒,就是书名有点土,和那些垃圾书的书名很像。
 
 如果用C/C++的话,推荐《学习OpenCV(中文版)》,翻译的不错。如果用C#的话,没啥好书可以推荐,可以看看我博客中的文章。如果用Flash的话,推荐《Foundation ActionScript 3.0 Image Effects》。
 
 如果做的是和彩图有关的话,推荐《彩色数字图像处理》。其它的,《图像局部特征不变性特征与描述》写的也不错。
 
 ====
 下面举个例子讲讲工具、知识间的综合应用。
 要实现一个lemo特效,可以先利用现有工具得到像素之间的映射图(比如我这篇文章:《解决问题的艺术:半小时编程实现照片的反转负冲特效 》)。但这样一来,每种特效都需要一个像素映射图,增大了程序的尺寸,怎么办呢?
 一种方法是用Photoshop模拟它,然后,写图像处理算法来重复这一过程。这是用图像处理的方法来解决问题。
 另一种方法是将lemo特效当作一多元函数,特效前的图像是输入值,特效后的图像是输出值,先写出一个自由度高点的函数,再采用拟合的方法,找到合适的函数参数,然后检验这个函数的稳定性,靠谱的话就是它了。这是用数学的方法来解决问题。

转载于:https://www.cnblogs.com/xiaotie/archive/2012/03/25/2416267.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
自学CNN图像识别实战不仅可以提升自身的技术能力,还有助于理解深度学习的原理和应用。下面是一些步骤与方法,帮助您开展这项实战学习: 1. 学习基础知识:首先,需要掌握机器学习和深度学习的基础知识,包括神经网络结构和CNN的原理、损失函数、优化算法等。 2. 学习Python编程:学习Python编程语言,以及常用的相关库,例如NumPy和Pandas。这些库可以帮助您进行数据处理和预处理。 3. 学习深度学习库:选择一个流行的深度学习库,例如TensorFlow或PyTorch,并学习其基本使用方法。这些库提供了丰富的功能,可用于构建和训练CNN模型。 4. 数据集准备:选择一个适当的图像数据集,例如CIFAR-10或MNIST。这些数据集通常包含了各种类别的图像,可以用于训练和测试CNN模型。 5. 构建CNN模型:通过深度学习库构建CNN模型。一般来说,CNN模型包括卷积层、池化层和全连接层等,您可以根据需要调整各层的参数和结构。 6. 数据预处理:对图像数据进行预处理,包括图像大小调整、归一化处理和数据增强等。这些操作可以提高CNN模型的训练效果。 7. 训练和评估模型:利用训练数据对CNN模型进行训练,然后使用测试数据对模型进行评估。可以根据需要调整模型结构和超参数,以提高模型的准确度。 8. 模型优化:根据评估结果对模型进行优化,例如调整学习率、增加正则化项等。这些操作有助于提高模型的泛化能力和鲁棒性。 9. 进一步学习和实践:深度学习是一个不断发展的领域,继续学习最新的研究成果和技术进展,参与相关的实践项目,可以不断提高自己的实战能力。 通过这些步骤和方法,您可以自学CNN图像识别实战,提升自身的技术水平,并且在实践中深入理解CNN模型的工作原理和应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值