加入python的仙境,并以numpy兼容的方式解码所有图像

redpil的Python项目详细描述


红皮书

pypiTravisDocs

加入python的仙境,并在一个兼容numpy的版本中解码所有图像 太好了。

枕头是一个伟大的图像处理库。然而,许多行动失败了 枕头能做什么。因此,许多科学应用需要 图像作为numpy数组可用不过,枕头的记忆系统 在很大程度上与numpy不兼容。imageio在 Numpy和枕头(见下面的基准)。不幸的是,枕头 各种选择仍然令人困惑,要理解它们是如何运作的很有挑战性 一起。此外,代码库相当旧,用c编写,这意味着 扩展现有解码器的功能是很困难的。

对于大型图像,必须了解枕头和臀部的细节是一个严重的瓶颈。 图书馆的目标是以自然的方式读写图像 用户。图像显示为它们保存的值(而不是颜色中的索引 表)允许直接数据分析。

库尽可能地用python编写,允许新的解码 要使用的算法。

位图图像

通常,此库不会加载C-连续数组中的内存相当 内存顺序将主要与磁盘上保存的内容匹配。

位图图像的存储顺序与它们在 猛撞。

支持的文件格式

几乎完全支持读取BMP。写作仍然有限。

未来的文件格式

  • bmp:更多覆盖范围
  • JPEG,JPEG2000
  • gif
  • 巴布亚新几内亚
  • SVG
  • TIFF

基准

我没有像scikit image或dask那样的标杆服务,但是 下面是与PIL后端相比的基准测试结果。正在运行 在我的ssd上,一个三星960pro,声称它可以以1.8gb/s的速度写。 非常接近redpil所达到的效果。

8位BMP灰度图像

保存图像:

================ ============ ============ ============
--                                mode                 
---------------- --------------------------------------
     shape          redpil       pillow      imageio   
================ ============ ============ ============
   (128, 128)      93.4±1μs     254±30μs     369±20μs  
  (1024, 1024)     720±30μs     936±50μs    1.60±0.3ms
  (2048, 4096)    5.25±0.7ms   5.20±0.1ms    10.4±2ms  
 (32768, 32768)    480±10ms     489±5ms     1.34±0.09s
================ ============ ============ ============

读图

================ ============= ============ =============
--                                 mode                  
---------------- ----------------------------------------
     shape           redpil       pillow       imageio   
================ ============= ============ =============
   (128, 128)       131±5μs      293±10μs      130±2μs   
  (1024, 1024)      194±10μs    1.03±0.1ms     192±5μs   
  (2048, 4096)    1.69±0.05ms    8.55±1ms    1.67±0.03ms
 (32768, 32768)     350±3ms      230±5μs       354±10ms  
================ ============= ============ =============

注意,枕头拒绝读取1GB的图像,因为它认为这是一个叉形炸弹。

修补图像o

可以看到,imageio/scikit image的团队在阅读方面比其他团队强得多 枕头文件和了解如何有效使用它。他们的 阅读速度实际上与redpil的阅读速度相匹配,尽管它们 使用枕头作为后端。他们甚至处理枕头认为是叉形炸弹的东西。

通过编写这个模块,在imageio中发现了两个影响 保存图像的速度imageio PR #398,以及如何读取图像 imageio PR #399

使用PR 398时,imageio+枕头的保存速度现在与redpil相同。 注意我在运行基准测试时总是使用计算机,所以 一粒盐的数字。

保存

================ ============ ============ ============
--                                mode                 
---------------- --------------------------------------
     shape          redpil       pillow      imageio   
================ ============ ============ ============
   (128, 128)      98.3±4μs     245±7μs      350±4μs   
  (1024, 1024)     714±20μs     921±30μs     997±20μs  
  (2048, 4096)    4.83±0.3ms   5.30±0.4ms   5.26±0.2ms
 (32768, 32768)    520±40ms     516±30ms     489±9ms   
================ ============ ============ ============

阅读

================ ============= ============ =============
--                                 mode                  
---------------- ----------------------------------------
     shape           redpil       pillow       imageio   
================ ============= ============ =============
   (128, 128)      129±0.7μs     284±2μs      129±0.7μs  
  (1024, 1024)      191±2μs     1.12±0.1ms    190±0.9μs  
  (2048, 4096)    1.62±0.03ms    8.88±1ms    1.63±0.02ms
 (32768, 32768)     357±9ms      223±4μs       361±8ms   
================ ============= ============ =============

历史记录

0.0.1(2018-09-22)

  • pypi上的第一个版本。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
显示图像的RGB编号的java   java JavaFX画布2D游戏:背景变换vs.绘画   在到达maxElementsInMemory之前创建的java DiskMarker   a4j:ajax可用事件的java详尽列表?   java从批处理文件运行jar文件,如果出现错误,则显示meessage   音频Java在背景音乐之上播放声音   用于在FTP中上载文件的java更改目录   尽管设置了必要的属性,java列表项仍不会保持选中状态   java Stanford Core NLP解析与CSV   java使用缓冲区合并热态和冷态   java无法初始化类javax。加密。JCE安全   对这个Java循环如此困惑的输入   java Spring RabbitMQ SimpleRabbitListenerContainerFactory用法   java如何使用jGrowl创建JSF消息   安装jRebel插件后,Netbeans项目中的java源文件夹不可见?   如何在Java中解析复杂的json字符串   java Spark KafkaUtils CreateRDD在键上应用过滤器   try块中的java代码被忽略,为什么?