OpenCV
OpenCV是一个很流行的图像处理库,它为图像处理算法研究提供了很好的平台,甚至很多产品在OpenCV的基础上稍作修改就可以达到目标。有关OpenCV的介绍,abruzzi有一篇不错的介绍帖子(
http://www.iteye.com/topic/463668),所以这里就不再做详细介绍。
Why OpenCV + Ruby ?
学院派的图像处理研究者喜欢用MATLAB,而实际产品开发,则用C/C++居多,特别是嵌入式系统,最终都要用C/C++重新实现算法甚至要用汇编优化部分代码。
当然,很多公司是学院派和工程派兼之。
用MATLAB的好处是可以快速实现算法,缺点是当你想把算法变成产品的时候,要经过一个比较长的过程,要把算法用C/C++再实现一遍。
OpenCV本身就是用C++写的,而且很多算法已经经过了优化,性能不错。因此如果直接基于OpenCV开发算法,在最终转化为产品的时候就很方便。
直接基于OpenCV开展算法研究的一个最大问题是缺乏快速验证的平台。虽然OpenCV提供了highgui用于简单的结果展示,但是离“方便”还是缺很远。我过去是用VC/MFC构建开发平台,提供了很多方便的功能辅助算法研究,但是平台的构建和维护,以及功能的增加都要花费巨大的努力,算法研究人员要为维护平台而煞费苦心。
一个通用的,易于维护,可扩展的平台对图像处理算法研究非常有帮助。
Ruby语言拥有容易学习,语法优雅,表达能力强的特点,而且加上RubyGnome2 GUI库,可以很方便地实现理想中的图像处理算法研究平台。
另外,还有其他几个因素使得Ruby适合做这样的平台:
1. RubyInline可以让你在ruby程序中嵌入C代码,这对于尝试一些贴近底层的算法调整非常方便。
2. Ruby的C扩展还算比较容易编写。
3. Ruby是动态语言,可以方便地为平台增添插件功能,或者提供一个脚本控制台。
在这里不能不提到Python,Python是一门优秀的脚步语言,也有很多库支持,特别是OpenCV官方就提供了Python的绑定。用Ruby或是Python只是个人喜好的问题。
Tui Image Studio
这是一个用Ruby写的,支持OpenCV的跨平台图像算法研究平台软件。它为图像处理研究提供了许多基本设施,例如直方图查看,区域分割与选择,摄像头连接等,而更多的图像处理算法则通过插件的形式来提供。
当你想尝试一个新的算法的时候,如果现有的插件中不能实现,就可以新写一个插件。多个插件可以以链接的方式协同工作,当然插件也可以暴露供外部调用的接口。
插件的界面和流程控制用ruby编写。当需要用C的时候,你可以编写C扩展或者直接在插件的ruby代码中嵌入C代码,Tui平台会通过RubyInline自动为你编译。
通常情况下,为OpenCV本身提供的功能编写插件,包括UI代码都在100行以内。
在Tui中算法验证通过以后,把这个算法在实际产品中实现则相对简单:因为都是基于OpenCV,增加的算法代码也都是用C写的。
你编写的插件越多,积累的算法也就越多,下一步算法研究也就越容易。
另外,Tui平台还提供分布式处理工具:有些算法需要巨大的运算量,要对一个数万张图片的图库验证一个算法需要很长的时间,这个时候你就需要几台或数十台PC来进行并行运算。Tui为你提供了这样的便捷工具,你可以发布你的插件到所有安装了Tui的机器并分配验证任务,最后收集结果报告。
Tui Image Studio截图:
图中演示了Canny边缘检测,直方图,高通滤波,以及一个从摄像头获取实时视频并做人脸检测的插件。
Conclusion
OpenCV+Ruby为图像处理研究提供了一个利器,可以快速验证算法并平滑过渡到最终产品。Ruby用作GUI程序开发已不仅仅是玩具而已,RubyGnome2可以用于开发复杂的,严肃的桌面应用程序。
Tui: 一种本地的很聪明的鸟,有独特的双频鸣叫声,非常动听。我开发这个软件的时候窗外经常有它陪伴,故取名Tui。
- 大小: 221 KB
分享到:
- 2009-09-12 15:31
- 浏览 2985
- 评论(5)
- 论坛回复 / 浏览 (4 / 6930)
- 查看更多
相关推荐
OpenCV+C++图像处理设计-遥感图像配准系统源码
本次项目采用Opencv+MFC框架,通过对源代码的学习和借鉴,完成了对图像进行点处理、邻域处理、二值化、二值图像处理、形态学处理、彩色图像处理、综合处理、视频采集播放这些常用功能。
OpenCV+C++图像处理设计-PhotoProcess图像编辑器实现
需配置好OpenCV和OCR环境
基于qt+opencv+c++实现图片+视频+相机的图像处理以及yolo-fast检测+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于qt+opencv+c++实现图片+视频+相机的...
OpenCV+C++图像处理设计-图片浏览器源码
OpenCV+TensorFlow 入门人工智能图像处理(无密完整)
OpenCV+TensorFlow 入门级别的人工智能图像处理视频教程
QT图形界面编程 大作业,主要功能分为图像处理以及视频处理两大块。 图像处理包括:灰度化、均值滤波、边缘检测、伽马变换、旋转镜像、亮度调节、二值化、对比度,饱和度调节、色彩调节、图片保存、水印等。 视频...
基于Qt+opencv+c++图像处理系统+完成了图像的灰度变换、形态学操作、图像分割、图像滤波、边缘检测、人脸检测等功能,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用...
python+OpenCV+TensorFlow人脸识别,人脸检测和图像处理。 python+OpenCV+TensorFlow人脸识别。 python+OpenCV+TensorFlow实现人脸识别,包含人脸检测和图像处理 pythoOpenCTensorFlo
OpenCV+C++图像处理设计-车型识别系统DEMO软件源码,仅供学习设计参考。
基于opencv和tkinter的图像处理系统1.0,是用python语言进行编写,亲测有效。主体思想来源于:李立宗老师的opencv编成案例详解。制作该系统其主要目的是给初学图像处理的学生提供一些直观的印象。当然系统存在不足:...
相机标定+图像校正助手(VS+OpenCV+Qt实现) + 压缩包内包含畸变图像和标定所用的图像。 + 考虑很多异常跳出条件,软件鲁棒性强 + 适合课程设计大作业 + 软件配套博客:...
Python和OpenCV相关的书籍,学习图像识别很好的资源,Practical Python and OpenCV+Case Studies, 3rd Edition
参考学习
opencv+svm实现图像分类代码+训练图片,新建opencv工程,导入两个文件就可以了。
14个常用OpenCV+C++图像处理.rar
QT + OPENCV + 海康工业相机显示不同处理阶段9宫格图像
对米粒图像处理的基础实验源代码+实验报告,包括米粒图像的读取,变换灰度图,Suan边缘检测,根据直方图进行阈值分割;根据分割结果,求米粒位置,重心,长度,面积等信息。 建议配置运行环境:OPENCV2.4.10+VS2010...