7个不稳定版本 (3个重大更新)
0.4.1 | 2023年3月16日 |
---|---|
0.4.0 | 2023年3月16日 |
0.3.2 | 2023年2月16日 |
0.3.1 | 2023年1月28日 |
0.1.0 | 2022年12月22日 |
#442 in 算法
160KB
2K SLoC
Rustronomy watershed - 纯Rust实现的分割和合并流域算法
Rustronomy-watershed是一个纯Rust实现的分割和合并流域算法(参见Digabel & Lantuéjoul, 1978[^1])。
特性 (查看文档)
本包包括流域算法的两个主要版本。
- 合并流域算法,这是一个空填充算法,可以用来识别图像中的连通区域。
- 分割流域算法,这是一个著名的图像分割算法。
此外,rustronomy-watershed
还提供了一些额外功能,可以通过Cargo功能门来访问。所有额外功能的列表见下文。
画廊
加拿大银河平面调查(CGPS)的数据
合并流域算法演示
分割流域算法演示
快速入门
要在Cargo项目中使用Rustronomy-watershed的最新版本,将rustronomy-watershed crate作为依赖项添加到您的Cargo.toml
文件中
[dependencies]
rustronomy-watershed = "0.3.2"
要在Jupyter笔记本中使用Rustronomy-fits,执行包含以下代码的单元格
:dep rustronomy-watershed = {version = "0.3.2"}
请勿使用0.3之前的任何版本,因为这些版本在合并流域算法的实现中包含一个重大错误
如果您想使用rustronomy-watershed
的最新(不稳定)开发版本,您可以通过使用git
字段(从仓库获取最新版本)而不是version
字段(从crates.io下载最新发布版本)来实现。
{git = "https://github.com/smups/rustronomy-watershed"}
简例:计算随机场的流域变换
在这个例子中,我们计算均匀随机场的分水岭变换。随机场可以使用 ndarray_rand
crate 生成。要配置新的分水岭变换,可以使用包含在 rustronomy_watershed
预言中的 TransformBuilder
结构体。
use ndarray as nd;
use rustronomy_watershed::prelude::*;
use ndarray_rand::{rand_distr::Uniform, RandomExt};
//Create a random uniform distribution
let rf = nd::Array2::<u8>::random((512, 512), Uniform::new(0, 254));
//Set-up the watershed transform
let watershed = TransformBuilder::default().build_segmenting().unwrap();
//Find minima of the random field (to be used as seeds)
let rf_mins = watershed.find_local_minima(rf.view());
//Execute the watershed transform
let output = watershed.transform(rf.view(), &rf_mins);
Cargo 功能门
默认情况下,所有功能门后面的功能都是 禁用的
jemalloc
:此功能启用 jemalloc 分配器。根据 jemalloc 网站的描述:“jemalloc 是一个通用的malloc
(3) 实现,强调碎片避免和可伸缩的并发支持。”。jemalloc 通过使用jemalloc
crate 启用,这会显著增加编译时间。然而,启用此功能也可以极大地提高运行时性能,尤其是在具有更多(>6 个或更多)核心的机器上。要在主机系统上编译带有rustronomy-watershed
的jemalloc
功能,必须安装 jemalloc。plots
:启用此功能后,rustronomy-watershed
将在水位提升时生成分水岭变换的绘图。有关如何使用此功能的详细信息,请参阅 crate 级别的文档。绘图支持将plotters
crate 作为依赖项添加,这将增加编译时间,并在 Linux 系统上需要安装一些软件包,请参阅plotters
文档以获取详细信息。progress
:此功能启用了分水岭算法的进度条。启用此功能将添加indicatif
crate 作为依赖项,这不应显著减慢编译时间。debug
:此功能启用了调试和性能监控输出。这可能会对性能产生负面影响。启用此功能不会添加额外的依赖项。
许可证
Rustronomy 生态系统中的所有 crate 都在 EUPLv1.2(或更高版本)许可证下授权。
Rustronomy-watershed 明确不采用 Rust 生态系统常见的双 Apache/MIT 许可证。相反,它根据 欧洲联盟公共许可证 v1.2 的条款授权。.
Rustronomy 是一个科学项目,并拥抱开放科学和自由开源软件的价值观。封闭和付费的科学软件套件阻碍了新技术和研究方法的开发,并将大量必要的公共资金从研究人员转移到大型出版和软件公司。
请参阅 LICENSE.md 文件,其中包含欧盟所有 22 种官方语言的 EUPL 文本,以及 LICENSE-EN.txt 中的许可证英文版本。
[^1]: H. Digabel 和 C. Lantuéjoul. 迭代算法。 在 1978 年 10 月的第二届欧洲定量材料科学、生物学和医学分析研讨会论文集中。
依赖项
~3–13MB
~141K SLoC