遥感影像yimage库1.1.0版更新

开发了一个星期,Linux版本和Windows版本的yimage都编译打包完毕,并且发布在了python的官方平台pypi。大家可以通过pip install yimage的方式进行安装。其中一项依赖gdal则推荐采用conda install gdal -c conda-forge安装,强烈建议安装3.2.2以及更高的版本,否则部分函数运行会特别缓慢。这一版本相比1.0.3版本改进了很多,建议正在使用yimage库的朋友都进行更新。

yimage项目英文文档位于https://pypi.org/project/yimage/

yimage项目中文文档位于http://yimage.yannx.me,如果该链接301重定向失败,可访问http://blog.yannx.me/python/46/yimage-library/

距离1.0.x版本发布已经快一年了。一开始以为1.0版本已经够用了,但是经过一年的使用,发现还是有几个功能需要增加的。

在去年的时候,有朋友做深度学习比赛,该比赛对数据读写时间要求很高。gdal的数据读写速度是快于OpenCV、PIL、tiffile等一系列库的。但是按照yimage 1.0.x的接口,数据读入是按照(H,W,C)顺序,而PyTorch的Tensor则是(C,H,W)形式,数据读取后需要进行transpose,这会影响IO速度。因此这一次yimage更新,在读取函数加入了原生的(C,H,W)支持,与gdal运行速度一致。

另外在使用yimage保存影像的时候,一张图非常占存储空间,特别是深度学习语义分割结果。经常会出现未经压缩的影像达到了几百MB,但是无损压缩后仅仅占用几MB。因此此次更新加入了LZW等压缩算法。

对于RGB模式的加入,则是为了照顾一些习惯于使用PIL库和skimage库的非遥感专业朋友的。其实本身可以采用BGR模式读入然后调用yimage的img_ordered_by_band_list函数实现转换。read_image和write_yimage中加入了band_list则大大降低了读入内存开销,这个是1.0.x系列没有考虑到的。load_color_table_list函数则加入了name_list返回值,使得颜色表中的类别名称变得有意义了。

这一次更新规范了代码仓库和开发标准,也不再支持python 3.5版本。新增了python 3.9版本的支持。1.0.x版本打包发布过程中,有大量需要人工操作的步骤,使得发布非常繁琐。这也是长达一年没有更新的原因。这一次更新花费了大量时间开发了Linux平台和Windows平台的一键打包发布脚本,极大的降低了发布难度,便于后续迭代更新。当然也支持macOS版本,不过似乎需求量不大,因此没有进行编译,如果大家需要可以联系我,我会进行编译并上传pypi。

这一版本读写遥感影像是非常方便的,读写均只需要一行代码即可。易用度远高于gdal,推荐大家试试。

大家在使用中如果遇到了bug或者有新功能需求,可以联系我或者在博客中留言,我会尽快更新。感谢各位对yimage库的支持。

Yannx

2020年5月30日

Leave a Comment