泛型图像处理库
(延续6月housisong在C++泛型技术版的帖子)
https://sourceforge.net/projects/gill/
泛型图像处理库(GILL)是主要以计算机视觉为主的图像处理架构,基于C++泛型技术,可移植到几乎任何提供C++编译器的平台上。GILL提供了一个简单、高效、可扩展的方法,以便在不同的环境中灵活使用按照GILL架构开发的算法,或者开发全新的算法,同时获益于上述的优点。另一方面,GILL帮助您建立自己的图像处理库。现在,把现有算法按照GILL架构改写的繁重工作或许是个主要问题,然而重写能够从架构中获得最大的力量,就像C++ STL所做的那样。
GILL由三部分组成:协议、镜子、算法。协议规定图像表示的接口,图像表示可以是图像数据容器或者读写图像数据的途径(API、封装类、组件对象等);镜子遵守协议,代表一个函数,对图像表示作一定的变换后输出;算法根据协议对参与算法的对象进行访问,从而实现自己的逻辑。
算法作为整个体系里面具有最大价值的方面,被赋予最高的重视。架构的目标是使得花在上面的额外开销最小,包括重写、效率、移植调试和理解。
协议定义了数字图像处理和计算机视觉算法的数学抽象,它是抽象算法与具体数据交互的唯一标准。算法可以规定参与算法的对象实现的协议,而不能规定具体的对象。这种透明性是GILL获得可扩展性的来源。
镜子是连接具体图像表示对象和算法的媒介,面对不同环境时实现不同的配接功能,因为它能表示一个变换函数,所以也是实现数字图像处理算法的载体。
讨论过的问题
1. 现有的图像处理计算机视觉库有什么问题?
2. 一定得用泛型吗?
3. 为什么现在没什么算法可用?
4. 协议为什么是现在这个样子?
5. 效率如何保证?
6. 能不能跟现有的库混合使用?
欢迎讨论 :)