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
- 浏览 3044
- 评论(5)
- 论坛回复 / 浏览 (4 / 6989)
- 查看更多
相关推荐
在本文中,我们将探讨如何将视频图像处理算法OpenCV移植到ESP32及ESP32S3微控制器上,以及如何实现与OpenMV的兼容。OpenCV是一个强大的计算机视觉库,广泛应用于图像处理和机器学习任务,而ESP32和ESP32S3则是专为...
【OpenCV图像处理系统概述】 OpenCV(Open Source Computer Vision Library)是一个强大的计算机视觉库,以其开源、跨平台和高效的...通过OpenCV库,开发者可以轻松构建强大的图像处理应用程序,满足不同场景的需求。
由于ARM处理器广泛应用于嵌入式系统,而OpenCV可以极大地方便这类系统在图像处理和计算机视觉方面的需求,因此将OpenCV移植到ARM平台具有实际的应用价值。然而,在ARM-linux环境下,OpenCV可能无法直接打开摄像头,...
python、ruby、matlab 以及其他语言的接口。 其目标是构建一个简单易用的计算机视觉框架,以帮助开发人员更便捷地设计更复杂的 计算机视觉相关应用程序。Opencv 包含的函数有 500 多个,覆盖了如工厂产品检测、医学 ...
OpenCV,全称为“Open Source Computer Vision Library”,是一个强大的开源计算机视觉和机器学习库,广泛应用于图像处理、图像分析和机器学习等领域。OpenCV v3.4.11 是该库的一个版本,提供了丰富的功能和优化,...
OpenCV是一个开源的库,提供了丰富的图像处理和计算机视觉算法,包括人脸识别。在这个项目中,我们看到一个名为"OpenCVFaceDetectDemo"的示例,它很可能是通过CocoaPods管理的,CocoaPods是Objective-C和Swift项目的...
- **定义与功能**:OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,它支持多种图像处理和计算机视觉操作。 - **语言与平台**:OpenCV主要使用C/C++语言编写,并能在Linux/Windows/Mac等...
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,...通过本书,读者可以学习到如何运用OpenCV这个强大的库,来处理图像处理中的各种任务,并且可以利用其丰富的函数库来运行实时的视觉代码。
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,它提供了大量的计算机视觉和图像处理方面的算法。OpenCV最早由英特尔公司研究实验室开发,如今已经成为一个由世界各地的计算机视觉专家和...
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,其最早由Intel公司资助开发,旨在提供一个为计算机视觉应用提供丰富函数库的平台,这些应用包括图像处理、视频分析、人脸...
OpenCV(开源计算机视觉库)是一个强大的图像处理和计算机视觉库,它提供了丰富的函数,用于实现各种视觉算法,从基础的图像滤波到复杂的对象检测。OpenCV由多个模块组成,包括一个硬件加速层(HAL)来优化性能,...
OpenCV,全称为"Open Source Computer Vision Library",是一个强大的计算机视觉库,旨在提供一系列用于图像处理和计算机视觉的算法。这个库最初由Intel创建,后来由Willow Garage接手并继续发展,遵循BSD许可,因此...
同时,它提供Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉的各种算法。 #### 标题解读:“opencv的包含文件” 标题中的“包含文件”主要指的是在使用OpenCV进行编程时需要导入的头文件。这些...
1. **简单易用的计算机视觉基础设施**:OpenCV旨在帮助开发者快速构建复杂的视觉应用程序,提供了一个强大的基础平台。 2. **丰富的功能覆盖**:OpenCV包含超过500个函数,覆盖了工厂产品检验、医学影像分析、安全...
OpenCV,全称为Open Source Computer Vision Library,是一个强大的计算机视觉和机器学习库,广泛应用于图像处理和计算机视觉领域。它支持多种编程语言,包括C++、Python、Ruby等,并且可以在Linux、Windows、...
通过这份介绍,我们可以了解到OpenCV是一个功能强大的计算机视觉库,拥有广泛的编程语言接口支持,以及大量的图像处理和机器学习功能。它的优化和模块化设计使得它在学术界和工业界都非常受欢迎,成为计算机视觉应用...
对于想要在Intel架构上获得更深层次图像处理优化的开发者,OpenCV还支持通过Intel的IPP库来实现更高级的性能提升,而这一过程对用户来说是透明的,OpenCV会在运行时自动使用这些优化。 OpenCV提供了超过500个函数,...