jxr*_*mos 4 python image-processing package
我有点困惑为什么 Python 实现了如此多的成像包,并且一直试图找到一个表格来比较和对比它们之间的功能、优点/缺点、速度/性能、应用领域等。到目前为止我知道 PIL、mahotas、scikits.image 和 scipy.ndimage。我想我们还可以包含外部库(例如 ImageMagic、OpenCV、Cairo 等)支持的许多绑定,但让我们从专门为 Python 编写的内容开始。有谁知道第一手资料,或者熟悉博客文章或某个中心位置,所有这些包都在其中进行比较和区分。
我帮助维护libvips wiki 上的一个页面,比较了 20 个左右的常见图像处理库的速度和内存使用情况,其中包括相当多的 Python 系统。
https://github.com/libvips/libvips/wiki/Speed-and-memory-use
基准测试非常简单:加载 5,000 x 5,000 像素 RGB TIFF,从每个边缘裁剪 100 个像素,缩小 10%,使用 3x3 卷积锐化,然后再次保存。这是一个愚蠢的测试,但实现起来很简单,并且它确实练习了卷积、加载/保存、重新采样和像素操作。
测试是在 libvips wiki 上进行的,所以当然 libvips (和pyvips,Python 绑定)获胜,但根据我的经验,结果是一个合理的指南,至少对于像这样的简单任务来说是这样。比较代码也很有趣。
System | Run time (secs) | Peak mem use (MB)
---------------------------------------------------------------
libvips C 8.8 | 0.15 | 40
pyvips 2.1.6 | 0.18 | 49
Pillow-SIMD 5.3 | 0.36 | 230
NetPBM 10.0-15.3 | 0.60 | 75
sips 10.4.4 | 0.70 | 268
GraphicsMagick 1.3.28 | 0.64 | 493
ImageMagick 6.9.7-4 | 0.82 | 463
OpenCV 3.2 | 0.93 | 222
ImageMagick 7.0.8 | 1.37 | 733
ImageJ 1.51 | 2.84 | 770
scipy 1.2 + Pillow | 4.33 | 361
Run Code Online (Sandbox Code Playgroud)
以下是同样的图形: