【问题标题】:Fast Cross-Platform C/C++ Image Processing Libraries快速跨平台 C/C++ 图像处理库
【发布时间】:2010-10-22 05:37:44
【问题描述】:

有哪些用于图像处理(调整大小和查找颜色/色调直方图)的跨平台和高性能图像库。不需要gui。这是针对 C/C++ 的。

到目前为止,我已经研究过

  • OpenCV
  • GIL 作为 Boost 的一部分
  • 恶魔
  • CImg

我的问题

  • 我上面列出的性能如何
  • 还有哪些其他库

非常感谢您的意见。

【问题讨论】:

  • 恕我直言,这个问题不准确。您是否希望获得分析的库与库性能?不问更具体的问题几乎是不可能的。相反,要求比较您感兴趣的库中实现的特定算法的实现会更合理。

标签: c++ c image-processing cross-platform performance


【解决方案1】:

OpenCV 的性能相当不错。对于大多数情况应该足够了。

为了提高性能,您还可以将 OpenCV 与 Intel IPP 一起使用,但它是一个非免费的商业产品。如果 OpenCV 检测到 IPP 已安装,它将尽可能使用它。

作为第三种选择,您可以直接使用 IPP。 IPP 的设计以高性能(在英特尔架构上)为目标。它经过优化以使用英特尔 SIMD 指令。

【讨论】:

  • 如果我们在photoshop中制作滤镜,那么我们可以在opencv中使用它的RGB值来制作相同的滤镜吗?
  • 恐怕我对 Photoshop 的了解不够,无法回答这个问题。也许您可以将其作为问题发布?
【解决方案2】:

imagemagick很受欢迎。

【讨论】:

    【解决方案3】:

    别忘了看看CxImage - 我已经在全球部署的图形密集型手机应用程序中专业地使用了它,它在其中表现完美并且功能如此丰富。一定要看看!

    【讨论】:

    • 这个库看起来很扎实,但开发似乎是 MIA。最后更新于 2008 年 2 月。
    • @TheUnknown:晚年标志:“版本 7.01,07 - Jan - 2011”
    【解决方案4】:

    我认为我在功能和性能方面没有比 MVTec 的 HALCON 更好的了。它提供了各种开箱即用的计算机视觉和图像处理算法以及大量现实生活中的示例。该库尽可能多地使用算法可能允许的多线程,并在可用时使用 GPU。它非常跨平台,并提供了出色的 IDE,可让您将原型代码(算法)导出为多种语言,包括 C、C++、C# 等。

    这个库的最佳特性之一是它们如何处理区域对象。它在存储和掩模处理方面都非常智能和高效。不幸的是,OpenCV 有很多东西要学。

    这个包的主要问题是价格(高得离谱),但如果您正在从事一个不需要部署运行时许可证(例如 SaaS)的项目,那么这就是您要走的路,如果你需要认真的图像处理和计算机视觉。

    【讨论】:

      【解决方案5】:

      有一个简单免费的开源跨平台图像处理库Simd。从它的描述如下:

      它为图像处理提供了许多有用的高性能算法,例如:像素格式转换、图像缩放和过滤、从图像中提取统计信息、运动检测。

      使用不同的 SIMD CPU 扩展对算法进行了优化:SSE、SSE2、SSSE3、SSE4.1、SSE4.2、AVX、AVX2 和 AVX-512 用于 x86/x64、VMX(Altivec) 和 VSX(Power7)用于 PowerPC,NEON 用于 ARM。

      【讨论】:

        【解决方案6】:

        您可能想查看IM。它建立在多个平台上,并支持(模块化)图像文件格式、各种图像表示以及各种转换和运算符。还提供了一个 GUI 工具 IMLab,用于演示基于 IM 库的图像处理运算符。

        【讨论】:

          【解决方案7】:

          还有VTKITK,拥有海量的多种图像处理算法。

          【讨论】:

          • VTK 和 ITK 是非常可靠的库,但是根据我的经验,我发现使用这些高度模板化的库有点费力。 800 页的手册起初也有点令人生畏,但其中包含的算法往往来自研究中心,因此通常是最先进的。我无法比较性能,因为我没有使用任何其他库。我发现它没问题。
          【解决方案8】:

          我帮助维护libvips,这是一个免费的跨平台 C/C++ 科学图像处理库。它速度很快,并且在非常大的图像上效果很好。

          我做了一个非常简单的benchmark:加载一个 5,000 x 5,000 像素的 RGB tif,从每个边缘裁剪 100 像素,缩小 10%,锐化,然后再次保存。至少在这个微不足道的测试中,vips 的速度是我尝试过的其他任何东西的两倍多。

          【讨论】:

          • 在您的库中,什么是 OpenCV 的 warpPerspective 的更快替代方案? vips_quadratic?要了解warpPerspective,请查看此处:imgur.com/a/yiF55,请参阅 logo_warped 图像。这就是它对从一组角到另一组角的转换矩阵(单应矩阵)所做的事情。谢谢。
          • 没错,vips_quadratic() 可以做透视变形。我会给你一个示例程序。
          • 哎呀,我认为vips_quadratic() 未完成且无法使用,无论如何供您使用,因此缺少文档。对不起。我将在需要整理的 TODO 中添加一条注释。
          【解决方案9】:

          还有:

          【讨论】:

            【解决方案10】:

            ExactImage 是一个快速的 C++ 图像处理库。与许多其他图书馆不同 框架,它允许在多个颜色空间和位深度中进行操作 原生,导致内存和计算需求低。

            【讨论】:

              【解决方案11】:

              我们使用Accusoft 有一段时间了,但出于非常特殊的原因,我们切换到了LeadTools,它仅适用于Windows。 Accusoft 比leadtools 有一个非常清晰和定义明确的界面。这两个库都非常健壮,并且都声称可以或多或少地读取所有现有文件类型。两者都提供响应迅速的支持。

              【讨论】:

                猜你喜欢
                • 2010-10-22
                • 2011-07-11
                • 2011-01-14
                • 2011-01-03
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多