bokeh 0.1.0

A Rust implementation of image-blurring, focussing on disc-shaped kernels to produce a bokeh lens-effect.
Documentation
use bokeh::{kernel_gaussian_components, params::*};
use std::env;
use std::fs::File;
use std::io::prelude::*;

fn main() -> std::io::Result<()> {
    let mut args = env::args();
    args.next();
    let out_dir = args.next().unwrap_or("plots".to_string());

    for (p, params) in [
        KERNEL1_PARAM_SET,
        KERNEL2_PARAM_SET,
        KERNEL3_PARAM_SET,
        KERNEL4_PARAM_SET,
        KERNEL5_PARAM_SET,
        KERNEL6_PARAM_SET,
        KERNEL7_PARAM_SET,
        KERNEL8_PARAM_SET,
        KERNEL9_PARAM_SET,
    ]
    .iter()
    .enumerate()
    {
        for kernel_size in [1, 5, 10, 50, 100] {
            let kernels = kernel_gaussian_components(params, kernel_size as f64);

            let mut output = vec![0.0; kernels[0].len()];
            for (n, kernel) in kernels.iter().enumerate() {
                for (m, k) in kernel.iter().enumerate() {
                    output[m] += params.real_component(n) * k.re + params.imag_component(n) * k.im;
                }

                let mut file = File::create(format!("{}/{}_{}.json", out_dir, p + 1, kernel_size))?;
                write!(file, "{:?}", output)?;
            }
        }
    }

    Ok(())
}