比较和对比 Python 的许多图像处理库
Comparing and Contrasting Python's many Image Processing Libraries
我有点不明白为什么 Python 实施了如此多的图像包,并且一直在努力寻找 table 比较和对比任一功能,strengths/weaknesses,speed/performance、应用领域等等他们之间的一堆。到目前为止,我知道 PIL、mahotas、scikits.image 和 scipy.ndimage。我想我们还可以包括许多受外部库支持的绑定,例如 ImageMagic、OpenCV、Cairo 等,但让我们从专门为 Python 编写的内容开始。有没有人知道第一手资料,或者熟悉博客 post 或比较所有这些包并相互区分的某个中心位置。
我广泛使用了 mahotas,但目前切换到 scikit-image。我发现 scikit-image 的功能比 mahotas 更广泛(我需要经常测试各种图像处理算法)。 Mahotas 的主要优点是简单的代码和良好的文档,这与其 mahotas-principles 一致。因此,如果您需要基本功能和更快的操作,请选择 Mahotas。我还没有对 scipy-nd image 做详细的研究,但是看看可用函数列表,skimage 会占上风。
我帮助维护 libvips wiki 上的一个页面,比较 20 个左右的常见图像处理库的速度和内存使用情况,包括相当多的 Python 系统。
https://github.com/libvips/libvips/wiki/Speed-and-memory-use
基准测试非常简单:加载 5,000 x 5,000 像素的 RGB TIFF,从每个边缘裁剪 100 个像素,缩小 10%,使用 3x3 卷积进行锐化,然后再次保存。这是一个愚蠢的测试,但实施起来很简单,而且它确实练习了卷积、load/save、重采样和像素操作。
测试在 libvips wiki 上,所以当然是 libvips(和 pyvips, the Python binding) wins, but the results are a reasonable guide, at least for simple tasks like this, in my experience. It's also fun to compare the code。
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
这是相同的图形:
我有点不明白为什么 Python 实施了如此多的图像包,并且一直在努力寻找 table 比较和对比任一功能,strengths/weaknesses,speed/performance、应用领域等等他们之间的一堆。到目前为止,我知道 PIL、mahotas、scikits.image 和 scipy.ndimage。我想我们还可以包括许多受外部库支持的绑定,例如 ImageMagic、OpenCV、Cairo 等,但让我们从专门为 Python 编写的内容开始。有没有人知道第一手资料,或者熟悉博客 post 或比较所有这些包并相互区分的某个中心位置。
我广泛使用了 mahotas,但目前切换到 scikit-image。我发现 scikit-image 的功能比 mahotas 更广泛(我需要经常测试各种图像处理算法)。 Mahotas 的主要优点是简单的代码和良好的文档,这与其 mahotas-principles 一致。因此,如果您需要基本功能和更快的操作,请选择 Mahotas。我还没有对 scipy-nd image 做详细的研究,但是看看可用函数列表,skimage 会占上风。
我帮助维护 libvips wiki 上的一个页面,比较 20 个左右的常见图像处理库的速度和内存使用情况,包括相当多的 Python 系统。
https://github.com/libvips/libvips/wiki/Speed-and-memory-use
基准测试非常简单:加载 5,000 x 5,000 像素的 RGB TIFF,从每个边缘裁剪 100 个像素,缩小 10%,使用 3x3 卷积进行锐化,然后再次保存。这是一个愚蠢的测试,但实施起来很简单,而且它确实练习了卷积、load/save、重采样和像素操作。
测试在 libvips wiki 上,所以当然是 libvips(和 pyvips, the Python binding) wins, but the results are a reasonable guide, at least for simple tasks like this, in my experience. It's also fun to compare the code。
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
这是相同的图形: