Image Processing for Very Large Images
The key idea here is the partial image descriptor
VIPS(VASARI Image Processing System) 是近几年逐渐兴起的针对大图像数据高效处理的开源库,下面给出一个表格显示出其相对于目前的一些其他开源库,针对同一组5000×5000,8-bit的RGB三通道TIFF图像,在运行时间,内存消耗上的对比,明显可以看出其优势。
| Software | Run time (secs real) | Memory (peak RSS MB) | Times slower |
|---|---|---|---|
| VIPS C/C++ 8.1 | 0.20 | 43 | 1.0 |
| Python VIPS 8.1 | 0.30 | 52 | 1.5 |
| VIPS command-line 8.1 | 0.55 | 40 | 2.4 |
| VIPS C/C++ 8.1, JPEG images | 0.38 | 59 | 2.7 |
| ymagine 0.7.0 | 1.07 | 2.7 | 2.8 (compared to vips-c JPEG) |
| GraphicsMagick 1.3.20 | 0.67 | 492 | 3.4 |
| sips 10.4.4 | 0.74 (est.) | 268 | 3.7 |
| ImageMagick 6.8.9-9 | 0.78 | 484 | 3.9 |
| VIPS nip2 8.1 | 0.79 | 78 | 4.0 |
| RMagick 2.15.2 (ImageMagick 6.8.9) | 0.87 | 684 | 4.4 |
| NetPBM 10.0 | 0.93 | 76 | 4.7 |
| Pillow 2.7.0 | 0.93 | 207 | 4.7 |
| OpenCV 2.4.9 | 1.13 | 206 | 5.7 |
| libgd 2.1.1 | 2.34 | 186 | 6.1 (compared to vips-c JPEG) |
| Imlib2 1.4.7 | 1.53 | 250 | 7.7 |
| ExactImage 0.8.9 | 1.54 | 130 | 7.7 |
| FreeImage 3.15.4 (incomplete) | 1.63 | 183 | 8.1 |
| gmic 1.5.7.1 | 1.87 | 700 | 9.35 |
| ImageScience 1.2.6 (based on FreeImage 3.15.4, incomplete) | 1.9 | 267 | 9.5 |
| OpenImageIO 1.3.12 | 2.79 | 811 | 14 |
| GEGL 0.2 | 16.2 | 410 | 43 (compared to vips-c JPEG) |
| Octave 3.8 | 30 (est.) | 8500 (est.) | 200 |
测试环境:
E5-1650 @ 3.20GHz (HP workstation), Ubuntu 15.04
对应的Memory vs. time 曲线图如下:
可以看出,相比于其它库,vips处理速度更快,而且消耗的内存更小,但是比较麻烦的是配置比较麻烦…
提供一个下载链接: http://www.vips.ecs.soton.ac.uk/supported/current/win32/
Image Processing for Very Large Images的更多相关文章
- MySQL vs. MongoDB: Choosing a Data Management Solution
原文地址:http://www.javacodegeeks.com/2015/07/mysql-vs-mongodb.html 1. Introduction It would be fair to ...
- mapreduce源码分析总结
一 MapReduce概述 Map/Reduce是一个用于大规模数据处理的分布式计算模型,它最初是由Google工程师设计并实现的,Google已经将它完整的MapReduce论 文公开发布了.其中对 ...
- 什么是Hadoop
配上官方介绍 What Is Apache Hadoop? The Apache™ Hadoop® project develops open-source software for relia ...
- 一些公司对quantitative的要求
来自日月光华BBS: Company: UBS AG Job Title: Quantitative Developers / Analysts (Entry Level, Multiple Posi ...
- 初识分布式计算:从MapReduce到Yarn&Fuxi
这些年,云计算.大数据的发展如火如荼,从早期的以MapReduce为代表的基于文件系统的离线数据计算,到以Spark为代表的内存计算,以及以Storm为代表的实时计算,还有图计算等等.只要数据规模 ...
- MapReduce 原理与 Python 实践
MapReduce 原理与 Python 实践 1. MapReduce 原理 以下是个人在MongoDB和Redis实际应用中总结的Map-Reduce的理解 Hadoop 的 MapReduce ...
- 典型分布式系统分析之MapReduce
在 <分布式学习最佳实践:从分布式系统的特征开始(附思维导图)>一文中,提到学习分布式系统的一个好方法是思考分布式系统要解决的问题,有哪些衡量标准,为了解决这些问题:提出了哪些理论.协议. ...
- 典型分布式系统分析:MapReduce
在 <分布式学习最佳实践:从分布式系统的特征开始(附思维导图)>一文中,提到学习分布式系统的一个好方法是思考分布式系统要解决的问题,有哪些衡量标准,为了解决这些问题:提出了哪些理论.协议. ...
- GitHub awesome Resource
各种Awesome技术资源的资源聚合: https://github.com/sindresorhus/awesome Contents Platforms Programming Languages ...
随机推荐
- js 文档加载完成之后执行 备用
//文档加载完成之后执行 (function(){ var _globeCallback; window.$$ = function(callback){ _globeCallback = callb ...
- ajax短轮询+php与服务器交互制作简易即时聊天网站
主流的Web端即时通讯方案大致有4种:传统Ajax短轮询.Comet技术.WebSocket技术.SSE(Server-sent Events). 本文主要介绍ajax短轮询的简易实现方式. 看懂此文 ...
- spring容器启动过程理解
一.一切从手动启动IoC容器开始 ClassPathResource resource = new ClassPathResource("bean.xml"); DefaultLi ...
- Python的递归深度
RuntimeError: maximum recursion depth exceeded while calling a Python object 大意是调用 Python 对象时超出最大深度限 ...
- [Node.js] Manage Configuration Values with Environment Variables
Storing configuration in files instead of the environment has many downsides, including mistakenly c ...
- 基于nginx的TCP Proxy实现数据库读写分离
nginx非常早就支持tcp proxy.可是一直不知道其使用,近期在nginx blog上看见了.一些实践者将其运用到数据库訪问的负载均衡以及实现读写分离,来提高数据库的吞吐量,这里我不会讲详细的搭 ...
- 数据库SQL Server2012笔记(三)——表的复杂查询
1.数据分组--max/min/avg/sum/count select avg(字段名),sum(字段名) from 表名 select count(*) from 表名 select ...
- 常用的Linux 命令
来源于面试 求一条linux命令:查找当前目录下所有含有字符串type="json",文件名以.xml的所有文件 find . -name "*.xml"|xa ...
- ES TransportClient demo
import java.net.InetAddress; import java.net.UnknownHostException; import org.elasticsearch.action.b ...
- ActiveX插件
C#制作ActiveX插件 首先新建项目--->类库,取名:ActiveXDemo 右键项目属性:应用属性==>程序集信息=>使程序集Com可见, 生成==>输出==>为 ...