[][src]Struct pico_detect::Localizer

pub struct Localizer { /* fields omitted */ }

Implements object localization using decision trees.

Details available here.

Example

use std::fs::File;
use image::{DynamicImage, Rgba};
use nalgebra::Point3;
use pico_detect::{Localizer, create_xorshift_rng};

// load pupil localizer
let fp = File::open("./models/puploc.bin").unwrap();
let puploc = Localizer::from_readable(fp).unwrap();

// load image
let gray = match image::open("./assets/Lenna_grayscale_test.jpg").unwrap() {
     DynamicImage::ImageLuma8(image) => image,
     _ => panic!("image loading failed"),
};

// initial parameters
let mut rng = create_xorshift_rng(42u64);
let init_point = Point3::new(270f32, 270f32, 40f32);
let nperturbs = 31usize;
 
// find pupil center
let pupil_point = puploc.perturb_localize(
  &gray,
  &init_point,
  &mut rng,
  nperturbs
);
 
// draw red cross on the image
let mut palette = Vec::with_capacity(255);
for i in 0..255 {
    palette.push((i, i, i))
}
let mut image = gray.expand_palette(&palette, None);
let x = pupil_point.x.round() as i32;
let y = pupil_point.y.round() as i32;
for i in -1..2 {
    for j in -1..2 {
        if i == 0 || j == 0 {
            image.put_pixel((x + i) as u32, (y + j) as u32, Rgba([255, 0, 0, 0]));
        }
    }
}
image.save("./result.jpg");

Implementations

impl Localizer[src]

pub fn localize(&self, image: &GrayImage, roi: &Point3<f32>) -> Point2<f32>[src]

Estimate object location on the image

Arguments

  • image - Target image.
  • roi - Initial location to start:
    • roi.x position on image x-axis,
    • roi.y position on image y-axis,
    • roi.z initial window size to search.

pub fn perturb_localize(
    &self,
    image: &GrayImage,
    roi: &Point3<f32>,
    rng: impl RngCore,
    nperturbs: usize
) -> Point2<f32>
[src]

Estimate object location on the image with perturbation to increase accuracy.

Arguments

  • image - Target image.
  • roi - Initial location to start:
    • roi.x initial position on image x-axis,
    • roi.y initial position on image y-axis,
    • roi.z initial window size (in pixels) to search.
  • rng - Source for randomness.
  • nperturbs - How many perturbations to make.

pub fn from_readable(readable: impl Read) -> Result<Self, Error>[src]

Create localizer from a readable source.

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T> SetParameter for T

impl<SS, SP> SupersetOf<SS> for SP where
    SS: SubsetOf<SP>, 

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,