Skip to content
/ lutz Public

Rust implementation of "An Algorithm for the Real Time Analysis of Digitised Images" by R. K. Lutz.

License

Notifications You must be signed in to change notification settings

RReverser/lutz

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lutz

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.

Usage

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);
}

About

Rust implementation of "An Algorithm for the Real Time Analysis of Digitised Images" by R. K. Lutz.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages