图像编程的转型经验

目前程序员编程处理的主要数据类型是数字和文本,而图形图像视频音频等内容会越来越多,未来对这方面的需求会越来越多。出于提前占坑的考虑,俺进行了技术转型,转向这方面的开发。

对于 .Net 程序员来说,进行这些领域的开发有较大的优势(有待继续挖掘):

1.Net 是生产力高的平台;

2.Net 是折腾最少的平台,不折腾;

3.Net 是类似平台中,对内存操作最灵活的平台,拥有强悍的值类型系统,可以得到近似C/C++的运行效率;

4)在桌面上有 WPF ,在 Web 和手机上有 Silverlight ,在游戏上有 XNA ,还有 Mono.Simd CUDA.Net(后两者我还未用过,目前的应用性能已经够了,当不够时,可以去尝试);

5.NetC# C风格的,实在需要转换成别的语言时好转化,诸如我现在,开发是在.Net下,客户需要.Net版本的就不转化了,客户需要C++的,就用C++改一下,客户需要Flash的,就用As3改写一下。

截止目前为止,这方面的小项目做了10个了,语言分布为 C# 开发的 5个,As3  3 个(Flash在线系统),C++ 2个(1个是对方的主程序用 VB 开发,没办法只能提供 C++的,2天时间就改写完毕,1个是嵌入式,没.Net环境)

====

下面以我自己的经历谈谈自学转型途径:

(1)       数学。大学数学基本足够。如果大学数学忘个七七八八的了,最好复习一遍:微积分是需要的,尤其是多元微积分部分;线性代数也是需要的,尤其是矩阵变换,射影几何这些;概率和统计那些也是需要的;数值计算也需要。大学数学的几大块是缺一不可。

(2)       入门书是 Gonzalez  《数字图像处理》 。如果您能直接看懂我后面推荐的书,这本书是无需看的。俺就没看。同时推荐一个视频教程:中科院研究生院空中课堂刘定生的《数字图像处理与分析》。您如果有中科院的同学,可以从他们那里要到帐号。您也可以去淘宝买到这些视频。这个视频教程很清晰,刘老师讲的很棒,很风趣。

(3)       接下来是四本宝书:

a)         《图像处理、分析与机器视觉》(Image Processing:Anlysis,and Machine Vision),这本书第二版有中文版,最新版为第三版,原版可在卓越购买,原价折合人民币是1500多,卓越价是300多。网上也有电子版。中文版基本够用。本书的特点是对老算法讲的很多很细致,配了不少的案例。图像这一块的算法只有新、老之分,老算法,很多都是极其有用的。

b)         Computer VisionAlgorithms and Application》,这本书刚出版,还无中文版。作者把电子版放到网上了,可以自己去下载打印了看。这本书的特点是比较前沿,新算法较多,对老算法基本是一笔带过。这本书结合上一本书,在算法这一块就够用了。

c)         《实时计算机图形学》(Realtime Rendering),这一本书的中文版是第二版,最新版是第三版(有电子版可下载)。图像这一块很多时候会牵扯到图形,图形方面的知识,这一本书讲的足够用了。

d)         Numerical Recipes》这一本书第二版有中文版,已经很难买到了。第三版的英文版电子版网上有下载的。本书是数值计算的宝书。

这四本书不必看完,找自己感兴趣的看就够了。话说回来,您要真看完了,把上面的算法全部实现了,那就成了黄裳看道家宝典,成超级大牛了。

(4)       论文

上面四本书基本够用,可以应对大部分的工程问题。它们简明扼要的讲了各种问题该怎么处理,有哪些文章可以参考。书中无不有大量的参考文献和现实案例,无不有完善的索引系统,你可以很快的找到某个工程问题的候选解决方案。如果需要进一步去了解,就需要去具体阅读论文。在校内的或在研究机构的可以直接下载,没有下载资源的,这时 Google Scholar出场了。大部分重要论文都可以在Google Scholar 上下载,如果在 Google Scholar 上下载不到,可以借助淘宝,上面有很多店家可以收费下载,一般一毛到一块钱一篇。

(5)       

a)         首选库就是 OpenCVOpenCV算法多,性能高。有.Net的封装版本EmguCV。如果选用OpenCV,推荐一本书《学习OpenCV》,中文版翻译得很不错,又有索引。

b)         备选库是 AForge.NetAForge.Net OpenCV好用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。
Go语言(也称为Golang)是由Google开发的一种静态强类型、编译型的编程语言。它旨在成为一门简单、高效、安全和并发的编程语言,特别适用于构建高性能的服务器和分布式系统。以下是Go语言的一些主要特点和优势: 简洁性:Go语言的语法简单直观,易于学习和使用。它避免了复杂的语法特性,如继承、重载等,转而采用组合和接口来实现代码的复用和扩展。 高性能:Go语言具有出色的性能,可以媲美C和C++。它使用静态类型系统和编译型语言的优势,能够生成高效的机器码。 并发性:Go语言内置了对并发的支持,通过轻量级的goroutine和channel机制,可以轻松实现并发编程。这使得Go语言在构建高性能的服务器和分布式系统时具有天然的优势。 安全性:Go语言具有强大的类型系统和内存管理机制,能够减少运行时错误和内存泄漏等问题。它还支持编译时检查,可以在编译阶段就发现潜在的问题。 标准库:Go语言的标准库非常丰富,包含了大量的实用功能和工具,如网络编程、文件操作、加密解密等。这使得开发者可以更加专注于业务逻辑的实现,而无需花费太多时间在底层功能的实现上。 跨平台:Go语言支持多种操作系统和平台,包括Windows、Linux、macOS等。它使用统一的构建系统(如Go Modules),可以轻松地跨平台编译和运行代码。 开源和社区支持:Go语言是开源的,具有庞大的社区支持和丰富的资源。开发者可以通过社区获取帮助、分享经验和学习资料。 总之,Go语言是一种简单、高效、安全、并发的编程语言,特别适用于构建高性能的服务器和分布式系统。如果你正在寻找一种易于学习和使用的编程语言,并且需要处理大量的并发请求和数据,那么Go语言可能是一个不错的选择。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值