6个版本 (重大更改)
0.5.1 | 2024年5月26日 |
---|---|
0.4.1 | 2024年5月19日 |
0.3.1 | 2024年5月18日 |
0.2.2 | 2024年5月17日 |
0.1.1 | 2024年5月16日 |
#227 in 图像
每月344次下载
36KB
371 代码行
图像金字塔
概述
这是一个小的Rust crate,它简化了从用户提供的图像中快速生成图像金字塔的过程。
- 参见OpenCV:图像金字塔了解两种最常见金字塔类型(低通,即高斯;带通,即拉普拉斯)的概述。
- Tomasi论文低通和带通金字塔也有权威的解释。
- 维基百科对可转向金字塔有相当不错的解释。
用法
请参见crates.io页面以获取安装说明,然后检查示例目录以获取示例代码。以下是一个简单的示例,说明如何计算默认金字塔(每个级别的半分辨率高斯)。
use image_pyramid::*;
let image = todo!();
let pyramid = match ImagePyramid::create(&image, None) {
Ok(pyramid) => pyramid,
Err(e) => {
eprintln!("Error creating image pyramid: {}", e);
return;
}
};
或者一个稍微复杂一些的示例,说明如何创建带通金字塔,其中每个八度音阶是分辨率的$2\over{3}$,使用三角形(线性)滤波器进行平滑。
use image_pyramid::*;
let image = todo!();
let params = ImagePyramidParams {
scale_factor: (2.0 / 3.0).into_unit_interval().unwrap(),
pyramid_type: ImagePyramidType::Bandpass,
smoothing_type: SmoothingType::Triangle
};
let pyramid = match ImagePyramid::create(&image, Some(¶ms)) {
Ok(pyramid) => pyramid,
Err(e) => {
eprintln!("Error creating image pyramid: {}", e);
return;
}
};
《scale_factor》字段是一个《UnitIntervalValue》,必须在区间$(0, 1)$内。创建此类值会产生一个《Result》,如果值无效,将包含错误。
支持
对于问题或错误报告,请打开一个问题,并请随意打开一个PR以提出更改。
贡献
遵循标准Rust约定,并确保为任何新代码添加测试。
依赖项
~10MB
~211K SLoC