比较和对比Python的许多图像处理库

时间:2015-01-29 21:51:55

标签: python image-processing packages

对于为什么Python实现了如此多的成像包并且一直试图找到一个比较和对比功能,优势/劣势,速度/性能,应用领域等等的表格,我有点神秘。他们。到目前为止,我知道PIL,mahotas,scikits.image和scipy.ndimage。我想我们还可以包含外部库支持的许多绑定,例如ImageMagic,OpenCV,Cairo等,但我们只是从专门为Python编写的东西开始。有没有人知道第一手资料,或熟悉博客文章或某些中心位置,所有这些软件包都是相互比较和区分的。

2 个答案:

答案 0 :(得分:4)

我帮助维护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(和Python绑定pyvips)当然是赢家,但是根据我的经验,至少对于像这样的简单任务,结果是合理的指导。 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 

这是图形上的同一件事:

graph speed mem use

答案 1 :(得分:2)

我广泛使用了mahotas,但目前已切换到scikit-image。我发现scikit-image的功能比mahotas更广泛(我需要经常测试各种图像处理算法)。 Mahotas的主要优点是具有良好文档的简单代码,这与其mahotas-principles是一致的。因此,如果您需要基本功能和更快的操作,请选择Mahotas。我还没有对scipy-nd图像做过详细的研究,但是看看可用函数列表,skimage会有上手。