#blur #image #slice #graphics #gaussian #channel #linear-time

blurslice

N通道图像切片的“最快高斯模糊”实现

1 个不稳定版本

0.1.0 2022年6月26日

704图像

MIT 许可证

125KB
341

基于http://blog.ivank.net/fastest-gaussian-blur.html的快速线性时间高斯模糊。

此实现基于https://github.com/fschutt/fastblur

这些函数在给定(可能是)图像数据的切片上就地模糊,具有任意数量的通道和指定的模糊半径。性能大致为线性时间,并使用与输入切片相同大小的单个分配作为后端存储。

示例

模糊RgbImage

fn blur_fast(rgb_image: &mut image::RgbImage, radius: f32) -> Result<(), blurslice::SliceSizeError> {
    let width = rgb_image.width() as usize;
    let height = rgb_image.width() as usize;
    let samples = rgb_image.as_flat_samples_mut();
    blurslice::gaussian_blur_bytes::<3>(samples.samples, width, height, radius)
}

更改

  • 通过const泛型支持任意数量的通道
  • 生成遍历列表时无分配,使用const泛型栈数组

待办事项

  • 支持任意步长,用于对齐数据或垂直图像子切片
  • 允许提供后端存储,以允许零分配执行

无运行时依赖项