| Crates.io | lutz |
| lib.rs | lutz |
| version | 1.4.1 |
| created_at | 2021-04-11 19:54:02.957919+00 |
| updated_at | 2024-12-24 18:42:15.116159+00 |
| description | Rust implementation of "An Algorithm for the Real Time Analysis of Digitised Images" by R. K. Lutz |
| homepage | |
| repository | https://github.com/RReverser/lutz |
| max_upload_size | |
| id | 382131 |
| size | 49,775 |
This is a Rust implementation of "An Algorithm for the Real Time Analysis of Digitised Images" by R. K. Lutz.
It's a single-pass algorithm for connected-component labeling that allows to find 8-connected objects in a binary (monochrome) image.
Crate expects the user to implement its lutz::Image trait. A possible implementation for a struct wrapping an image::GrayImage type:
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
}
}
Once constructed, a reference to such image should be passed to the lutz function. It will return an iterator over detected objects, each represented as a Vec<Pixel> of its pixel coordinates:
for obj_pixels in lutz::lutz(&img) {
println!("{:?}", obj_pixels);
}