2个稳定版本
1.0.1 | 2018年12月29日 |
---|---|
1.0.0 | 2018年5月22日 |
#214 in 渲染
17KB
188 行
shepplogan-rs
你是否曾经需要每秒创建数百到数千个Shepp-Logan幻影?如果你有这个需求,你可能做错了什么,但你现在来到了正确的位置。Shepp-Logan幻影是一个数值幻影,定义为10个椭圆的和。它通常用作图像重建算法的测试图像。这个包提供了一种无需依赖项的高效实现,用于在2D中创建Shepp-Logan幻影。以下结果是在Intel Core i7 2.70GHz的计算机上使用cargo bench
获得的
分辨率 | 时间 | fps |
---|---|---|
128x128 | 111,000ns | 9000 |
256x256 | 440,000ns | 2200 |
512x512 | 1,780,000ns | 560 |
提供了两种版本:[0]中描述的原版和[1]中描述的修改版,后者具有更高的对比度。如果您不知道这两者之间的区别,您可能希望使用修改版。
要使用这个包,请将shepplogan
添加到您的Cargo.toml
文件中
shepplogan = "^1"
文档可以在这里找到。
示例
extern crate shepplogan;
use shepplogan::{shepplogan, shepplogan_modified};
// Dimensions of the image grid
let (nx, ny) = (256, 320);
// Original Shepp-Logan Phantom (the dynamic range is between 0.0 and 2.0)
let phantom = shepplogan(nx, ny);
// Modified Shepp-Logan Phantom (the dynamic range is between 0.0 and 1.0)
let phantom_modified = shepplogan_modified(nx, ny);
有关将幻影保存到磁盘的示例,请参阅examples/example.rs
。
您也可以通过定义椭圆来创建自己的幻影
extern crate shepplogan;
use shepplogan::{phantom, Ellipse};
// Dimensions of the image grid
let (nx, ny) = (256, 320);
// Define two ellipses
let ellipses =
[
Ellipse::new(0.0, -0.0184, 0.6624, 0.874, 0.0, -0.98),
Ellipse::new(0.0, 0.0, 0.69, 0.92, 0.0, 2.0),
];
let ph = phantom(&ellipses, nx, ny);
这将创建由两个椭圆组成的幻影。
参考文献
[0] Shepp, LA and Logan BF, "The Fourier reconstruction of a head section." IEEE Transactions on Nuclear Science 21, No. 3 (1974)
[1] Toft, PA, "The Radon Transform - Theory and Implementation", PhD dissertation, Departement of Mathematical Modelling, Technical University of Denmark (1996)
许可证
在以下许可证中选择其一
- Apache License, Version 2.0, (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT License (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
使用。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义的您有意提交的任何贡献,应双重许可,如上所述,不附加任何额外条款或条件。
依赖项
~0–265KB