2个稳定版本

1.0.1 2018年12月29日
1.0.0 2018年5月22日

#214 in 渲染

MIT/Apache

17KB
188

Build Status

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-2.0许可证定义的您有意提交的任何贡献,应双重许可,如上所述,不附加任何额外条款或条件。

依赖项

~0–265KB