#image #computer-vision #labeling #vision #real-time

lutz

R. K. 鲁茨的 "实时数字化图像分析算法" 的 Rust 实现

7 个稳定版本

1.4.0 2023年11月14日
1.3.1 2022年5月25日
1.2.0 2022年5月25日
1.1.1 2021年5月8日
1.0.0 2021年4月11日

#501算法

每月43次下载

MIT 协议

13KB
218 行代码

Lutz

这是 R. K. 鲁茨的 "实时数字化图像分析算法" 的 Rust 实现。

它是一个单遍算法,用于 连通分量标记,可以在二值(单色)图像中找到 8 连接的对象。

使用方法

Crate 需要用户实现其 lutz::Image trait。一个可能的实现是一个封装了 image::GrayImage 类型的结构体

struct Image {
    img: image::GrayImage,
    threshold: u8,
}

impl lutz::Image for Image {
    fn width(&self) -> u32 {
        self.img.width()
    }

    fn height(&self) -> u32 {
        self.img.height()
    }

    fn has_pixel(&self, x: u32, y: u32) -> bool {
        self.img.get_pixel(x, y).0[0] > self.threshold
    }
}

一旦构建,应将此类图像的引用传递给 lutz 函数。它将返回一个检测到的对象的迭代器,每个对象表示为包含其像素坐标的 Vec<Pixel>

for obj_pixels in lutz::lutz(&img) {
    println!("{:?}", obj_pixels);
}

依赖项

~0.4–0.8MB
~18K SLoC